名称:模块化设计数字时钟Verilog代码Quartus仿真 (文末获取)
软件:Quartus
语言:Verilog
代码功能:
模块化设计数字时钟
设计数字钟,要求如下:
1、23:01:33 24小时制
整个数字钟端口列表:
clk,输入,外部时钟信号,假设为50MHz
clr,输入,清零信号,低电平有效
seg_atog[6:0]输出信号,用于驱动7段数码管,高电平有效
an[5:0]输出信号,用于使能每个7段数码管,低电平有效,分别连接6个7段数码管的com端
dp输出信号,小数点,用于模拟时间分隔符:
2、设计分频电路,产生1s输出时钟
根据所选板卡外部时钟进行分频,或根据仿真时间单位进行分频
模块名clk_div_1s
3、仿照74160端口及功能设计4位10进制计数器模块,模块名counter_10,实例化组成数字钟计数电路
端口列表:
输入clk、上升沿触发
clr、低电平使能
en、高电平使能
ld、低电平使能
输出Q[3:0]
Cout 进位
4、设计七段显示译码器,模块名seg7
输入:d[3:0]要显示数字的8421BCD码
en使能
输出:seg_atog[6:0],[0]-a,[6]-g
dp 小数点
5、seg7decimal模块
本模块作用在于将数字钟计时电路中每位十进制数字(共6位,例如23:01:33)转换为7段led显示驱动码(6个7段led显示器分时复用)
clk,输入,外部时钟信号,假设为50MHz
clr,输入,清零信号,低电平有效
Q[23:0]4位对应1个74160计数器模块
seg_atog[6:0]输出信号,用于驱动7段数码管,高电平有效
an[5:0]输出信号,用于使能每个7段数码管,低电平有效,分别连接6个7段数码管的com端
dp输出信号,小数点,用于模拟时间分隔符:
5、整个设计框架为:由分频电路产生1s时钟脉冲,经过秒钟计数,将秒钟计数进位信号输出给分钟计数电路,再将分钟计数进位信号输出给小时计数电路,再
利用seg7decimal模块驱动2位小时、2位分钟、2位秒钟显示数字
6、要求编写测试模块,进行功能仿真测试
//数字钟 module clock( inputclk,//输入,外部时钟信号,假设为50MHz inputclr,//输入,清零信号,低电平有效 output[6:0]seg_atog,//输出信号,用于驱动7段数码管,高电平有效 output[5:0]an,//输出信号,用于使能每个7段数码管,低电平有效,分别连接6个7段数码管的com端 outputdp//输出信号,小数点,用于模拟时间分隔符: ); wire clk_1hz; wire cout_second; wire cout_minute; wire [3:0] cnt_ten_second;//计数值十位 wire [3:0] cnt_one_second;//计数值个位 wire [3:0] cnt_ten_minute;//计数值十位 wire [3:0] cnt_one_minute;//计数值个位 wire [3:0] cnt_ten_hour;//计数值十位 wire [3:0] cnt_one_hour;//计数值个位 wire [23:0]Q;//4位对应1个74160计数器模块 assign Q={cnt_ten_hour,cnt_one_hour,cnt_ten_minute,cnt_one_minute,cnt_ten_second,cnt_one_second}; //分频电路,产生1s输出时钟 clk_div_1s i_clk_div_1s( .clk(clk),//输入,外部时钟信号,假设为50MHz .clr(clr),//输入,清零信号,低电平有效 .clk_1hz(clk_1hz) //1s输出时钟 );
源代码
点击下方的公众号卡片获取