当前位置:文档之家› EDA实验报告(四选一、四位比较器、加法器、计数器、巴克码发生器)

EDA实验报告(四选一、四位比较器、加法器、计数器、巴克码发生器)

EDA实验报告实验14选1数据选择器的设计一、实验目的1.学习EDA软件的基本操作。

2.学习使用原理图进行设计输入。

3.初步掌握器件设计输入、编译、仿真和编程的过程。

4.学习实验开发系统的使用方法。

二、实验仪器与器材1.EDA开发软件一套2.微机一台3.实验开发系统一台4.打印机一台三、实验说明本实验通过使用基本门电路完成4选1数据选择器的设计,初步掌握EDA设计方法中的设计输入、编译、综合、仿真和编程的过程。

实验结果可通过实验开发系统验证,在实验开发系统上选择高、低电平开关作为输入,选择发光二极管显示输出电平值。

本实验使用Quartus II 软件作为设计工具,要求熟悉Quartus II 软件的使用环境和基本操作,如设计输入、编译和适配的过程等。

实验中的设计文件要求用原理图方法输入,实验时,注意原理图编辑器的使用方法。

例如,元件、连线、网络名的放置方法和放大、缩小、存盘、退出等命令的使用。

学会管脚锁定以及编程下载的方法等。

四、实验要求1.完成4选1数据选择器的原理图输入并进行编译;2.对设计的电路进行仿真验证;3.编程下载并在实验开发系统上验证设计结果。

五、实验结果4选1数据选择器的原理图:仿真波形图:管脚分配:实验2 四位比较器一、实验目的1.设计四位二进制码比较器,并在实验开发系统上验证。

2.学习层次化设计方法。

二、实验仪器与器材1.EDA 开发软件 一套 2.微机 一台 3.实验开发系统 一台 4.打印机 一台 5.其它器件与材料 若干 三、实验说明本实验实现两个4位二进制码的比较器,输入为两个4位二进制码0123A A A A 和0123B B B B ,输出为M (A=B ),G (A>B )和L (A<B )(如图所示)。

用高低电平开关作为输入,发光二极管作为输出,具体管脚安排可根据试验系统的实际情况自行定义。

四、实验要求1.用硬件描述语言编写四位二进制码 比较器的源文件; 2.对设计进行仿真验证; 3.编程下载并在实验开发系统上进行 硬件验证。

四位比较器功能框图 五、实验结果四位比较器VHDL 源文件:library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity comp4 is port (A:in std_logic_vector(3 downto 0); B:in std_logic_vector(3 downto 0); M,G ,L:out std_logic); end comp4;architecture behave of comp4 is begin p1: process(A,B) begin3A 2A 1A 0A B B Bif (A>B) then G<='1';M<='0';L<='0';elsif (A<B) then G<='0';M<='0';L<='1';elsif (A=B) then G<='0';M<='1';L<='0';else G<='1';M<='1';L<='1';end if;end process p1;end behave;仿真波形图:管脚分配:试验3 并行加法器设计一、试验目的1.设计一个4位加法器。

2.体会用VHDL 进行逻辑描述的优点。

3,熟悉层次化设计方法。

二、试验仪器与器材1.EDA 开发软件 一套2.微机 一台3.试验开发系统 一台4.打印机 一台5.其他器材和材料 若干 三、试验说明本试验实现一个4位二进制数加法器,其功能框图如图所示。

试验时用高低电平开关作为输入,用数码管作为输出(或用发光二极管),管脚锁定可根据试验系统自行安排。

四、实验要求1.用硬件描述语言编写4位二进制数全加器的源文件; 2.对设计文件进行编译; 3.仿真设计文件;4.编程下载并进行试验验证。

五、试验结果4位二进制全加器的源文件: library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity add4 is port (a:in std_logic_vector(3 downto 0);co全加器功能框图b:in std_logic_vector(3 downto 0);ci:in std_logic;s:out std_logic_vector(3 downto 0);co:out std_logic);end add4;architecture behave of add4 issignal aa,bb,sum: std_logic_vector(4 downto 0); beginaa<='0'& a;bb<='0'& b;sum<=aa+bb+ci;s<=sum(3 downto 0);co<=sum(4);end behave;仿真波形图:管脚分配:实验4 计数器设计一、实验目的计数器是实际中最为常用的时序电路模块之一,本实验的主要目的是掌握使用HDL描述计数器类型模块的基本方法。

二、实验仪器与器材1.EDA开发软件一套2.微机一台3.实验开发系统一台4.打印机一台5.其他器材与材料若干三、实验说明计数器是数字电路系统中最重要的功能模块之一,设计时可以采用原理图或HDL语言完成。

下载验证时的计数时钟可选连续或单脉冲,并用数码管显示计数值。

四、实验要求1.设计一个带有计数允许输入端、复位输入端和进位输入端的十进制计数器。

2.编制仿真测试文件,并进行功能仿真。

3.下载并验证计数器功能。

4.为上述设计建立元件符号。

5.在上述基础上分别设计按8421BCD码和二进制计数的100进制同步计数器。

五、实验结果十进制计数器程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter10 isport(reset,clk,en: in bit;co : out bit;q : out std_logic_vector(0 to 3));end entity counter10;architecture ar_counter10 of counter10 issignal cq: std_logic_vector(0 to 3);beginp1: process (clk,en,reset)variablet: integer range 0 to 10 :=0 ;beginif (reset='0') thenif (clk'event and clk='1') thenif ( en='1' ) thent:=cnt+1;cq <=cq+1;if (cnt=10) thenco<='1';cnt:=0;cq<="0000";elseco<='0';end if;end if;end if;elsecnt:=0;co<='0';cq<="0000";end if;q<=cq;end process p1;end architecture ar_counter10;仿真波形图:管脚分配:4_7译码器程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity BCD isport (a:in std_logic_vector(3 downto 0);b:out std_logic_vector(6 downto 0)); end BCD;architecture rt of BCD issignal indata:std_logic_vector(3 downto 0); beginindata<=a;process(indata)begincase indata iswhen "0000"=> b <="1000000";when "0001"=> b <="1111001";when "0010"=> b <="0100100";when "0011"=> b <="0110000";when "0100"=> b <="0011001";when "0101"=> b <="0010010";when "0110"=> b <="0000010";when "0111"=> b <="1111000";when "1000"=> b <="0000000";when "1001"=> b <="0010000";when others=> b <="1111111";end case;end process;end rt;BCD引脚分配BCD仿真波形分频器程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpinqi isport(clk : in bit;oclk : out bit);end entity fenpinqi;architecture ar_fpq of fenpinqi issignal inclk: bit;signal number: integer range 0 to 30000000 :=0; beginp0: process (clk)beginif (clk'event and clk='1') thenif (number=24999999) thennumber<=0;inclk<=not inclk;elsenumber<=number+1;inclk<=inclk;end if;end if;oclk<=inclk;end process p0;end architecture ar_fpq;10进制计数器原理图100进制计数器原理图:仿真波形图:管脚分配:100进制计数器的另一种做法:100进制计数器程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter100 isport(reset,clk,en: in bit;co : buffer bit;coo : out bit;qb : out std_logic_vector(0 to 3);qa : out std_logic_vector(0 to 3));end entity counter100;architecture ar_counter of counter100 is signal bq: std_logic_vector(0 to 3);signal cq: std_logic_vector(0 to 3);beginp1: process (clk,en,reset)variablet: integer range 0 to 10 :=0 ;beginif (reset='0') thenif (clk'event and clk='1') thenif ( en='1' ) thent:=cnt+1;cq <=cq+1;if (cnt=10) thenco<='1';cnt:=0;cq<="0000";elseco<='0';end if;end if;end if;elsecnt:=0;co<='0';cq<="0000";end if;qa<=cq;end process p1;p3:process(co)variablet1: integer range 0 to 10 :=0 ;beginif (reset='0') thenif (co='1') thent1:=cnt1+1;bq <=bq+1;if (cnt1=10) thencoo<='1';cnt1:=0;bq<="0000";elsecoo<='0';end if;end if;elsecnt1:=0;coo<='0';bq<="0000";end if;qb<=bq;end process p3;end architecture ar_counter;100进制计数器原理图实验5 巴克码发生器一、实验目的1.实现一个在通信领域中经常使用的巴克码发生器。

相关主题