EDA设计基于VHDL秒表设计.docx
- 文档编号:4331991
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:15
- 大小:207.32KB
EDA设计基于VHDL秒表设计.docx
《EDA设计基于VHDL秒表设计.docx》由会员分享,可在线阅读,更多相关《EDA设计基于VHDL秒表设计.docx(15页珍藏版)》请在冰豆网上搜索。
EDA设计基于VHDL秒表设计
EDA设计论文
题目基于VHDL秒表设计
学院信息科学与工程学院
专业电子信息工程
班级XXXXXX
学号XXXXXX
姓名XXXXXX
指导教师XXXXXX
职 称 讲师
2011年12月21日
摘要:
在科技高度发展的今天,集成电路和计算机应用得到了高速发展。
尤其是计算机应用的发展。
它在人们日常生活已逐渐崭露头角。
大多数电子产品多是由计算机电路组成。
而且将来的不久他们的身影将会更频繁的出现在我们身边。
各种家用电器多会实现微电脑技术。
电脑各部分在工作时多是一时间为基准的。
本文就是基于计算机电路的时钟脉冲信号、状态控制等原理设计出的数字秒表。
秒表在很多领域充当一个重要的角色。
在各种比赛中对秒表的精确度要求很高,尤其是一些科学实验。
关键字
EDA秒表设计VHDL语言
引言:
1、VHDL语言
VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage,超高集成电路硬件描叙语言)诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE(TheInstituteofElectricalandElectronics)的一种工业标准硬件描叙语言。
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='1'then
ifcount=24999then
count:
=0;
q<='1';
else
count:
=count+1;
q<='0';
endif;
endif;
endprocess;
end;
(2)、计时模块
计时模块执行计时功能,计时方法和计算机一样是对标准时钟脉冲计数。
他是由四个十进制计数器和俩个六进制计数器构成,其中毫秒位、十毫秒位、秒位和分位采用十进制计数器,十秒位和十分位采用六进制计数器。
①、十进制计数器
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycount10is
port(clk,clr,start:
instd_logic;
q:
bufferstd_logic_vector(3downto0);
co:
outstd_logic);
endcount10;
architectureoneofcount10is
begin
process(clk,clr,start)
begin
ifclr='1'then
q<=(others=>'0');
co<='0';
elsifclk'eventandclk='1'then
ifstart='1'then
ifq="1001"then
q<="0000";
co<='1';
else
q<=q+1;
co<='0';
endif;
endif;
endif;
endprocess;
end;
②、六进制计数器
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycount6is
port(clk,clr,start:
instd_logic;
q:
bufferstd_logic_vector(3downto0);
co:
outstd_logic);
endcount6;
architectureoneofcount6is
begin
process(clk,clr,start)
begin
ifclr='1'then
q<=(others=>'0');
co<='0';
elsifclk'eventandclk='1'then
ifstart='1'then
ifq="0101"then
q<="0000";
co<='1';
else
q<=q+1;
co<='0';
endif;
endif;
endif;
endprocess;
end;
(3)、显示模块
计时显示电路的作用是将计时值在LED数码管上显示出来。
计时电路产生的值经过BCD七段译码后,驱动LED数码管。
计时显示电路的实现方案采用扫描显示。
①、数据选择器
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entityseltimeis
port(clk,clr:
instd_logic;
q1:
instd_logic_vector(3downto0);
q2:
instd_logic_vector(3downto0);
q3:
instd_logic_vector(3downto0);
q4:
instd_logic_vector(3downto0);
q5:
instd_logic_vector(3downto0);
q6:
instd_logic_vector(3downto0);
sel:
outstd_logic_vector(2downto0);
dout:
outstd_logic_vector(3downto0));
end;
architectureoneofseltimeis
signalcount:
std_logic_vector(2downto0);
begin
sel<=count;
process(clk,clr)
begin
ifclr='1'then
count<="000";
elsifclk'eventandclk='1'then
ifcount>="101"then
count<="000";
else
count<=count+1;
endif;
endif;
casecountis
when"000"=>dout<=q1;
when"001"=>dout<=q2;
when"010"=>dout<=q3;
when"011"=>dout<=q4;
when"100"=>dout<=q5;
when"101"=>dout<=q6;
whenothers=>dout<="0000";
endcase;
endprocess;
end;
②、BCD七段译码器
libraryieee;
useieee.std_logic_1164.all;
entitydeledis
port(num:
instd_logic_vector(3downto0);
led:
outstd_logic_vector(6downto0));
end;
architectureoneofdeledis
begin
process(num)
begin
casenumis
when"0000"=>led<="1111110";
when"0001"=>led<="0110000";
when"0010"=>led<="1101101";
when"0011"=>led<="1111001";
when"0100"=>led<="0110011";
when"0101"=>led<="1011011";
when"0110"=>led<="1011111";
when"0111"=>led<="1110000";
when"1000"=>led<="1111111";
when"1001"=>led<="1111011";
whenothers=>led<="0000000";
endcase;
endprocess;
end;
(4)、蜂鸣器模块
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityalarmis
port(clk:
instd_logic;
dain:
instd_logic;
speak:
outstd_logic);
end;
architectureoneofalarmis
signalcount:
std_logic_vector(1downto0);
begin
process(clk)
begin
speak<=count
(1);
ifclk'eventandclk='1'then
ifdain='1'then
ifcount>="10"then
count<="00";
else
count<=count+1;
endif;
endif;
endif;
endprocess;
end;
系统仿真:
(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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 设计 基于 VHDL 秒表