TheLegace

lab5 final

Oct 24th, 2011
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module Lab5(
  2.                 input [3:0] KEY,
  3.                 input signed [7:0] SW,
  4.                 output reg [7:0] HEX0,      //7-seg display 0
  5.                 output reg [7:0] HEX1,      //7-seg display 0
  6.                 output reg [7:0] HEX2,      //7-seg display 0
  7.                 output reg [7:0] HEX4,      //7-seg display 0
  8.                 output reg [7:0] HEX5,      //7-seg display 0
  9.                 output reg [7:0] HEX6       //7-seg display 0
  10. );
  11.  
  12.    
  13.     reg signed [7:0] max = -128, min = 127;
  14.     reg unsigned [6:0] max_mg, min_mg;
  15.     wire [7:0] h0,h1,h2,h3;
  16.    
  17.     hex_7seg s0(max_mg[3:0], h0);
  18.     hex_7seg s1(max_mg[6:4], h1);
  19.     hex_7seg s2(max[7], h2);
  20.    
  21.     hex_7seg s4(min_mg[3:0], h4);
  22.     hex_7seg s5(min_mg[6:4], h5);
  23.     hex_7seg s6(min[7], h6);
  24.    
  25.    
  26.     initial begin
  27.         HEX0 = 7'b1000000;
  28.         HEX1 = 7'b1000000;
  29.         HEX2 = 7'b1000000;
  30.         HEX4 = 7'b1000000; 
  31.         HEX5 = 7'b1000000;
  32.         HEX6 = 7'b1000000;
  33.        
  34.     end
  35.    
  36.     always @ (negedge KEY[0]) begin
  37.             HEX0 <= h0;
  38.             HEX1 <= h1;
  39.             HEX2 <= h2;
  40.             HEX4 <= h4;
  41.             HEX5 <= h5;
  42.             HEX6 <= h6;
  43.            
  44.             if(SW < max_mg)
  45.                 max_mg = SW;
  46.                
  47.                
  48.            
  49.            
  50.  
  51.         end
  52.  
  53. endmodule
  54.        
  55.  
  56. module hex_7seg(hex_digit,seg);
  57. input [3:0] hex_digit;
  58. output [6:0] seg;
  59. reg [6:0] seg;
  60. // seg = {g,f,e,d,c,b,a};
  61. // 0 is on and 1 is off
  62.  
  63. always @ (hex_digit)
  64. case (hex_digit)
  65.         4'h0: seg = 7'b1000000;
  66.         4'h1: seg = 7'b1111001;     // ---a----
  67.         4'h2: seg = 7'b0100100;     // |      |
  68.         4'h3: seg = 7'b0110000;     // f      b
  69.         4'h4: seg = 7'b0011001;     // |      |
  70.         4'h5: seg = 7'b0010010;     // ---g----
  71.         4'h6: seg = 7'b0000010;     // |      |
  72.         4'h7: seg = 7'b1111000;     // e      c
  73.         4'h8: seg = 7'b0000000;     // |      |
  74.         4'h9: seg = 7'b0011000;     // ---d----
  75.         4'ha: seg = 7'b0001000;
  76.         4'hb: seg = 7'b0000011;
  77.         4'hc: seg = 7'b1000110;
  78.         4'hd: seg = 7'b0100001;
  79.         4'he: seg = 7'b0000110;
  80.         4'hf: seg = 7'b0001110;
  81. endcase
  82. endmodule
  83.  
  84.  
  85. module dec_seg7(
  86.                         input [3:0] dec,
  87.                         input carryin,
  88.                         output reg carryout,
  89.                         seg
  90. );
  91.     integer d;
  92.     always @ (dec)
  93.     begin
  94.         d = dec;
  95.         if(carryin) begin
  96.             d = d+1;
  97.         end
  98.         if(dec > 9) begin
  99.             d = d-10;
  100.             carryout = 1;
  101.         end
  102.         case (dec)
  103.         4'h0: seg = 7'b1000000;
  104.         4'h1: seg = 7'b1111001;     // ---a----
  105.         4'h2: seg = 7'b0100100;     // |      |
  106.         4'h3: seg = 7'b0110000;     // f      b
  107.         4'h4: seg = 7'b0011001;     // |      |
  108.         4'h5: seg = 7'b0010010;     // ---g----
  109.         4'h6: seg = 7'b0000010;     // |      |
  110.         4'h7: seg = 7'b1111000;     // e      c
  111.         4'h8: seg = 7'b0000000;     // |      |
  112.         4'h9: seg = 7'b0011000;     // ---d----
  113.     endcase
  114.        
  115.     end
  116. endmodule
  117.  
  118.  
Advertisement
Add Comment
Please, Sign In to add comment