eda数字电子钟文档格式.docx
《eda数字电子钟文档格式.docx》由会员分享,可在线阅读,更多相关《eda数字电子钟文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
电子设计技术的核心就是EDA技术,EDA是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术、最新成果二研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作,即IC设计、电子电路设计和PCB设计。
EDA技术的基本特征
EDA代表了当今电子技术的最新发展方向,它的基本特征是:
设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为及设计,最后通过综合器和适配器生成最终的目标器件,这样的设计被称为高层次的电子设计方法。
这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。
在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一进行享验证。
然后,用综合优化工具生成具体门电路的网络表,其对应的物理实现既可以是印刷电路板或专用集成电路。
由于设计的主要仿真和调试过程实在高层次上完成的,这既有利于早期发现结构设计上的一些错误,避免设计工作的浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次成功率。
硬件描述语言
硬件描述语言是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。
例如一个32位的加法器,利用图形输入软件需要输入500至1000个门,而利用VHDL语言只需要书写一行A=B+C即可。
而且VHDL语言可读性强,易于修改和发现错误。
早期的硬件描述语言,如ABEL、HDL、AHDL,由不同的EDA厂商开发,互不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。
为了克服以上不足,1985年美国国防部正式推出了高速集成电路硬件描述语言VHDL,1987年IEEE采纳VHDL为硬件描述语言标准(IEEESTD—1067)。
VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或者自底向上的电子设计过程都可以用VHDL来完成。
VHDL还具有以下优点:
(1)VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现.
(2)VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用。
(3)VHDL的设计不依赖于特定的期间,方便了工艺的转换。
(4)VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
与其他的硬件描述语言相比,VHDL的优势在于:
(1)VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
3Quartus
软件简介
软件介绍
QuartusII是的综合性PLD/FPGA开发软件,原理图、VHDL、VerilogHDL以及AHDL(AlteraHardware支持DescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;
支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:
可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;
芯片(电路)平面布局连线编辑;
LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;
功能强大的逻辑综合工具;
完备的电路功能仿真与时序逻辑仿真工具;
定时/时序分析与关键路径延时分析;
可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;
支持软件源文件的添加和创建,并将它们链接起来生成编程文件;
使用组合编译方式可一次完成整体设计流程;
自动定位编译错误;
高效的期间编程与验证工具;
可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;
能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。
Quartus
工作环境介绍
1.启动Quartus
,进入如图管理器窗口:
2.新建工程,如图所示:
3.代码输入:
执行File菜单下的New命令,点击VHDLFile。
如图所示:
4.进行程序仿真,如图所示:
5.建立波形文件,进行波形仿真。
执行File菜单下的New命令,点击VectorWaveformFile。
图功能仿真界面
4课程设计说明
设计内容
在本次课程设计中使用Quartus
软件并基于实验室现有的EDA实验箱,实现数字电子钟的设计:
(1)设计一个能进行时、分、秒计时数字钟。
(2)能对时、分和秒进行手动调节以校准时间。
(3)具有整点报时功能,通过选择此功能,能在整点时间发出报时声音。
(4)系统具有整体复位功能
(5)进阶设计:
报时声响为四低一高,最后一响正好为整点
设计要求
(1)根据任务要求确定电路各功能模块;
(2)写出设计程序并给出时序仿真结果;
(3)最后要有设计总结;
设计目的
(1)加深对VHDL语言设计的理解并熟悉Quartus
软件的工作方法及应用。
(2)通过设计加深对EDA课程的理解并了解简易集成电路的设计思路。
(3)熟悉Quartus
软件的工作方法及应用技术。
设计思路
本设计包含:
校时模块、秒、分计时模块(60进制计数器)、时计时模块(24进制计数器)、数码显示模块、整点报时模块。
具体框图如图所示:
moshi=1
moshi=0
moshi=2
moshi=3
设计具体方案及实现
(1)秒、分计时模块的设计原理
秒、分计时模块实质上是一个60进制计数器其设计思想是将输入脉冲进行计数,每来一个上升沿记一次数,当计到60是清零并且进位端输出1,否则输出0。
而秒计时的进位端用于控制分计时的clk脉冲,分计时的进位端用于控制小时计时的clk脉冲。
小时计时模块则是一个24进制计数器,与前两个不同的是其在计到24时清零但不需要使用进位输出端。
(以下均以秒计时为例分析)
(2)程序如下:
libraryieee;
usemiaois
port(clk,rst:
instd_logic;
m1,m2:
outstd_logic_vector(3downto0);
--m1为秒的低位;
m2为秒的高位;
cin:
outstd_logic);
endmiao;
architecturebhvofmiaois
begin
process(clk,rst)
variabletemp1:
integerrange0to10;
variabletemp2:
integerrange0to6;
ifrst='
1'
thentemp1:
=0;
temp2:
elsifclk'
eventandclk='
=temp1+1;
iftemp1=10thentemp1:
temp2:
=temp2+1;
iftemp2=6thentemp2:
cin<
='
;
elsecin<
0'
endif;
endif;
casetemp1is
when0=>
m1<
="
0000"
when1=>
0001"
when2=>
0010"
when3=>
0011"
when4=>
0100"
when5=>
0101"
when6=>
0110"
when7=>
0111"
when8=>
1000"
when9=>
1001"
whenothers=>
null;
endcase;
casetemp2is
m2<
endprocess;
endbhv;
(3)波形仿真
在QuartusII软件输入上述代码,再通过编译和时序仿真,可得到如下的仿真波形。
图仿真波形
(4)将我们设计的计时模块电路编译成库中的一个元件。
如下图所示:
动态显示模块
(1)动态显示模块的设计原理
将计时模块的输出作为显示模块的输入,用动态扫描的方式实现四位二进制的七段数码显示。
本设计采用了两个四位七段数码显示模块实现XX﹣XX﹣XX。
(2)设计程序如下:
libraryIEEE;
usexianshi1IS
PORT(c1,c2,c3:
INSTD_LOGIC_VECTOR(3DOWNTO0);
clk:
INstd_logic;
rst:
led_out1:
OUTstd_logic_vector(7DOWNTO0);
led_bit1:
OUTstd_logic_vector(3DOWNTO0));
ENDxianshi1;
ARCHITECTUREbhvOFxianshi1IS
signaldongtai:
std_logic_vector(5downto0);
signaldata:
std_logic_vector(3downto0);
signalm_bit:
begin
process(clk,rst)
begin
if(rst='
)thendongtai<
000000"
elsif(clk'
=dongtai+1;
process(dongtai(5downto4))
begin
casedongtai(5downto4)is
when"
00"
=>
m_bit<
01"
10"
11"
process(m_bit,c1,c2,c3)
casem_bitis
when"
data<
=c1;
=c2;
1010"
=c3;
whenothers=>
=null;
endprocess;
process(data)
casedatais
WHEN"
=>
led_out1<
="
01100000"
01100110"
00000010"
WHENOTHERS=>
ENDCASE;
ENDPROCESS;
led_bit1<
=m_bit;
endbhv;
(4)将动态显示模块编译为库中的元件,如下图所示:
a
整点报时模块
(1)模块设计原理
本次设计中要求完成进阶设计:
报时声响为四低一高,最后一响正好为整点。
所以在设计中用case语句对alarm进行赋值,例如当分计时模块输出为59,而秒计时模块为56、57、58、59时,对alarm赋低频clk;
当秒、分计时模块输出都为00时,对alarm赋1;
其他情况时对alarm赋0;
usebaoshiis
port(clk:
m1,m2,f1,f2,h1,h2:
instd_logic_vector(3downto0);
alarm:
endbaoshi;
architecturebhvofbaoshiissignala:
std_logic;
process(clk)
variablecnt:
integerrange0to10000;
variablec:
ifclk'
then
ifcnt<
10000thencnt:
=cnt+1;
elsecnt:
c:
=notc;
a<
=c;
process(f1,f2,m1,m2)
iff1="
andf2="
andm1="
andm2="
thenalarm<
elsiff1="
=a;
elsealarm<
(3)将整点报时模块编译为库中的元件,如图所示:
图整点报时元件
校时模块
(1)设计原理
校时模块是用来对秒、分、时计时模块分别操作加1计数,已完成校时;
因此,该数字电子钟就有4种工作模式:
正常计时、调秒、调分、调时;
当正常运行时,秒由1Hz的时钟脉冲来控制,当加到60时,产生进位输出1,则模拟出现一个上升沿送到分的clk端,分加1;
小时计时同样是由分计时模块的进位输出来控制的;
此时,若想完成校时模块对其计时控制,须将计时模块的进位输出端接到校时模块,在校时模块中进行输入输出与工作模式的关系描述,再将其输出作为各计时模块的clk脉冲。
usetiaoshiis
port(k1,k2:
c1,c2,c3:
out1,out2,out3:
endtiaoshi;
architecturebhvoftiaoshiis
process(k1)
variablemoshi:
integerrange0to4;
ifk1'
eventandk1='
thenmoshi:
=moshi+1;
ifmoshi=4thenmoshi:
endif;
casemoshiis
out1<
out2<
out3<
=k2;
图调时元件
总程序
(1)设计思想
将各个模块生成元件,最后采用原理图的方式将输入输出对应好以完成各个单独模块的综合来构成最后的主程序。
(2)构建原理图,如图所示:
图原理图
(3)对原理图进行仿真得到仿真波形,如图所示:
5总结
本学期我们开设了《VHDL数字电路设计教程》,这门学科属于电子和通信信息技术范畴,与我们的专业有着密切的联系,且是理论方面的指示。
正所谓“纸上谈兵终觉浅,觉知此事要躬行。
”学习任何知识,仅从理论上去求知,而不去实践、探索是不够的,所以在本学期暨VHDL数字电路设计刚学完之际,紧接着来一次EDA课程设计是很及时、很必要的。
这样不仅能加深我们对VHDL语言设计和电子电路的认识,而且还及时、真正的做到了学以致用。
本次课设是一次收获很大的课程设计,同时也是一个应用自己所学知识的平台,感觉很好。
从通过设计任务的分析到功能的划分再到确定总体的设计方案,再到最后的每个功能部分的具体实现。
整个过程都需要我们充分利用所学的知识进行思考借鉴。
可以说,本次课程设计室针对前面所学的知识一次综合的检测。
在此课设中,我深刻感受到正确的思路是很重要的,只有你的设计思路是正确的,那你的设计才有可能成功。
因此我们在课设前要做好充分的准备,认真查找详细的资料,为我们的设计成功打下坚实的基础。
而且,当一个功能的实现有多个方法时,我们要经过认真的分析,从中找出最合理最有效的方法路径,从而简化程序和原理图,节约成本。
要做好本次的课程设计,熟练的掌握课本上的理论知识是前提。
这样才能对设计中出现的问题进行一定的分析和解决。
当然,能完成本次设计,更离不开老师同学的热心帮助,我才克服了种种困难,最终上交了一份还算满意的答卷。
总的来说,在此次课程设计中,我学到了很多东西,比如加深对VHDL语言设计的理解并熟悉Quartus
并通过设计加深对EDA课程的理解并了解简易集成电路的设计