【Verilog闯关第2天】数字秒表的设计
一、设计要求
1.提供给计时器内部设定的时钟频率是12Hz,计时器最长时间为10min,为此需要提供一个三位显示器,显示的最长时间为9分59秒。
2.设有复位和起/停开关
(1)复位开关用于计数器清(2)起/停开关,按一下——启动;再按一下——终止。(3)复位开关任何时间均可使用,即在计时期间,按一下复位开关即对计数器清零,终止计数过程。
二、设计说明
主要有分频器、十进制计数器(秒的个位,分的个位,共计2个十进制计数器)和一个六进制计数器。设计中还需要一个复位信号,还需要在每个计数器上设置使能端作为起/停开关。设置3个四位二进制计数器作为输出。DOUT[11:9]显示分的位数;DOUT[7:4]显示秒的十位;DOUT[3:0]显示个位数秒。
三、代码
(1)产生12Hz的时钟;
//filename:clkgen.v
// Edit by xixihahasoso on 2022/5/7
// 时钟频率12HZ
//reference:郭磊《Verilog 实战教程》module clkgen ( Rd, CLK_IN , CLK_OUT);parameter CLK_Freq = 12 ;//12Hz input
parameter CLK_OUT_Freq = 1;//1Hz output)
input Rd, CLK_IN;
output reg CLK_OUT ;reg [25:0] Counter_DIV;//inner knot
always @ (posedge CLK_IN or negedge Rd) begin if (~Rd) begin//YiBuQingLingCLK_OUT <= 0;Counter_DIV <= 0;endelse beginif (Counter_DIV <(CLK_Freq /2 * CLK_OUT_Freq))Counter_DIV <= Counter_DIV +1'b1;//divider adder add 1else beginCounter_DIV <= 0;CLK_OUT <= ~CLK_OUT;endend
end
endmodule
(2)六进制计数
//filename:CNT6.v
// Edit by xixihahasoso on 2022/5/7
// 六进制计数器
module CNT6 ( Rd, EN, CLK, Q, carryout);
input Rd, EN, CLK;
output [3:0] Q;
output carryout;
reg carryout;
integer cnt;assign Q = cnt;always @ (posedge CLK) beginif (~Rd) begincnt = 1'b0;carryout = 1'b0;endelse if (cnt < 5) begincarryout = 1'b0;if(!EN)cnt = 1'b0;else cnt = cnt + 1'b1;endelsebegincnt = 1'b0;carryout = 1'b1;end
endendmodule
(3)十进制计数
//filename:CNT10.v
// Edit by xixihahasoso on 2022/5/7
// 十进制计数器
module CNT10 ( Rd, EN, CLK, Q, carryout);
input Rd, EN, CLK;
output [3:0] Q;
output carryout;
reg carryout;
integer cnt;assign Q = cnt;always @ (posedge CLK) beginif (~Rd) begincnt = 1'b0;carryout = 1'b0;endelse if (cnt < 9) begincarryout = 1'b0;if(!EN)cnt = 1'b0;else cnt = cnt + 1'b1;endelsebegincnt = 1'b0;carryout = 1'b1;end
endendmodule
(4)顶层文件
//filename:top.v
// Edit by xixihahasoso on 2022/5/7
// top filemodule top ( CLK_IN, CLR, EN, DOUT,Carryout);
input CLK_IN, CLR, EN;
output [11:0] DOUT;
output Carryout;
wire CLK;
//wire [3:0] D1,D2,D3,D4,D5,D6,D7;
wire [3:0] D5,D6,D7;
//wire carryout1,carryout2,carryout3,carryout4,carryout5,carryout6;
wire carryout1,carryout2,carryout3,carryout4,carryout5,carryout6;clkgen CLKGEN ( .Rd(CLR), .CLK_IN(CLK_IN) , .CLK_OUT(CLK));
CNT10 CNT10_3 ( .Rd(CLR), .EN(EN), .CLK(carryout2), .Q(D5), .carryout(Carryout));
CNT6 CNT10_4 ( .Rd(CLR), .EN(EN), .CLK(carryout1), .Q(D6), .carryout(carryout2));
CNT10 CNT10_5 ( .Rd(CLR), .EN(EN), .CLK(CLK), .Q(D7), .carryout(carryout1));assign DOUT = (Carryout == 1) ? {D5,D6,D7} :0 ;
endmodule
(5)测试文件
//filename:CNT6.v
// Edit by xixihahasoso on 2022/5/7
//testbenchmodule ShuZiMiaoBiao_tb();
reg CLK_IN, CLR, EN;
wire [11:0] DOUT;
parameter Period = 2;
top test ( CLK_IN, CLR, EN, DOUT);
always begin#(Period/2) CLK_IN = ~ CLK_IN;
endinitial begin
CLR = 0; EN = 0; CLK_IN = 0;
#25 CLR <= 1;
#30 EN <= 1;
#2000 CLR <= 0;
#2100 CLR <= 1;
#4000 $finish;
endendmodule
四、测试结果
图中D5,D6,D7分别对应秒表的分、秒的十位、秒的个位;结果显示正确成立。
【Verilog闯关第2天】数字秒表的设计相关推荐
- VHDL数字秒表的设计
主要内容: 本课程设计是根据计算机时钟信号原理设计一个含有控制模块.计时模 块.显示模块三个模块的精确度达到10ns的数字秒表. 课程设计的目的 本次设计的目的就是在掌握EDA实验开发系统的初步使用基 ...
- 基于FPGA的数字秒表的设计
应用VHDL语言设计数字系统,很多设计工作可以在计算机上完成,从而缩短了系统的开发时间,提高了工作效率.本文介绍一种以FPGA为核心,以VHDL为开发工具的数字秒表,并给出源程序和仿真结果. 1 系统 ...
- EDA实验二 数字秒表的设计
一.实验目的 1.学习Quartus Ⅱ/ISE Design Suite软件的基本使用方法. 2.熟悉GW48系列或其他EDA实验开发系统的基本使用方法. 3.学习VHDL基本逻辑电路的综合设计应用 ...
- 基于modelsim的十个Verilog入门试验程序(5)(数字秒表+自助售票机)—程序+测试代码+波形+结果分析
内容 实验一:7人表决器的设计 实验二:算数逻辑单元的设计 实验三:JK触发器的设计 实验四:环形计数器的设计 实验五:顺序排列的设计 实验六:二进制除法器的设计 实验七:数字显示频率计的设计 实验八 ...
- 计算机原理实验中断计数器加一,数字秒表系统的设计.doc
精品 基于单片机的数字秒表系统设计 1.引言 在科技高度发展的今天,集成电路和计算机应用得到了高速发展.尤其是计算机应用的发展,它在人们日常生活中已经崭露头角.大多数电子产品多是由计算机电路组成,如: ...
- 基于单片机的数字秒表
设计简介: 本设计是基于单片机的数字秒表的设计,主要实现以下功能: 可实现LCD12864显示时间以及倒计时.顺计时等信息: 可实现通过按键调节调节时间的大小以及实现计时功能: 可实现通过通过语音播报 ...
- 基于FPGA的数字秒表设计
VHDL实现数字秒表 1设计要求 (1) 能对0秒-59分59.99秒范围进行计时,显示最长时间是59分59秒: (2) 计时精度达到10ms: (3) 设计复位开关和启停开关,复位开关可以在任何情况 ...
- 震坤行旗下坤同智能仓储助力「数字龙华」闯关破题
近期,深圳特区报头版刊发<为深圳建设"国家数字经济创新发展试验区"闯关破题--数字龙华风正劲 "数"象万千逐浪高>,龙华区为深圳建设"国家 ...
- 基于Verilog使用Quartus设计数字秒表和数字时钟
目录 一.数字秒表 1.1 新建工程 1.2 添加 Verilog 文件 1.3 添加 VWF 文件 1.4 波形仿真 二.多功能数字钟 三.总结 本文内容:使用 Quartus 基于 Verilog ...
最新文章
- mysql创建表语句 引擎、编码和字符集设置
- 未来十年有望改变世界的五大发现
- 要上进总会有时间的,要放松也总会有理由的——记录2年出版2本书带给我的改变,同时分享写书和写博客的技巧...
- 安装Office2007找不到OfficeMUI.msi解决方案
- 使用 docker 创建自己的镜像
- [BZOJ2048] [2009国家集训队] 书堆
- Oracle 10g 数据库连接出现The Network Adapter could not establish the connection解决办法
- ce修改面板属性_鬼谷八荒ce教程 教你如何修改属性+灵石+物品+时间等方法
- 印尼语翻译和爪哇翻译一次争斗为自定义
- [pion]测试你的TURN服务器
- plsql使用方法(主要是sql语句)
- 无线路由器服务器连接线,有线路由器接无线路由器怎么设置
- Centos7 安装mongodb 4.x
- keras教程-静态图编程框架keras-学习心得以及知识点总结
- linux安装project lemon测评机
- python函数名词解释_python的面向对象程序设计(名词解释及实例)
- python期权价格计算器_GitHub - QSCTech-Sange/Options-Calculator: 期权价格计算器——金融工程第二次展示...
- 随机事件与概率术语与主题
- Unity—Json1
- sublime 使用浏览器不反应