1、用Verilog 在Nexys 3开发板上设计并实现BCD码驱动2位数码管,数码管采用动态扫描方式显示。
2、Verilog源码如下所示:
`timescale 1ns / 1ps // 定义时间单位和事件单位、时间精度
module seg2_7(
input [7:0] x, // 每个4位开关输入一个BCD码,分别对应2个数码管的十进制数字
output reg[6:0] y, // 8段数码管,不带dp位置,则一共7段,分别为a,b,c,d,e,f,g
output reg[3:0] digit_en, // 定义位选控制寄存器,直接驱动位选,总线宽度设置为4
input clk // 2位数码管公用7位数据线,由于要扫描刷新各个数码管,因此需要用时钟定时,
); // clkdiv分频,保证扫描周期5ms-10ms
reg[19:0] clkdiv; // 定义分频器
reg[3:0] digit; // 定义显示寄存器,位宽为4
wire s; // 标志信号,标志当前扫描数码管位
// 引出标志定时信号线
assign s=clkdiv[19]; // 标志信号连接到clkdiv[19],2^19*(1/100M)