EDA设计.docx
- 文档编号:14835148
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:19
- 大小:307.53KB
EDA设计.docx
《EDA设计.docx》由会员分享,可在线阅读,更多相关《EDA设计.docx(19页珍藏版)》请在冰点文库上搜索。
EDA设计
EDA课程设计报告
课程名称电子电路设计
任课教师
设计题目数字时钟设计
姓名
学号
日期
一、总述
1)课程设计的性质、目的和任务
2)课程设计基本要求
3)课程设计指导教材
二、题目分析
1)设计要求
2)总体方框图
3)技术指标及功能要求
三、选择方案
四、编写应用程序并仿真
1)秒计数器
2)分钟计数器
3)小时计数器
4)整点报时报警模块
5)七段译码
五、硬件测试及说明
六、结论
七、总结
一、总述
(1)课程设计的性质、目的和任务
创新精神和实践能力二者之中,实践能力是基础和根本。
这是由于创新基于实践、源于实践,实践出真知,实践检验真理。
实践活动是创新的源泉,也是人才成长的必由之路。
通过课程设计的锻炼,要求学生掌握电路的一般设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生的创新精神。
(2)课程设计基本要求
掌握现代大规模集成数字逻辑电路的应用设计方法,进一步掌握电子仪器的正确使用方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。
(3)课程设计指导教材
《基础电子电路设计与实践》国防工业出版社
二、题目分析
(1)设计要求:
1)构造一个24小时制的数字钟。
要求能显示时、分、秒。
2)要求时、分、秒能各自独立的进行调整。
3)能利用喇叭作整点报时。
从59分50秒时开始报时,每隔一秒报时一秒,到达00分00秒时,整点报时。
整点报时声的频率应与其它的报时声频有明显区别。
(2)总体方框图
(3)技术指标及功能要求
1)时钟计数:
完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制BCD码计数,即从0到59循环计数,时钟——24进制BCD码计数,即从0到23循环计数,并且在数码管上显示数值。
2)时间设置:
手动调节分钟、小时,可以对所设计的时钟任意调时间,秒、分计数器都有进位信号,通过调节进位信号实现对数字钟的调分和调时功能,即当setmin为高电平时,秒钟信号作为进位信号使分计数器计数,其计数加快实现调分功能。
小时的调时原理与其相同。
3)可以将高频时钟分频得到约2KHz和1KHz的音频,作为数字钟的报时频率。
当电子钟显示XX:
59:
50时,数字钟开始报时“DO",持续一秒,而且每隔一秒报一下,直至显示XX:
00:
00时报“DI",持续一秒后停止。
最后输出至喇叭。
应调用元件库中的逻辑门建一个控制报时的模块。
4)建一个七段译码的模块
因在系统可编程器件实验箱上的数码管没有经过译码,故要用AHDL语言写一个七段译码的模块,且应考虑数码管为共阳极。
数码管上的点(D2、D4、D6)应置Vcc。
三、选择方案
1、方案选择及设计规划
根据总体方框图及各部分分配的功能可知,本系统可以由四个子模块(即秒计数器、分钟计数器、小时计数器、整点报时)和一个顶层文件构成。
采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。
2、系统顶层图的设计
系统顶层设计图如上所示,由图知:
1)对外端口引脚名称:
输入:
clk,reset,setmin,sethour;
输出:
D6[6..0],D5[6..0],D4[6..0],D3[6..0],D2[6..0],D1[6..0],speaker;
2)底层文件名称:
秒计时器(second)是由一个60进制的计数器构成的,具有清0、置数和计数功能。
其中reset为清0信号,当reset为0时,秒计时器清0;clk为系统时钟信号;setmin是分钟的设置信号;enmin为秒计时器的进位信号,作为下一级的输入信号;SEC0是秒计数值的个位,SEC1是秒计数值的十位。
分计时器(minute)是由一个60进制的计数器构成的,具有清0、置数和计数功能。
其中reset为清0信号,当reset为0时,分计时器清0;clk为系统时钟信号;clk1为设置时钟信号;sethour时设置信号;enhour为分计时器的进位信号,作为下一级的输入信号。
MIN0是分计数值的个位,MIN1是分计数值的十位。
时计时器(hour)是由一个24进制的计数器构成的,具有清0、置数和计数功能。
其中reset为清0信号,当reset为0时,时计时器清0;clk为时计数时钟信号;H0为时计数值的个位,H1为时计数值的十位。
报时模块(alarm)的功能是整点报时,当电子钟显示XX:
59:
50时,给予蜂鸣器1KHZ脉冲,数字钟开始报时“DO",持续一秒,而且每隔一秒报一下,直至显示XX:
00:
00时给予蜂鸣器2KHZ脉冲,数字钟报“DI",持续一秒后停止。
3)实验连线:
reset、setmin、hour连接拨动开关;计数时钟信号clk接4KHZ时钟信号;speak与扬声器驱动speaker相连;D6[6..0],D5[6..0],D4[6..0],D3[6..0],D2[6..0],D1[6..0]分别与七段LED数码管相连。
结构框图如下:
四、编写应用程序并仿真
1、秒计数器(文件名:
second.vhd)
1)VHDL语言描述程序
LIBRARYIEEE;
useIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYsecondIS
PORT(clk,reset,setmin:
INSTD_LOGIC;
enmin:
OUTSTD_LOGIC;
sec0,sec1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDsecond;
ARCHITECTUREmian_arcOFsecondIS
begin
process(clk,reset,setmin)
variablecount0,count1:
std_logic_vector(3downto0);
begin
IF(reset='0')THEN
count1:
="0000";count0:
="0000";
elsif(clk'eventandclk='1')then
if(count1="0101"andcount0="1000")then
enmin<='1';
count0:
="1001";
elsif(count0<"1001")then
count0:
=count0+1;
else
count0:
="0000";
if(count1<"0101")then
count1:
=count1+1;
else
count1:
="0000";
enmin<='0';
endif;
endif;
endif;
sec1<=count1;
sec0<=count0;
endprocess;
endmian_arc;
2)秒计数器的仿真波形图
3)波形分析
由仿真波形图知秒计数模块功能是利用60进制计数器完成00到59的循环计数功能,当秒计数至59时,再来一个时钟脉冲则产生进位输出,即enmin=1;reset作为复位信号低电平有效,即高电平时正常循环计数,低电平清零。
4)生成模块样式
2、分钟计数器(文件名:
minute.vhd)
1)VHDL语言描述程序
LIBRARYIEEE;
useIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYminuteIS
PORT(clk,reset,sethour:
INSTD_LOGIC;
enhour:
OUTSTD_LOGIC;
min0,min1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDminute;
ARCHITECTUREmian_arcOFminuteIS
begin
process(clk,reset,sethour)
variablecount0,count1:
std_logic_vector(3downto0);
begin
IF(reset='0')THEN
count1:
="0000";count0:
="0000";
elsif(clk'eventandclk='1')then
if(count1="0101"andcount0="1000")then
enhour<='1';
count0:
="1001";
elsif(count0<"1001")then
count0:
=count0+1;
else
count0:
="0000";
if(count1<"0101")then
count1:
=count1+1;
else
count1:
="0000";
enhour<='0';
endif;
endif;
endif;
min1<=count1;
min0<=count0;
endprocess;
endmian_arc;
2)分钟计数器的仿真波形图
3)波形分析
由波形图可知该模块实现了分钟计数的功能,利用60进制计数器完成00到59的循环计数功能,当秒计数至59时,再来一个时钟脉冲则产生进位输出,即enhour=1;reset作为复位信号低电平有效,即高电平时正常循环计数,低电平清零。
4)生成模块样式
3、小时计数器(文件名:
hour.vhd)
1)VHDL语言描述程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityhouris
port(reset,clk:
instd_logic;
h1,h0:
outstd_logic_vector(3downto0));
endhour;
architecturehour_arcofhouris
begin
process(clk,reset)
variablecnt1,cnt0:
std_logic_vector(3downto0);
begin
ifclk'eventandclk='1'then
IF(reset='0')THEN
ifcnt1="0010"andcnt0="0011"then
cnt0:
="0000";
cnt1:
="0000";
elsifcnt0<"1001"then
cnt0:
=cnt0+1;
else
cnt0:
="0000";
cnt1:
=cnt1+1;
endif;
endif;
endif;
h1<=cnt1;
h0<=cnt0;
endprocess;
endhour_arc;
2)小时计数器的仿真波形图
3)波形分析
小时计数模块利用24进制计数器,通过分钟的进位信号的输入可实现从00到23的循环计数。
4)生成模块样式
4、整点报时报警模块(文件名:
alert.vhd)
1)VHDL语言描述程序
libraryieee;
useieee.std_logic_1164.all;
entityalertis
port(m1,m0,s1,s0:
instd_logic_vector(3downto0);
clk:
instd_logic;
qlk,qlk2:
outstd_logic);
endalert;
architecturesst_arcofalertis
begin
process(clk)
begin
ifclk'eventandclk='1'then
ifm1="0101"andm0="1001"ands1="0101"then
ifs0="0000"ors0="0001"ors0="0010"ors0="0011"ors0="0100"ors0="0101"ors0="0110"ors0="0111"ors0="1000"ors0="1001"then
qlk<='1';
else
qlk<='0';
endif;
endif;
ifm1="0000"andm0="0000"ands1="0000"ands0="0000"then
qlk2<='1';
else
qlk2<='0';
endif;
endif;
endprocess;
endsst_arc;
2)生成模块样式
3)功能分析
当电子钟显示XX:
59:
50时,给予蜂鸣器1KHZ脉冲,数字钟开始报时“DO",持续一秒,而且每隔一秒报一下,直至显示XX:
00:
00时给予蜂鸣器2KHZ脉冲,数字钟报“DI",持续一秒后停止。
5、七段译码(以小时十位为例)
libraryieee;
useieee.std_logic_1164.all;
entityD01is
port(H1:
instd_logic_vector(3downto0);
D1:
outstd_logic_vector(6downto0));
endD01;
architecturedisp_arcofD01is
begin
process(H1)
begin
caseH1is
when"0000"=>D1<="1111110";
when"0001"=>D1<="0110000";
when"0010"=>D1<="1101101";
whenothers=>D1<="0000000";
endcase;
endprocess;
enddisp_arc;
五、全系统联调
五、硬件测试及说明
1、数字时钟系统采用模式7进行硬件测试
2、引脚锁定情况
信号名
引脚号
按键及显示
clk
PIN2
内部时钟信号
D10
PIN18
数码管D1
D11
PIN15
D12
PIN16
D13
PIN17
D14
PIN20
D15
PIN21
D16
PIN22
D20
PIN8
数码管D2
D21
PIN81
D22
PIN4
D23
PIN6
D24
PIN10
D25
PIN9
D26
PIN11
D30
PIN73
数码管D3
D31
PIN70
D32
PIN75
D33
PIN76
D34
PIN80
D35
PIN77
D36
PIN79
D40
PIN63
数码管D4
D41
PIN61
D42
PIN65
D43
PIN64
D44
PIN69
D45
PIN67
D46
PIN68
D50
PIN52
数码管D5
D51
PIN50
D52
PIN54
D53
PIN55
D54
PIN57
D55
PIN56
D56
PIN58
D60
PIN41
数码管D6
D61
PIN40
D62
PIN44
D63
PIN45
D64
PIN48
D65
PIN46
D66
PIN49
sethour
PIN34
键K2
setmin
PIN35
键K3
speaker
PIN25
蜂鸣器SPEAKER
reset
PIN33
键K1
3、硬件测试过程与结果分析
1)硬件测试:
实验硬件系统EPM7128SLC84-15
键K1控制reset,键K2控制sethour,键K3控制setminute
数码管D1,D2用作小时显示,D1高位是小时的十位,D2低位是小时的个位;
数码管D3、D4用作分钟显示,D3高位是分钟的十位,D4低位是分钟的个位;
数码管D5,D6用作秒钟显示,D5高位是秒钟的十位,D6低位是秒钟的个位;
测试过程
reset低电平清零复位,按键K1使灯亮则时钟开始从00-00-00计时,秒钟计时到59时向分钟进1,分钟计时到59时向小时进1;
键K2用做调小时每来一个脉冲调一次调节范围00-——23;
键K3用做调分钟每来一个脉冲调一次调节范围00—59;
当电子钟显示XX:
59:
50时,给予蜂鸣器1KHZ脉冲,数字钟开始报时“DO",持续一秒,而且每隔一秒报一下,直至显示XX:
00:
00时给予蜂鸣器2KHZ脉冲,数字钟报“DI",持续一秒后停止。
2)结果分析:
由测试过程及结果可知所设计的数字时钟系统完成了预定的实验设计要求。
六、结论
1、实验总结
由上可知,该数字钟系统实现了计时、时间重置、整点报时的功能。
在给数字钟重置时间后,数字钟便开始从所置的时间计时,计数到59秒时,秒计时器回到00秒,并且给分钟加1;当分钟计数到59分时,分计时器回到00分钟,小时显示加1,与此同时报时装置输出高电平,并且持续1分钟。
当小时计数到23小时时,当分钟及秒钟都达到59时,下一脉冲来时时钟回到00小时。
当分钟到达59分,分计时器回到00时。
通过这次设计实验,使得我对层次化结构化设计有了更深的了解。
在设计中将设计任务分成了几个子模块,完成各子模块的设计功能,然后再将各模块合起来联试,加深了层次化设计概念。
通过实验加深了对软件的元件管理的含义的理解,学会将不同目录下的设计题目融合在同一个文件夹中进行总体集成。
通过仿真和硬件测试,让我认识到调试和硬件测试手段的多样化,对于同一功能的电路可以采用多种模式进行硬件测试,但要选择一个最佳方案,从而进行信号引脚的锁定并与相应功能块的硬件电路接口相连。
2、实验设计不足及改进
1)整点报时模块可以在此模块中用存储器存储一段音乐,在整点报时时音乐提示。
2)可以利用宏模块的设计方法存储一个时间设计一个闹钟模块。
3)在实验设计中关于顶层文件的vhdl语言描述还有一些欠缺,因此在设计时采用了原理图输入的设计方法。
4)总线设置太多,妨碍了软件的运行,致使最后硬件演示时出现情况。
七、课程总结
这次课程设计主要分为理论学习和实验实践两个部分。
通过对其理论知识的学习,我对硬件描述语言有了初步的认识,学会利用硬件描述语言完成相应功能系统的设计。
在VHDL的语言学习上,类比于C语言的学习,通过对以往例子的学习,加深了自己对这门语言的认识,
在实验中,通过自己的实际操作,找出问题,改正错误,提出改进之法,大胆创新,使自己的能力在实践中成长起来。
经过这几天的设计,我基本了解了EDA设计过程。
从简单的实例开始,了解EDA设计的大概流程。
经过实践设计之后,我对于VHDL语言的理解更加深刻了,本来有些不理解的理论知识,都能通过实践得到一定解答。
在实践的过程中,有时遇到难题的时候,我们上网或去图书馆查找资料,或者向老师和同学们讨论,在这个过程中我学习到了一些我们在课堂上学不到的知识。
通过这次课程设计使我更加深刻的懂得了理论与实际相结合的重要性!
只有理论知识无法实现相关的设计和实际操作,当把所学的理论知识与实践相结合起来,从理论中得出结论,这样才能把所学的理论知识更加巩固至掌握住,才能提高自己的实际动手能力和独立思考能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 设计