数字时钟电路设计.docx
- 文档编号:3573624
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:16
- 大小:230.26KB
数字时钟电路设计.docx
《数字时钟电路设计.docx》由会员分享,可在线阅读,更多相关《数字时钟电路设计.docx(16页珍藏版)》请在冰点文库上搜索。
数字时钟电路设计
EDA课程设计报告
系别:
电子通信工程系
专业:
电子信息工程
姓名:
孙进宝
学号:
070608119
指导教师:
马鹏阁
张松炜
王春彦
目录
1任务书1
2设计方案1
2.1时钟电路2
2.2按键电路3
2.3显示电路3
2.4芯片EPM7064简介4
2.5JTAG接口电路4
2.6软件设计流程图5
2.7引脚配置6
2.8工程创建流程图7
3实验仪器8
4测试步骤8
5测设结果8
6遇到的问题和解决方法8
7总结9
参考文献:
9
附件一:
电路图10
附录二:
源程序11
基于EPM7064的数字时钟电路设计
1任务书
1、设计一个数字时钟,4位数码管显示“分(2位)”,“秒(2位)”,带复位功能和暂停功能。
2、用中小规模集成电路组成电子钟;电源5V,系统时钟12MHz,带JTAG下载电路;
3.核心芯片Altera,EPM7064,PLCC44封装。
2设计方案
本设计由石英晶体振荡器、分频器、计数器、译码器显示器和校时电路组成。
振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。
秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位。
设计原理框图如下:
图1.电路设计框图
此次设计的多功能数字钟主要有五部分组成:
(1)有源晶振部分:
主要产生时钟频率为12MHZ的输入信号脉冲
(2)开关控制部分:
主要实现数字钟的暂停、复位。
(3)EPM7064芯片部分:
是整个数字钟的核心部分。
主要是程序写入以及对输入脉冲的接收与转换输出工作。
芯片采用ATERAEPM7064,PLCC44封装
(4)下载电路部分:
使用JTAG下载电路
(5)数码管显示部分:
4位数码管显示分(2位)、秒(2位)
2.1时钟电路
晶体振荡器电路给数字钟提供一个品种稳定准确的方波信号,可保证数字钟的走私准确及稳定。
与晶振并联的电阻的作用——与晶振并联的电阻R17是反馈电阻,是为了保证反相器输入端的工作点电压在VDD/2,这样在振荡信号反馈在输入端时,能保证反相器工作在适当的工作区。
虽然去掉该电阻时,振荡电路仍工作了。
但是如果从示波器看振荡波形就会不一致了,而且可能会造成振荡电路因工作点不合适而停振。
所以千万不要省略此电阻。
这个电阻是为了使本来为逻辑反相器的器件工作在线性区,以获得增益,在饱和区是没有增益的,没有增益是无法振荡的。
如果用芯片中的反相器来作振荡,必须外接这个电阻,对于CMOS而言可以是1M以上,对于TTL则比较复杂,视不同类型(S,LS…)而定。
如果是芯片指定的晶振引脚,如在某些微处理器中,常常可以不加,因为芯片内部已经制作了,这两个电容(C7,C8)叫晶振的负载电容,分别接在晶振的两个脚上和对地的电容,一般在几十皮法。
它会影响到晶振的谐振频率和输出幅度,一般订购晶振时候供货方会问你负载电容是多少。
晶振的负载电容=[(Cd*Cg)/(Cd+Cg)]+Cic+△C式中Cd,Cg为分别接在晶振的两个脚上和对地的电容,Cic(集成电路内部电容)+△C(PCB上电容)经验值为3至5pf。
这两个电容串联的值是并联在谐振回路上的,会影响振荡频率。
当两个电容量相等时,反馈系数是0.5,一般是可以满足振荡条件的,但如果不易起振或振荡不稳定可以减小输入端对地电容量,而增加输出端的值以提高反馈量。
图2.晶振电路
2.2按键电路
按键电路为了实现该设计的基本功能,通过按键电路实现计数时钟的的开启和暂停功能。
图3.按键电路
2.3显示电路
在应用数码管显示时,首先需要考虑的问题就是驱动电流,与发光二极管相同,数码管的发光段也需要串联限流电阻,共阳极数码管为例,串联的限流阻值越大,电流越小,亮度越低;电阻值越小,电流越大,亮度越高。
在使用限流电阻时需要在每一段线上都串联限流电阻,而不要在公共端上串联电阻,如果只是在公共端上串联一个限流电阻,则显示不同数字是,将会造成数码管亮度的不同。
在动态显示时,每个数码管的断连线是对应连接在一起的,同时由于数码管不存在同时点亮状态,所以只需在段连线的引出端上串联限流电阻即可。
图7.数码管驱动电路
图8.数码管驱动电路
2.4芯片EPM7064简介
CPLD(ComplexProgrammableLogicDevice)复杂可编程逻辑器件,是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围。
是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。
其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统.本文采用ALTERA公司的MAX7000s,它是基于第二代MAX结构的高精度、高性能、在系统中可编程的CPLD芯片,采用CMOS技术加工而成,内含电可擦除只读存储器,可提供600~5000个可用选通引脚、ISP、速度仅有5ns的延迟以及频率可达175.4MHZ的高速计数器。
2.5JTAG接口电路
JTAG接口是一个业界标准,主要用于芯片测试和配置等功能,使用IEEEStd1149.1联合边界扫描接口引脚。
JTAG最初用于芯片功能的测试,其工作原理是在器件内部定义一个测试访问端口(TestAccessPort,TAP),通过专用的JTAG测试工具对内部节点进行测试和调试。
TAP是一个通用的端口,外部控制器通过TAP可以访问芯片提供的所有数据寄存器和指令寄存器。
现在JTAG接口还常用于芯片的在线配置,对PLD、Flash等器件进行配置。
为了完成系统的调试,任何原型系统都支持JTAG配置方式,因而JTAG配置也就成为最广泛支持的配置方式。
不同厂商和不同型号的绝大部分FPGA芯片都支持JTAG配置方式。
在Altera公司的FPGA芯片中,JTAG配置方式比其他任何一种配置方式的优先级都高。
JTAG允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,实现对各个器件分别测试和配置。
JTAG接口由4个必需的信号TDI、TD0、TMS和TCK,以及1个可选信号TRST构成。
图9.JTAG接口电路
2.6软件设计流程图
2.7引脚配置
锁定后的管脚结果如下:
NodeName
Direction
Location
a13
Output
PIN_2
b12
Output
PIN_3
c9
Output
Pin_4
clk
Input
PIN_28
clkdsp
Input
PIN_6
d10
Output
PIN_7
e11
Output
PIN_8
f8
Output
PIN_11
g
Output
PIN_12
lamp[2]
Output
PIN_37
lamp[1]
Output
PIN_39
lamp[0]
Output
PIN_38
reset
Input
PIN_16
sel[2]
Output
PIN_19
sel[1]
Output
PIN_18
sel[0]
Output
PIN_17
setmsec
Input
PIN_20
setsec
Input
PIN_21
2.8工程创建流程图
3实验仪器
本实验用到的实验仪器是3.3V稳压供电电源、PC机、JTAG下载线,以及基于FPGA的Altera公司的实验开发试验箱。
焊电路板时还需要电烙铁、焊锡、镊子等。
4测试步骤
将元件按照电路板上的位置一个个进行安放与焊接,这个工作尤其要认真不能有丝毫的马虎,特别是需要区分正负极的元件。
我们的焊接工作比较顺利,焊好之后能够顺利的进行程序的下载,但焊出的板子还是有点小小的瑕疵,需要在以后多加注意。
本次课程设计的程序在QuartusII软件中的调试工作不像预期中的那么顺利,但是经过老师的指导及各位同学的不断探讨还是成功了。
通过程序的调试工作是我们对Verilog语言有更进一步的认识,对QuartusII软件的使用也更加熟悉。
电路板的调试工作也是比较顺利的,经过万用表测试没有问题后,我们便把程序下载进电路板,电路板正常的显示了分与秒,按下按键正常实现了暂停与复位功能。
5测设结果
给焊好的电路板供3.3V的电压,然后通过JTAG接口用PC机给EPM7064的电路主芯片下载程序,看电路板芯片是否正常工作,时钟是否能正确显示,暂停、复位等功能是否能用。
经测试,本电路不能正常通过JTAG接口下载程序,但是在其他电路板上下载好程序的芯片,在本电路板上能正常工作,且能实现暂停、复位功能。
6遇到的问题和解决方法
焊接时,由于三极管的管脚距离太近,焊接时很容易管脚发生连焊,于是我们通过把电烙铁侧拿、只用一个角与三极管和焊锡接触,以此来避免出现管脚相连的现象发生。
焊好后,JTAG接口无法正常下载程序(经检查,是当时焊接时,烙铁温度过高,导致一个管脚的焊盘脱落,不导电所致),于是通过先把芯片放在别人的能下载的电路板上下载程序,然后再放到我们的电路板上,结果表明:
下载好程序的芯片放在本电路上,能够正常工作。
7总结
经过几天努力,终于完成了我们的课程设计,虽然没有那么完美,但从心底里说,还是高兴的,毕竟这次设计终于得以完成,但是高兴之余不得不深思呀!
我们由衷感谢老师提供给我们这样一个锻炼自己的机会,让我们第一次感受到学来的知识不只是用来完成试卷的。
在完成课程设计的过程中体会到团队合作的乐趣。
一向惯于“独立思考”的我们学会了积极的同团队成员交流,取长补短,共同进步。
“独学而无友则孤陋而寡闻”,只有和同学多交流多学习才能不断的提高自身水平。
最重要的一点,我们学会了一种快速有效的学习方法。
以往的学习都是老师讲学生记,不懂得地方就靠解答大量习题帮助记忆,学习的主要目的是通过最后的考试。
课程设计使我们发现考试真的并不是最重要,最重要的是能运用所学的知识。
在整个课程的学习过程中,我们突破了传统学习模式,把被动接受转变为主动学习。
不再是用学到的知识解题,而是在实际运用时遇到什么学什么,重在把知识应用于实际。
从这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,实践是检验真理的唯一标准。
我们电子专业的学习更是如此,不仅要有丰富的理论知识,还要有很强的动手能力,只有理论与实践并重,我们的专业水平才能提高,这就是我在这次课程设计中的最大收获。
另外感谢老师给我们辅导课程设计,我想有了这次课程设计,我们以后做毕业设计会变的得心应手,不会无从下手。
参考文献
【1】潘松,黄继业·EDA技术实用教程·科学出版社·2006年9月第三版
【2】杨乐平,李海涛,肖相生,等·程序设计与应用第2版[M].北京:
电子工业出版社.2005.
【3】马淑华,高原·《电子设计自动化》·北京邮电大学出版社·2006
附件一:
电路图
附录二:
源程序
moduleclock(clk,key,dig,seg);//模块名clock
inputclk;//输入时钟
input[1:
0]key;//输入按键
output[3:
0]dig;//数码管选择输出引脚
output[7:
0]seg;//数码管段输出引脚
reg[7:
0]seg_r;//定义数码管输出寄存器
reg[3:
0]dig_r;//定义数码管选择输出寄存器
reg[3:
0]disp_dat;//定义显示数据寄存器
reg[22:
0]count;//定义计数寄存器
reg[15:
0]hour;//定义现在时刻寄存器
regsec,keyen;//定义标志位
reg[1:
0]dout1,dout2,dout3;//寄存器
wire[1:
0]key_done;//按键消抖输出
assigndig=dig_r;//输出数码管选择
assignseg=seg_r;//输出数码管译码结果
//秒信号产生部分
always@(posedgeclk)//定义clock上升沿触发
begin
count=count+1'b1;
if(count==23'd6000000)//0.5S到了吗?
begin
count=23'd0;//计数器清零
sec=~sec;//置位秒标志
end
end
//按键消抖处理部分
assignkey_done=(dout1|dout2|dout3);//按键消抖输出
always@(posedgecount[17])
begin
dout1<=key;
dout2<=dout1;
dout3<=dout2;
end
always@(negedgekey_done[0])
begin
keyen=~keyen;//将琴键开关转换为乒乓开关
end
//数码管动态扫描显示部分
always@(posedgeclk)//count[17:
15]大约1ms改变一次
begin
case(count[17:
15])//选择扫描显示数据
3'd0:
disp_dat=hour[3:
0];//秒个位
3'd1:
disp_dat=hour[7:
4];//秒十位
//3'd2:
disp_dat=4'ha;//显示"-"
3'd2:
disp_dat=hour[11:
8];//分个位
3'd3:
disp_dat=hour[15:
12];//分十位
//3'd5:
disp_dat=4'ha;显示"-"
//3'd6:
disp_dat=hour[19:
16];时个位
//3'd7:
disp_dat=hour[23:
20];时十位
endcase
case(count[17:
15])//选择数码管显示位
3'd0:
dig_r=4'b1110;//选择第一个数码管显示
3'd1:
dig_r=4'b1101;//选择第二个数码管显示
3'd2:
dig_r=4'b1011;//选择第三个数码管显示
3'd3:
dig_r=4'b0111;//选择第四个数码管显示
//3'd4:
dig_r=4'b1111;//选择第五个数码管显示
//3'd5:
dig_r=8'b11011111;//选择第六个数码管显示
//3'd6:
dig_r=8'b10111111;//选择第七个数码管显示
//3'd7:
dig_r=8'b01111111;//选择第八个数码管显示
endcase
end
always@(posedgeclk)
begin
case(disp_dat)
4'h0:
seg_r=8'hc0;//显示0
4'h1:
seg_r=8'hf9;//显示1
4'h2:
seg_r=8'ha4;//显示2
4'h3:
seg_r=8'hb0;//显示3
4'h4:
seg_r=8'h99;//显示4
4'h5:
seg_r=8'h92;//显示5
4'h6:
seg_r=8'h82;//显示6
4'h7:
seg_r=8'hf8;//显示7
4'h8:
seg_r=8'h80;//显示8
4'h9:
seg_r=8'h90;//显示9
//4'ha:
seg_r=8'hbf;//显示-
default:
seg_r=8'hff;//不显示
endcase
//if((count[17:
15]==3'd2)&sec)
//seg_r=8'hff;
end
//计时处理部分
always@(negedgesecornegedgekey_done[1])//计时处理
begin
if(!
key_done[1])//是清零键吗?
begin
hour=23'h0;//是,则清零
end
elseif(!
keyen)
begin
hour[3:
0]=hour[3:
0]+1'b1;//秒加1
if(hour[3:
0]==4'ha)
begin
hour[3:
0]=4'h0;
hour[7:
4]=hour[7:
4]+1'b1;//秒的十位加一
if(hour[7:
4]==4'h6)
begin
hour[7:
4]=4'h0;
hour[11:
8]=hour[11:
8]+1'b1;//分个位加一
if(hour[11:
8]==4'ha)
begin
hour[11:
8]=4'h0;
hour[15:
12]=hour[15:
12]+1'b1;//分十位加一
end
end
end
end
end
endmodule
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 时钟 电路设计