数字逻辑电路课程设计报告多功能数字钟综述.docx
- 文档编号:9682226
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:13
- 大小:333.98KB
数字逻辑电路课程设计报告多功能数字钟综述.docx
《数字逻辑电路课程设计报告多功能数字钟综述.docx》由会员分享,可在线阅读,更多相关《数字逻辑电路课程设计报告多功能数字钟综述.docx(13页珍藏版)》请在冰点文库上搜索。
数字逻辑电路课程设计报告多功能数字钟综述
江苏大学
数字逻辑课程设计
___________多功能数字钟
专业:
软件1001
学号:
3100608024
姓名:
张同学
2012年1月11日
一、设计目的
1、学会应用数字系统方法进行电路设计;
2、进一步提高MaxplusⅡ软件开发应用能力;
3、培养综合实验的能力;
二、设计要求
1、能进行正常的记时、记分、记秒
2、实现校时、校分以及秒清0的功能
3、实现整点报时的功能
4、实现时间的正常显示
5、闹时功能的实现
三、具体设计思路
1、利用按键实现“校时”、“校分”和“秒清0”功能。
(1)SA:
校时键。
按下SA键时,时计数器迅速递增,按24小时循环,并且计满23时回到00。
(2)SB:
校分键。
按下SB键时,分计数器迅速递增,按60小时循环,并且计满59时回到00,但不向时进位。
(3)SC:
秒清零。
按下SC时,秒计数器清零。
要求按键均不产生数字跳变,因此须对“SA”、“SB”进行消抖处理。
实现:
①:
十进制计数器的设计:
VHDL描述:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityls160isport(
data:
instd_logic_vector(3downto0);
clk,ld,p,t,clr:
instd_logic;
count:
bufferstd_logic_vector(3downto0);
tc:
outstd_logic);
endls160;
architecturebehaviorofls160is
begin
tc<='1'when(count="1001"andp='1'andt='1'andld='1'andclr='1')else'0';
cale:
process(clk,clr,p,t,ld)
begin
if(rising_edge(clk))then
if(clr='1')then
if(ld='1')then
if(p='1')then
if(t='1')then
if(count="1001")then
count<="0000";
else
count<=count+1;
endif;
else
count<=count;
endif;
else
count<=count;
endif;
else
count<=data;
endif;
else
count<="0000";
endif;
endif;
endprocesscale;
endbehavior;
②24进制计数器和60进制计数器的设计(以十进制计数器为基础):
24进制计数器:
60进制计数器:
仿真图:
2、能进行整点报时。
(1)在59分50、52、54、56、58秒按500Hz频率报时;
(2)在59分60秒用1KHz的频率作最后一声正点报时。
VHDL描述:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitybaoshiis
port(m1,m0,s1,s0:
instd_logic_vector(3downto0);
sig500,sig1k:
outstd_logic);
endhourring;
architectureaofbaoshiis
signalq:
std_logic_vector(15downto0);
signals500,s1k:
std_logic;
begin
q(15downto12)<=m1;
q(11downto8)<=m0;
q(7downto4)<=s1;
q(3downto0)<=s0;
hring:
block
begin
s500<='1'whenq="0101100101010000"else
'1'whenq="0101100101010010"else
'1'whenq="0101100101010100"else
'1'whenq="0101100101010110"else
'1'whenq="0101100101011000"else
'0';
s1k<='1'whenq="0000000000000000"else
'0';
endblockhring;
sig500<=s500;
sig1k<=s1k;
enda;
3.程序中由于需要输入多个不同的时钟信号,故需要设计一个分频器,使输入时钟信号简化。
VHDL描述:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entityfrequencydivideris
port(cp:
instd_logic;
hz512,hz256,hz64,hz4,hz1:
outstd_logic);
endfrequencydivider;
architectureoneoffrequencydivideris
SIGNALclk:
std_logic_vector(9downto0);
begin
process(cp)
begin
ifcp'eventandcp='1'then
ifclk="1111111111"then
clk<="0000000000";
elseclk<=clk+1;
endif;
endif;
endprocess;
hz512<=clk(0);
hz256<=clk
(1);
hz64<=clk(3);
hz4<=clk(7);
hz1<=clk(9);
endone;
分频仿真图:
4、能进行正常的时、分、秒计时,用动态扫描的方式显示,需用6个数码管。
(1)用M6M5进行24进制小时的显示。
(2)用M4M3进行60进制分的显示。
(3)用M2M1进行60进制秒的显示。
动态扫描用VHDL描述:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitydtsmis
port(clk:
instd_logic;
s:
instd_logic_vector(7downto0);
f:
instd_logic_vector(7downto0);
m:
instd_logic_vector(7downto0);
selout:
outstd_logic_vector(5downto0);
segout:
outstd_logic_vector(6downto0)
);
enddtsm;
architecturert1_dtsmofdtsmis
signalnumber:
std_logic_vector(3downto0);
signalsel:
std_logic_vector(5downto0);
signalseg:
std_logic_vector(6downto0);
signalq:
std_logic_vector(2downto0);
begin
rt1_dtsm:
process(clk)
begin
if(clk'eventandclk='1')then
q<=q+1;
endif;
endprocessrt1_dtsm;
process(q)
begin
caseqis
when"000"=>sel<="000001";
when"001"=>sel<="000010";
when"010"=>sel<="000100";
when"011"=>sel<="001000";
when"100"=>sel<="010000";
when"101"=>sel<="100000";
whenothers=>sel<="000000";
endcase;
endprocess;
process
begin
ifsel="000001"then
number<=m(3downto0);
elsifsel="000010"then
number<=m(7downto4);
elsifsel="000100"then
number<=f(3downto0);
elsifsel="001000"then
number<=f(7downto4);
elsifsel="010000"then
number<=s(3downto0);
elsifsel="100000"then
number<=s(7downto4);
else
number<="1111";
endif;
endprocess;
process(number)
begin
casenumberis
when"0000"=>seg<="0111111";
when"0001"=>seg<="0000110";
when"0010"=>seg<="1011011";
when"0011"=>seg<="1001111";
when"0100"=>seg<="1100110";
when"0101"=>seg<="1101101";
when"0110"=>seg<="1111101";
when"0111"=>seg<="0000111";
when"1000"=>seg<="1111111";
when"1001"=>seg<="1101111";
whenothers=>seg<="0000000";
endcase;
endprocess;
selout<=sel;
segout<=seg;
endrt1_dtsm;
附:
顶层图
四、遇到的问题及解决方法
1、为了连接方便,对图经行必要的旋转时,导致了输入输出移位,以致编译错误,耗费了大量时间,可见细节很重要。
2、做七段显示器时,由于扫描频率过低,显示闪烁,当频率高于256时,可以正常显示。
3、报时时需要两个不同的频率。
通过电路中两个与门和一个或门将两个不同信号选择的送到扬声器。
五、设计结果
下载到实验板上后,可以在七段数码管上正确显示时间,且具有整点报时、手动校时的功能,但是没有实现闹铃功能。
六、实验总结
通过这次多功能数字钟的设计实验,让我基本上掌握了VHDL语言的编写和图形连接,使我熟悉了对MaxPlusII软件的使用并加深了对VHDL语言编程和图形编辑的认识和了解。
也同时更加熟练的掌握了运用波形图进行仿真以及下载测试。
也让我了解了关于数字钟的原理与设计理念,要设计一个电路先进行软件模拟仿真再进行实际的电路制作。
但是最后的成品却不一定与仿真时完全一样,因为,再实际接线中有着各种各样的条件制约着。
而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。
所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。
通过这次学习,让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际,在今后的学习中,还要多去实践书本的内容,学到更多的知识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 逻辑电路 课程设计 报告 多功能 综述