EDA技术基础实验报告Word下载.docx
- 文档编号:5252963
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:37
- 大小:501.90KB
EDA技术基础实验报告Word下载.docx
《EDA技术基础实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《EDA技术基础实验报告Word下载.docx(37页珍藏版)》请在冰点文库上搜索。
点击菜单中的Options,然后选中License菜单项,打开弹出一个注册对话框,在注册文件路径中打开你第三步中复制位置的License文件,然后点击OK,注册完毕。
2、max+plusⅡ软件基本设计流程
实验二全加器的设计
学习加法器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。
二、实验设备
PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)。
三、实验要求
详细描述4位全加器的设计过程,给出各层的电路原理图以及对应的仿真波形。
四、实验原理
1位半加器可以由与、或、非等基本门构成,如下图所示。
半加器电路原理图
1位全加器可以由两个半加器和一个或门构成,如下图所示。
全加器电路原理图
根据实验原理中,采用层次法设计一个4位全加器。
五、实验步骤
1.或门VHDL代码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYOR2IS
PORT(A,B:
INSTD_LOGIC;
C:
OUTSTD_LOGIC);
ENDENTITYOR2;
ARCHITECTURERTLOFOR2IS
BEGIN
C<
=AORB;
ENDARCHITECTURERTL;
或门仿真波形图
分析:
A、B为输入端,C为输出端,由以上仿真图可以看出,VHDL程序正确。
2.1位半加器VHDL代码
ENTITYH_ADDERIS
PORT(A,B:
CO,SO:
ENDENTITYH_ADDER;
ARCHITECTURERTLOFH_ADDERIS
SO<
=AAND(ANANDB);
CO<
=NOT(ANANDB);
1位半加器仿真波形图
A、B为输入端,SO为计数输出端,CO为进位端,由以上仿真图可以看出,VHDL程序正确。
由原理可知,两个半加器和一个或门相连组成一位全加器,如下图所示:
1位全加器电路原理图
3.全加器VHDL代码
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFULL_ADDERIS
PORT(AIN,BIN,CIN:
COUT,SUM:
ENDENTITYFULL_ADDER;
ARCHITECTURERTLOFFULL_ADDERIS
SIGNALS:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
S<
=('
0'
&
AIN)+BIN+CIN;
SUM<
=S(0);
COUT<
=S
(1);
ENDRTL;
1位全加器波形仿真图(有延时)
CIN、BIN为输入端,AIN为低位进位端,SUM为计数输出端,COUT为高位进位端,从以上结果可看出,波形在200ns的时候产生“毛刺”,且波形在400ns、500ns和600ns的时候存在“延时”。
低位全加器的进位端(CONT)接高位全加器的低位进位端(AIN),则组成4位全加器如下图所示:
4位全加器级联图
B(4-1)、C(4-1)为输入端,S(4-1)为计数输出端,A为低位进位端,C为高位进位端,其波形仿真图如下图所示(注意:
编译之前必须将文件设为当前文件):
4位全加器波形仿真图
由波形可知,仿真结果正确,但存在延时,譬如,当低端进位A高电平时,S端输出的A(H)延时比较长。
选择器件“Assign”|“Device”|“MAX7000S”|“EPM7128SLC84-6”,并根据下载板上的标识对管脚进行配置。
然后下载,进行硬件测试,检验结果是否正确。
六、问题与讨论:
如何避免“延时”?
答:
在VHDL程序中改用变量赋值。
实验三含异步清0和同步时钟使能的十进制计数器
学习时序电路的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。
二、实验原理
设计一个含异步清零,同步时钟使能的十进制计数器,要求rst是异步清零信号,高电平有效;
ena为使能端,高电平有效;
clk是时钟信号;
outy[3..0]是4位数据输出端。
三、实验内容
在MAX+plusII上依照实验原理进行设计、编辑、编译、综合、适配、仿真。
详细描述示例的功能特点,给出其所有信号的时序仿真波形。
四、实验步骤
1.计数器的VHDL代码
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT4BIS
PORT(CLK:
INSTD_LOGIC;
RST:
ENA:
OUTY:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDCNT4B;
ARCHITECTUREbehavOFCNT4BIS
SIGNALCQI:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
P_REG:
PROCESS(CLK,RST,ENA)
IFRST='
1'
THENCQI<
="
0000"
;
ELSIFCLK'
EVENTANDCLK='
THEN
IFENA='
THEN
IFCQI="
1001"
THENCQI<
="
ELSECQI<
=CQI+1;
ENDIF;
ELSECQI<
OUTY<
=CQI;
ENDPROCESSP_REG;
=CQI(3);
ENDbehav;
2.计数器的仿真波形图
十进制计数器的仿真波形图
实验结果正确。
如图所示,当RST(复位端)为1时,计数器不工作。
当ENA(使能端)为1时,计数器工作。
当CQI(3)为1时,COUT(进位端)有效。
五、问题与讨论
在上例中是否可以不定义信号CQI,而直接用输出端口信号完成加法运算,即:
OUTY<
=OUTY+1?
在源代码中必须要定义信号CQI,因为VHDL里面规定输出端口不能做为赋值来用,而OUTY<
=OUTY+1,已经把OUTY当成赋值来用了,同样道理,输入端口也不能用于被赋值。
实验四秒表的设计
1、熟练利用VHDL语言进行数字系统设计;
2、掌握数字系统的设计方法——自顶向下的设计思想;
3、掌握计数器的设计与使用;
4、根据秒表的功能要求设计一个秒表。
PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干。
1、有秒、分计数,数码扫描显示输出;
2、有异步清零端;
3、在功能允许的情况下,可自由发挥。
1、功能描述:
秒表是一种计时的工具,有着很广泛的用途。
本实验中的秒表要求有一个功能按钮——清零按钮,当按下此按钮时,秒表清零。
在数码管上采用扫描显示输出。
2、基本原理:
本实验中用到的主要元件有计数器、数据选择器、译码器。
秒、分都是60进制计数,所以必须采用两个60进制的计数器。
3、自顶向下的设计方法:
自顶向下的设计方法是数字系统设计中最常用的设计方法,也是基于芯片的系统设计的主要方法。
它的基本原理框图如下:
自顶向下的设计方法利用功能分割手段将设计由上到下进行层次化和模块化,即分层次、分模块进行设计和仿真。
功能分割时,将系统功能分解为功能块,功能块再分解为逻辑块,逻辑块再分解为更少的逻辑块和电路。
如此分割,逐步的将系统细化,将功能逐步具体化,模块化。
高层次设计进行功能和接口描述,说明模块的功能和接口,模块功能的更详细描述在下一设计层次说明,最底层的设计才涉及具体寄存器和逻辑门电路等实现方式的描述。
(注意:
这里所说的模块可能是芯片或电路板。
)
1.计数器(时钟)VHDL代码
LIBRARYieee;
USEieee.std_logic_1164.all;
USEieee.std_logic_unsigned.all;
entityclockis
port(clk,rst:
instd_logic;
co:
outstd_logic;
qm:
outstd_logic_vector(3downto0);
qn:
outstd_logic_vector(3downto0));
endentity;
architecturertlofclockis
signalqh:
std_logic_vector(3downto0);
signalql:
begin
process(clk,rst)
begin
ifqh="
0101"
andql="
thenco<
='
elseco<
endif;
ifrst='
thenqh<
ql<
elsifclk'
eventandclk='
then
ifql="
then
ifqh="
elseqh<
=qh+"
0001"
endif;
elseql<
=ql+"
endif;
endprocess;
qm<
=qh;
qn<
=ql;
endrtl;
计数器(时钟)的仿真波形图
RST为复位端,qm为十位,qn为个位。
当复位端为高电平时,计数器不工作,当复位端为低电平时,计数器正常工作,个位为9时进位,十位为5时进位。
2.计数器(位选)VHDL代码
entitycounter2is
port(clk,rst:
q:
outstd_logic_vector(1downto0));
architecturertlofcounter2is
signalqq:
std_logic_vector(1downto0);
process(clk,rst)
ifrst='
qq<
00"
ifqq="
11"
qq<
else
=qq+1;
q<
=qq;
计数器(位选)的仿真波形图
当复位端(rst)为高电平时,计数器显示为0,当复位端(rst)为低电平时,计数器正常工作,0至3循环显示。
3.四位数据选择器VHDL代码
entityselect1is
port(a:
instd_logic_vector(3downto0);
b:
c:
d:
s:
instd_logic_vector(1downto0);
data:
outstd_logic_vector(3downto0));
architectureartofselect1is
signaldataa:
process(a,b,c,d,s)
casesis
when"
=>
dataa<
=a;
01"
=b;
10"
=c;
=d;
whenothers=>
=dataa;
endcase;
data<
endart;
四位数据选择器的仿真图
分析:
如上图所示,仿真结果正确。
a——d端依次为0——3端,s端为数据选择端,data为数据输出端。
4.3-8译码器的VHDL代码
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitytranslate3_8is
port(data:
instd_logic_vector(3downto0);
show:
outstd_logic_vector(7downto0));
architectureartoftranslate3_8is
signalshoww:
std_logic_vector(7downto0);
process(data)
casedatais
when"
showw<
00111111"
00000110"
0010"
01011011"
0011"
01001111"
0100"
01100110"
01101101"
0110"
01111101"
0111"
00000111"
1000"
01111111"
01101111"
whenothers=>
00000000"
show<
=showw;
endarchitectureart;
3-8译码器的仿真图
仿真结果正确。
data为数据输入端,范围从0至9(二进制),show为数据输出端,直接连接显示器,代码在上述程序中已给出。
5.2-4译码器的VHDL代码
entitytranslate2_4is
instd_logic_vector(1downto0);
architectureartoftranslate2_4is
2-4译码器的仿真结果图
data为数据输入端,范围从0至3(二进制),show为数据输出端,连接4个显示器,进行位选。
将各个器件连接,得总的原理图如下:
秒表的电路原理图
秒表的仿真结果图
show[3..0]端为位选段,show[7..0]端为显示端。
CLK2为位选信号,CLK1为计数信号。
RST为复位信号。
6.下载到实验箱
秒表的管脚安排
六、心得体会
收益:
通过这次实验,我明白了秒表的工作原理,掌握了位选的设计,同时,运用VHDL语言编写了秒表的代码,并成功运行。
改进:
本秒表可增添功能按钮——计数和停止计数按钮。
当第一次按下此按钮时,秒表开始计数,再一次按下时,秒表停止计数,并显示所计的数字。
实验五序列检测器的设计
1、掌握序列检测器的工作原理;
2、学会用状态机进行数字系统设计。
二、实验器材
三、实验原理与内容
1、序列检测器的基本工作过程:
序列检测器用于检测一组或多组由二进制码组成的脉冲序列信号,在数字通信中有着广泛的应用。
当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。
由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置的对应码相同。
在检测过程中,任何一位不相等都将回到初始状态重新开始检测。
方框图如下:
状态机工作原理
2、状态机的基本设计思想:
在状态连续变化的数字系统设计中,采用状态机的设计思想有利于提高设计效率,增加程序的可读性,减少错误的发生几率。
同时,状态机的设计方法也是数字系统中一种最常用的设计方法。
一般来说,标准状态机可以分为摩尔(Moore)机和米立(Mealy)机两种。
在摩尔机中,其输出仅仅是当前状态值的函数,并且仅在时钟上升沿到来时才发生变化。
米立机的输出则是当前状态值和当前输入值的函数。
本实验要从一串二进制码中检测出一个已预置的8位二进制码11101111,每增加一位二进制码相当于增加一个状态,再加上一个初始态,用9个状态可以实现。
其状态转换图如下所示:
状态转换图
3、实验内容:
写出状态机的源程序,编译后进行仿真,下载到实验箱,看结果是否正确。
1、序列检测(11101111)VHDL代码
ENTITYXLJCIS
PORT(CLK,RESET:
STATE_INPUTS:
qq:
OUTSTD_LOGIC_vector(2downto0);
COMB_OUTPUTS:
OUTSTD_LOGIC);
ENDXLJC;
ARCHITECTUREARTOFXLJCIS
TYPESTATESIS(ST0,ST1,ST2,ST3,ST4,ST5,ST6,ST7,ST8);
SIGNALCURRENT_STATE,NEXT_STATE:
STATES;
REG:
PROCESS(RESET,CLK)
IFRESET='
CURRENT_STATE<
=ST0;
ELSIF(CLK='
ANDCLK'
EVENT)THEN
=NEXT_STATE;
ENDPROCESS;
COM:
PROCESS(CURRENT_STATE,STATE_INPUTS)
CASECURRENT_STATEIS
WHENST0=>
IFSTATE_INPUTS='
NEXT_STATE<
=ST1;
ELSE
WHENST1=>
=ST2;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 技术 基础 实验 报告