EDA技术实验资料.docx
- 文档编号:13369009
- 上传时间:2023-06-13
- 格式:DOCX
- 页数:20
- 大小:383.51KB
EDA技术实验资料.docx
《EDA技术实验资料.docx》由会员分享,可在线阅读,更多相关《EDA技术实验资料.docx(20页珍藏版)》请在冰点文库上搜索。
EDA技术实验资料
实验项目一:
QuartusII9.0软件的使用
1.实验目的
本实验为验证性实验,其目的是熟悉QuartusII9.0软件的使用,学会利用QuartusII9.0软件来完成整个EDA开发的流程。
2.实验内容(原理)
利用VHDL完成电路设计后,必须借助EDA工具中的综合器、适配器、时序仿真器和编程器等工具进行相应的处理后,才能使此项设计在FPGA上完成硬件实现,并得到硬件测试,从而使VHDL设计得到最终的验证。
QuartusII是Altera提供的FPGA/CPLD开发集成环境,包括模块化的编译器,能满足各种特定设计的需要,同时也支持第三方的仿真工具。
3.实验所需仪器设备(或软件)、实验材料
实验的硬件环境是:
微机一台、GW48EDA实验开发系统一套、电源线一根、十芯JTAG口线一根、USB下载线一根、USB下载器一个
实验的软件环境是:
QuartusII9.0软件
4.实验步骤(基本要求)
利用QuartusII9.0软件实现EDA的基本设计流程:
创建工程、编辑文本输入设计文件、编译前设置、全程编译、功能仿真。
利用QuartusII9.0软件实现引脚锁定和编译文件下载。
利用QuartusII9.0软件实现原理图输入设计文件的编辑和产生相应的原理图符号元件。
(1)工程的创建:
File——NewProjectWizard…出现新建创建新工程向导对话框,选择NEXT,之后选择工程存放的路径,并创建一个新文件夹,填写工程的名字(顶程实体名默认和工程名一样,自动填充)芯片任选一个,Finish。
(2)File——New——BlockDiagram/SchematicFile,之后保存File——saveas,按默认的顶层实体名保存。
(3)在原理图编辑界面双击,弹出器件选对窗品,在NAME栏下分别输入and2和XOR、,查找与门和异或门以及或门,按下面的连接方式,接成全加器,并放放输入和输出端口,分别分名为A、B、SO、CO。
(4)编译Processing——StartCompliation,或直接点击软件上方的编译图标
,没有错误的话点击PROCESSing——GenerateFunctionalSimulationNetlist。
(5)File——New——VectorformFile并保存。
在仿真文件一个一空白栏处右键,Insert——InsertNodeorBus…——NodeFinder…点击List,将所有引脚列出,将左边栏内的引脚全部加到右边,并点击OK插入端口。
(6)利用
这个工具编辑A、B的状态,设置输入的四种可能组合:
00,01,10,11。
(7)Assignments——Settings…设置仿真类型为功能仿真,之后Processing——StartSimulation或采用软件上方的快捷图标
(8)最终的仿真结果如下图所示:
(9)引脚的绑定:
Assignments-Pins,弹出引脚列表,在LOCAtion列表下,将引脚绑到对应的编号。
(10)最后下载程序。
Tools——Programmer。
弹出下载对话框,设置好下载的硬件方式,点击START开始下载程序。
5.实验结果分析
(1)编译结果分析:
图为半加器的电路原理图A和B是加数和被加数的数据端口,So是和值的数据输出端口;Co则是进位数据的输出端口,So=A⊕B,Co=AB。
实验项目二:
用原理图输入方法设计4位全加器
1.实验目的
本实验为综合性实验,综合了简单组合电路逻辑、QuartusII的原理图输入方法、层次化设计的方法等内容。
其目的是通过一个4位全加器的设计熟悉EDA软件进行电子线路设计的详细流程。
学会对实验板上的FPGA/CPLD进行编程下载,硬件验证自己的设计项目。
2.实验内容(原理)
1在实验1的基础上,将半加器设计成全加器,再利用4个全加器构成一个4位的加法器
3.实验所需仪器设备(或软件)、实验材料
实验的硬件环境是:
微机一台、GW48EDA实验开发系统一套、电源线一根、十芯JTAG口线一根、USB下载线一根、USB下载器一个
实验的软件环境是:
QuartusII9.0软件
4.实验步骤(基本要求)
按照以上介绍的方法与流程,完成半加器和全加器的设计,包括原理图输入、编译、综合、适配、仿真、实验板上的硬件测试,并将此全加器电路设置成一个硬件符号入库。
建立一个更高的原理图设计层次,利用以上获得的1位全加器构成4位加法器,并完成编译、综合、适配、仿真、硬件测试。
(1)新建一个文件夹、新建一个工程,并将工程名保存为F_adder4,新建一个原理图文件保存为F_adder4,这个文件是最终的顶层实体。
用来设计最终的全加器。
(2)新件一个原理图文件,保存为H_adder,并设为顶层实体(Project——SetasTop_levelEntity)按实验一的原理图连接,并编译仿真,并成成原理图符号(File——Creat/Update——CreatSymbolFilesforCurrentFile),用于调用接成全加器。
(3)新建一个原理图文件,并调用半加器(上一部生成的半加器在Project目录下)和或门,组成全加器。
连接好的全加器如图所示,同样要再加上三个输入端器命名为A、B、Ci和二个输出端口So和Co,再生成原理图符号,便于设计4位加法器时的调用。
(4)把F_adder4设为顶层实体,并调用4个全加器连成4位加法器。
依次将低位的Co接到高位加法器的Ci,并将放置5个输入端口和5个输出端口分别接到对应的端口,四个输入A和4个输入端口B分别命名为A[0]、A[1]、A[2]、A[3]和B[0]、B[1]、B[2]、B[3]。
输出的4个S命名为S[0]、S[1]、S[2]、S[3],要注意高低位的顺序,还有将进位输入命名为Ci进位输出命名为Co。
设置仿真输出,用
图标设计A和B的数据为计数方式,数据格式设为无符号十进制,CI设置部分为高电平部分为低电平。
之后开始仿真
设置好A、B和Ci的输入数据,
仿真的最终结果如下图所示:
5.实验结果分析
(1)仿真分析
实验项目三:
用文本输入法设计2选1多路选择器
1.实验目的
本实验为综合性实验,综合了简单组合电路逻辑、QuartusII的使用方法、多层次电路设计、仿真和硬件测试等内容。
其目的是熟悉QuartusII的VHDL文本设计流程全过程。
2.实验内容(原理)
2选1多路选择器真值表
s
a
b
y
L
L
×
L
L
H
×
H
H
×
L
L
H
×
H
H
3.实验所需仪器设备(或软件)、实验材料
实验的硬件环境是:
微机一台、GW48EDA实验开发系统一套、电源线一根、十芯JTAG口线一根、USB下载线一根、USB下载器一个
实验的软件环境是:
QuartusII9.0软件
4.实验步骤(基本要求)
首先利用QuartusII完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测试等步骤,然后进行仿真。
最后在实验系统上进行硬件测试,实际验证本项实验的功能。
将设计好的2选1多路多路选择器看成是一个元件mux21a,利用元件例化语句描述下图。
(1)新件一个文件夹,新建一个工程命名为MUXK,再新建一个VHDL文件命名为MUXK,再新建一个VHDL文件命名为MUX21A,将先将MUX21A设置为顶层实体文件。
(2)编辑MUX21A,并进行编译,仿真,成功后进入下一步。
这是仿真果:
(3)利用元器件例化语句调用MUX21A构成MUXK。
(4)仿真测试,新建一个仿真文件,将插入所有的端口,设置输入端口的数据,A1、A2、A3,用时钟工具
设成不同的时钟信号
之后开始仿真,仿真的结果如下图所示。
(5)利用Tools—NetlistViewers——RTLViewer查看寄存器传输级的结构。
5.实验结果分析
(1)程序分析
(2)仿真分析
实验项目四:
用文本输入法设计60进制计数器
1.实验目的
本实验为综合性实验,综合了简单组合电路逻辑、时序逻辑电路和QuartusII的使用方法,多层次电路设计、仿真和硬件测试等内容。
其目的是熟悉QuartusII的VHDL文本设计流程全过程。
2.实验内容(原理)
利用VHDL语言设计一个60进制计数器并将两个计数器进行级联,并对1HZ的时钟时行计数实现秒和分的计数。
对计数值采用四位共阳数码管进行动态显示,因此要再设计一个数码管的译码器和数码管的动态扫描控制器。
由于系统上的时钟是6MHZ的因此,还要设计一个分频器,输出两种频率信号,一种是1HZ的用于秒计数,另一种是1KHz的。
用于数码管动态扫描的控制。
最终将所有的VHDL文件生成原理图符号,在顶层实体的原理图文件进行连接,并绑定端口,下载下行硬件测试分析。
3.实验所需仪器设备(或软件)、实验材料
实验的硬件环境是:
微机一台、GW48EDA实验开发系统一套、电源线一根、十芯JTAG口线一根、USB下载线一根、USB下载器一个
实验的软件环境是:
QuartusII9.0软件
4.实验步骤(基本要求)
利用QuartusII完成7段数码显示译码器、分频器、计数器、动态扫描控制器的文本编辑输入和仿真测试等步骤,最后在实验系统上进行硬件测试,实际验证本项实验的功能。
(1)首先设计数码管译码电路,利用CASE语句进行设计。
以下是译码器的部分程序。
CASEDATAIS
WHEN"0000"=>R_CODE:
="0111111";--0
WHEN"0001"=>R_CODE:
="0000110";--1
WHEN"0010"=>R_CODE:
="1011011";--2
WHEN"0011"=>R_CODE:
="1001111";--3
WHEN"0100"=>R_CODE:
="1100110";--4
WHEN"0101"=>R_CODE:
="1101101";--5
WHEN"0110"=>R_CODE:
="1111101";--6
WHEN"0111"=>R_CODE:
="0000111";--7
WHEN"1000"=>R_CODE:
="1111111";--8
WHEN"1001"=>R_CODE:
="1101111";--9
WHENOTHERS=>NULL;
ENDCASE;
(2)设计一个数码管驱动控制器,主要功能是在时钟的控制下依次对数码管进行点亮实现动态描扫,首先设计一个计从0计数到3的计数器,之后采用CASE语句根据计数值去控制数码管的位选的段选。
以下是部分程序。
IFCLK'EVENTANDCLK='1'THEN
IFCNT1=3THEN
CNT1:
=0;
ELSE
CNT1:
=CNT1+1;
ENDIF;
ENDIF;
CASECNT1IS
WHEN0=>DATAOUT<=IN1;SEL<="1110";--0
WHEN1=>DATAOUT<=IN2;SEL<="1101";--1
WHEN2=>DATAOUT<=IN3;SEL<="1011";--2
WHEN3=>DATAOUT<=IN4;SEL<="0111";--3
ENDCASE;
(3)对
(1)、
(2)的文件生成原理图符号,加到原理图文件中加上端口,进行仿真。
(4)设计一个分频器,系统的时钟是6MHZ,要对这个时钟进行分频,分别输出1KHz和1HZ的时钟,1KHZ用于数码管的动态扫描,1HZ用于计数器的计数。
设计方法采用计数器的方式进行分频,计数到N/2-1对输出进行取反,即可实现N分频。
以下是分频成1HZ的部分程序。
IFCLK'EVENTANDCLK='1'THEN
IFCNT=299999THEN
CNT:
=0;
R_F_1H:
=NOTR_F_1H;
ELSECNT:
=CNT+1;
ENDIF;
F_1H<=R_F_1H;
ENDIF;
(5)设计一个带异步复位,带进行输出的60进行的计数器,最终再将所有VHDL文件生成原理图文件,在顶层原理图文件中将所有器件连接,并进行引脚的绑定和程序的下载,进行硬件的测试。
IF(RST='0')THEN
R_QH<="0101";
R_QL<="1001";
ELSIFCLK'EVENTANDCLK='1'THEN
IF(R_QL>=9)THEN
R_QL<="0000";
IFR_QH>=5THEN
R_QH<="0000";
ELSE
R_QH<=R_QH+1;
ENDIF;
ELSE
R_QL<=R_QL+1;
ENDIF;
ENDIF;
IF(R_QH="0000"ANDR_QL="0000")THEN
CO<='1';
ELSE
CO<='0';
ENDIF;
5.实验结果分析
(1)程序分析
(2)仿真分析
(3)硬件测试分析
实验项目五:
乐曲硬件演奏电路的设计
1.实验目的
本实验为设计性实验。
将VHDL硬件描述语言,简单组合电路逻辑QuartusII的使用等知识应用到实际硬件电路设计中。
其目的是学会在EDA软件平台中利用VHDL硬件描述语言设计电路.设计要求利用数控分频器设计乐曲硬件演奏电路。
2.实验内容(原理)
与利用微处理器(CPU或MCU)来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助于功能强大的EDA工具和硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以实现。
本实验设计项目是“天空之城”乐曲演奏电路的实现。
我们知道,组成乐曲的每个音符的发音频率值(音调)及其持续的时间(节拍)是乐曲能连续演奏所需的两个基本要素,问题是如何来获取这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果。
乐曲硬件演奏电路的顶层文件原理图如图5-1所示,主系统由4个模块组成:
FDIV、CODE_DATA、F_CODE和DRIVER。
其中,模块U1(FDIV)是分频功能将输入的6MHz的时钟信号分频成1MHZ和4Hz的信号。
U2(CODE_DATA)类似于弹琴的人的手指;模块U3(F_CODE)类似于琴键;模块U4(DRIVER)类似于琴弦或音调发声器。
图5-1乐曲硬件演奏电路的顶层文件原理图
下面介绍图5-1的工作原理:
1、采用FDIV分频器实现对6MHz有源晶振的频率进行分频分别得到1MHz的和4Hz的频率,分别用于音调的控制和节拍的控制。
分频的方法采用计数到N/2-1(N为分频系数)取反的方式进行分频。
部分程序如下:
F4Hz:
PROCESS(CLK)
VARIABLECNT:
INTEGERRANGE0TO750000;
VARIABLER_F_4H:
STD_LOGIC;
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFCNT=749999THEN
CNT:
=0;
R_F_4H:
=NOTR_F_4H;
ELSECNT:
=CNT+1;
ENDIF;
F_4H<=R_F_4H;
ENDIF;
ENDPROCESS;
F1Mhz:
PROCESS(CLK)
VARIABLECNT1:
INTEGERRANGE0TO7;
VARIABLER_F_1M:
STD_LOGIC;
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFCNT1=2THEN
CNT1:
=0;
R_F_1M:
=NOTR_F_1M;
ELSECNT1:
=CNT1+1;
ENDIF;
F_1M<=R_F_1M;
ENDIF;
ENDPROCESS;
2、音符的频率可以由图4-1中的DRIVER获得,这是一个数控分频器。
由其clk端输入一具有较高频率(这里是1MHz)的信号,通过DRIVER分频后由CLK_out输出,由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,内部增加一个二分频电路以均衡其占空比。
DRIVER对clk输入信号的分频比由11位预置数TN[10..0]决定。
SPKOUT的输出频率将决定每一音符的音调,这样,分频计数器的预置值Tone[10..0]与SPKOUT的输出频率,就有了对应关系。
例如在DRIVER模块中若取Tone[10..0]=1288,将发音符为"3"音的信号频率。
以下是
ARCHITECTUREONEOFDriverIS
SIGNALFULL:
STD_LOGIC;
BEGIN
PROCESS(CLK)
VARIABLEQ:
STD_LOGIC_VECTOR(10DOWNTO0);
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFQ="11111111111"THEN
Q:
=TN;
FULL<='1';
ELSEQ:
=Q+'1';
FULL<='0';
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(FULL)
VARIABLER_CLK_OUT:
STD_LOGIC;
BEGIN
IFFULL'EVENTANDFULL='1'THEN
R_CLK_OUT:
=NOTR_CLK_OUT;
CLK_OUT<=R_CLK_OUT;
ENDIF;
ENDPROCESS;
END;
3、音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定,图5-1中模块F_CODE的功能首先是为Driver提供决定所发音符的分频预置数,而此数在DRIVER输入口停留的时间即为此音符的节拍值。
模块F_CODE是乐曲简谱码对应的分频预置数查表电路,其中设置了“天空之城”乐曲全部音符所对应的分频预置数,共21个,每一音符的停留时间由音乐节拍和音调发生器模块CODE_DATA的clk的输入频率决定,在此为4Hz。
这21个值的输出由对应于F_CODE的4位输入值INX[3..0]确定。
以下是部分参考程序,利用CASE语句实验译码功能将单符与预置数关联起来。
process(INX)is
begin
CASEINXIS
WHEN"00001"=>TOUT<="00010001100";--1
WHEN"00010"=>TOUT<="00101010110";--2
WHEN"00011"=>TOUT<="01000010001";--3
WHEN"00100"=>TOUT<="01001101000";--4
WHEN"00101"=>TOUT<="01100000101";--5
WHEN"00110"=>TOUT<="01110010000";--6
WHEN"00111"=>TOUT<="10000001100";--7
WHENOTHERS=>TOUT<="11111111111";
ENDCASE;
endprocess;
4、在Code中设置了一个0-31计数器(计数最大值为31),作为音符数据的地址发生器。
这个计数器的计数频率选为4Hz,即每一计数值的停留时间为0.25秒,恰为当全音符设为2秒时,四四拍的8分音符持续时间。
例如,Code_DATA在以下的VHDL逻辑描述中,“天空之城”乐曲的第一个音符为“0”,此音在逻辑中停留了3个节拍,即1.5秒时间。
之后是8分音符的中音“6”和“7”,对应的“6”和“7”音符分频预置值为1479和1541,在DRIVER的输入端停留了0.25秒。
随着CODE_DATA中的计数器按4Hz的时钟速率作加法计数时,即随地址值递增时,音符数据将DATA[4..0]端口输向F_CODE模块,“天空之城”乐曲就开始连续自然地演奏起来了。
PROCESS(CLK)
VARIABLECNT:
INTEGERRANGE0TO100;
variableR_DATA:
integerrange0to100;
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFCNT>=32THEN
CNT:
=0;
ELSECNT:
=CNT+1;
ENDIF;
ENDIF;
CASECNTIS
WHEN0=>R_DATA:
=0;WHEN1=>R_DATA:
=0;
WHEN2=>R_DATA:
=0;WHEN3=>R_DATA:
=0;
WHEN4=>R_DATA:
=0;WHEN5=>R_DATA:
=0;
WHEN6=>R_DATA:
=16;WHEN7=>R_DATA:
=17;
WHEN8=>R_DATA:
=21;WHEN9=>R_DATA:
=21;
WHEN10=>R_DATA:
=21;WHEN11=>R_DATA:
=7;
WHEN12=>R_DATA:
=21;WHEN13=>R_DATA:
=21;
WHEN14=>R_DATA:
=23;WHEN15=>R_DATA:
=23;
WHEN16=>R_DATA:
=17;WHEN17=>R_DATA:
=17;
WHEN18=>R_DATA:
=17;WHEN19=>R_DATA:
=17;
WHEN20=>R_DATA:
=17;WHEN21=>R_DATA:
=17;
WHEN22=>R_DATA:
=3;WHEN23=>R_DATA:
=3;
WHEN24=>R_DATA:
=16;WHEN25=>R_DATA:
=16;
WHEN26=>R_DATA:
=16;WHEN27=>R_DATA:
=15;
WHEN28=>R_DATA:
=16;WHEN29=>R_DATA:
=16;
WHEN30=>R_DATA:
=21;WHEN31=>R_DATA:
=21;
whenothers=>null;
endcase;
Data<=CONV_STD_LOGIC_VECTOR(R_DATA,5);
ENDPROCESS;
3.实验所需仪器设备(或软件)、实验材料
实验的硬件环境是:
微机一台、GW48EDA实验开发系统一套、电源线一根、十芯JTAG口线一根、USB下载线一根、USB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 技术 实验 资料