EDN首页   博客首页

日志档案

发表于 2008-7-5 16:49:40

2

标签: Verilog  七段数码管  译码器  

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

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])
   );

  

 

系统分类: CPLD/FPGA   |   用户分类: Verilog   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(310)    回复(2)  

投一票您将和博主都有获奖机会!

最新评论