、EDA技术及应用实验报告姓名:学号:实验14选1数据选择器的设计一、实验目的1.学习EDA软件的基本操作。2.学习使用原理图进行设计输入。3.初步掌握器件的设计输入、编译、仿真和编程的过程。4.学习实验开发系统的使用。二、实验说明本实验通过使用基本门电路完成4选1数据选择器的设计,初步掌握EDA设计方法中的设计输入、编译、综合、仿真和编程的基本过程。实验结果可以通过实验开发系统验证,在实验开发系统上选择高、低电平开关作为输入,选择发光二极管显示输出电平值。三、实验要求1.完成4选1数据选择器的原理图输入并进行编译2.对设计的电路进行仿真3.编程下载并在实验开发系统上验证设计结果。四、实验结果()YSABABABAB原理图引脚分配(部分截图使用自己电脑上的软件)仿真波形实验2四位比较器一、实验目的1.设计四位二进制比较器,并在实验开发系统上验证。2.学习层次化设计方法。二、实验说明本实验实现两个4位二进制比较器,输入为两个二进制码,输出为M(A=B),G(AB)和L(AB)。用高低电平开关作为输入,发光二极管作为输出,具体管脚安排可以根据实验系统的实际情况自行定义。三、实验要求1.用硬件描述语言编写4位二进制码比较器的源文件。2.对设计进行仿真验证。3.编程下载并在实验开发系统上进行硬件验证。四、实验结果程序libraryieee;useieee.std_logic_1164.all;entitycomp4isport(A:instd_logic_vector(3downto0);B:instd_logic_vector(3downto0);M,G,L:outstd_logic);endcomp4;architecturebehaveofcomp4isbeginp1:process(A,B)beginif(A=B)thenM='1';G='0';L='0';elsif(AB)thenM='0';G='1';L='0';elsif(AB)thenM='0';G='0';L='1';endif;endprocessp1;endbehave;仿真波形引脚分配生成元件实验3并行加法器设计一、实验目的1.设计一个4位加法器。2.体会用VHDL进行逻辑描述的优点。3,熟悉层次化设计方法。二、实验说明本试验实现一个4位二进制数加法器,其功能框图如图所示。试验时用高低电平开关作为输入,用数码管作为输出(或用发光二极管),管脚锁定可根据试验系统自行安排。adder4a3a2a1a0b3b2b1b0cis3s2s1s0co全加器功能框图三、实验要求1.用硬件描述语言编写4位二进制数全加器的源文件;2.对设计文件进行编译;3.仿真设计文件;4.编程下载并进行试验验证。四、实验结果程序一:libraryieee;useieee.std_logic_1164.all;entityadderNisgeneric(N:integer:=4);port(a:instd_logic_vector(Ndownto1);b:instd_logic_vector(Ndownto1);cin:instd_logic;sum:outstd_logic_vector(Ndownto1);cout:outstd_logic);endadderN;architecturebehaioralofadderNisbeginp1:process(a,b,cin)variablevsum:std_logic_vector(Ndownto1);variablecarry:std_logic;begincarry:=cin;foriin1toNloopvsum(i):=(a(i)xorb(i))xorcarry;carry:=(a(i)andb(i))or(carryand(a(i)orb(i)));endloop;sum=vsum;cout=carry;endprocessp1;endbehaioral;仿真波形引脚分配生成元件程序二:libraryieee;useieee.std_logic_1164.all;entityadd4isport(a:instd_logic_vector(4downto1);b:instd_logic_vector(4downto1);cin:instd_logic;sum:outstd_logic_vector(4downto1);cout:outstd_logic);endadd4;architecturestructuralofadd4iscomponentadd1port(a:instd_logic;b:instd_logic;cin:instd_logic;sum:outstd_logic;cout:outstd_logic);endcomponent;signalcarry:std_logic_vector(0to4);begincarry(0)=cin;cout=carry(4);gen:foriin1to4generateadd:add1portmap(a=a(i),b=b(i),cin=carry(i-1),sum=sum(i),cout=carry(i));endgenerate;endstructural;----一位加法器libraryieee;useieee.std_logic_1164.all;entityadd1isport(a,b,cin:instd_logic;sum,cout:outstd_logic);endentityadd1;architecturebehaveofadd1isbeginsum=axorbxorcin;cout=(aandb)or(cinand(axorb));endbehave;实验4七人表决器一、实验目的学习表决器电路的设计方法并体会使用HDL进行设计的方法和优点。二、实验说明本实验要求设计一个七人表决电路,从理论上讲,可以采用真值表,布尔方程或原理图实现,但是因为输入信号位七个,要完全列出真值表过于复杂,本实验采用HDL语言实现最为简便。下载时的管脚分配可以根据试验系统自行安排。三、实验要求1.任选一种方法进行设计并写出设计过程。2.编写测试向量文件并进行功能仿真。3.下载并验证。四、实验结果libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitybjq7isport(input:instd_logic_vector(7downto1);y:outstd_logic);endentitybjq7;architecturebehaveofbjq7isbeginprocess(input)variablecnt:integer;begincnt:=0;foriin1to7loopif(input(i)='1')thencnt:=cnt+1;endif;endloop;if(cnt3)theny='1';elsey='0';endif;endprocess;endbehave;实验5计数器设计一、实验目的计数器是实际中最为常用的时序电路模块之一,本实验的目的是掌握使用HDL描述计数器类型模块的基本方法。二、实验说明本次实验需要完成带进位的一百进制计数器。实验要求用三个模块共同完成,即十进制计数器,分频器和译码器。要求用语言对各模块进行描述并各自生成模块,最后搭建电路,完成一百进制计数器的设计,并进行仿真。三、实验要求1、设计计数器2.编制仿真测试文件并进行功能仿真3.下载并验证计数器功能四、实验结果程序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'THENIFEN='1'THENIFCQI1001THENCQI:=CQI+1;ELSECQI:=(OTHERS='0');ENDIF;ENDIF;ENDIF;IFCQI=1001THENCOUT='1';ELSECOUT='0';ENDIF;CQ=CQI;ENDPROCESS;ENDbehav;时序仿真实验6巴克码发生器一、实验目的1.实现一个在通信领域经常使用的巴克码发生器2.掌握用大规模可编程逻辑器件实现时序电路的方法。二、实验说明巴克码发生器能够自动产生周期性的序列码,本实验要求产生的序列码信号为1110010,可以同寄存器和时序电路实现。为了能够通过实验开发系统验证试验结果,可以使用两个输出端,其中一个输出端同时输出巴克码,另一个输出端输出节拍。三、实验要求1.写出全部设计文件。2.下载并用实验板验证。四、实验结果程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityBarkeisport(clk,rst:instd_logic;barke,jiepai:outstd_logic);endBarke;architecturebehaveofBarkeissignalcnt:integerrange0to6;beginprocess(clk,rst,cnt)beginif(rst='1')thencnt=0;elsif(clk'eventandclk='1')thenif(cnt6)thencnt=cnt+1;elsecnt=0;endif;endif;endprocess;withcntselectBarke='1'when0,'1'when1,'1'when2,'0'when3,'0'when4,'1'when5,'0'when6,'Z'whenothers;jiepai=clk;endbehave;仿真波形引脚分配程序二libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitybakemaisport(clk,rst:instd_logic;jiepai:outstd_logic;y:outstd_logic_vector(6downto0));endbakema;architecturebehaveofbakemaisconstants0:std_logic_vector(6downto0):=1010011;constants1:std_logic_vector(6downto0):=1101001;constants2:std_logic_vector(6downto0):=1110100;constants3:std_logic_vector(6downto0):=0111010;constants4:std_logic_vector(6downto0):=0011101;constants5:std_logic_vector(6downto0):=1001110;constants6:std_logic_vector(6downto0):=0100111;signalq:std_logic_vector(6downto0);beginprocess(clk,rst)beginif(rst='1')thenq=s0;elsif(clk'eventandcl