数字电路时钟设计verilog语言编写
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子线路设计与测试
实验报告
一、实验名称
多功能数字钟设计
二、实验目的
1.掌握可编程逻辑器件的应用开发技术
——设计输入、编译、仿真和器件编程;
2.熟悉一种EDA软件使用;
3.掌握Verilog设计方法;
4.掌握分模块分层次的设计方法;
5.用Verilog完成一个多功能数字钟设计。
三、设计内容及要求
1.基本功能
➢具有“秒”、“分”、“时”计时功能,小时按24小时制计时。
➢具有校时功能,能对“分”和“小时”进行调整。
2.扩展功能
➢仿广播电台正点报时。在59分51秒、53秒、55秒、57秒发出低音512Hz 信号,在59分59秒时发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。
➢定时控制,其时间为23时58分。
3.选做内容
➢任意时刻闹钟(闹钟时间可设置)。
➢自动报整点时数。
四.系统框图与说明
数字钟框图
1.数字钟电路系统由主体电路和扩展电路两大部分所组成。
2.秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器按照“24进制”规律计数。
3.计数器的输出经译码器送显示器。
五.设计步骤
1.列写多功能数字钟设计--层次结构图
多功能数字钟顶层模块
(clock_main.v)
小时计数器(counter24.v)
分钟计数器
(counter60.v)
秒钟计数器
(counter60.v)
6进制计数器(counter6.v)
10进制计数器
(counter10.v)
6进制计数器
(counter6.v)
10进制计数器
(counter10.v)
分频模块
(fre_divider.v)固定时刻
闹钟设定
校时模块
任意时刻闹钟(setclock.v)
整点报时模块
(baoshi.v)
2.拟定数字钟的组成框图,在Max+Plus II软件中,使用Verilog语言输入,采用分层次分模块的方法设计电路;
3.设计各单元电路并进行仿真;
4.对数字钟的整体逻辑电路图,选择器件,分配引脚,进行逻辑综合;
5.下载到Cyclone II FPGA实验平台上,实际测试数字钟的逻辑功能。
六.Verilog代码
//24进制时钟, 具有计时、校时、仿广播电台正点报时、固定时刻定时,任意时刻闹钟等功能
module
clock_main(LED_Hour,LED_Minute,LED_Second,Alarm,CP_1KHz,Jsh_Min_key,Jsh_Hour_ke y,Set_Hour_key,Set_Min_key,Show,Ctrl_Bell);
input CP_1KHz;//定义输入时钟
input Jsh_Min_key,Jsh_Hour_key;//定义校时按键
input Set_Hour_key,Set_Min_key;//定义闹钟定时按键
input Show; //定义显示模式按键
input Ctrl_Bell;//定义闹钟铃声控制
output [7:0]LED_Hour,LED_Minute,LED_Second;//定义输出变量
wire [7:0]LED_Hour,LED_Minute,LED_Second;//定义输出变量类型
wire [7:0]Hour,Minute,Second;
wire [7:0]Set_Hour_Out,Set_Min_Out;
wire Out_1Hz,Out_500Hz;//定义分频模块输出变量类型
reg Alarm_Ring,Alarm_Clock_1KHz;//定义仿广播电台报时和固定时刻定时铃声
output Alarm;//蜂鸣器输入
supply1Vdd;
wire Alarm_Clock;//任意时刻闹钟闹铃
wire MinL_EN,MinH_EN,Hour_EN;//定义中间变量类型
//分频
fre_dividerFD0(Out_1Hz,Out_500Hz,Vdd,Vdd,CP_1KHz);
//正常计时
counter10 U1(.Q(Second[3:0]),.nCR(Vdd),.EN(Vdd),.CP(Out_1Hz));
counter6
U2(.Q(Second[7:4]),.nCR(Vdd),.EN(Second[3:0]==4'h9),.CP(Out_1Hz));
assignMinL_EN=Jsh_Min_key?Vdd:(Second==8'h59);
assign
MinH_EN=(Jsh_Min_key&&(Minute[3:0]==4'h9))||(Minute[3:0]==4'h9)&&(Second==8'h59 );
counter10 U3(.Q(Minute[3:0]),.nCR(Vdd),.EN(MinL_EN),.CP(Out_1Hz));
counter6 U4(.Q(Minute[7:4]),.nCR(Vdd),.EN(MinH_EN),.CP(Out_1Hz));
assign Hour_EN=Jsh_Hour_key?Vdd:((Minute==8'h59)&&(Second==8'h59));
counter24 U5(Hour[7:4],Hour[3:0],Vdd,Hour_EN,Out_1Hz);
//仿广播电台正点报时
baoshi BS1(Alarm_Ring,Minute,Second,Out_500Hz,CP_1KHz);//在59分51秒、53秒、55秒、57秒发出低音512Hz信号,在59分59秒时发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点
//固定时刻定时