EDA实验报告.docx
《EDA实验报告.docx》由会员分享,可在线阅读,更多相关《EDA实验报告.docx(14页珍藏版)》请在冰点文库上搜索。
![EDA实验报告.docx](https://file1.bingdoc.com/fileroot1/2023-5/6/f3500b67-a7e1-4503-b799-18b962de63cc/f3500b67-a7e1-4503-b799-18b962de63cc1.gif)
EDA实验报告
一MAX–plusII及开发系统使用
一、实验目的
1、熟悉利用MAX-plusⅡ的原理图输入方法设计简单的组合电路
2、掌握层次化设计的方法
3、熟悉DXT-BⅢ型EDA试验开发系统的使用
二、主要实验设备
PC机一台(中档以上配置),DXT-B3EDA实验系统一台。
三、实验原理
数字系统设计系列实验是建立在数字电路基础上的一个更高层次的设计性实验。
它是借助可编程逻辑器件(PLD),采用在系统可编程技术(ISP),利用电子设计自动化软件(EDA),在计算机(PC)平台上进行的。
因为本实验是在计算机平台上进行,因此实验方式,实验手段和实验仪器与传统的实验有很大的区别,主要体现在以下几个方面:
1、实验器材集中化,所有实验基本上在一套实验设备上进行。
传统的实验每作完一个实验,实验器材基本上都要变动(个别除外)。
而做本实验时,只要在计算机上把不同的程序输进去,其它步骤所有实验都一致;
2、实验耗材极小(基本上没有耗材);
3、在计算机上进行,自动化程度高,人机交互性好,修改、验证实验简单;
4、下载后,实验结果清晰;
5、实验仪器损耗少,维护简单;
下面,我们就本套实验设备做一个简单的介绍。
(一)Max+plusⅡ10.0的使用。
1、Max+PlusII软件的安装步骤:
第一步:
系统要求
奔3CPU以上,128M内存以上,4G以上硬盘,98操作系统(98或Me操作系统才可以下载,其他操作系统下载必须安装驱动,否则只能仿真,如果大家只进行仿真的话,对系统没要求)
第二步:
安装
点击安装可执行文件进行安装,安装完毕后会弹出一对话框,点击是或否都可以。
第三步:
将安装文件夹中的License文件夹打开,里面有一个License.bat注册文件,将此文件复制到你的安装目录下(你的安装目录可放在任一个驱动器下,然后建立一个Max10的文件夹,将系统安装在此文件夹中,安装后此文件夹中会有三个文件夹)的任一个文件夹中,要清楚位置。
第四步:
注册
启动Max+PlusII软件,可以从开始-->程序-->Altera-->Max+PlusII打开,也可以建立一个快捷方式在桌面上。
启动软件后,会有弹出一个对话框,点击是或否都可以,然后进入系统。
点击菜单中的Options,然后选中License菜单项,打开弹出一个注册对话框,在注册文件路径中打开你第三步中复制位置的License文件,然后点击OK,注册完毕。
2、max+plusⅡ软件基本设计流程
注意:
实验时必须严格按照上述流程进行,如实验中遇到问题,举手向老师提出,严禁随意乱做!
!
(二)4位全加器设计
一个4位全加器可以由4个1位全加器构成,如图1.1所示,1位的全加器串行联接可以实现4位的二进制全加器。
图1.14位全加器电路原理图
1位全加器可以由两个半加器和一个或门构成,如图1.2所示。
图1.2全加器电路原理图
1位半加器可以由与、或、非等基本门构成,如图1.3所示。
图1.3半加器电路原理图
根据实验原理中,采用层次法设计一个4位全加器。
四、实验步骤
1、如图1.3所示,利用MAX-plusⅡ中的图形编辑器设计一半加器,进行编译、仿真,并将其设置成为一元件(可根据需要对元件符号进行调整)。
注意:
编译之前必须将文件设为当前文件。
2、建立一个更高得原理图设计层次,如图1.2所示,利用前面生成的半加器元件设计一全加器,进行编译、仿真,并将其设置成为一元件(可根据需要对元件符号进行调整)。
3、再建立一个更高得原理图设计层次,如图1.1所示,利用前面生成的半加器元件设计一全加器,进行编译、仿真。
4、选择器件“Assign”|“Device”|“MAX7000S”|“EPM7128SLC84-6”,并根据下载板上的标识对管脚进行配置。
然后下载,进行硬件测试,检验结果是否正确。
五、思考题:
为了提高加法器的速度,如何改进以上设计的进位方式?
六、实验过程及结果:
思考题:
答:
把元件的串行进位改为并行进位。
因为串行进位是逐级进位的,延时较大,而并行进位是同时进行不存在依赖关系,故并行进位会提高加法器的速度。
二高速四位乘法器设计
一、实验目的
1.熟悉利用MAX-plusⅡ的原理图输入方法设计简单的组合电路
2.掌握层次化设计的方法
3.掌握高速乘法器的设计方法
二、实验原理
根据乘法的运算规则,不难得出下图所示的乘法器的原理框图。
4位加法器可以选择74283,b0*a,b1*a,b2*a,b3*a实际就是1位和4位的与运算,如下图所示。
由原理框图不难得出如图2.1所示的电路原理图。
三、实验内容
按以上原理实现一个高速4位乘法器
四、实验步骤
1.如上图所示,利用MAX-plusⅡ中的图形编辑器设计1-4的二进制乘法器,进行编译、仿真,并将其设置成为一元件(可根据需要对元件符号进行调整)。
注意:
编译之前必须将文件设为当前文件。
2.建立一个更高得原理图设计层次,如图2.1所示,利用前面生成的1-4的二进制乘法器和调用库中的74283元件设计一高速4位乘法器
3.选择器件“Assign”|“Device”|“MAX7000S”|“EPM7128SLC84-6”,并根据下载板上的标识对管脚进行配置。
然后下载,进行硬件测试,检验结果是否正确。
五。
思考题:
除了以上方法是否还有其他实现高速乘法的方法?
图2.1高速4位乘法器电路原理图
六、实验结果:
思考题:
把元件的串行进位改为并行进位。
因为串行进位是逐级进位的,延时较大,而并行进位是同时进行不存在依赖关系,故并行进位会提高乘法器的速度。
综合性设计实验部分
实验一秒表的设计
一、实验目的:
1、熟练利用VHDL语言进行数字系统设计;
2、掌握数字系统的设计方法——自顶向下的设计思想;
3、掌握计数器的设计与使用;
4、根据秒表的功能要求设计一个秒表;
二、实验设备:
PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干
三、实验要求:
1、有秒、分计数,数码扫描显示输出;
2、有清零端和计数使能端;
3、在功能允许的情况下,可自由发挥;
四、实验原理:
1、功能描述:
秒表是一种计时的工具,有着很广泛的用途。
本实验中的秒表要求有两个功能按钮:
一个是计数和停止计数按钮,当第一次按下此按钮时,秒表开始计数,再一次按下时,秒表停止计数,并显示所计的数字;另一个是清零按钮,当按下此按钮时,秒表清零。
在数码管上采用扫描显示输出。
2、基本原理:
本实验中用到的主要元件有计数器、控制逻辑、数据选择器和译码器等。
秒、分都是60进制计数,所以必须采用两个60进制的计数器(或6进制计数器与10进制计数器的组合);控制逻辑主要是用来实现计数和清零。
基本方框图如下:
注意:
计数器必须有进位输出、计数使能端和清零端。
3、自顶向下的设计方法:
自顶向下的设计方法是数字系统设计中最常用的设计方法,也是基于芯片的系统
设计的主要方法。
它的基本原理框图如下:
自顶向下的设计方法利用功能分割手段将设计由上到下进行层次化和模块化,即分层次、分模块进行设计和仿真。
功能分割时,将系统功能分解为功能块,功能块再分解为逻辑块,逻辑块再分解为更少的逻辑块和电路。
如此分割,逐步的将系统细化,将功能逐步具体化,模块化。
高层次设计进行功能和接口描述,说明模块的功能和接口,模块功能的更详细描述在下一设计层次说明,最底层的设计才涉及具体寄存器和逻辑门电路等实现方式的描述。
(注意:
这里所说的模块可能是芯片或电路板。
)
五、实验步骤:
1、采用自顶向下的设计方法,首先将系统分块;
2、设计元件,即逻辑块;
3、一级一级向上进行元件例化(本实验只需例化一次即可),设计顶层文件。
六、实验报告
1、写出实验源程序,画出仿真波形;
2、总结实验步骤和实验结果;
3、心得体会――本次实验中你的感受;你从实验中获得了哪些收益;本次实验你的成功之处;本次实验中还有待改进的地方;下次实验应该从哪些地方进行改进;怎样提高自的实验效率和实验水平等等。
4、完成实验思考题。
七、问题与思考
设计一个60~0的递减计数器。
八、实验源程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityjishuqiis
port(clk,clr:
instd_logic;
sec,en:
bufferstd_logic_vector(0to5));
endentity;
architectureartofjishuqiis
signalca:
std_logic;
begin
process(clk,clr)is
begin
ifclr='1'orsec="111100"then
sec<="000000";
elsifclk'eventandclk='1'then
sec<=sec+1;
ifsec="111011"then
ifen="111011"then
en<="000000";
else
en<=en+1;
ca<='0';
endif;
endif;
endif;
ifsec="000000"then
ca<='1';
else
ca<='0';
endif;
endprocess;
endarchitecture;
九、仿真波形:
10、心得体会:
经过这次秒表的设计,对于maxplus的使用有了更好的理解,而且在程序的设计上也有了更好的想法,程序的书写不同于C语言,VHDL更为严谨简练。
附加:
设计一个60~0的递减计数器:
程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
entitycounter60is
port(clk:
instd_logic;
clr:
instd_logic;
DOUT:
outstd_logic_vector(5downto0));
endcounter60;
architecturert1ofcounter60is
signaldata_r:
std_logic_vector(5downto0);
begin
process(clk,clr)
begin
ifclr='1'thendata_r<="000000";
elseifclk'eventandclk='1'then
ifdata_r="000000"thendata_r<="111011";elsedata_r<=data_r-1;
endif;
endif;
endif;
endprocess;
DOUT<=data_r;
endrt1;
仿真结果:
实验二序列检测器的设计
一、实验目的:
1、掌握序列检测器的工作原理;
2、学会用状态机进行数字系统设计;
二、实验器材:
PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干
三、实验原理与内容:
1、序列检测器的基本工作过程:
序列检测器用于检测一组或多组由二进制码组成的脉冲序列信号,在数字通信中有着广泛的应用。
当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。
由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置的对应码相同。
在检测过程中,任何一位不相等都将回到初始状态重新开始检测。
方框图如下:
2、状态机的基本设计思想:
在状态连续变化的数字系统设计中,采用状态机的设计思想有利于提高设计效率,增加程序的可读性,减少错误的发生几率。
同时,状态机的设计方法也是数字系统中一种最常用的设计方法。
一般来说,标准状态机可以分为摩尔(Moore)机和米立(Mealy)机两种。
在摩尔机中,其输出仅仅是当前状态值的函数,并且仅在时钟上升沿到来时才发生变化。
米立机的输出则是当前状态值、当前输出值和当前输入值的函数。
本实验要从一串二进制码中检测出一个已预置的8位二进制码,每增加一位二进制码相当于增加一个状态,再加上一个初始态,用9个状态可以实现。
其过程如下:
注意:
此图作为参考,检测不同的二进制码其过程不同!
3、实验内容:
写出状态机的源程序,编译后进行仿真,看结果是否正确。
四、实验步骤:
1、充分理解状态机的工作原理,画出状态转换图;
2、写出源程序,按顺序进行处理;
3、检查结果是否正确。
五、实验报告:
1、写出实验源程序,画出仿真波形;
2、总结实验步骤和实验结果;
3、心得体会――本次实验中你的感受;你从实验中获得了哪些收益;本次实验你
的成功之处;本次实验中还有待改进的地方;下次实验应该从哪些地方进行改进;
怎样提高自的实验效率和实验水平等等。
4、完成实验思考题。
七、问题与思考:
如果改变待检测的二进制码,状态转换图应如何变化。
八、实验程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitymelayis
port(clk,datain,reset:
instd_logic;
dataout:
outstd_logic_vector(7downto0));
endentitymelay;
architectureartofmelayis
typestate_typeis(st0,st1,st2,st3,st4,st5,st6,st7,st8);
signalstate:
state_type;
begin
state_process:
process(clk,reset)
begin
ifreset='1'then
state<=st0;
elsifclk'eventandclk='1'then
casestateis
whenst0=>ifdatain='1'then
state<=st1;
endif;
whenst1=>ifdatain='0'then
state<=st2;
endif;
whenst2=>ifdatain='0'then
state<=st3;
endif;
whenst3=>ifdatain='0'then
state<=st4;
endif;
whenst4=>ifdatain='1'then
state<=st5;
endif;
whenst5=>ifdatain='1'then
state<=st6;
endif;
whenst6=>ifdatain='1'then
state<=st7;
endif;
whenst7=>ifdatain='0'then
state<=st8;
endif;
whenst8=>ifdatain='0'then
state<=st0;
else
state<=st0;
endif;
endcase;
endif;
endprocessstate_process;
output_p:
process(state)
begin
casestateis
whenst0=>ifdatain='1'thendataout<="00000000";
elsedataout<="00000000";endif;
whenst1=>ifdatain='0'thendataout<="00000000";
elsedataout<="00000000";endif;
whenst2=>ifdatain='0'thendataout<="00000000";
elsedataout<="00000000";endif;
whenst3=>ifdatain='0'thendataout<="00000000";
elsedataout<="00000000";endif;
whenst4=>ifdatain='1'thendataout<="00000000";
elsedataout<="00000000";endif;
whenst5=>ifdatain='1'thendataout<="00000000";
elsedataout<="00000000";endif;
whenst6=>ifdatain='1'thendataout<="00000000";
elsedataout<="00000000";endif;
whenst7=>ifdatain='0'thendataout<="00000000";
elsedataout<="00000000";endif;
whenst8=>ifdatain='0'thendataout<="00000001";
elsedataout<="00000001";endif;
endcase;
endprocessoutput_p;
endarchitectureart;
八、仿真波形:
九、心得体会:
本次序列检测器的设计,在刚开始时走了弯路,在问题的理解上不够到位,在状态的改变上,写了太多不必要的程序。
对于波形仿真的造作上还不是很熟练,以后还要进一步改进。
不过在程序的书写方面有了更好的理解。
十、问题与思考:
如果改变待检测的二进制码,状态转换图应如何变化?
答:
改变待检测的二进制码,状态转换图跟随着其相应地改变。