Menu Close

数码管显示译码及Verilog 代码实现

数码管显示译码及Verilog 代码实现

在上节内容中介绍了数码管的显示原理,本节内容根据显示原理进行Verilog代码的实现。设计要求如下,根据开发板FII-PRA006/010的硬件资源,输入采用开关sw1–sw3输入4位16进制数。输出在SEG1的6位数码管的最右边一个显示。开关sw1-sw4的图纸如图1,

%title插图%num

图1

开关SW,LED与FPAG的对应关系如表1,

表1

程序信号名 网络标号 FPGA管脚 端口说明
SW[3] SW3_LED3 87 sw第3位
SW[2] SW2_LED2 86 sw第2位
SW[1] SW1_LED1 83 sw第1位
SW[0] SW0_LED0 80 sw第0位

数码管的局部图纸如图2:

在图2中可以看出,最右边的数码管对应网络标号为SEG_3V3_D0。本实验中只用到一个数码管,而且是共阳极驱动,因此SEG_3V3_D0应为低电平,Q14(NDS336P)才会导通。

%title插图%num

图2

图2中8段数码管的各段的译码表如表2,

表2

段选信号 DP G F E D C B A
· 0 1 1 1 1 1 1 1
0 1 1 0 0 0 0 0 0
1 1 1 1 1 1 0 0 1
2 1 0 1 0 0 1 0 0
3 1 0 1 1 0 0 0 0
4 1 0 0 1 1 0 0 1
5 1 0 0 1 0 0 1 0
6 1 0 0 0 0 0 1 0
7 1 1 1 1 1 0 0 0
8 1 0 0 0 0 0 0 0
9 1 0 0 1 0 0 0 0
A 1 0 0 0 1 0 0 0
B 1 0 0 0 0 0 1 1
C 1 1 0 0 0 1 1 0
D 1 0 1 0 0 0 0 1
E 1 0 0 0 0 1 1 0
F 1 0 0 0 1 1 1 0

根据图1,图2,表1,表2的资源描述,Quartus II 下Verilog 的设计流程及代码如下:

  1. 新建工程

工程名SW_8SEG,顶层实体名称(top level entity)的名称为SW_8SEG,顶层文件的名称为 SW_8SEG.v。

2. 数码管显示译码

SW_8SEG.v的源文件如下:

/*
mapping :
SEVEN_SEG[0] SEVEN_SEG[1] SEVEN_SEG[2] SEVEN_SEG[3] SEVEN_SEG[4] SEVEN_SEG[5] SEVEN_SEG[6]
****A******* ******B***** ******C***** *****D****** ******E***** ******F**** *****G*****
*/

module SW_8SEG
(
    input  [ 3: 0 ] SW,
    output reg[ 6: 0 ] SEVEN_SEG,
    output DP,
    output [ 5: 0 ] SEL
);

assign SEL = 6'b111110; //固定显示最右边的数码管,NDS336P 为P沟道MOS管,因此
assign DP = 1'b1; //小数点非点亮

always@( * )
case ( SW )
    0:    SEVEN_SEG = 7'b100_0000;
    1:    SEVEN_SEG = 7'b111_1001;
    2:    SEVEN_SEG = 7'b010_0100;
    3:    SEVEN_SEG = 7'b011_0000;
    4:    SEVEN_SEG = 7'b001_1001;
    5:    SEVEN_SEG = 7'b001_0010;
    6:    SEVEN_SEG = 7'b000_0010;
    7:    SEVEN_SEG = 7'b111_1000;
    8:    SEVEN_SEG = 7'b000_0000;
    9:    SEVEN_SEG = 7'b001_0000;
    4'ha: SEVEN_SEG = 7'b000_1000;
    4'hb: SEVEN_SEG = 7'b000_0011;
    4'hc: SEVEN_SEG = 7'b100_0110;
    4'hd: SEVEN_SEG = 7'b010_0001;
    4'he: SEVEN_SEG = 7'b000_0110;
    4'hf: SEVEN_SEG = 7'b000_1110;
    default: SEVEN_SEG = 7'b111_1111;
endcase

endmodule

 

3.    编译,管脚锁定:FPGA管脚映射如表3

表3

程序信号名 网络标号 FPGA管脚 端口说明
SEL[5] SEG_3V3_D5 124 位选信号第5位
SEL[4] SEG_3V3_D4 127 位选信号第4位
SEL[3] SEG_3V3_D3 129 位选信号第3位
SEL[2] SEG_3V3_D2 141 位选信号第2位
SEL[1] SEG_3V3_D1 142 位选信号第1位
SEL[0] SEG_3V3_D0 136 位选信号第0位
SEVEN_SEG[6] SEG_PG 135 段选信号G
SEVEN_SEG[5] SEG_PF 138 段选信号F
SEVEN_SEG[4] SEG_PE 126 段选信号E
SEVEN_SEG[3] SEG_PD 125 段选信号D
SEVEN_SEG[2] SEG_PC 133 段选信号C
SEVEN_SEG[1] SEG_PB 137 段选信号B
SEVEN_SEG[0] SEG_PA 132 段选信号A
DP SEG_DP 128 段选信号DP

按照表3的映射关系锁定管脚(如何锁定管脚请参照),如图3:

图3

4.  重新编译,下载,在FII-PRA006学习板上进行验证。FPGA程序下载相关信息请参照FII-PRA006/010板载实验。拨动SW从0–F看看数码管是否正常译码。

练习题:如果要将译码结果显示在第二数码管上,如何修改源代码?

Posted in FPGA, FPGA 教材教案, FPGA开发板, FPGA硬件资源, Quartus II, Verilog, Verilog, 开发板, 教材与教案, 文章

2 Comments

  1. 陈迪中

    老师能帮忙看下这段程序码,quartus编译综合过了,但是数码管一直不计数,停留在8
    module seg_led(
    input clk,
    input rst,
    output [5:0]sel,
    output reg [7:0]seven_seg,
    output dp
    );
    reg [25:0]count;
    reg [3:0] counter;
    reg flag;
    parameter CNT=49_999_999;

    assign dp=1’b0;
    assign sel=6’b1111_01;

    //always@(posedge clk or posedge rst)
    // if(rst)
    // count<=26'b0;
    // else if(count==CNT-26'b1)
    // count<=26'b0;
    // else
    // count<=count+1;

    always@(posedge clk or posedge rst)
    if(rst)
    begin
    count<=26'd0;
    flag<=1'b0;
    end
    else if(count==CNT-26'b1) begin
    flag<=1'b1;
    count<=26'd0;
    end
    else begin
    count<=count+1;
    flag<=1'b0;
    end

    always@(posedge clk or posedge rst)
    if(rst)
    counter<=4'b0;
    else if (flag)
    begin
    if (counter==4'd9)
    counter<=4'd0;
    end
    else begin
    counter<=counter+1;
    end
    always@(*)
    case(counter)
    0: seven_seg=7'b1000_000;
    1: seven_seg=7'b1111_001;
    2: seven_seg=7'b0100_100;
    3: seven_seg=7'b0110_000;
    4: seven_seg=7'b0011_001;
    5: seven_seg=7'b0010_010;
    6: seven_seg=7'b0000_010;
    7: seven_seg=7'b1111_000;
    8: seven_seg=7'b0000_000;
    9: seven_seg=7'b001_0000;
    default:seven_seg=7'b1000_000;
    endcase

    endmodule

发表回复

相关链接