TheLegace

Lab5

Oct 30th, 2011
165
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 [6:0] HEX0,      //7-seg display 0
  5.                 output reg [6:0] HEX1,      //7-seg display 0
  6.                 output reg [6:0] HEX2,      //7-seg display 0
  7.                 output reg [6:0] HEX4,      //7-seg display 0
  8.                 output reg [6:0] HEX5,      //7-seg display 0
  9.                 output reg [6:0] HEX6,      //7-seg display 0
  10.                 output reg [17:0] LEDR
  11. );
  12.  
  13.     reg signed [7:0] max,min;
  14.     reg [7:0] max_mg,min_mg;
  15.     wire [6:0] h0,h1,h2,h4,h5,h6,ma,mi;
  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.     hex_7seg s4(min_mg[3:0], h4);
  21.     hex_7seg s5(min_mg[6:4], h5);
  22.     hex_7seg s6(min[7], h6);
  23.    
  24.     signmagnitude sma(max, ma);
  25.     signmagnitude smi(min, mi);
  26.    
  27.     initial begin
  28.         HEX0 = 7'b1000000;
  29.         HEX1 = 7'b1000000;     
  30.         HEX4 = 7'b1000000;
  31.         HEX5 = 7'b1000000;
  32.         max = -128;
  33.         min = 127;
  34.     end
  35.    
  36.     always @ (SW)
  37.         begin
  38.             LEDR[0] = 0;
  39.             HEX0 <= h0;
  40.             HEX1 <= h1;    
  41.             HEX2 <= h2;
  42.             HEX4 <= h4;
  43.             HEX5 <= h5;
  44.             HEX6 <= h6;
  45.             max_mg <= ma;
  46.             min_mg <= mi;
  47.            
  48.             if(!KEY[0]) begin
  49.                 LEDR[0] = 1;
  50.                 if(SW > max)
  51.                     max = SW;
  52.                 if(SW < min)
  53.                     min = SW;
  54.             end
  55.             if(!KEY[1]) begin
  56.                 max = -128;
  57.                 min = 127;
  58.             end
  59.         end
  60.  
  61. endmodule
  62.        
  63. module signmagnitude(
  64.                             input [7:0] in,
  65.                             output reg [6:0] out
  66. );
  67.  
  68.     always @ (in) begin
  69.         if(in[7])
  70.             out = ~in + 1'b1;
  71.         else
  72.             out = in;
  73.     end
  74. endmodule
  75.  
  76. module hex_7seg(hex_digit,seg);
  77. input [3:0] hex_digit;
  78. output [6:0] seg;
  79. reg [6:0] seg;
  80. // seg = {g,f,e,d,c,b,a};
  81. // 0 is on and 1 is off
  82.  
  83. always @ (hex_digit)
  84. case (hex_digit)
  85.         4'h0: seg = 7'b1000000;
  86.         4'h1: seg = 7'b1111001;     // ---a----
  87.         4'h2: seg = 7'b0100100;     // |      |
  88.         4'h3: seg = 7'b0110000;     // f      b
  89.         4'h4: seg = 7'b0011001;     // |      |
  90.         4'h5: seg = 7'b0010010;     // ---g----
  91.         4'h6: seg = 7'b0000010;     // |      |
  92.         4'h7: seg = 7'b1111000;     // e      c
  93.         4'h8: seg = 7'b0000000;     // |      |
  94.         4'h9: seg = 7'b0011000;     // ---d----
  95.         4'ha: seg = 7'b0001000;
  96.         4'hb: seg = 7'b0000011;
  97.         4'hc: seg = 7'b1000110;
  98.         4'hd: seg = 7'b0100001;
  99.         4'he: seg = 7'b0000110;
  100.         4'hf: seg = 7'b0001110;
  101. endcase
  102. endmodule
Advertisement
Add Comment
Please, Sign In to add comment