资源描述:
《数字钟实验报告.docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、多功能数字钟电路设计实验报告自动化1107班XXXU201113XXX一、实验目的1、掌握数字电路系统的设计方法、装调技术及数字钟的功能扩展电路的设计;2、掌握QuartusⅡ编程,实用VerilogHDL语言设计数字钟。二、实验原理1、数字钟的功能要求:⑴基本功能为:①准确计时,以数字形式显示时、分、秒的时间;②小时的计时要求为24进位,分和秒的计时要求为60进位;③校正时间(小时、分钟)。⑵扩展功能为:①闹钟(可调整);②仿广播电台整点报时;③报整点时数。④12/24显示切换2、总体组成框图:3、基于Ver
2、ilogHDL开发的PLD的流程:输入HDL程序对目标器件编程给输入、输出信号分配引脚号选择目标器件仿真测试→→→→→编译4、VerilogHDL程序的基本结构:module模块名(端口名1,端口名2,端口名3,···);端口类型说明(input,output,inout);参数定义(可选);数据类型定义(wire,reg等);实体化底层模块和基本门级元件连续赋值语句(assign);过程块结构(initial和always)行为描述语句;endmodule三、实验器件个人计算机Device:CycloneⅢE
3、P3C16F484C6四、实验过程1、分级模块①24计数器;②60计数器;③校时器;④分频器;⑤整点报时、仿电台报时器;⑥12/24转换器;⑦译码器。⑧显示器2、仿真3、编译链接、分配管脚4、下载到DEO板五、数字钟源代码modulecounter24(CntH,CntL,nCR,EN,CP);//24进制inputCP,nCR,EN;output[3:0]CntH,CntL;reg[3:0]CntH,CntL;regCO;always@(posedgeCPornegedgenCR)beginif(~nCR){
4、CntH,CntL}<=8'h00;elseif(~EN){CntH,CntL}<={CntH,CntL};elseif((CntH>2)
5、
6、(CntL>9)
7、
8、((CntH==2)&&(CntL>=3))){CntH,CntL}<=8'h00;elseif((CntH==2)&&(CntL<3))beginCntH<=CntH;CntL<=CntL+1'b1;endelseif(CntL==9)beginCntH<=CntH+1'b1;CntL<=4'b0000;endelsebeginCntH<=CntH;
9、CntL<=CntL+1'b1;endendendmodulemodulecounter12(CntH,CntL,nCR,EN,CP);//12进制inputCP,nCR,EN;output[3:0]CntH,CntL;reg[3:0]CntH,CntL;regCO;always@(posedgeCPornegedgenCR)beginif(~nCR){CntH,CntL}<=8'h00;elseif(~EN){CntH,CntL}<={CntH,CntL};elseif((CntH>1)
10、
11、(CntL>9)
12、
13、
14、((CntH==1)&&(CntL>=2))){CntH,CntL}<=8'h1;elseif((CntH==1)&&(CntL<1))beginCntH<=CntH;CntL<=CntL+1'b1;endelseif(CntL==9)beginCntH<=CntH+1'b1;CntL<=4'b0000;endelsebeginCntH<=CntH;CntL<=CntL+1'b1;endendendmodulemodulecounter6(Q,nCR,EN,CP);//6进制inputCP,nCR,EN;ou
15、tput[3:0]Q;reg[3:0]Q;always@(posedgeCPornegedgenCR)beginif(~nCR)Q<=4'b0000;elseif(~EN)Q<=Q;elseif(Q==4'b0101)Q<=4'b0000;elseQ<=Q+1'b1;endendmodulemodulecounter10(Q,nCR,EN,CP);//10进制inputCP,nCR,EN;output[3:0]Q;reg[3:0]Q;always@(posedgeCPornegedgenCR)beginif(~
16、nCR)Q<=4'b0000;elseif(~EN)Q<=Q;elseif(Q==4'b1001)Q<=4'b0000;elseQ<=Q+1'b1;endendmodulemodulefenpin1(clk_in,clk_out);//分频1hzinputclk_in;outputclk_out;regclk_out;reg[31:0]count;always@(posedgeclk_