原创 七段数码管译码器.(Verilog)

2010-3-30 19:45 4591 4 4 分类: FPGA/CPLD

1. 七段数码管的lookup table
module SEG7_LUT (
  input      [3:0] iDIG,
  output reg [6:0] oSEG
);


always@(iDIG)
begin
  case(iDIG)
    4'h1: oSEG = 7'b1111001;  // ---t----
    4'h2: oSEG = 7'b0100100;  // |      |
    4'h3: oSEG = 7'b0110000;  // lt     rt
    4'h4: oSEG = 7'b0011001;  // |      |
    4'h5: oSEG = 7'b0010010;  // ---m----
    4'h6: oSEG = 7'b0000010;  // |      |
    4'h7: oSEG = 7'b1111000;  // lb     rb
    4'h8: oSEG = 7'b0000000;  // |      |
    4'h9: oSEG = 7'b0011000;  // ---b----
    4'ha: oSEG = 7'b0001000;
    4'hb: oSEG = 7'b0000011;  
    4'hc: oSEG = 7'b1000110;  
    4'hd: oSEG = 7'b0100001;  
    4'he: oSEG = 7'b0000110;  
    4'hf: oSEG = 7'b0001110;  
    default: oSEG = 7'b1000000;  
  endcase                    
end                           
                              
endmodule


1) 注释说明的是七段数码管的结构,其中:
   t=top
   b=bottom
   m="middle"

   l="left"
   r="right"
  
若表示为下面的格式,则有可能更好理解。
   ---0----
   |      |
   5      1
   |      |
   ---6----
   |      |
   4      2
   |      |
   ---3----


2) 关于Verilog HDL entity,可在定义module时,先指定端口;然后,再声明端口的类型。如:
   module example (oC, iA, iB);
     output  oC;
     input   iA, iB;
   当然,也可以直接在定义module时,指定端口及声明其类型。如:
   module example (
     output  oC,
     input   iA,
     input   iB
   );


2. 实例化(调用)
   SEG7_LUT name (
     .iDIG(porta[6:0]);
     .oSEG(portb[3:0])
   );

  


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条