《EDA技术与VHDL》课程实验指导书文档格式.docx
《《EDA技术与VHDL》课程实验指导书文档格式.docx》由会员分享,可在线阅读,更多相关《《EDA技术与VHDL》课程实验指导书文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
2:
将此多路选择器看成是一个元件mux21a,利用元件例化语句描述一个双2选1多路选择器,并将此文件放在同一目录中。
三、实验仪器
电脑。
四、实验原理
1、2选1多路选择器的VHDL源代码
ENTITYmux21aIS
PORT(a,b,s:
INBIT;
y:
OUTBIT);
ENDENTITYmux21a;
ARCHITECTUREoneOFmux21aIS
BEGIN
PROCESS(a,b,s)
BEGIN
IFs='
0'
THENy<
=a;
ELSEy<
=b;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREone;
下图为本例2选1多路选择器的仿真图形
2、双2选1多路选择器
以下是部分参考程序:
...
COMPONENTMUX21A
PORT(a,b,s:
INSTD_LOGIC;
OUTSTD_LOGIC);
ENDCOMPONENT;
...
u1:
MUX21APORTMAP(a=>
a2,b=>
a3,s=>
s0,y=>
tmp);
u2:
a1,b=>
tmp,s=>
s1,y=>
outy);
ENDARCHITECTUREBHV;
五、实验报告:
根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;
给出程序分析报告、仿真波形图及其分析报告。
实训三时序电路的设计
熟悉QuartusⅡ的VHDL文本设计过程,学习简单时序电路的设计、仿真和测试。
1、设计一个D触发器,给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。
2、设计锁存器,同样给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。
1、D触发器的VHDL源代码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYDFF1IS
PORT(CLK:
INSTD_LOGIC;
D:
Q:
OUTSTD_LOGIC);
END;
ARCHITECTUREbhvOFDFF1IS
SIGNALQ1:
STD_LOGIC;
--类似于在芯片内部定义一个数据的暂存节点
PROCESS(CLK,Q1)
IFCLK'
EVENTANDCLK='
1'
THENQ1<
=D;
ENDIF;
ENDPROCESS;
Q<
=Q1;
--将内部的暂存数据向端口输出(双横线--是注释符号)
ENDbhv;
2、锁存器的VHDL源代码
ENTITYDFF3IS
PORT(CLK,D:
ARCHITECTUREbhvOFDFF3IS
STD_LOGIC;
PROCESS(CLK,D)BEGIN
IFCLK='
--电平触发型寄存器
THENQ<
ENDPROCESS
Q<
--在此,赋值语句可以放在进程外,作为并行赋值语句
分析比较实验内容1和2的仿真和实测结果,说明这两种电路的异同点
实训四1位全加器的设计
熟悉利用QuartusⅡ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个1位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。
1,在QuartusII9.0软件中完成半加器和的设计,包括原理图输入、编译、综合、适配、仿真、实验板上的硬件测试,并将此半加器电路设置成一个硬件符号入库。
2,建立一个更高层次的原理图设计,利用以上获得的半加器构成1位全加器,并完成编译、综合、适配、仿真和硬件测试。
1、ZY11EDA13BE型实验箱通用编程模块,配置模块,开关按键模块,LED显示模块。
2、并口延长线,JTAG延长线。
(所有实验均包括,以下实验中均略去)
3、安装QuartusII9.0软件的PC机。
1位全加器可以用两个半加器及一个或门连接而成,半加器原理图的设计方法很多,我们用一个与门、一个非门和同或门(xnor为同或符合,相同为1,不同为0)来实现。
先设计底层文件:
半加器,再设计顶层文件全加器。
(1)半加器的设计:
半加器表达式:
进位:
co=aandb
和:
so=axnor(notb
(2)全加器的设计:
画出全加器原理图。
五、实验注意事项
实验指导书中的所有实验内容都是针对主板系统的核心芯片EP1K30QC208-2来设计的,实验原理中提供了管脚分配情况,管脚分配好后必须通过成功编译才可以下载配置。
六、实验报告
列出半加器与全加器的真值表。
如果实验室条件允许,打印半加器和全加器仿真波形图贴于实验报告中。
用文字描述出怎样实现层次化设计。
1位全加器的实现方法很多,画出其它方法的原理图。
七、思考题
1、多位全加器就是在一位的原理上扩展而成的,设计出原理图输入的8位全加器。
2、集成电路全加器芯片有7480、7483等,试述其内部结构是如何实现的?
3、参考全加器的设计思路设计出原理图输入的1位全减器。
(提示:
全加器的设计是根据真值表来建立最简表达式,最简表达式应该是一些基本门电路,同样全减器的设计也是如此)。
实训五含异步清零和同步时钟使能的加法计数器的设计
学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。
1.在QuartusⅡ上对加法计数器的程序进行编辑、编译、综合、适配、仿真。
说明例中各语句的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。
2.引脚锁定以及硬件下载测试。
引脚锁定后进行编译、下载和硬件测试实验。
将实验过程和实验结果写进实验报告。
电脑。
加法计数器的VHDL程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT10IS
PORT(CLK,RST,EN:
CQ:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
COUT:
ENDCNT10;
ARCHITECTUREbehavOFCNT10IS
PROCESS(CLK,RST,EN)
VARIABLECQI:
STD_LOGIC_VECTOR(3DOWNTO0);
IFRST='
THENCQI:
=(OTHERS=>
'
);
--计数器异步复位
ELSIFCLK'
EVENTANDCLK='
THEN--检测时钟上升沿
IFEN='
THEN--检测是否允许计数(同步使能)
IFCQI<
9THENCQI:
=CQI+1;
--允许计数,检测是否小于9
ELSECQI:
);
--大于9,计数值清零
IFCQI=9THENCOUT<
='
;
--计数大于9,输出进位信号
ELSECOUT<
CQ<
=CQI;
--将计数值向端口输出
ENDbehav;
实训六数控分频器的设计
一、实验目的:
学习数控分频器的设计、分析和测试方法。
1、在QuartusⅡ上对数控分频器的程序进行编辑、编译、综合、适配、仿真。
说明例中各语句功能、设计原理及逻辑功能,详述进程P_REG和P_DIV的作用,并画出该程序的RTL电路图。
2、给出其时序仿真波形。
提示:
用输入总线的方式给出输入信号仿真数据。
数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,详细设计程序如下
ENTITYDVFIS
PORT(CLK:
INSTD_LOGIC_VECTOR(7DOWNTO0);
FOUT:
END;
ARCHITECTUREoneOFDVFIS
SIGNALFULL:
P_REG:
PROCESS(CLK)
VARIABLECNT8:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
THEN
IFCNT8="
11111111"
THEN
CNT8:
=D;
--当CNT8计数计满时,输入数据D被同步预置给计数器
FULL<
--同时使溢出标志信号FULL输出为高电平
ELSECNT8:
=CNT8+1;
--否则继续作加1计数
--且输出溢出标志信号FULL为低电平
ENDPROCESSP_REG;
P_DIV:
PROCESS(FULL)
VARIABLECNT2:
IFFULL'
EVENTANDFULL='
CNT2:
=NOTCNT2;
--如果溢出标志信号FULL为高电平,D触发器输出取反
IFCNT2='
THENFOUT<
ELSEFOUT<
ENDPROCESSP_DIV;
END;
参考仿真波形图如下:
实验七序列检测器的设计
用状态机实现序列检测器的设计,了解一般状态机的设计与应用。
1、在QuartusⅡ上对序列检测器的程序进行编辑、编译、综合、适配、仿真。
了解控制信号的时序,最后进行引脚锁定并下载完成硬件测试实验。
2、将8位待检测预置数作为外部输入信号,即可以随时改变序列检测器中的比较数据。
写出此程序的符号化单进程状态机程序。
并在QuartusⅡ上对序列检测器的程序进行编辑、编译、综合、适配、仿真。
序列检测器可用于检测一组或多组二进制组成的脉冲序列信号,当检测器连续受到一组串行二进制码后,如果这组码与检测器中预置的码相同,则输出1,否则输出0.程序如下:
ENTITYSCHKIS
PORT(DIN,CLK,CLR:
--串行输入数据位/工作时钟/复位信号
AB:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
--检测结果输出
ENDSCHK;
ARCHITECTUREbehavOFSCHKIS
SIGNALQ:
INTEGERRANGE0TO8;
SIGNALD:
--8位待检测预置数(密码=E5H)
D<
="
11100101"
;
--8位待检测预置数
PROCESS(CLK,CLR)
IFCLR='
=0;
THEN--时钟到来时,判断并处理当前输入的位
CASEQIS
WHEN0=>
IFDIN=D(7)THENQ<
=1;
ELSEQ<
ENDIF;
WHEN1=>
IFDIN=D(6)THENQ<
=2;
WHEN2=>
IFDIN=D(5)THENQ<
=3;
WHEN3=>
IFDIN=D(4)THENQ<
=4;
WHEN4=>
IFDIN=D(3)THENQ<
=5;
WHEN5=>
IFDIN=D
(2)THENQ<
=6;
WHEN6=>
IFDIN=D
(1)THENQ<
=7;
WHEN7=>
IFDIN=D(0)THENQ<
=8;
WHENOTHERS=>
ENDCASE;
PROCESS(Q)--检测结果判断输出
IFQ=8THENAB<
1010"
--序列数检测正确,输出“A”
ELSEAB<
1011"
--序列数检测错误,输出“B”
ENDbehav;
根据以上内容写出实验报告,包括设计原理、程序设计、程序分析、仿真分析、硬件测试和详细实验过程。
实训八十六进制七段数码显示译码器设计
1.学习7段数码显示译码器设计。
2.学习VHDL的CASE语句应用及多层次设计方法
.在QuartusⅡ上对七段数码显示译码器的程序进行编辑、编译、综合、适配、仿真。
7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实现。
七段数码显示译码器VHDL程序
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYDECL7SIS
PORT(A:
INSTD_LOGIC_VECTOR(3DOWNTO0);
LED7S:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ARCHITECTUREoneOFDECL7SIS
PROCESS(A)
CASEAIS
WHEN"
0000"
=>
LED7S<
0111111"
0001"
0000110"
0010"
1011011"
0011"
1001111"
0100"
1100110"
0101"
1101101"
0110"
1111101"
0111"
0000111"
1000"
1111111"
1001"
1101111"
WHEN"
1110111"
1111100"
1100"
0111001"
1101"
1011110"
1110"
1111001"
1111"
1110001"
NULL;
其参考仿真波形图为: