EDA课程设计报告数字电子钟.docx
- 文档编号:10084002
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:12
- 大小:227.38KB
EDA课程设计报告数字电子钟.docx
《EDA课程设计报告数字电子钟.docx》由会员分享,可在线阅读,更多相关《EDA课程设计报告数字电子钟.docx(12页珍藏版)》请在冰点文库上搜索。
EDA课程设计报告数字电子钟
《EDA技术》课程设计报告
学院:
专业:
班级:
姓名:
学号:
2012年12月30日
目录
课题要求…………………………………………………………………3
分析与设计.……………………………………………………………….3
程序代码及原理图.……………………………………………………….4
结果与测试………………………………………………………………11
日志与调试记录…………………………………………………………12
心得与体会………………………………………………………………15
数字钟
一、【课题要求】
1.设计一个能显示1/10秒、秒、分、时的12小时数字钟。
2.熟练掌握各种计数器的使用。
3.能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。
4.能用低位的进位输出构成高位的计数脉冲。
二、【分析与设计】
数字钟是计数器的综合应用,数字钟由十分之一秒、秒钟、分钟、时钟组成,十分之一秒由十进制计数器74160组成,秒钟由六十进制计数器构成,分钟由六十进制计数器,时钟由十二进制计数器构成。
该数字钟程序的底层文件主要有六进制计数器模块、六十进制计数器模块和十二进制模块,对各模块进行封装,供顶层文件调用,各模块有VHDL文本设计及原理图设计。
输入端clk是连续脉冲,clrn是高电平系统复位,en是高电平使能端,输出端是十分之一秒位、秒钟个位、秒钟十位、分钟个位、分钟十位、时钟个位、时钟十位,最后由7个数码管显示各位的值。
该数字钟程序的底层文件主要有六进制计数器模块、六十进制计数器模块和十二进制模块,对各模块进行封装,供顶层文件调用,各模块有VHDL文本设计及原理图设计。
程序框图:
六进制计数器
六十进制计数器
十进制计数器
十分之一秒秒钟分钟小时
三、【程序代码及原理图】
1、六进制计数器
VHDL代码:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYcout6IS
PORT(clk,en,clrn,load:
INSTD_LOGIC;
date:
INSTD_LOGIC_VECTOR(2DOWNTO0);
cnt:
OUTSTD_LOGIC_VECTOR(2DOWNTO0);
co:
OUTSTD_LOGIC);
ENDcout6;
ARCHITECTUREbehaveOFcout6IS
SIGNALq:
STD_LOGIC_VECTOR(2DOWNTO0);
BEGIN
co<='1'WHEN((q="101")AND(en='1'))ELSE'0';
PROCESS(en,clk)
BEGIN
IFclrn='0'THEN
q<="000";
ELSIF(clk'eventandclk='1')THEN
IFload='0'THEN
q<=date;
ELSIFen='1'THEN
q<=q+1;
IF(q="101")THEN
q<="000";
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
cnt<=q;
ENDbehave;
波形仿真:
2、六十进制计数器
原理图:
波形仿真:
3、十二进制计数器
VHDL代码:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYcout12IS
PORT(clk,clrn,ldn,en:
INSTD_LOGIC;
ha:
INSTD_LOGIC_VECTOR(3DOWNTO0);
hb:
INSTD_LOGIC;
qa:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
qb:
outSTD_LOGIC);
ENDcout12;
ARCHITECTUREbehavOFcout12IS
SIGNALq:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALb:
STD_LOGIC;
SIGNALa:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(en,clk)
BEGIN
IFclrn='0'THEN
q<="0000";
ELSIF(clk'eventandclk='1')THEN
IFldn='0'THEN
b<=hb;
a<=ha;
ELSIFen='1'THEN
q<=q+1;
IF(q="1011")THEN
q<="0000";
ENDIF;
ENDIF;
ENDIF;
CASEqIS
WHEN"0000"=>b<='1';a<="0010";
WHEN"0001"=>b<='0';a<="0001";
WHEN"0010"=>b<='0';a<="0010";
WHEN"0011"=>b<='0';a<="0011";
WHEN"0100"=>b<='0';a<="0100";
WHEN"0101"=>b<='0';a<="0101";
WHEN"0110"=>b<='0';a<="0110";
WHEN"0111"=>b<='0';a<="0111";
WHEN"1000"=>b<='0';a<="1000";
WHEN"1001"=>b<='0';a<="1001";
WHEN"1010"=>b<='1';a<="0000";
WHEN"1011"=>b<='1';a<="0001";
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESS;
qa<=a;
qb<=b;
ENDARCHITECTUREbehav;
波形仿真:
4、数字钟
原理图:
波形仿真:
四、【结果与测试】
根据六进制的波形图判断出六进制的设计正确,实现了0~5的计数,并且在5处产生进位,将六进制进行封装与十进制74160根据原理图设计成六十进制计数器,然后将它进行封装,根据六十进的波仿真图可以看出实现了0~59的计数,并且在59处产生进位,然后将它进行封装。
根据十二进制的波形仿真图可以看出实现了0~11的计数,最后根据顶层原理图实现数字钟的设计,根据波形仿真图,由于要给clk赋很多的脉冲才会计到小时,所以我只测试到了一分钟,十分之秒计到9产生进位,秒开始计数,当秒计到59,产生进位,分钟开始计数,因为秒和分钟都是调用的六十进制计数器,秒钟功能是正确的,同理分钟也是可行的,只要来足够的脉冲,就可以实现数字钟,由于纸的限制,数字钟的波形仿真图只计到了一部分,但是根据现有的判断可以断定数字钟的设计是正确的。
接下来是做硬件测试,先选Device,EPF10K10LC84-4,然后进行引脚锁定,由于是简单的数字钟,我就没有对预置端进行引脚锁定。
根据数字钟功能要求可以选实验电路结构图NO.5。
时钟源clk接clock0,引脚号2;使能端en用键7接PIO6,引脚号11;清零端clrn用键6接PIO5,引脚号10;
时钟十位qb用数码管8接PIO44,引脚号72。
时钟个位qa[3..0]用数码管7,qa3接PIO43,引脚号71;qa2接PIO42引脚号70;qa1接PIO41,引脚号67;qa0接PIO40,引脚号66。
分钟十位qmb[2..0]用数码管6,qmb2接PIO38,引脚号64;qmb1接PIO37,引脚号62;qmb0接PIO36,引脚号61。
分钟个位qma[3..0]用数码管5,qma3接PIO35,引脚号60,qma2接PIO34,引脚号59;qma1接PIO33,引脚号58;qma0接PIO32,引脚号54.
秒钟十位qsb[2..0]用数码管4,qsb2接PIO30,引脚号52;qsb1接PIO29,引脚号51;qsb0接PIO28,引脚号50。
秒钟个位qsa[3..0]用数码管3,qsa3接PIO27,引脚号49;qsa2接PIO26,引脚号48;qsa1接PIO25,引脚号47;qsa0接PIO24,引脚号39。
十分之一秒m[3..0]用数码管2,m3接PIO23,引脚号38;m2接PIO22,引脚号37;m1接PIO21,引脚号36;m0接PIO20,引脚号35。
五、【心得与体会】
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 报告 数字 电子钟