硬件课程设计文档格式.docx
- 文档编号:22610108
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:21
- 大小:408.64KB
硬件课程设计文档格式.docx
《硬件课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《硬件课程设计文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
2012年6月25日
目录
第1章概述1
1.1EDA的概念:
1
1.2EDA技术的应用及发展2
第2章QuartusII软件4
2.1QuartusII概述4
2.2QuartusII7.2软件界面5
第3章数字时钟的设计6
3.1数字时钟的设计原理6
3.2数字时钟模块化设计6
3.3数字时钟的仿真12
3.4数字时钟的合成图12
3.5程序的下载13
结论15
参考文献...........................................................16
第1章概述
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写。
EDA技术是在电子CAD技术基础上发展起来的通用软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
在EDA工具软件平台上,对以硬件描述语言HDL为系统逻辑描述手段完成的设计文件,自动的完成逻辑编译、逻辑化简、逻辑分割、逻辑综合、结构综合,以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。
即利用硬件描述语言和EDA软件来完成对系统硬件功能的实现。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
硬件描述语言
:
硬件描述语言(HDL)是一种用于进行电子系统硬件设计的计算机高级语言,它采用软件的设计方法来描述电子系统的逻辑功能、电路结构和连接形式。
常用硬件描述语言有HDL、Verilog和VHDL语言。
EDA设计可分为系统级、电路级和物理实现级。
物理级设计主要指IC版图设计,一般由半导体厂家完成;
系统级设计主要面对大型复杂的电子产品;
而一般民用及教学所涉及基本是电路级设计[1]。
我们常用的EDA软件多属于电路级设计。
电路级设计工作,是在电子工程师接受系统设计任务后,首先确定设计方案,并选择合适的元器件,然后根据具体的元器件设计电路原理图,接着进行第一次仿真。
其中包括数字电路的逻辑模拟、故障分析、模拟电路的交直流分析、瞬态分析等。
这一次仿真主要是检验设计方案在功能方面的正确性。
仿真通过后,根据原理图产生的电气连接网络表进行PCB板的自动布局布线,有条件的还可以进行PCB后分析。
其中包括热分析、噪声及窜扰分析、电磁兼容分析、可靠性分析等,并可将分析后的结果参数反馈回电路图,进行第二次仿真,也称作后仿真。
后仿真主要是检验PCB板在实际工作环境中的可行性。
1.2EDA技术的应用及发展
EDA在教学、科研、产品设计与制造等各方面都发挥着巨大的作用。
在教学方面,几乎所有理工科(特别是电子信息)类的高校都开设了EDA课程。
主要是让学生了解EDA的基本概念和基本原理、掌握用HDL语言编写规范、掌握逻辑综合的理论和算法、使用EDA工具进行电子电路课程的实验并从事简单系统的设计。
一般学习电路仿真工具(如EWB、PSPICE)和PLD开发工具(如Altera/Xilinx的器件结构及开发系统),为今后工作打下基础。
科研方面主要利用电路仿真工具(EWB或PSPICE)进行电路设计与仿真;
利用虚拟仪器进行产品测试;
将CPLD/FPGA器件实际应用到仪器设备中;
从事PCB设计和ASIC设计等[2]。
在产品设计与制造方面,包括前期的计算机仿真,产品开发中的EDA工具应用、系统级模拟及测试环境的仿真,生产流水线的EDA技术应用、产品测试等各个环节。
如PCB的制作、电子设备的研制与生产、电路板的焊接、ASIC的流片过程等。
从应用领域来看,EDA技术已经渗透到各行各业,如上文所说,包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA有应用。
另外,EDA软件的功能日益强大,原来功能比较单一的软件,现在增加了很多新用途。
如AutoCAD软件可用于机械及建筑设计,也扩展到建筑装璜及各类效果图,汽车和飞机的模型、电影特技等领域。
从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用文泛、工具多样、软件功能强大。
在信息通信领域,要优先发展高速宽带信息网、深亚微米集成电路、新型元器件、计算机及软件技术、第三代移动通信技术、信息管理、信息安全技术,积极开拓以数字技术、网络技术为基础的新一代信息产品,发展新兴产业,培育新的经济增长点。
要大力推进制造业信息化,积极开展计算机辅助设计(CAD)、计算机辅助工程(CAE)、计算机辅助工艺(CAPP)、计算机机辅助制造(CAM)、产品数据管理(PDM)、制造资源计划(MRPII)及企业资源管理(ERP)等。
有条件的企业可开展“网络制造”,便于合作设计、合作制造,参与国内和国际竞争。
开展“数控化”工程和“数字化”工程。
自动化仪表的技术发展趋势的测试技术、控制技术与计算机技术、通信技术进一步融合,形成测量、控制、通信与计算机(M3C)结构。
在ASIC和PLD设计方面,向超高速、高密度、低功耗、低电压方向发展[3]。
外设技术与EDA工程相结合的市场前景看好,如组合超大屏幕的相关连接,多屏幕技术也有所发展。
中国自1995年以来加速开发半导体产业,先后建立了几所设计中心,推动系列设计活动以应对亚太地区其它EDA市场的竞争。
在EDA软件开发方面,目前主要集中在美国。
但各国也正在努力开发相应的工具。
日本、韩国都有ASIC设计工具,但不对外开放。
中国华大集成电路设计中心,也提供IC设计软件,但性能不是很强。
相信在不久的将来会有更多更好的设计工具有各地开花并结果。
据最新统计显示,中国和印度正在成为电子设计自动化领域发展最快的两个市场,年复合增长率分别达到了50%和30%[4]。
EDA技术发展迅猛,完全可以用日新月异来描述。
EDA技术的应用广泛,现在已涉及到各行各业。
EDA水平不断提高,设计工具趋于完美的地步。
EDA市场日趋成熟,但我国的研发水平沿很有限,需迎头赶上。
第2章QuartusII软件
2.1QuartusII概述
Quartes11是Altera公司的CPLD/FPGA设计工具软件,Quartes11是适合单芯片可编程系统(SOPC)的最全面的设计环境。
QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;
支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台[3]。
MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。
AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口。
Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
支持MAX7000/MAX3000等乘积项器件。
2.2QuartusII7.2软件界面
QuartusII7.2软件界面如图2-1所示:
图2-1QuartusII7.2软件界面
QuartusII7.2软件的默认启动界面如下图所示,由标题栏、菜单栏、常用工具栏、资源管理窗口、程序编译或仿真运行状态的显示窗口、程序编译或仿真的结果显示窗口和工程编辑工作区组成。
第3章数字时钟设计
3.1数字时钟的设计原理
采用自顶向下的方法,层次化设计,将此程序分成若干模块,设计时首先用VHDL语言编写各个功能模块,在quartus11环境下分别进行编译、仿真,然后用顶层文件将各模块连接起来。
根据设计要求可以把整体设计分为:
计秒模块、计分模块、计小时模块、扫描电路模块和顶层文件。
然后对各模块进行设计、仿真和下载。
计数模块由两个六十进制计数器和一个二十四进制计数器组成,分别对秒、分、小时进行计数。
整个计数模块从00:
00:
00开始计时,当计数到23:
59:
59的时候一天结束,计数器清零,新的一天重新开始计数。
要设计一个同时显示时、分、秒6个数字的数字时钟,需要6个七段数码显示管。
我用一个扫描电路通过产生一个扫描信号来控制6个七段显示管,依次点亮。
3.2数字时钟模块化设计
计数模块,可以实现RST复位,SEL2调时,SEL3调分,反抖动电路集成到相应的模块中
Set1是进行调时调分的输入端口,高电平有效。
3.2.1SECONE模块
其实质为一个60进制计数器。
输入管脚clk为时钟脉冲,rst为高电平有效的清零复位信号。
输出管脚co为进位,x,y为秒低位高位的输出。
当秒低位小于9时计数累加,当等于9后低位清零,进位ce为1.如果进位为1,秒高位累加,当累加到5时计数清零,此时秒高位秒低位都为0,进位co为1。
entitySECONDis
port(
clk,rst:
instd_logic;
----输入时钟脉冲/高电平有效的清零复位信号
co:
outstd_logic;
x,y:
outstd_logic_vector(3downto0)----秒高位、低位
);
endentity;
architectureaofSECONDis
signalqn,qo:
std_logic_vector(3downto0);
----计数
signalce:
std_logic;
----进位
begin
process(clk,rst)
ifrst='
1'
thenqn<
="
0000"
;
----清零
elsif(clk'
eventandclk='
)then
if(qn="
1001"
)thenqn<
ce<
='
elseqn<
=qn+1;
0'
----低位小于9时,低位记数累加
endif;
x<
=qn;
endprocess;
process(ce,rst)
thenqo<
elsif(ce'
eventandce='
if(qo="
0101"
)thenqo<
co<
elseqo<
=qo+1;
y<
=qo;
endarchitecture;
3.2.2MINUTE模块
输入端口clk为时钟脉冲,sel2/set1为位选信号,rst为清零信号。
输出端口speaker为报警端口,x、y为分钟的低位、高位。
当时钟脉冲处于高电平时,当分低位小于9时计数累加,当等于9后低位清零,进位ce为1.如果进位为1,分高位累加,当累加到5时计数清零,此时分高位秒低位都为0,进位co为1.
entityMINUTEis
port(clk,sel2,set1,rst:
----输入时钟/位选信号//清零信号
speaker:
----报警
outstd_logic_vector(3downto0));
----分低位/高位
endentityMINUTE;
architectureaofMINUTEis
signalce,clk1,q1,q2,q3,q4,co,sel1:
clk1<
=clkwhenset1='
elsesel1;
----清零
elsif(clk'
if(qn<
----当低位小于9时开始计数
if(qo<
qo<
process(clk)
ifclk'
then
q2<
=q1;
q1<
=co;
speaker<
=q1andnotq2;
process(clk)----防抖动调分功能
q4<
=q3;
q3<
=sel2;
sel1<
=q3andnotq4;
enda;
3.2.3CLOCK模块
其实质为一个24进制计数器.当时钟呈现上升沿计数大于23时,计数清零。
否则一直累加。
部分程序如下:
......
clk2<
elsesel2;
process(clk2)
begin
if(rst='
00000000"
elsif(clk2'
eventandclk2='
if(ce<
00100011"
elsif(ce(3downto0)="
ce(7downto4)<
=ce(7downto4)+1;
ce(3downto0)<
elsece<
=ce+1;
-----记数累加
=ce(3downto0);
=ce(7downto4);
then---上升沿触发
=sel3;
sel2<
endab;
3.2.4COMM模块(扫描分时显示、译码模块)
扫描和译码模块,分别把seconds、minutes、clock个位十位分别扫描给译码模块的七段译码;
其实COMM是一个6选1的计数器,在进行快速的计数从而实现快速扫描,使显示不闪烁。
Speaker是报时,整点时实现嘟的一声响,S是扫描输出的接口,Y是七段译码管的输入接口。
这是扫描和译码的源程序,扫描是6选1计数扫描,七段译码则根据1高电平点亮,0熄灭原理显示数字。
entityCOMMis
port(a,b,c,d,e,f:
instd_logic_vector(3downto0);
s:
outstd_logic_vector(2downto0);
y:
outstd_logic_vector(6downto0);
cp:
instd_logic);
endCOMM;
architectureabcofCOMMis
signalz:
process(cp)
variablesn:
std_logic_vector(2downto0);
ifcp'
eventandcp='
if(sn="
101"
sn:
000"
else
=sn+1;
casesnis
when"
=>
z<
=a;
001"
=b;
010"
=c;
011"
=d;
100"
=e;
=f;
whenothers=>
null;
endcase;
s<
=sn;
process(z)
casezis
when"
1111110"
--显示0
0001"
0110000"
--显示1
0010"
1101101"
--显示2
0011"
1111001"
--显示3
0100"
0110011"
--显示4
1011011"
--显示5
0110"
1011111"
--显示6
0111"
1110000"
--显示7
1000"
1111111"
--显示8
whenothers=>
1111011"
--显示9
endabc;
3.2.5顶层文件
libraryieee;
useieee.std_logic_1164.all;
entityzhyis
port(clk1,ret11,set10,sel20,sel30:
speaker1,ss,yy:
outstd_logic;
cp1:
instd_logic);
endentityzhy;
architectureszofzhyis
componentSECOND
clk,rst:
----时钟/清零信号
outstd_logic_vector(3downto0)
endcomponent;
componentMINUTES
componentCLOCK
port(clk,rst,set1,sel3:
x,y:
componentCOMM
signala1,b1,c1,d1,e1,f1:
std_logic_vector(3downto0);
signalcc1:
std_logic;
u1:
SECONDportmap(clk=>
clk1,rst=>
rst11,co=>
cc1,x=>
a1,y=>
b1);
u2:
MINUTEportmap(clk=>
cc1,sel2=>
sel20,set1=>
set10,rst=>
rst11,
speaker=>
speaker1,x=>
c1,y=>
d1);
u3:
CLOCKportmap(clk=>
speaker1,sel3=>
sel30,
se
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件 课程设计