您好,欢迎访问三七文档
EDA验报告班级:姓名:学号:实验一EDA工具基本操作与应用一、实验目的1、掌握QUARTUSII设计工具进行电子设计的基本流程。2、了解可编程器件设计的全过程。二、实验内容一个简单的D触发器的设计。三、实验条件QUARTUSII软件,GW48试验箱,计算机。四、实验设计(1)系统的原理框图(2)VHDL源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDCFQISPORT(D,CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDENTITYDCFQ;ARCHITECTUREARTOFDCFQISBEGINPROCESS(CLK)ISBEGINIF(CLK'EVENTANDCLK='1')THENQ=D;ENDIF;ENDPROCESS;ENDARCHITECTUREART;(3)管脚锁定实验设备:CW48系统;试验芯片:EP1C6/12Q240;试验模式:NO.1;五、实验结果及总结(1)系统仿真情况(2)硬件验证情况CLK010101010D100010011Q000001010(3)实验过程中出现的问题及解决办法在仿真的过程中,把时钟频率调低时,发现有延迟。实验二8位加法器的设计一、实验目的1、掌握QUARTUSII设计工具进行电子设计的基本流程。2、了解可编程器件设计的全过程。二、实验内容设计一个简单的8位加法器三、实验条件QUARTUSII软件,GW48试验箱,计算机。四、实验设计一、基本原理:调用库(USEIEEE.STD_LOGIC_ARITH.ALL)直接进行算术运算,以实现加法器功能,从而不用去编写全加器,即程序尽量简单化。并用函数CONV_INTEGER(D)把输入的8位二进制数转换成整形数,再相加以十进制数在数码管上显示出来。加法信号由(ST)控制,ST接一个正脉冲信号,当来一个下降沿时,就读进第一个8位二进制数,再来一个下降沿时就执行加法功能,前后两个8位二进制数相加。进程process(p)就是把三位十进制数的百位、十位、各位分别取出来,再转换成4位逻辑位矢量。一个简单加法器,能够实现加法运算并显示结果,在按键控制下,由开关变量以二进制(不超过8位)的形式送入加数和被加数,但必须以十进制的形式显示,按下加法按键后,以十进制方式显示结果。根据要求首先加法器中必须有二进制(8位)转换成十进制电路,其次加法器中需要用开关变量来控制加数和被加数的输入,再次输入的二进制加数和被加数必须经过转换成十进制后显示,最后加法完成结果以十进制显示。其二进制(8位)全为1时转换成十进制表示为255,先设三位分别表示十进制数的百位、十位和个位。将二进制数分别减去100的二进制数,循环直至二进制数小于100,百位循环一次加一,根据同样的道理得出十位和个位。加数和被加数的输入和显示,利用高低电平控制显示器,当电平为高电平时显示加数和被加数的和,利用选择器来分别选择输出显示,当低电平时分别显示输入的二进制加数和被加数。加法器是数字系统中的基本逻辑器件,减法器和硬件乘法器都可由加法器来构成。多位加法器的构成有两种方式:并行进位和串行进位。并行进位加法器设有进位产生逻辑,运算速度较快;串行进位方式是将全加器级联构成多位加法器。并行进位加法器通常比串行级联加法器占用更多的资源。随着位数的增加,相同位数的并行加法器与串行加法器的资源占用差距也越来越大。因此,在工程中使用加法器时,要在速度和容量之间寻找平衡点。程序总体设计框图如图2.1所示:图2.1程序总体设计框图二、单元电路设计一个简单8位加法器,能够实现加法运算并显示结果,在按键控制下,由开关变量以二进制(不超过8位)的形式送入加数和被加数,但必须以十进制的形式显示,按下加法按键(ST)后,以十进制方式显示结果。调用库(USEIEEE.STD_LOGIC_ARITH.ALL)直接进行算术运算,以实现加法器功能,从而不用去编写全加器,即程序尽量简单化。并用函数CONV_INTEGER(D)把输入的8位二进制数转换成整形数,再相加以十进制数在动态扫描显示电路输入8位二进制加法器数字显示电路数码管上显示出来。加法信号由(ST)控制,ST接一个正脉冲信号,当来一个下降沿时,就读进第一个8位二进制数,再来一个下降沿时就执行加法功能,前后两个8位二进制数相加。进程process(p)就是把三位十进制数的百位、十位、各位分别取出来,再转换成4位逻辑位矢量。8位二进制加法器电路如图3.1所示:STD[7..0]BAI[3..0]SHI[3..0]GE[3..0]adder_8inst图3.1八位二进制加法器电路图8位二进制加法器程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYadder_8ISPORT(ST:INSTD_LOGIC;D:INSTD_LOGIC_VECTOR(7DOWNTO0);BAI:OUTSTD_LOGIC_VECTOR(3DOWNTO0);SHI:OUTSTD_LOGIC_VECTOR(3DOWNTO0);GE:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDadder_8;ARCHITECTUREBHVOFadder_8ISSIGNALA,B,C,P,Q:INTEGERRANGE0TO999;BEGINPROCESS(ST)BEGINQ=CONV_INTEGER(D);IFST'EVENTANDST='1'THENP=Q+P;ELSEP=P;ENDIF;ENDPROCESS;PROCESS(P)BEGINA=P/100;B=(PMOD100)/10;C=PMOD10;BAI=CONV_STD_LOGIC_VECTOR(A,4);SHI=CONV_STD_LOGIC_VECTOR(B,4);GE=CONV_STD_LOGIC_VECTOR(C,4);ENDPROCESS;ENDBHV;程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSCAN_LEDISPORT(CLK:INSTD_LOGIC;d0,d1,d2,d3,d4,d5,d6,d7:inSTD_LOGIC_VECTOR(3DOWNTO0);SG:OUTSTD_LOGIC_VECTOR(6DOWNTO0);BT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));END;ARCHITECTUREoneOFSCAN_LEDISSIGNALCNT8:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALA:STD_LOGIC_VECTOR(3DOWNTO0);BEGINP1:PROCESS(CNT8)BEGINCASECNT8ISWHEN000=BT=00000001;A=d0;WHEN001=BT=00000010;A=d1;WHEN010=BT=00000100;A=d2;WHEN011=BT=00001000;A=d3;WHEN100=BT=00010000;A=d4;WHEN101=BT=00100000;A=d5;WHEN110=BT=01000000;A=d6;WHEN111=BT=10000000;A=d7;WHENOTHERS=NULL;ENDCASE;ENDPROCESSP1;P2:PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENCNT8=CNT8+1;ENDIF;ENDPROCESSP2;P3:PROCESS(A)BEGINCASEAISWHEN0000=SG=0111111;WHEN0001=SG=0000110;WHEN0010=SG=1011011;WHEN0011=SG=1001111;WHEN0100=SG=1100110;WHEN0101=SG=1101101;WHEN0110=SG=1111101;WHEN0111=SG=0000111;WHEN1000=SG=1111111;WHEN1001=SG=1101111;WHEN1010=SG=1110111;WHEN1011=SG=1111100;WHEN1100=SG=0111001;WHEN1101=SG=1011110;WHEN1110=SG=1111001;WHEN1111=SG=1110001;WHENOTHERS=NULL;ENDCASE;ENDPROCESSP3;END;三、波形仿真结果分析8位二进制加法器功能仿真结果如图4.1所示:图4.18位二进制功能仿真结果【D】是输入端,由8个开关控制,【ST】是输入端,接正脉冲信号,【BAI】、【SHI】、【GE】都是输出端,分别是以个3位十进制数的百位、十位和各位。加法信号由(ST)控制,ST接一个正脉冲信号,当来一个下降沿时,就读进第一个8位二进制数,再来一个下降沿时就执行加法功能,前后两个8位二进制数相加。相加结果由3位十进制数通过数码管显示出来。四、安装调试步骤安装与调试过程是设计元件由虚拟变成事实最为重要的一步,安装就代表着元件的测试操作,也是检验仿真是否真正有效的最重要的步骤.所以在整个设计中安装调试便是最后一步也是前面所有步骤中的一个验收。安装调试的成败直接验证实验的正确性。但是在安装调试中我们也需要注意首先得确保仿真测试正确无误,然后引脚锁定并编译,接着将实验板连接好,接好电源就可以下载了。下载完成后就可以调试,根据设计的要求来分别验证试验的结果,比如我们做加法器时,调试过程便是验证加法器的实现,先利用高电平来控制程序的有效,先输入一个八位二进制数,显示段是否显示其对应的十进制数,拨加法控制器,再在输入端输入被加数(八位二进制数),同样看被加数是否在显示段出现其十进制数,按下等号控制器,显示段便显示结果。结果为要求显示的结果即实现加法功能。当安装调试过程正确完成后,即设计的最后一步完成。整个设计也即完成。断掉电源拆线,整理实验台。实验三序列器的设计一、实验目的及要求1.了解序列检测器的工作原理;2.掌握时序电路设计中状态机的应用;3.进一步掌握用VHDL语言实现复杂时序电路的设计过程。二、实验内容1.了解序列检测器的工作原理;2.掌握时序电路设计中状态机的应用;3.进一步掌握用VHDL语言实现复杂时序电路的设计过程。三、实验条件QUARTUSII软件,GW48试验箱,计算机。一、实验原理:1)序列检测器在很多数字系统中都不可缺少,尤其是在通信系统当中。序列检测器的作用就是从一系列的码流中找出用户希望出现的序列,序列可长可短。比如在通信系统中,数据流帧头的检测就属于一个序列检测器。序列检测器的类型有很多种,有逐比特比较的,有逐字节比较的,也有其他的比较方式,实际应用中需要采用何种比较方式,主要是看序列的多少以及系统的延时要求。现在就逐比特比较的原理简单的介绍一下。2)逐比特比较的序列检测器是在输入一个特定波特率的二进制码流中,每进一个二进制码,预期望的序列相比较。首先比较第一个码,如果第一个码与期望的序列的第一个码相同,那么下一个进来的二进制码再和期望的序列的第二个码相比较,依次比较下去,直到所有的码都和期望的序列相一致,就认为检测到一个期望的序列。如果检测过程中出现一个码与期望的序列当中对应的码不一样,则从头开始比较。二实验内容:本实验就是要设计一个序列检测器,要求检测的序列长度为8位,实验中用拨挡开关的SW1~SW8来作为外部二进制码流的输入,在FPGA内部则是逐个比较。同时用按键模块的S1来作为一个启动检测信号,每按下S1一次,检测器检测一次,如果序SW1~SW8输入的序列与VHDL设计时期望的序列的一致,
本文标题:EDA实验报告
链接地址:https://www.777doc.com/doc-4811251 .html