EDA实验指导书.docx
《EDA实验指导书.docx》由会员分享,可在线阅读,更多相关《EDA实验指导书.docx(21页珍藏版)》请在冰豆网上搜索。
EDA实验指导书
实验一熟悉QUARTUSⅡ的设计过程
[输入方式:
文本输入、图形输入、波形输入等]
一、实验目的:
1、掌握QUARTUSⅡ安装过程;
2、熟悉QUARTUSⅡ设计环境;
3、掌握QUARTUSⅡ的设计过程。
二、实验内容及步骤
(一)、安装QUARTUSII。
注:
第一次安装QUARTUS要安装license。
(二)、QUARTUSⅡ设计开发步骤
一、创建工作文件夹
在windows中建立一个文件夹(又称工作库或WORKLIBRARY),用于保存设计工程项目的有关文件。
注:
设计工程项目的有关文件不能保存在根目录下,必须保存在一个文件夹之下。
例如建立的文件夹:
E:
\mux.
二、启动QuartusII
点击QUARTUSⅡ7.0图标打开QUARTUSⅡ7.0设计窗口。
三、设计文件输入
1、打开输入文件编辑器
点击菜单File\new…新建立一个文本设计文件。
用文本输入法输入程序。
程序见附录。
2、保存文件,文件名名同实体名。
后缀.VHD
四、逻辑综合
1、创建工程
点击菜单File\NewProjectWizard…….进行工程设置。
2、编译设置
⑴选择PLD芯片:
Assignmenmts\Settings\Device弹出的窗口中选择选择芯片。
⑵选择配置芯片的工作方式:
Assignmenmts\Settings\Device\Device&PinOptions弹出的窗口中首选General项,在Options栏中选择Auto-restart-configurationaftererror.
⑶选择配置芯片和编程方式:
Assignmenmts\Settings\Device\Device&PinOptions弹出的窗口中选择Configuration栏,在窗口中设置配置方式,配置芯片和是否生成压缩的配置文件。
⑷选择输出设置:
保持默认。
⑸选择目标器件闲置引脚的状态:
Assignmenmts\Settings\Device\Device&PinOptions弹出的窗口中选择UnusedPins栏,在窗口中对闲置的引脚设置,推荐设置为Asoutputdrivinggroud。
3、全程编译:
Processing\StartCompilation。
完成对设计项目的检错、逻辑综合、结构综合、配置文件生成以及时序分析。
五、功能或时序仿真
建议先做功能仿真,以检验设计项目的逻辑真确性,这样可以提供设计效率。
1、功能仿真设置:
Assignmenmts\Settings弹出的窗口中选择SimulatorSettings。
在右边Simulationmode中选择Functional.
2、Processing\GenerateFunctionalSimulationnetlist,生成功能仿真所需的文件。
3、建立波形文件并功能仿真
⑴File\New\Otherfiles,在窗口中选择VectorWaveformfile打开波形编辑器。
⑵设置仿真时间区域:
可默认。
一般几十微妙。
时间区域过长,使仿真时间变长,影响仿真效率。
⑶在波形编辑器中添加项目的相关引脚。
原则上是所有引脚,但有的项目引脚很多,可以只添加必要的一些引脚。
View\UtilityWindows\NodeFinder,在弹出的窗口中将所需引脚拖入波形编辑器中。
⑷编辑输入波形:
对所有的输入引脚设置合适的波形。
⑸启动仿真器:
Processing\StartSimulation.
⑹观察分析仿真结果。
仿真结构保存于文件“SimulationReport”,此文件在仿真完成后会自动弹出。
若仿真结果有出入,重新修改程序,直到仿真结果没有问题。
六、管脚锁定并结构综合(适配)。
见教材
七、进时序仿真,验证设计的时序是否满足设计要求。
见教材
八、执行文件汇编,生成下载所需的文件。
见教材
九、编程下载(可以不做)。
见教材;
注:
详细的使用说明见教材相关章节。
附录:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT10IS
PORT(CLK,RST,EN:
INSTD_LOGIC;
CQ:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDCNT10;
ARCHITECTUREbehavOFCNT10IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLECQI:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IFRST='1'THENCQI:
=(OTHERS=>'0');--计数器复位
ELSIFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿
IFEN='1'THEN--检测是否允许计数
IFCQI<"1001"THENCQI:
=CQI+1;--允许计数
ELSECQI:
=(OTHERS=>'0');--大于9,计数值清零
ENDIF;
ENDIF;
ENDIF;
IFCQI="1001"THENCOUT<='1';--计数大于9,输出进位信号
ELSECOUT<='0';
ENDIF;
CQ<=CQI;--将计数值向端口输出
ENDPROCESS;
ENDbehav;
实验二一位二进制全加器的VHDL设计
一:
实验目的
1、巩固QUARTUSⅡ设计过程和设计环境。
2、了解VHDL结构体的三种描述方式。
3、巩固VHDL语言的构成要素。
二、实验内容
全加器的结构图如上图。
用VHDL语言描述其功能。
先描述半加器和或门电路,然后用例化语句将半加器和或门电路连接构成全加器。
1、用VHDL语言描述一位二进制全加器中的或门,并编译仿真通过后保存。
或门电路程序如下:
:
LIBRARYIEEE;--或门逻辑描述
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYor2aIS
PORT(a,b:
INSTD_LOGIC;
c:
OUTSTD_LOGIC);
ENDENTITYor2a;
ARCHITECTUREoneOFor2aIS
BEGIN
c<=aORb;
ENDARCHITECTUREone;
功
能仿真如图一
图一
2、用VHDL语言描述一位二进制全加器中的半加器,并编译仿真通过后保存。
半加器电路程序如下:
LIBRARYIEEE;--半加器描述
(1)
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYhadderIS
PORT(a,b:
INSTD_LOGIC;
co,so:
OUTSTD_LOGIC);
ENDENTITYhadder;
ARCHITECTUREfh1OFhadderis
SIGNALabc:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
abc<=a&b;
PROCESS(abc)
BEGIN
CASEabcIS
WHEN"00"=>so<='0';co<='0';
WHEN"01"=>so<='1';co<='0';
WHEN"10"=>so<='1';co<='0';
WHEN"11"=>so<='0';co<='1';
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESS;
ENDARCHITECTUREfh1;
功能仿真如图2
图二
3、全加器顶层描述程序
LIBRARYIEEE;--1位二进制全加器顶层设计描述
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYfadderIS
PORT(ain,bin,cin:
INSTD_LOGIC;
cout,sum:
OUTSTD_LOGIC);
ENDENTITYfadder;
ARCHITECTUREfd1OFfadderIS
COMPONENThadder--半加器元器件例化(调用半加器)
PORT(a,b:
INSTD_LOGIC;
co,so:
OUTSTD_LOGIC);--半加器管脚
ENDCOMPONENT;
COMPONENTor2a--或门元器件例化(调用或门电路)
PORT(a,b:
INSTD_LOGIC;
c:
OUTSTD_LOGIC);--或门器件管脚
ENDCOMPONENT;
SIGNALd,e,f:
STD_LOGIC;--定义连接导线
BEGIN
u1:
hadderPORTMAP(a=>ain,b=>bin,co=>d,so=>e);
u2:
hadderPORTMAP(a=>e,b=>cin,co=>f,so=>sum);
u3:
or2aPORTMAP(a=>d,b=>f,c=>cout);--电路连接关系
ENDARCHITECTUREfd1;
4、将fadder设置为工程文件,编译仿真验证其功能。
功能仿真如图三
图三
三、下载验证
1、芯片选择ACEX1K\EP1K30QC208-2;
2、引脚锁定:
根据实验箱的设计,KD1-ain;KD2-bin;KD3-cin;LED1-sum;LED2-cout;所以sun,cout,ain,bin,cin分别锁定到EP1K30QC208-2的19,24,45,46,47脚。
管脚分布见《EDA技术实验开发系统》15页;芯片引脚I/O分布见《EDA技术实验开发系统》24-25页.
3、全编译;
4、下载线连接:
将25针连下一端连接电脑LPT1口,一端连接到编程模块的DB25接口,再用十针连线一头插入通用编程模块JTGA下载接口处,另一头连接到目标芯片的下载接口。
5、打开实验箱电源,将模式选择开关CTRL的
(2)(4)(8)拨至ON,使按键KD1,KD2,LED1,LED2,LED3,KL1,KL2等有效。
6、下载:
Tools\Programmer,完成下载。
7、拨动开关按键KD1,KD2,验证电路。
实验三用原理图输入法设计8位全加器
一、实验目的:
熟悉和掌握用QUARTUSⅡ的原理图输入方法设计简单组合电路的方法,并通过一个8位全加器的设计掌握用EDA软件进行电子线路设计的详细流程。
二、实验原理:
一个8位全加器可以由8个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低位输入信号cin相接。
三、实验内容:
1、打开原理图编辑器,完成半加器和全加器的设计。
包括原理图输入、编译、综合、适配、仿真、实验板上的硬件测试,并将此全加器电路符号入库。
详细的过程见教材相关章节。
根据以上步骤画出以下原理图:
1位半加器的原理图如图一。
名字hadder.
图一
在完成1位半加器的原理图后,进行编译综合之后,选择File\create\CreateSymbolfileforcurrentfile,将文件变成一个包装好的单一元件模块待调用。
仿真效果是:
运用以上包装好的1位半加器可画以下1位全加器,如图二。
名字adder。
图二
在完成1位全加器的原理图后,进行编译综合之后,选择File\create\CreateSymbolfileforcurrentfile,将文件变成一个包装好的单一元件模块待调用。
仿真效果如图三:
图三
2、建立一个更高的原理图设计层次,利用以上获得的1位全加器构成8位全加器,并完成编译、综合、适配、仿真和测试。
运用以上包装好的1位半加器、全加器,可画以下8位的全加器,如图四
图四
仿真效果如图五:
图五
四、注意:
每一个设计(文本或原理图)都能创建一个原理图符号,并且也只可以在同工程设计中被调用。
实验四设计含异步清零和同步时钟使能的加法计数器
一、实验目的:
学习计数器的设计、仿真,进一步熟悉VHDL设计技术。
二、实验原理:
设计一个加法计数器,具有异步清零和同步时钟使能功能。
三、实验内容:
在QUARTUSⅡ上对下列程序进行编辑、编译、综合、适配、仿真,编程下载验证逻辑功能。
说明程序中各语句的作用,详细描述其功能特点,给出其所有信号的时序仿真波形。
打开QUARTUSⅡ后,建立一个文本文件然后在文本编辑器中输入以下程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT10IS
PORT(CLK,RST,EN:
INSTD_LOGIC;
CQ:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDCNT10;
ARCHITECTUREbehavOFCNT10IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLECQI:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IFRST='1'THENCQI:
=(OTHERS=>'0');--计数器复位
ELSIFCLK'EVENTANDCLK='1'THEN--检查时钟上升沿
IFEN='1'THEN--检查是否允许计数
IFCQI<9THENCQI:
=CQI+1;--允许计数检查是否小于9
ELSECQI:
=(OTHERS=>'0');--大于9计数器清零
ENDIF;
ENDIF;
ENDIF;
IFCQI=9THENCOUT<='1';--计数大于9,输出进位信号
ELSECOUT<='0';
ENDIF;
CQ<=CQI;--将计数值向端口。
ENDPROCESS;
ENDbehav;
再建立一个波形文件,进行时序仿真后得到图
(一):
图
(一)
四、管脚锁定:
根据实验箱组成特点,CLK锁定到79脚,EN锁定到44脚,RST锁定到45脚,COUT锁定到27脚,CQ分别锁定到19、24、25、26脚。
(或自己根据实验箱锁定
五、解时序逻辑电路的设计的方法。
实验五数控偶数倍分频器的设计
一、实验目的:
1、学习数控分频器的设计、分析和测试方法。
2、学习偶数倍分频器的设计。
二、实验原理:
数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比。
数控偶数倍分频器可以用加法计数器来实现--将计数溢出位与预置数加载输入信号相接即可。
三、实验内容:
1:
根据逻逻辑功能,用文本输入法设计程序如下:
程序一、
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYfenpinIS
PORT(CLK:
INSTD_LOGIC;
D:
ININTEGERRANGE0TO255;
FOUT:
OUTSTD_LOGIC);
END;
ARCHITECTUREoneOFfenpinIS
SIGNALFULL:
STD_LOGIC;
SIGNALTMEP:
INTEGERRANGE0TO255;
BEGIN
TMEP<=D/2;
P_REG:
PROCESS(CLK)
VARIABLECNT8:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
IFCNT8=TMEPTHENCNT8:
="00000000";FULL<='1';
ELSIFCLK'EVENTANDCLK='1'THEN
CNT8:
=CNT8+1;
FULL<='0';
endif;
ENDPROCESSP_REG;
P_DIV:
PROCESS(FULL)
VARIABLECNT2:
STD_LOGIC;
BEGIN
IFFULL'EVENTANDFULL='1'THEN
CNT2:
=NOTCNT2;
IFCNT2='1'THENFOUT<='1';
ELSEFOUT<='0';
ENDIF;
ENDIF;
ENDPROCESSP_DIV;
END;
程序二、
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYfenpinIS
PORT(CLK:
INSTD_LOGIC;
D:
INSTD_LOGIC_vector(7downto0);
FOUT:
OUTSTD_LOGIC);
END;
ARCHITECTUREoneOFfenpinIS
SIGNALFULL:
STD_LOGIC;
SIGNALTMEP:
STD_LOGIC_vector(7downto0);
BEGIN
Tmep(6downto0)<=d(7downto1);
Tmep(7)<=d(0);
P_REG:
PROCESS(CLK)
VARIABLECNT8:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
IFCNT8=TMEPTHENCNT8:
="00000000";FULL<='1';
ELSIFCLK'EVENTANDCLK='1'THEN
CNT8:
=CNT8+1;
FULL<='0';
endif;
ENDPROCESSP_REG;
P_DIV:
PROCESS(FULL)
VARIABLECNT2:
STD_LOGIC;
BEGIN
IFFULL'EVENTANDFULL='1'THEN
CNT2:
=NOTCNT2;
IFCNT2='1'THENFOUT<='1';
ELSEFOUT<='0';
ENDIF;
ENDIF;
ENDPROCESSP_DIV;
END;
*理解进程P_REG和P_DIV的作用。
2:
输入不同的CLK频率和预置值D,给出时序波形如图一。
图一
3:
扩展成16位分频器,并提出此项设计的数项实用示例。
仿真图如图二。
图二
四、思考题:
请给出几种分频电路的不同的设计方法。
实验六用状态机实现序列检测器的设计
一、实验目的
1、熟悉状态机的作用及设计方法;
2、学习用状态机实现序列检测器的设计,并对其进行仿真和硬件测试。
二、实验原理
序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果与检测器预先设置的码相同,则输出为1,否则输出为0。
三、实验内容
1、状态转换图
2、设计一个序列检测器,对1110010进行检测。
程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYCHECKIS
PORT(CLK,XI,CLR:
INSTD_LOGIC;
ZO:
OUTSTD_LOGIC);
ENDCHECK;
ARCHITECTURESTROFCHECKIS
TYPESTATESIS(S0,S1,S2,S3,S4,S5,S6,S7);
SIGNALSTATE:
STATES;
BEGIN
PROCESS(clk,XI,clr,STATE)
BEGIN
IFCLR='1'THENSTATE<=S0;
ELSIF(CLK'EVENTANDCLK='1')THEN
CASESTATEIS
WHENS0=>ZO<='0';IF(XI='1')THENSTATE<=S1;ELSESTATE<=S0;ENDIF;
WHENS1=>ZO<='0';IF(XI='1')THENSTATE<=S2;ELSESTATE<=S0;ENDIF;
WHENS2=>ZO<='0';IF(XI='1')THENSTATE<=S3;ELSESTATE<=S0;ENDIF;
WHENS3=>ZO<='0';IF(XI='0')THENSTATE<=S4;ELSESTATE<=S3;ENDIF;
WHENS4=>ZO<='0';IF(XI='0')THENSTATE<=S5;ELSESTATE<=S1;ENDIF;
WHENS5=>ZO<='0';IF(XI='1')THENSTATE<=S6;ELSESTATE<=S0;ENDIF;
WHENS6=>ZO<='0';IF(XI='0')THENSTATE<=S7;ELSESTATE<=S2;ENDIF;
WHENS7=>ZO<='1';IF(XI='0')THENSTATE<=S0;ELSESTATE<=S1;ENDIF;
ENDCASE;
endif;
ENDPROCESS;
ENDSTR;
3、利用MAX+plusII对程序进行仿真测试并给出仿真波形。
实验七:
数字钟的设计
一、设计目的2|}|)2$*S
XqWa_p_sv_1.掌握各类计数器及将它们相连的方法;=LG5Rm1e%
LbP_ts.,_2.掌握多个数码管动态显示的原理与方法;[/_6D.r$_
Cqi_8h_63.掌握用FPGA技术的层次化设计方法;`Brw1_+_A
H*aJH_wZ/_4.进一步掌握用VHDL硬件描述语言的设计思想;7Pf;^)cs
z
5.了解有关数字系统的设计。
ty#T_`_V__ 7{\+*_`?
l
二、设计要求!
_z>_8_,0VLN_WH{{_J
(一)、基本要求:
+<;0|"H,;0Cc5[
z2
h
1、24小时计数显示;UO
_G]BI
_l.BfjGOG_2、具有校时功能(时,分);I3xew
!
x>g
=Tn
j_dS_N
(二)、附加要求:
XWv|=Qec3
cU_*+"]w`~