您好,欢迎访问三七文档
EDA实验报告实验一:组合电路的设计实验内容是对2选1多路选择器VHDL设计,它的程序如下:ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISSIGNALd,e:BIT;BEGINd=aAND(NOTS);e=bANDs;y=dORe;ENDARCHITECTUREone;Mux21a仿真波形图以上便是2选1多路选择器的VHDL完整描述,即可以看成一个元件mux21a。mux21a实体是描述对应的逻辑图或者器件图,图中a和b分别是两个数据输入端的端口名,s为通道选择控制信号输入端的端口名,y为输出端的端口名。Mux21a结构体可以看成是元件的内部电路图。最后是对仿真得出的mux21a仿真波形图。Mux21a实体Mux21a结构体实验二:时序电路的设计实验内容D触发器的VHDL语言描述,它的程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF1ISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF1ISBEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ=D;ENDIF;ENDPROCESS;ENDbhv;D触发器的仿真波形图最简单并最具代表性的时序电路是D触发器,它是现代可编程ASIC设计中最基本的时序元件和底层元件。D触发器的描述包含了VHDL对时序电路的最基本和典型的表达方式,同时也包含了VHDL中许多最具特色的语言现象。D触发器元件如上图所示,其在max+plus2的仿真得出上面的波形D触发器实验三:设计含异步清零和同步时钟使能的加法计数器实验内容一个带有异步复位和同步时钟使能的十进制加法计数器,它的程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLK,RST,EN:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:OUTSTD_LOGIC);ENDCNT10;ARCHITECTUREbehavOFCNT10ISBEGINPROCESS(CLK,RST,EN)VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFRST='1'THENCQI:=(OTHERS='0');--计数器异步复位ELSIFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿IFEN='1'THEN--检测是否允许计算(同步使能)IFCQI9THENCQI:=CQI+1;--允许计数,检测是否小于9ELSECQI:=(OTHERS='0');--大于9,计数值清零ENDIF;ENDIF;ENDIF;IFCQI=9THENCOUT='1';--计数大于9,输出进位信号ELSECOUT='0';ENDIF;CQ=CQI;--将计数值向端口输出ENDPROCESS;ENDbehav;加法计数器的工作时序程序说明RST是异步清信号,高电平有效;CLK是锁存信号;D[3..0]是4位数据输入端。当EN为'1'时,多路选择器将加1器的输出值加载于锁存器的数据端;当EN为'0'时将0000加载于锁存器.实验四:用原图输入法设计8位全加器实验内容:完成半加器和全加器的设计。实验目的:熟悉利用max+plus2的原理图输入方法设计简单组合电路,掌握层次化设计的方法。半加器的原理图如下半加器的时序仿真波形如下:将半加器的原理图选择File中的CreateDefaultSymbol项,此时即将当前文件变成了一个包装好的单一元件,并被放置在工程路径指定的目录中以备后用。H_adder一位全加器的VHDL描述,它的电路图如下1位全加器的时序仿真波形如下一位全加器可以由两个半加器和一个或门连接而成。8位全加器设计原理图八位全加器的波形仿真如上图实验五:用原理图输入法设计较复杂数字系统实验目的:熟悉原理图输入法中74系列等宏功能元件的使用方法,掌握更复杂的原理图层次化设技术和数字系统设计方法。实验内容:完成2位十进制频率计的设计,并进行仿真测试,给出仿真波形。实验原理图:时序仿真波形图:实验分析:F_IN是待测频率信号,CNT_EN是对待测频率脉冲计数允许信号CNT_EN高电平时允许计数,低电平时禁止计数。仿真波形显示,当CNT_EN为高电平时允许conter8对F_IN计数,低电平时conter8停止计数,由锁存信号LOCK发出的脉冲,将conter8中的二个4位十进制数锁存进74374中,并由74374分高低位通过总线H[6..0]和L[6..0]输给74248译码输出显示,即测得的频率值。此后由清零信号CLR对计数器conter8清零,以备下一周期计数之用。实验六:七段数码显示译码器设计实验目的:学习7段数码显示译码器设计,学习VHDL的CASE语句应用及多层次设计方法。实验内容:7段数码的程序和其波形方真,它的程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDecL7SISPORT(A:INSTD_LOGIC_VECTOR(3DOWNTO0);LED7S:OUTSTD_LOGIC_VECTOR(6DOWNTO0));END;ARCHITECTUREoneOFDecL7SISBEGINPROCESS(A)BEGINCASEA(3DOWNTO0)ISWHEN0000=LED7S=0111111;--X3F'0WHEN0001=LED7S=0000110;--X06'1WHEN0010=LED7S=1011011;--X5B'2WHEN0011=LED7S=1001111;--X4F'3WHEN0100=LED7S=1100110;--X66'4WHEN0101=LED7S=1101101;--X6D'5WHEN0110=LED7S=1111101;--X7D'6WHEN0111=LED7S=0000111;--X07'7WHEN1000=LED7S=1111111;--X7F'8WHEN1001=LED7S=1101111;--X6F'9WHEN1010=LED7S=1110111;--X77'10WHEN1011=LED7S=1111100;--X7C'11WHEN1100=LED7S=0111001;--X39'12WHEN1101=LED7S=1011110;--X5E'13WHEN1110=LED7S=1111001;--X79'14WHEN1111=LED7S=1110001;--X71'15WHENOTHERS=NULL;ENDCASE;ENDPROCESS;END;7段译码器仿真波形实验七:数控分频器的设计实验目的:学习数控分频器的设计、分析和测试方法实验原理:数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可。当输入输入不同的CLK时钟频率和预置值D时得不同FOUT电平它的程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDVFISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC_VECTOR(7DOWNTO0);FOUT:OUTSTD_LOGIC);END;ARCHITECTUREoneOFDVFISSIGNALFULL:STD_LOGIC;BEGINP_REG:PROCESS(CLK)VARIABLECNT8:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFCLK'EVENTANDCLK='1'THENIFCNT8=11111111THENCNT8:=D;--当CNT8计数计满时,D被同步预置给计数器CNT8FULL='1';--同时使溢出标志信号FULL输出为高电平ELSECNT8:=CNT8+1;--否则继续作加1计数FULL='0';--且输出溢出标志信号FULL为低电平ENDIF;ENDIF;ENDPROCESSP_REG;P_DIV:PROCESS(FULL)VARIABLECNT2:STD_LOGIC;BEGINIFFULL'EVENTANDFULL='1'THENCNT2:=NOTCNT2;--如果溢出标志信号FULL为高电平,D触发器输出取反IFCNT2='1'THENFOUT='1';ELSEFOUT='0';ENDIF;ENDIF;ENDPROCESSP_DIV;END;上例的时序波形如下:当给出不同输入值D时,FOUT输出不同频率(CLK周期=50ns)数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,本设计中的数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可。实验八:正弦信号发生器设计实验目的:进一步熟悉Max+plusII及其LPM_ROM与FPGA硬件资源的使用方法。实验内容:设计一个正弦波发生器,并进行仿真测试,给出仿真波形。实验原理图:时序波形仿真图:信号发生器结构包含两个部分:ROM的地址信号发生器,由6位计数器担任;一个正弦数据ROM,由LPM_ROM模块构成。实验九:8位十六进制频率计设计实验目的:学习较复杂的数字系统设计方法。实验内容:设计一个8位十六进制频率计,并进行仿真测试,给出仿真波形。LIBRARYIEEE;--测频控制USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYftctrlISPORT(CLKK:INSTD_LOGIC;--1HzCNT_EN,RST_CNT,LOAD:OUTSTD_LOGIC);ENDftctrl;ARCHITECTUREbehavOFftctrlISSIGNALDIV2CLK:STD_LOGIC;BEGINPROCESS(CLKK)BEGINIFCLKK'EVENTANDCLKK='1'THENDIV2CLK=NOTDIV2CLK;ENDIF;ENDPROCESS;PROCESS(CLKK,DIV2CLK)BEGINIFCLKK='0'ANDDiv2CLK='0'THENRST_CNT='1';ELSERST_CNT='0';ENDIF;ENDPROCESS;LOAD=NOTDIV2CLK;CNT_EN=DIV2CLK;ENDbehav;LIBRARYIEEE;--32位锁存器USEIEEE.STD_LOGIC_1164.ALL;ENTITYREG32BISPORT(LK:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(31DOWNTO0);DOUT:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDREG32B;ARCHITECTUREbehavOFREG32BISBEGINPROCESS(LK,DIN)BEGINIFLK'EVENTANDLK='1'THENDOUT=DIN;--时钟到来时,锁存输入数据ENDIF;ENDPROCESS;ENDbehav;LIBRARYIEEE;--32位计数器USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYcounter32bISPORT(ENABL,
本文标题:EDA实验报告
链接地址:https://www.777doc.com/doc-3516067 .html