数字时钟设计Word文件下载.docx
- 文档编号:16101839
- 上传时间:2022-11-19
- 格式:DOCX
- 页数:11
- 大小:106.76KB
数字时钟设计Word文件下载.docx
《数字时钟设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《数字时钟设计Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
但是如果从示波器看振荡波形就会不一致了,而且可能会造成振荡电路因工作点不合适而停振。
所以千万不要省略此电阻。
这个电阻是为了使本来为逻辑反相器的器件工作在线性区,以获得增益,在饱和区是没有增益的,没有增益是无法振荡的。
如果用芯片中的反相器来作振荡,必须外接这个电阻,对于CMOS而言可以是1M以上,对于TTL则比较复杂,视不同类型(S,LS…)而定。
图3.晶振电路
按键电路
按键电路为了实现该设计的基本功能,通过按键电路实现计数时钟的的开启和暂停功能。
图4.按键电路
电源电路
本次课程设计所使用的电源是由外界直接提供的,直接给板子供电。
显示电路
在应用数码管显示时,首先需要考虑的问题就是驱动电流,与发光二极管相同,数码管的发光段也需要串联限流电阻,共阳极数码管为例,串联的限流阻值越大,电流越小,亮度越低;
电阻值越小,电流越大,亮度越高。
在使用限流电阻时需要在每一段线上都串联限流电阻,而不要在公共端上串联电阻,如果只是在公共端上串联一个限流电阻,则显示不同数字是,将会造成数码管亮度的不同。
在动态显示时,每个数码管的断连线是对应连接在一起的,同时由于数码管不存在同时点亮状态,所以只需在段连线的引出端上串联限流电阻即可。
图9.数码管驱动电路
芯片EPM7064简介
CPLD(ComplexProgrammableLogicDevice)复杂可编程逻辑器件,是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围。
是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。
其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统.本文采用ALTERA公司的MAX7000s,它是基于第二代MAX结构的高精度、高性能、在系统中可编程的CPLD芯片,采用CMOS技术加工而成,内含电可擦除只读存储器,可提供600~5000个可用选通引脚、ISP、速度仅有5ns的延迟以及频率可达175.4MHZ的高速计数器。
图10.EPM7064
3设计程序
引脚配置
总结及心得
遇到的问题:
1焊接时,由于三极管的管脚距离太近,焊接时很容易管脚发生连焊.
2焊好后,JTAG接口无法正常下载程序(经检查,是当时焊接时,烙铁温度过高,导致一个管脚的焊盘脱落,不导电所致)
3:
数码管有的不亮,可能是有虚焊,用手按着某个器件会发现数码管会亮。
解决方法:
1我们通过把电烙铁侧拿、只用一个角与三极管和焊锡接触,以此来避免出现管脚相。
连的现象发生。
2:
通过先把芯片放在别人的能下载的电路板上下载程序,再放到我们的电路板上。
重点检查芯片座是否明显虚焊,一般故障发生在插座上。
检查虚焊的方法:
1:
用电压表的两个表笔分别同时接触三极管的任意两个管脚,检测是否有连焊的现象:
2:
用电压表的两个表笔分别测量电路,看是否有虚焊;
当检测一条线路时,若电压/电流表发出蜂鸣声,说明此线路没有虚焊的部分,反之,则需要逐段检查,直到找出为止。
测试结果:
给焊好的电路板供3.3V的电压,然后通过JTAG接口用PC机给EPM7064的电路主芯片下载程序,看电路板芯片是否正常工作,时钟是否能正确显示,暂停、复位等功能是否能用。
经测试,在本电路板上能正常工作,且能实现暂停、复位功能。
心得:
这次课程设计让我把这学期的所学,像Verilog仿真,数字系统的设计等重新复习一遍,为以后的其他课程的开展奠定了良好的基础。
更让我初步掌握了EPM7064系列芯片的结构、功能和使用方法,老师说过这门功课本来就是很实用的一门技术,这次的课程设计不仅加强了我的专业知识,而且增强了迎接未来可能碰到的难题的信心。
通过这次专业实践,受益匪浅,感谢老师们给我们提供这样的机会。
参考文献
【1】《Verilog数字系统设计教程》夏雨闻北航出版社;
【2】《电子技术基础》康华光高等教育出版社;
【3】黄正瑾,徐坚,章小丽,等.CPLD系统设计技术入门与应用[M].北京:
电子工业社.2002.
附录一:
源程序
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;
//定义数码管选择输出寄存器
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])
dout1<
=key;
dout2<
=dout1;
dout3<
=dout2;
always@(negedgekey_done[0])
keyen=~keyen;
//将琴键开关转换为乒乓开关
//数码管动态扫描显示部分
always@(posedgeclk)//count[17:
15]大约1ms改变一次
case(count[17:
15])//选择扫描显示数据
3'
d0:
disp_dat=hour[3:
0];
//秒个位
d1:
disp_dat=hour[7:
4];
//秒十位
//3'
d2:
disp_dat=4'
ha;
//显示"
-"
disp_dat=hour[11:
8];
//分个位
d3:
disp_dat=hour[15:
12];
//分十位
d5:
显示"
//3'
d6:
disp_dat=hour[19:
16];
时的个位
d7:
disp_dat=hour[23:
20];
时的十位
endcase
15])//选择数码管显示位
dig_r=4'
b1110;
//选择第一个数码管显示
b1101;
//选择第二个数码管显示
b1011;
//选择第三个数码管显示
b0111;
//选择第四个数码管显示
d4:
b1111;
//选择第五个数码管显示
dig_r=8'
b11011111;
//选择第六个数码管显示
b10111111;
//选择第七个数码管显示
b01111111;
//选择第八个数码管显示
endcase
always@(posedgeclk)
case(disp_dat)
4'
h0:
seg_r=8'
hc0;
//显示0
h1:
hf9;
//显示1
h2:
ha4;
//显示2
h3:
hb0;
//显示3
h4:
h99;
//显示4
h5:
h92;
//显示5
h6:
h82;
//显示6
h7:
hf8;
//显示7
h8:
h80;
//显示8
h9:
h90;
//显示9
//4'
ha:
hbf;
//显示-
default:
hff;
//不显示
//if((count[17:
15]==3'
d2)&
sec)
//seg_r=8'
//计时处理部分
always@(negedgesecornegedgekey_done[1])//计时处理
if(!
key_done[1])//是清零键吗?
hour=23'
h0;
//是,则清零
elseif(!
keyen)
hour[3:
0]=hour[3:
0]+1'
//秒加1
if(hour[3:
0]=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 时钟 设计