EDA设计基于VHDL秒表设计Word格式文档下载.docx
《EDA设计基于VHDL秒表设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《EDA设计基于VHDL秒表设计Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
VHDL主要用于描述数字系统的结构、行为、功能和接口,非常适合用于可编程逻辑芯片的应用设计。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。
VHDL的程序特点是将一项工程设计,或称为设计实体(可以是个元件、电路模块或一个系统)分成外部(或称可示部分,即端口)和内部(或称为不可视部分,即结构体)两部分,外部负责对设计实体和端口引脚命名和说明,内部负责对模块功能和算法进行描述。
在对一个设计实体定义了外部界面后,一旦其内部结构、功能开发完成,即可生成共享功能模块,这就意味着,在顶层综合或其他设计中可以直接调用这个实体模块。
VHDL具有较强的行为描述能力,可避开具体的器件结构,从逻辑功能和行为上进行描述和设计。
2、QuartusⅡ6.0简介
QuartusII是Alera公司推出的一款功能强大,兼容性最好的EDA工具软件。
该软件界面友好、使用便捷、功能强大,是一个完全集成化的可编程逻辑设计环境,具有开放性、与结构无关、多平台完全集成化丰富的设计库、模块化工具、支持多种硬件描述语言与有多种高级编程语言接口等特点。
QuartusII是Altera公司推出的CPLD/FPGA开发工具,QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:
可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;
芯片平面布局连线编辑;
功能强大的逻辑综合工具;
完备的电路功能仿真与时序逻辑仿真工具;
定时/时序分析与关键路径延时分析;
可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;
支持软件源文件的添加和创建,并将它们链接起来生成编程文件;
使用组合编译方式可一次完成整体设计流程;
自动定位编译错误;
高效的期间编程与验证工具;
可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;
能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。
3、QuartusII软件设计流程
(1)打开QuartusII软件。
(2)选择路径。
注意:
工作目录名不能有中文。
(3)添加设计文件。
(4)选择FPGA器件。
Family选择Cyclone,240,8。
(5)建立原理图或用VHDL语言描述设计电路。
(6)对原理图或用VHDL语言进行编译,无误后进行添加信号。
(7)对上述电路进行仿真。
(8)进行管脚分配。
(9)全局编译。
(10)采用JTAG或AS模式进行下载测试。
QuartusII软件运行界面
4、可编程逻辑器件简介
FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
FPGA的基本特点主要有:
(1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
(2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
(3)FPGA内部有丰富的触发器和I/O引脚。
(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一
(5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
课程设计的内容:
利用VHDL语言设计基于计算机电路中时钟脉冲原理的数字秒表。
该数字秒表能对
0秒~59分59.99秒范围进行计时,显示最长时间是59分59秒。
设计了复位开关和启停开关。
复位开关可以在任何情况下使用,使用以后计时器清零,并做好下一次计时的准备。
当计时达到59分钟59秒后,蜂鸣器响6声。
EDA设计方法与其设计过程:
1、设计规划
本系统设计采用自顶向下的设计方案,系统的整体组装设计原理图如图所示,它主要由控制模块、时基分频模块,计时模块和显示模块四部分组成。
各模块分别完成计时过程的控制功能、计时功能与显示功能。
2、系统的总体设计
(1)、顶层电路设计
数字秒表的顶层电路图运用自顶向下的设计思想,将系统按功能逐层分割的层次化设计方法。
在顶层设计中,要对内部各功能块的连接关系和对外的接口关系进行描述。
顶层电路图
(2)、数字秒表系统原理框图
数字秒表系统原理框图
3、各模块源程序
(1)、时基分频模块
时基分频模块的作用把输入时钟信号变为分频输出信号。
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydivideris
port(clk,clr:
instd_logic;
q:
outstd_logic);
end;
architectureoneofdivideris
begin
process(clk)
variablecount:
integerrange0to24999;
begin
ifclr='
1'
then
q<
='
0'
;
elsifclk'
eventandclk='
ifcount=24999then
count:
=0;
q<
else
=count+1;
endif;
endif;
endprocess;
(2)、计时模块
计时模块执行计时功能,计时方法和计算机一样是对标准时钟脉冲计数。
他是由四个十进制计数器和俩个六进制计数器构成,其中毫秒位、十毫秒位、秒位和分位采用十进制计数器,十秒位和十分位采用六进制计数器。
①、十进制计数器
entitycount10is
port(clk,clr,start:
instd_logic;
bufferstd_logic_vector(3downto0);
co:
outstd_logic);
endcount10;
architectureoneofcount10is
process(clk,clr,start)
then
=(others=>
'
);
co<
ifstart='
ifq="
1001"
="
0000"
=q+1;
②、六进制计数器
entitycount6is
endcount6;
architectureoneofcount6is
0101"
(3)、显示模块
计时显示电路的作用是将计时值在LED数码管上显示出来。
计时电路产生的值经过BCD七段译码后,驱动LED数码管。
计时显示电路的实现方案采用扫描显示。
①、数据选择器
useieee.std_logic_arith.all;
entityseltimeis
port(clk,clr:
q1:
instd_logic_vector(3downto0);
q2:
q3:
q4:
q5:
q6:
sel:
outstd_logic_vector(2downto0);
dout:
outstd_logic_vector(3downto0));
end;
architectureoneofseltimeis
signalcount:
std_logic_vector(2downto0);
sel<
=count;
process(clk,clr)
ifclr='
count<
="
000"
ifcount>
101"
else
=count+1;
casecountis
when"
=>
dout<
=q1;
001"
=q2;
010"
=q3;
011"
=q4;
100"
=q5;
=q6;
whenothers=>
endcase;
②、BCD七段译码器
entitydeledis
port(num:
led:
outstd_logic_vector(6downto0));
architectureoneofdeledis
process(num)
casenumis
when"
led<
1111110"
0001"
0110000"
0010"
1101101"
0011"
1111001"
0100"
0110011"
1011011"
0110"
1011111"
0111"
1110000"
1000"
1111111"
1111011"
0000000"
(4)、蜂鸣器模块
entityalarmis
port(clk:
dain:
speak:
outstd_logic);
end;
architectureoneofalarmis
std_logic_vector(1downto0);
process(clk)
speak<
=count
(1);
ifclk'
eventandclk='
ifdain='
ifcount>
10"
count<
00"
else
endif;
系统仿真:
(1)、时基分频模块的仿真
(2)、计时电路模块的仿真
①、十进制计数器的仿真
十进制计数器的仿真图
②、六进制计数器的仿真
(3)、显示电路模块的仿真
①、数据选择器的仿真
②、BCD七段译码器驱动器的仿真
(4)、蜂鸣器模块的仿真
蜂鸣器的仿真
(5)、数字秒表整个系统的仿真
数字秒表起始工作的仿真图状态仿真图
结论:
本文利用EDA技术中的QuartusⅡ6.0作为开发工具,设计了一款基于FPGA的数字式秒表,并下载到在系统可编程实验板的EP1C12Q240C8器件中测试实现。
整个秒表系统的时钟信号源由实验板上的5MHZ的时钟信号经分频而得的100HZ的时钟信号。
整个设计分为6个主要模块。
在设计电路时,要遵循从上到下的设计原则。
首先从系统设计入手,在顶层进行功能划分和结构设计,顶层模块中的每个次层模块均可完成一个较为独立的功能,次模块在调试成功后可生成一个默认符号,以供上一层模块调用。
为设计项目选定器件,锁定顶层设计中各端口所对应的引脚号,并编译通过。
然后对器件编程,使用ByteBlaste下载电缆把项目以在线配置的方式下载到实验板的EP1C12Q240C8器件中,按相应的键,观测数码管与蜂鸣器的状态,发现显示结果正确。
该数字式秒表具有清零功能,能够在计时过程中随时停止计时,恢复到初始状态。
且该秒表还有启/停功能。
该数字秒表还具有溢出报警功能,当计时长度超过设定的长度时,会产生溢出报警信号驱动蜂鸣器报警。
实验证明该秒表工作正常,基本上已达到了预期的设计要求。
体会与感想、收获:
开始做设计时总是会犯一些错误,在不停的改错不停的编译下得到了正确的程序。
在编程时,我充分使用了结构化的思想,这样程序检查起来也比较方便,调试时也给了我很大方便,只要一个模块的进行调就可以了,充分体现了结构化编程的优势。
在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。
路漫漫其修远兮,吾将上下而求索。
我愿在未来的学习过程中,以更加丰厚的成果来答谢曾经关心、帮助和支持过我的所有老师、同学。
感谢他们对我的关心和支持!
参考文献:
[1]张亦华,延明,肖冰.数字逻辑设计实验技术与EDA工具[M].北京:
北京邮电大学出版社,2003
[2]卢毅,赖杰.VHDL与数字电路设计[M].北京:
科学出版社,2001
[3]包明等.EDA技术与数字系统的设计.[M].北京:
北京航空航天大学出版社,2002
[4]朱明程.VHDL设计中电路简化问题的探讨[J].电子技术应用,2000
[5]王烈军.电子综合设计与设计.西安交通大学出版社,2010
[6]江国强.EDA技术与应用.[M].电子工业出版社,2011