1、 数字电路课程设计题目: 利用 CPLD设计可调时数字钟 学 院 专 业 学 号 姓 名 教 师201利用 CPLD 设计可调时数字钟摘 要装订线装订线本数字钟采用动态显示数字的方法,输入 512Hz的时钟信号,驱动显示位选信号产生,位选信号以 85Hz从 0到 6不断地扫描数码管。 输入 2Hz信号通过 2分频变成秒信号,秒信号驱动时钟计数模块计数,完成时钟计数的功能,在位选信号扫描到相应的数码管时,计数器将计数的结果显示在数码管上,由于视觉残留的关系,人眼会感觉到数字一直在显示,从而实现计时功能。 在手动调节时钟时,有三个按键,一个实现清零,一个作为分调整按键,最后一个作为时调整按键。调整
2、时间键在对应时或者分数码管后通过按压按键产生脉冲使数码管实现加一的运算,从而改变时间,将 1Hz闪烁的小数点接在秒信号上即可。关键词:CPLD 计数器 分频器 三选择器 七段译码器目 录一、总体设计方案 .1 1.1设计要求 .11.2设计原理 .11.2.1电源电路 .1 1.2.2振荡电路与分频电路 .1 1.2.3显示电路 .21.2.4JTAG下载接口 .21.2.5CPLD电路原理图 .3二、各模块说明 .4 2.1设计思路及步骤 .4 2.2总体框图 .4 2.3各模块说明 .4 2.3.1 7段译码器 .4 2.3.2 消抖模块 .5 2.3.3与门模块 .5 2.3.4数据选择
3、器模块 .62.3.5 D触发器模块 .6 2.3.6非门模块 .7 2.3.7或门模块 .7 2.3.8十进制计数模块 .7 2.3.9位选模块 .8 2.3.10秒计数模块 .8 2.3.11六进制模块 .102.3.12分计数模块 .112.3.13分频器模块 .122.3.14顶层总模块 .132.4数字钟电路总图 .12 三、课程总结 .16 3.1遇到的问题及其解决办法 .16 3.2收获与体会 .16 参考文献 .160 / 16一 总体设计方案1.1 设计要求1、以数字形式显示时、分、秒的时间; 2、要求手动校时、校分; 3、时与分显示之间的小数点常亮; 4、分与秒显示之间的小
4、数点以 1Hz频率闪烁; 5、各单元模块设计即可采用原理图方式也可以用 Verilog程序进行设计。 1.2 设计原理1.2.1 电源电路如图 1.1示为实验所需的电源电路。 C7.uF869VinGNDUAMS-RKLEPowerJB+图 1-1 电源电路图1.2.2 振荡电路与分频电路晶体振荡器给数字钟提供一个频率稳定准确的 32768Hz的方波信号,可保证数字钟的走时准确及稳定. 分频电路采用 T触发器对其分频,每经过一个 T触发器对其二分频,所以各点的分频倍数分别为:QD: 24 QE: 25 QF: 26 QG: 27 QH: 28 QI: 292 QJ: 210 QL: 212 Q
5、M: 213 QN: 214;此处采用的是 32768Hz的晶振,故分频之后QF:512Hz、QI:64Hz、QN:2Hz。1 / 16CINOUT90RS2Q475683MHYzKPFDLA_EBinput3:0datain;output6:0dataout;reg6:0dataout;always(datain)begin4 / 16casex(datain)4b0000:dataout=7b0111111;4b0001:dataout=7b0000110;4b0010:dataout=7b1011011;4b0011:dataout=7b1001111;4b0100:dataout=7b
6、1100110;4b0101:dataout=7b1101101;4b0110:dataout=7b1111101;4b0111:dataout=7b0000111;4b1000:dataout=7b1111111;4b1001:dataout=7b1101111;default:dataout=7bx;endcaseendendmodule2.3.2 消抖模块 module xiaodou (clk,key_in,key_out);input clk,key_in;output key_out;Dchufa u1(.datain(key_in),.clk(clk),.dataout(c0);
7、Dchufa u4(.datain(c2),.clk(clk),.dataout(key_out);yumen u3(.datain1(c1),.datain2(key_in),.dataout(c2);feimen u2(.datain(c0),.dataout(c1);endmodule2.3.3 与门模块module yumen(datain1,datain2,dataout);input datain1,datain2;output dataout;reg dataout;always(datain1,datain2)beginif(datain15 / 16elsedataout=0
8、;endendmodule 2.3.4 数据选择器模块 module sel61(datain1,datain2,datain3,datain4,datain5,datain6,sel,dataout);input3:0 datain1,datain3,datain5;input2:0 datain2,datain4,sel;input1:0 datain6;output3:0 dataout;reg3:0 dataout;always(datain1,datain2,datain3,datain4,datain5,datain6,sel)begincase(sel)3b000:dataout
9、=datain1;3b001:dataout=datain2;3b010:dataout=datain3;3b011:dataout=datain4;3b100:dataout=datain5;3b101:dataout=datain6;default:dataout=dataout;endcaseendendmodule2.3.5D 触发器模块module Dchufa(datain,clk,dataout);input datain,clk;output dataout;reg dataout;always(posedge clk)begindataout=datain;endendmodule