北华大学EDA实验报告报时式电子钟.docx
- 文档编号:3732931
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:11
- 大小:85.28KB
北华大学EDA实验报告报时式电子钟.docx
《北华大学EDA实验报告报时式电子钟.docx》由会员分享,可在线阅读,更多相关《北华大学EDA实验报告报时式电子钟.docx(11页珍藏版)》请在冰豆网上搜索。
北华大学EDA实验报告报时式电子钟
北华大学开放实验报告
实验项目名称:
报时式电子钟
所属课程名称:
数字系统设计
实验类型:
设计型
实验日期:
XXXXX
班级:
XX-XX
学号:
XXX
姓名:
XXX
成绩:
一、实验题目名称:
报时式电子钟
二、实验目的与要求:
1、能够根据题目查阅手册,设计出实验方案。
2、熟练使用EDA技术的辅助软件(QuartusⅡ)。
3、掌握电路的设计原则,根据要求设计出逻辑电路图,以EP1K30QC208目标芯片,利用原理图或VHDL语言来实现电路。
4、在集成开发环境里进行编译、仿真、综合,最后在线下载调试。
5、培养学生严谨、细致、实干的科学作风,要求必须独立完成设计电路完成调试及总结报告的全过程。
6、设计一台能显示小时、分、秒的数字钟,具体要求如下:
1)能完成小时、分、秒显示的24小时技术功能;
2)能完成整点报时功能,要求当数字钟的分和秒计数器计到59分50秒时,驱动音响电路,四低一高,最后一声高音结束;
3)完成对时和分的校时,并能对秒计数器清零;
4)采用层次化,VHDL语言设计,并对各模块进行功能仿真;
5)对所完成的设计进行编译、综合、编程下载,并完成硬件调试。
实验环境:
PC机、QuartusⅡ软件
实验原理以及方案设计:
该设计分成五个模块:
定时时钟模块、扫描时钟模块、按键处理模块、定时计数模块和显示控制模块。
各模块连接如图1:
图1顶层原理图
在该设计中,显示控制模块主要作用是在7段数码管上正确的显示0-9的数字,别处理。
在该设计中,采用24小时计数模式。
秒的个位计数从0-9,即十进制计数。
当秒的个位计数到9后,准备向秒的十位进位。
秒的十位计数从0-5,即六进制计数。
十位进位。
秒的十位计数从0-5,即六进制计数。
当秒的十位计数到5后,准备向分的个位进位。
分钟的个位计数从0-9,即十进制计数。
当分钟的个位计数到9后,准备向分钟的十位进位。
分钟的十位计数从0-5,即六进制计数。
当分钟的十位计数到5后,准备向小时的个位进位。
显示控制模块主要作用是在7段数码管上正确的显示0-9的数字。
sel三位选择线和3-8译码器相连
实验过程:
各模块和实验程序:
图2秒计数器模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCLKS_0205IS
PORT(CLK,CLR,CLR1,CLR2:
INSTD_LOGIC;
COS:
OUTSTD_LOGIC;
QS:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDCLKS_0205;
ARCHITECTURECLOCK3OFCLKS_0205IS
SIGNALQN:
STD_LOGIC_VECTOR(6DOWNTO0);
BEGIN
PROCESS(CLK)
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
IF(CLR='0'ORCLR1='1'ORCLR2='1')THENQN<=B"0000000";COS<='0';
ELSIFQN=B"1011001"THENCOS<='0';QN<=B"0000000";
ELSIFQN=B"0001001"THENQN<=B"0010000";COS<='0';
ELSIFQN=B"0011001"THENQN<=B"0100000";COS<='0';
ELSIFQN=B"0101001"THENQN<=B"0110000";COS<='0';
ELSIFQN=B"0111001"THENQN<=B"1000000";COS<='0';
ELSIFQN=B"1001001"THENQN<=B"1010000";COS<='0';
ELSIFQN=B"1011000"THENQN<=B"1011001";COS<='1';
ELSEQN<=QN+1;
COS<='0';
ENDIF;
ENDIF;
ENDPROCESS;
QS<=QN;
ENDCLOCK3;
图3分计数器模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCLKM_0205IS
PORT(CLK,CLR,PM,SM:
INSTD_LOGIC;COM:
OUTSTD_LOGIC;QM:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDCLKM_0205;
ARCHITECTURECLOCK4OFCLKM_0205IS
SIGNALQN:
STD_LOGIC_VECTOR(6DOWNTO0);
BEGIN
COM<='1'WHEN(QN=B"1011001"ANDSM='1')ELSE'0';
PROCESS(CLK,PM,SM)
VARIABLEPS:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
PS:
=(PM&SM);
IF(CLK'EVENTANDCLK='1')THEN
IFCLR='0'THENQN<=B"0000000";
ELSIFPS="00"THENQN<=QN;
ELSIFQN=B"1011001"THENQN<=B"0000000";
ELSIFQN=B"0001001"THENQN<=B"0010000";
ELSIFQN=B"0011001"THENQN<=B"0100000";
ELSIFQN=B"0101001"THENQN<=B"0110000";
ELSIFQN=B"0111001"THENQN<=B"1000000";
ELSIFQN=B"1001001"THENQN<=B"1010000";
ELSEQN<=QN+1;
ENDIF;
ENDIF;
ENDPROCESS;
QM<=QN;
ENDCLOCK4;
图4小时计数器模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCLKH_0205IS
PORT(CLK,CLR,PH,SH:
INSTD_LOGIC;
QH:
OUTSTD_LOGIC_VECTOR(5DOWNTO0));
ENDCLKH_0205;
ARCHITECTURECLOCK2OFCLKH_0205IS
SIGNALQN:
STD_LOGIC_VECTOR(5DOWNTO0);
BEGIN
PROCESS(CLK)
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
IFCLR='0'THENQN<="000000";
ELSIF(PH='1'ORSH='1')THEN
IFQN=B"100011"THENQN<=B"000000";
ELSIFQN=B"001001"THENQN<=B"010000";
ELSIFQN=B"011001"THENQN<=B"100000";
ELSEQN<=QN+1;
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
QH<=QN;
ENDCLOCK2;
图5报时模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCLKY_0205IS
PORT(QM:
INSTD_LOGIC_VECTOR(6DOWNTO0);QS:
INSTD_LOGIC_VECTOR(6DOWNTO0);
C1,C2,F1,F2,F3:
INSTD_LOGIC;Y:
OUTSTD_LOGIC);
ENDCLKY_0205;
ARCHITECTURECLOCKOFCLKY_0205IS
BEGIN
PROCESS(C1,C2,F3)
BEGIN
IF(C1='0')OR(C2='0')THENY<='0';
ELSIFF3='1'THENY<='0';
ELSIF(QM=X"00")THEN
IF(QS=X"00")THENY<=F2;
ELSEY<='0';
ENDIF;
ELSIFQM=X"59"THEN
IFQS=X"50"THENY<=F1;
ELSIFQS=X"52"THENY<=F1;
ELSIFQS=X"54"THENY<=F1;
ELSIFQS=X"56"THENY<=F1;
ELSIFQS=X"58"THENY<=F1;
ELSEY<='0';
ENDIF;
ELSEY<='0';
ENDIF;
ENDPROCESS;
ENDCLOCK;
图6延时模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYCLKE_0205IS
PORT(CLK,CLR0,PH,PM:
INSTD_LOGIC;
CLR:
OUTSTD_LOGIC);
ENDCLKE_0205;
ARCHITECTURECLOCK5OFCLKE_0205IS
SIGNALSP:
STD_LOGIC_VECTOR(2DOWNTO0);
BEGIN
SP<=CLR0&PH&PM;
PROCESS(CLK)
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
IFSP="100"THENCLR<='1';
ELSECLR<='0';
ENDIF;
ENDIF;
ENDPROCESS;
ENDCLOCK5;
图7分频模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCLKQ_0205IS
PORT(CLK1K,PH,PM:
INSTD_LOGIC;
CLK,F1:
OUTSTD_LOGIC);
ENDCLKQ_0205;
ARCHITECTURECLOCK6OFCLKQ_0205IS
SIGNALQ:
STD_LOGIC_VECTOR(9DOWNTO0);
SIGNALP:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
P<=PH&PM;
PROCESS(CLK1K)
BEGIN
IF(CLK1K'EVENTANDCLK1K='1')THEN
IFQ=B"1111111111"THENQ<=B"0000000000";
ELSEQ<=Q+1;
ENDIF;
ENDIF;
F1<=Q(0);
IFP="0"THENCLK<=NOTQ(9);
ELSECLK<=NOTQ(8);
ENDIF;
ENDPROCESS;
ENDCLOCK6;
图8输入模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYCLKI_0205IS
PORT(CLK1K,H,M,CR:
INSTD_LOGIC;
PH,PM,CLR:
OUTSTD_LOGIC);
ENDCLKI_0205;
ARCHITECTURECLOCKOFCLKI_0205IS
BEGIN
PROCESS(CLK1K,H,M)
BEGIN
IF(CLK1K'EVENTANDCLK1K='1')THEN
IFH='0'THENPH<='0';
ELSEPH<='1';
ENDIF;
IFM='0'THENPM<='0';
ELSEPM<='1';
ENDIF;
IFCR='0'THENCLR<='0';
ELSECLR<='1';
ENDIF;
ENDIF;
ENDPROCESS;
ENDCLOCK;
实验结论:
实验箱使用模式3,键8为复位按键,键8为0时正常工作。
键3、4设置小时,键1、2设置分钟。
下载成功后,按下键8,及使六个LED复位清零,松开键8,显示数秒的自动计时,可以通过3、4键设置小时数,1、2键设置分钟数。
当秒数满60则进一位,分钟数满60进一位,当显示为23:
59:
59时,秒数在加一则显示00:
00:
00,之后从新计时。
实验心得:
通过这次实验,不仅检验了我所学习的知识,也培养了我独立思考和独立解决问题的能力。
在实验中,与同学互相探讨、互相学习、互相监督,学会了与人相处,学会了运筹帷幄。
EDA实验是我们专业课程知识的综合应用和实践训练,是对我们所学知识的拔高。
通过这次实验,我在多方面都有提高。
以前不是很理解的东西都在课程设计中豁然开朗,是自己的能力得到提升。
指导教师评语以及成绩:
指导教师签字:
批改日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 EDA 实验 报告 时式 电子钟