山东大学信息科学与工程学院EDA实验报告姓名:吴蔓学号:201400121184班级:电信工一班2016.5.31实验14选1数据选择器的设计一、实验目的1.学习EDA软件的基本操作。2.学习使用原理图进行设计输入。3.初步掌握器件设计输入、编译、仿真和编程的过程。4.学习实验开发系统的使用方法。二、实验仪器与器材1.EDA开发软件一套2.微机一台3.实验开发系统一台4.打印机一台三、实验说明本实验通过使用基本门电路完成4选1数据选择器的设计,初步掌握EDA设计方法中的设计输入、编译、综合、仿真和编程的过程。实验结果可通过实验开发系统验证,在实验开发系统上选择高、低电平开关作为输入,选择发光二极管显示输出电平值。本实验使用QuartusII软件作为设计工具,要求熟悉QuartusII软件的使用环境和基本操作,如设计输入、编译和适配的过程等。实验中的设计文件要求用原理图方法输入,实验时,注意原理图编辑器的使用方法。例如,元件、连线、网络名的放置方法和放大、缩小、存盘、退出等命令的使用。学会管脚锁定以及编程下载的方法等。四、实验要求1.完成4选1数据选择器的原理图输入并进行编译;2.对设计的电路进行仿真验证;3.编程下载并在实验开发系统上验证设计结果。实验程序:libraryieee;useieee.std_logic_1164.all;entitymux4isport(input:instd_logic_vector(3downto0);sel:instd_logic_vector(1downto0);y:outstd_logic);endmux4;architecturertlofmux4isbeginprocess(sel,input)beginifsel=“00”theny=input(0);elsifsel=“01”theny=input(1);elsifsel=“10”theny=input(2);elsey=input(3);endif;endprocess;endrtl;实验结果4选1数据选择器的截图:仿真波形图:实验2四位比较器一、实验目的1.设计四位二进制码比较器,并在实验开发系统上验证。2.学习层次化设计方法。二、实验仪器与器材1.EDA开发软件一套2.微机一台3.实验开发系统一台4.打印机一台5.其它器件与材料若干三、实验说明本实验实现两个4位二进制码的比较器,输入为两个4位二进制码0123AAAA和0123BBBB,输出为M(A=B),G(AB)和L(AB).用高低电平开关作为输入,发光二极管作为输出,具体管脚安排可根据试验系统的实际情况自行定义。四、实验要求1.用硬件描述语言编写四位二进制码比较器的源文件;2.对设计进行仿真验证;3.编程下载并在实验开发系统上进行硬件验证实验程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityvhdl_cmpisport(A:instd_logic_vector(3downto0);B:instd_logic_vector(3downto0);m,g,l:outstd_logic);endvhdl_cmp;architecturebehaveofvhdl_cmpisbeginp1:process(A,B)beginif(AB)thenG='1';M='0';L='0';elsif(AB)thenG='0';M='0';L='1';elsif(A=B)thenG='0';M='1';L='0';elseG='1';M='1';L='1';endif;endprocessp1;endbehave;实验结果仿真波形图:功能:时序仿真:管脚分配:实验3并行加法器设计一、试验目的1.设计一个4位加法器。2.体会用VHDL进行逻辑描述的优点。3,熟悉层次化设计方法。二、试验仪器与器材1.EDA开发软件一套2.微机一台3.试验开发系统一台4.打印机一台5.其他器材和材料若干三、试验说明本试验实现一个4位二进制数加法器,其功能框图如图所示。试验时用高低电平开关作为输入,用数码管作为输出(或用发光二极管),管脚锁定可根据试验系统自行安排。四、实验要求1.用硬件描述语言编写4位二进制数全加器的源文件;2.对设计文件进行编译;3.仿真设计文件;4.编程下载并进行试验验证。实验程序:libraryieee;useieee.std_logic_1164.all;entityadd4isport(a,b:instd_logic_vector(3downto0);cin:instd_logic;sum:outstd_logic_vector(3downto0);count:outstd_logic);endadd4;architecturebehavioralofadd4isbeginprocess(a,b,cin)variablesum1:std_logic_vector(3downto0);variablecarry:std_logic;begincarry:=cin;foriin0to3loopsum1(i):=(a(i)xorb(i))xorcarry;carry:=(a(i)andb(i))or(carryand(a(i)orb(i)));endloop;sum=sum1;count=carry;endprocess;endbehavioral;实验结果仿真波形图:管脚分配:实验47人表决器一.实验目的学习表决器电路的设计方法并体会使用HDL进行设计的方法和优点。二、实验仪器与器材EDA开发软件一套微机一台实验开发系统一台打印机一台三、实验原理用个开关作为表决器的7个输入变量,输入变量为‘1’时表示“赞同”;输入变量为‘0’时表示不赞同。输出接到一二极管上,灯亮表示通过,灯不亮表示不同。采用行为描述的设计,用一变量count表示选举通过的总人数,即7个开关中按下的总数,如果count3,则表示通过。实验程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitysevenisport(a:instd_logic_vector(6downto0);y:outstd_logic);endseven;architectureoneofsevenisbeginprocess(a)variablei:std_logic_vector(2downto0);begini:=000;forjin0to6loopif(a(j)='1')theni:=i+1;elsei:=i;endif;endloop;译码程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitymy_translateisport(a:instd_logic_vector(3downto0);rst:std_logic;dataout:outstd_logic_vector(6downto0));endmy_translate;architectureoneofmy_translateisbeginprocess(a)begincaseaiswhen0000=dataout=0000001;when0001=dataout=1001111;when0010=dataout=0010010;when0011=dataout=0000110;when0100=dataout=1001100;when0101=dataout=0100100;when0110=dataout=0100000;when0111=dataout=0001111;when1000=dataout=0000000;when1001=dataout=0000100;whenothers=dataout=1111111;endcase;endprocess;endone;ifi3theny='1';elsey='0';endif;endprocess;endone;实验结果管脚分配:时序仿真:功能仿真实验5计数器设计一、实验目的计数器是实际中最为常用的时序电路模块之一,本实验的主要目的是掌握使用HDL描述计数器类型模块的基本方法。二、实验仪器与器材1.EDA开发软件一套2.微机一台3.实验开发系统一台4.打印机一台5.其他器材与材料若干三、实验说明计数器是数字电路系统中最重要的功能模块之一,设计时可以采用原理图或HDL语言完成。下载验证时的计数时钟可选连续或单脉冲,并用数码管显示计数值。四、实验要求1.设计一个带有计数允许输入端、复位输入端和进位输入端的十进制计数器。2.编制仿真测试文件,并进行功能仿真。3.下载并验证计数器功能。4.为上述设计建立元件符号。5.在上述基础上分别设计按8421BCD码和二进制计数的100进制同步计数器。实验程序十进制:方法一:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycnt10isport(res:instd_logic;clkin:instd_logic;ep:instd_logic;cout:outstd_logic;sout:outstd_logic_vector(3downto0));endcnt10;architecturebehaveofcnt10issignalcount:std_logic_vector(3downto0);beginprocess(res,clkin,ep)beginif(res='1')thencount=0000;cout='0';elsif(ep='0'andrising_edge(clkin))thenif(count=1001)thencout='1';count=0000;elsecount=count+1;cout='0';endif;endif;endprocess;sout=count;end;方法二:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycountisport(clk:instd_logic;clr:instd_logic;en:instd_logic;q:outstd_logic_vector(3downto0);cin:outstd_logic);endcount;architecturecountofcountissignalq0:std_logic_vector(3downto0);beginq=q0;process(clk,clr)beginif(clr='1')thenq0=0000;cin='0';elsif(clk'eventandclk='0')thenif(q0=1000)thenq0=q0+1;cin='1';elseq0=q0+1;cin='0';if(q0=1001)thenq0=0000;endif;endif;endif;endprocess;endcount;七段译码管:libraryieee;useieee.std_logic_1164.all;entityshumaguanisport(data_in:instd_logic_vector(3downto0);data_out:outstd_logic_vector(6downto0