半加器全加器的工作原理和设计方法实验报告

时间:2024.4.20

           

一、实验目的

 1、学习和掌握半加器全加器的工作原理和设计方法。

 2、熟悉EDA工具Quartus II的使用,能够熟练运用Vrilog HDL语言在

    Quartus II下进行工程开发、调试和仿真。

 3、掌握组合逻辑电路在Quartus Ⅱ中的图形输入方法及文本输入方法,

    掌握层次化设计方法。

 4、掌握半加器、全加器采用不同的描述方法。

二、实验内容

 1、完成半加器全加器的设计,包括原理图输入,编译、综合、适配、仿真等。并将半加器电路设

置成一个硬件符号入库

2、建立更高层次的原理图设计,利用1位半加器构成1位全加器,并完成编译、综合、适配、仿真并硬件测试

3、采用图形输入法设计1位加法器分别采用图形输入和文本输入方法,设计全加器

4、实验报告:详细叙述1位全加法器的设计流程,给出各层次的原理图及其对应的仿真波形图,给出加法器的上时序分析情况,最后给出硬件测试流程和结果。

三、实验步骤

1、建立一个Project。

2、编辑一个VHDL程序,要求用VHDL结构描述的方法设计一个半加器

3、对该VHDL程序进行编译,修改错误。  

4、建立一个波形文件。(根据真值表)

5、对该VHDL程序进行功能仿真和时序仿真

四、实验现象

任务1:半加器真值表描述方法

代码如下:

半加器是只考虑两个加数本身,而不考虑来自低位进位的逻辑电路

S=B+A  CO=AB

代码如下:

LIBRARY IEEE;    --行为描述半加器

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY h_adder IS

PORT(a,b:IN STD_LOGIC;

so,co:OUT STD_LOGIC);

 END h_adder;

Architecture FH1 OF h_adder IS

Signal abc:STD_LOGIC_vector(1 downto 0);

 Begin

    abc<=a&b;  --并

Process(abc)   --进程

begin

 case abc is

     WHEN "00"=>SO<='0';CO<='0';

     WHEN "01"=>SO<='1';CO<='0';

     WHEN "10"=>SO<='1';CO<='0';

     WHEN "11"=>SO<='0';CO<='1';

     WHEN OTHERS =>NULL;

END CASE;

END PROCESS;

END ARCHITECTURE FH1;

结果如下:

任务2:二进制加法运算规则描述

代码如下:

LIBRARY IEEE;--行为描述(抽象描述结构体的功能)

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY h_adder2 is    --半加器

PORT(A,B:IN STD_LOGIC;

     S,C0:OUT STD_LOGIC);

END h_adder2;

ARCHITECTURE be_half_adder OF h_adder2 IS

BEGIN

PROCESS(A,B)

BEGIN

IF(A='0' AND B='0') THEN S<='0';C0<='0';

ELSIF(A='0' AND B='1') THEN

     S<='1';C0<='0';

ELSIF(A='1' AND B='0') THEN S<='1';C0<='0';

ELSE

S<='0';C0<='1';

END IF;

END PROCESS;

END be_half_adder;

结果如下:

任务3按逻辑表达式设计

代码如下:

LIBRARY IEEE;   --行为描述半加器(按逻辑表达式)

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY h_adder3 IS

PORT(a,b:IN STD_LOGIC;

so,co:OUT STD_LOGIC);

 END h_adder3;

Architecture FH1 OF h_adder3 IS

Begin

     so<=a  XOR  b ;

     co<=a  AND  b;

END ARCHITECTURE FH1;

结果如下:

任务4:用基本单元电路与或非描述半加器

代码如下:

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity h_adder4 is

port(a:in STD_LOGIC;

             b:in STD_LOGIC;

            sum:out STD_LOGIC;

            co:out STD_LOGIC );

end h_adder4;

architecture ch4 of h_adder4 is

signal c,d:std_logic;

begin

c<=a or b;

d<=a nand b;

co<=not d;

sum<=c and d;

end architecture ch4;

结果如下:

任务5 :结构描述

代码如下:

--h_adder5

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY h_adder5 IS

    PORT(A,B:IN STD_LOGIC;

          co,s: OUT STD_LOGIC);

END ENTITY h_adder5;

ARCHITECTURE mix OF h_adder5 IS

 COMPONENT xor21 IS

  PORT(i0,i1:IN STD_LOGIC;

       q:OUT STD_LOGIC);

 END COMPONENT;

 BEGIN

     co<=A AND B;

 u1: xor21 PORT MAP(i0=>A,i1=>B,q=>s);  --例化

 END ARCHITECTURE mix;

--xor21

--half_adder半加器,结构描述

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY xor21 IS

    PORT(i0,i1:IN STD_LOGIC;

          q: OUT STD_LOGIC);

END ENTITY xor21;

ARCHITECTURE behav OF xor21 IS

 BEGIN

     q<=i0 XOR i1;

 END ARCHITECTURE behav;

结果如下:

五、实验体会

通过这次实验,复习了VHDL语言的应用,通过五种不同的方式,进行半加器的设计,加深了对半加器的理解,及对五种方法的运用,真值表描述方法、二进制加法运算规则描述、按逻辑表达式设计、用基本单元电路与或非描述半加器、结构描述。尤其在结构描述,元件例化部分,有了更好的理解和掌握。


第二篇:8位二进制全加器设计实验报告


EDA技术

8位二进制全加器设计实验报告

班  级:

学  号:

姓  名:

时  间:20##-12-06

目录  

方法一:自己写程序........................................................................................................ 2

一、设计原理............................................................................................................ 2

二、实验程序............................................................................................................ 3

程序1:半加器描述........................................................................................... 3

程序2:一位二进制全加器设计顶层描述............................................................ 3

程序3:D触发器描述........................................................................................ 4

程序4:8位二进制加法器顶层描述.................................................................... 4

三、编译及仿真结果................................................................................................. 9

方法二:使用LPM创立元件........................................................................................... 10

一、打开MegaWizard Plug-In Manager...................................................................... 10

二、按照提示,一步步完成全加器/全减器的创建..................................................... 10

三、创建成功,生成CMP文件................................................................................ 10

四、调用CMP文件,例化元件,生成可以使用的元件。......................................... 10

实验总结:..................................................................................................................... 12

            摘要

我在本实验中用顶层设计思想,用半加器、全加器、D触发器例化出八位全加器,完成了八路加法器、寄存器/锁存器的设计,上升沿触发,使用了6个数码管,分别用于显示输入A,输入B和输出,输出结果也用红灯进行了显示,溢出用绿灯表示。输入A用0~7号开关完成,输入B用10~17号开关完成,进位C用8号开关完成。

实验要求

完成八路全加器的设计,十六进制输出,上升沿触发,低电平复位,输入输出用数码管显示,用红灯显示输出,绿灯显示溢出。

方法一:自己写程序

一、设计原理

 先写一个半加器,然后用两个半加器例化出一个全加器,再用八个全加器例化出一个八位全加器。原理如图。

关于上升沿触发,使用D触发器和八位全加器进行例化,D触发器接同一个时钟。最终完成上升沿触发的八位全加器的设计。

二、实验程序

程序1:半加器描述

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY h_adder IS

PORT (A, B : IN STD_LOGIC;

        CO, SO : OUT STD_LOGIC );

        END ENTITY h_adder;

ARCHITECTURE FH1 OF h_adder IS

BEGIN

    SO <= NOT (A XOR (NOT B));

    CO <= A AND B;

END ARCHITECTURE FH1;

程序2:一位二进制全加器设计顶层描述

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY f_adder IS

    PORT (AIN, BIN, CIN : IN STD_LOGIC;

            COUT, SUM : OUT STD_LOGIC );

END ENTITY f_adder;

ARCHITECTURE FD1 OF f_adder IS

    COMPONENT h_adder IS

        PORT (A, B : IN STD_LOGIC;

            CO, SO : OUT STD_LOGIC );

    END COMPONENT;

    SIGNAL D, E, F : STD_LOGIC;

BEGIN

    U1 : h_adder PORT MAP(A => AIN, B => BIN, CO => D, SO => E);

    U2 : h_adder PORT MAP(A => E, B => CIN, CO => F, SO => SUM);

    COUT <= D OR F;

END ARCHITECTURE FD1;

程序3:D触发器描述

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY DEF1 IS

PORT (CLK : IN STD_LOGIC;

    D : IN STD_LOGIC;

    Q : OUT STD_LOGIC);

END;

ARCHITECTURE bhv OF DEF1 IS

SIGNAL Q1 :STD_LOGIC;

BEGIN

PROCESS (CLK)

BEGIN

IF CLK'EVENT AND CLK = '1'

    THEN Q1<=D;

END IF;

    Q<=Q1;

END PROCESS;

END bhv;

程序4:8位二进制加法器顶层描述

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY f_adder8 IS

PORT ( AIN, BIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

       ASEGIN1,ASEGIN2, BSEGIN1,BSEGIN2 : BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);

                CIN : IN STD_LOGIC;

                CLK : IN STD_LOGIC;

                SUM : BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);

                SEG1 : BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);

                SEG2 : BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);

               

                COUT : OUT STD_LOGIC );

END f_adder8;

ARCHITECTURE ONE OF f_adder8 IS

    COMPONENT f_adder IS

        PORT (AIN, BIN, CIN : IN STD_LOGIC;

                COUT, SUM : OUT STD_LOGIC );

    END COMPONENT;

    COMPONENT DEF1 IS

        PORT (CLK : IN STD_LOGIC;

            D : IN STD_LOGIC;

            Q : OUT STD_LOGIC);

    END COMPONENT;   

    SIGNAL C,C1, C2, C3,C4,C5,C6,C7: STD_LOGIC;

    SIGNAL a : STD_LOGIC_VECTOR(7 DOWNTO 0);

    SIGNAL b : STD_LOGIC_VECTOR(7 DOWNTO 0);

    SIGNAL s : STD_LOGIC_VECTOR(7 DOWNTO 0);

    SIGNAL ss : STD_LOGIC_VECTOR(3 DOWNTO 0);

    SIGNAL sss : STD_LOGIC_VECTOR(3 DOWNTO 0);

   

BEGIN

      U1 : f_adder PORT MAP(AIN => a(0), BIN => b(0), CIN => CIN, SUM => s(0),COUT => C1);

      U2 : f_adder PORT MAP(AIN => a(1), BIN => b(1), CIN => C1, SUM => s(1),COUT => C2);

      U3 : f_adder PORT MAP(AIN => a(2), BIN => b(2), CIN => C2, SUM => s(2),COUT => C3);

      U4 : f_adder PORT MAP(AIN => a(3), BIN => b(3), CIN => C3, SUM => s(3),COUT => C4);

      U5 : f_adder PORT MAP(AIN => a(4), BIN => b(4), CIN => C4, SUM => s(4),COUT => C5);

      U6 : f_adder PORT MAP(AIN => a(5), BIN => b(5), CIN => C5, SUM => s(5),COUT => C6);

      U7 : f_adder PORT MAP(AIN => a(6), BIN => b(6), CIN => C6, SUM => s(6),COUT => C7);

      U8 : f_adder PORT MAP(AIN => a(7), BIN => b(7), CIN => C7, SUM => s(7),COUT => C);

      U9 : DEF1    PORT MAP(Q=>a(0),D=>AIN(0),CLK=>CLK);

      U10 : DEF1   PORT MAP(Q=>a(1),D=>AIN(1),CLK=>CLK);

      U11 : DEF1   PORT MAP(Q=>a(2),D=>AIN(2),CLK=>CLK);

      U12 : DEF1   PORT MAP(Q=>a(3),D=>AIN(3),CLK=>CLK);

      U13 : DEF1   PORT MAP(Q=>a(4),D=>AIN(4),CLK=>CLK);

      U14 : DEF1   PORT MAP(Q=>a(5),D=>AIN(5),CLK=>CLK);

      U15 : DEF1   PORT MAP(Q=>a(6),D=>AIN(6),CLK=>CLK);

      U16 : DEF1   PORT MAP(Q=>a(7),D=>AIN(7),CLK=>CLK);

     

      U17 : DEF1   PORT MAP(Q=>b(0),D=>BIN(0),CLK=>CLK);

      U18 : DEF1   PORT MAP(Q=>b(1),D=>BIN(1),CLK=>CLK);

      U19 : DEF1   PORT MAP(Q=>b(2),D=>BIN(2),CLK=>CLK);

      U20 : DEF1   PORT MAP(Q=>b(3),D=>BIN(3),CLK=>CLK);

      U21 : DEF1   PORT MAP(Q=>b(4),D=>BIN(4),CLK=>CLK);

      U22 : DEF1   PORT MAP(Q=>b(5),D=>BIN(5),CLK=>CLK);

      U23 : DEF1   PORT MAP(Q=>b(6),D=>BIN(6),CLK=>CLK);

      U24 : DEF1   PORT MAP(Q=>b(7),D=>BIN(7),CLK=>CLK);

     

      U25 : DEF1   PORT MAP(Q=>SUM(0),D=>s(0),CLK=>CLK);

      U26 : DEF1   PORT MAP(Q=>SUM(1),D=>s(1),CLK=>CLK);

      U27 : DEF1   PORT MAP(Q=>SUM(2),D=>s(2),CLK=>CLK);

      U28 : DEF1   PORT MAP(Q=>SUM(3),D=>s(3),CLK=>CLK);

      U29 : DEF1   PORT MAP(Q=>SUM(4),D=>s(4),CLK=>CLK);

      U30 : DEF1   PORT MAP(Q=>SUM(5),D=>s(5),CLK=>CLK);

      U31 : DEF1   PORT MAP(Q=>SUM(6),D=>s(6),CLK=>CLK);

      U32 : DEF1   PORT MAP(Q=>SUM(7),D=>s(7),CLK=>CLK);

     

      U33 : DEF1   PORT MAP(Q=>COUT,D=>C,CLK=>CLK);

       

      PROCESS(CLK,AIN,BIN)

        VARIABLE sSeg1 : STD_LOGIC_VECTOR(7 DOWNTO 0);

        VARIABLE sSeg2 : STD_LOGIC_VECTOR(7 DOWNTO 0);

        BEGIN

        ss(3 DOWNTO 0)<=SUM(3 DOWNTO 0);

        sss(3 DOWNTO 0)<=SUM(7 DOWNTO 4);

        sSeg1(7 DOWNTO 0):= AIN(7 DOWNTO 0);

        sSeg2(7 DOWNTO 0):= BIN(7 DOWNTO 0);

      CASE ss IS

        WHEN "0000" => SEG1 <= "1000000";--0

        WHEN "0001" => SEG1 <= "1111001";

        WHEN "0010" => SEG1 <="0100100";

        WHEN "0011" => SEG1 <="0110000";

        WHEN "0100" => SEG1 <="0011001";

        WHEN "0101" => SEG1 <="0010010";

        WHEN "0110" => SEG1 <="0000010";

        WHEN "0111" => SEG1 <="1111000";

        WHEN "1000" => SEG1 <="0000000";

        WHEN "1001" => SEG1 <="0011000"; --9

        WHEN "1010" => SEG1 <="0001000";

        WHEN "1011" => SEG1 <="0000011";

        WHEN "1100" => SEG1 <="1001110";

        WHEN "1101" => SEG1 <="0100001";

        WHEN "1110" => SEG1 <="0000110";

        WHEN "1111" => SEG1 <="0001110";

        WHEN OTHERS =>NULL;

     END CASE;

       

      CASE sss IS

        WHEN "0000" => SEG2 <= "1000000";--0

        WHEN "0001" => SEG2 <= "1111001";

        WHEN "0010" => SEG2 <="0100100";

        WHEN "0011" => SEG2 <="0110000";

        WHEN "0100" => SEG2 <="0011001";

        WHEN "0101" => SEG2 <="0010010";

        WHEN "0110" => SEG2 <="0000010";

        WHEN "0111" => SEG2 <="1111000";

        WHEN "1000" => SEG2 <="0000000";

        WHEN "1001" => SEG2 <="0011000"; --9

        WHEN "1010" => SEG2 <="0001000";

        WHEN "1011" => SEG2 <="0000011";

        WHEN "1100" => SEG2 <="1001010";

        WHEN "1101" => SEG2 <="0100001";

        WHEN "1110" => SEG2 <="0000110";

        WHEN "1111" => SEG2 <="0001110";

        WHEN OTHERS =>NULL;

      END CASE;

     

      CASE sSeg1(3 DOWNTO 0) IS

        WHEN "0000" => ASEGIN1 <= "1000000";--0

        WHEN "0001" => ASEGIN1 <= "1111001";

        WHEN "0010" => ASEGIN1 <="0100100";

        WHEN "0011" => ASEGIN1 <="0110000";

        WHEN "0100" => ASEGIN1 <="0011001";

        WHEN "0101" => ASEGIN1 <="0010010";

        WHEN "0110" => ASEGIN1 <="0000010";

        WHEN "0111" => ASEGIN1<="1111000";

        WHEN "1000" => ASEGIN1 <="0000000";

        WHEN "1001" => ASEGIN1 <="0011000"; --9

        WHEN "1010" => ASEGIN1 <="0001000";

        WHEN "1011" => ASEGIN1 <="0000011";

        WHEN "1100" => ASEGIN1 <="1001010";

        WHEN "1101" => ASEGIN1 <="0100001";

        WHEN "1110" => ASEGIN1 <="0000110";

        WHEN "1111" => ASEGIN1 <="0001110";

        WHEN OTHERS =>NULL;

        END CASE;

       

      CASE sSeg1(7 DOWNTO 4) IS

        WHEN "0000" => ASEGIN2 <= "1000000";--0

        WHEN "0001" => ASEGIN2 <= "1111001";

        WHEN "0010" => ASEGIN2 <="0100100";

        WHEN "0011" => ASEGIN2 <="0110000";

        WHEN "0100" => ASEGIN2 <="0011001";

        WHEN "0101" => ASEGIN2 <="0010010";

        WHEN "0110" => ASEGIN2 <="0000010";

        WHEN "0111" => ASEGIN2<="1111000";

        WHEN "1000" => ASEGIN2 <="0000000";

        WHEN "1001" => ASEGIN2 <="0011000"; --9

        WHEN "1010" => ASEGIN2 <="0001000";

        WHEN "1011" => ASEGIN2 <="0000011";

        WHEN "1100" => ASEGIN2 <="1001010";

        WHEN "1101" => ASEGIN2 <="0100001";

        WHEN "1110" => ASEGIN2 <="0000110";

        WHEN "1111" => ASEGIN2 <="0001110";

        WHEN OTHERS =>NULL;

      END CASE;

     

      CASE sSeg2(3 DOWNTO 0) IS

        WHEN "0000" => BSEGIN1 <= "1000000";--0

        WHEN "0001" => BSEGIN1 <= "1111001";

        WHEN "0010" => BSEGIN1 <="0100100";

        WHEN "0011" => BSEGIN1 <="0110000";

        WHEN "0100" => BSEGIN1 <="0011001";

        WHEN "0101" => BSEGIN1 <="0010010";

        WHEN "0110" => BSEGIN1 <="0000010";

        WHEN "0111" => BSEGIN1<="1111000";

        WHEN "1000" => BSEGIN1 <="0000000";

        WHEN "1001" => BSEGIN1 <="0011000"; --9

        WHEN "1010" => BSEGIN1 <="0001000";

        WHEN "1011" => BSEGIN1 <="0000011";

        WHEN "1100" => BSEGIN1 <="1001010";

        WHEN "1101" => BSEGIN1 <="0100001";

        WHEN "1110" => BSEGIN1 <="0000110";

        WHEN "1111" => BSEGIN1 <="0001110";

        WHEN OTHERS =>NULL;

        END CASE;

    CASE sSeg2(7 DOWNTO 4) IS

        WHEN "0000" => BSEGIN2 <= "1000000";--0

        WHEN "0001" => BSEGIN2 <= "1111001";

        WHEN "0010" => BSEGIN2 <="0100100";

        WHEN "0011" => BSEGIN2 <="0110000";

        WHEN "0100" => BSEGIN2 <="0011001";

        WHEN "0101" => BSEGIN2 <="0010010";

        WHEN "0110" => BSEGIN2 <="0000010";

        WHEN "0111" => BSEGIN2<="1111000";

        WHEN "1000" => BSEGIN2 <="0000000";

        WHEN "1001" => BSEGIN2 <="0011000"; --9

        WHEN "1010" => BSEGIN2 <="0001000";

        WHEN "1011" => BSEGIN2 <="0000011";

        WHEN "1100" => BSEGIN2 <="1001110";

        WHEN "1101" => BSEGIN2 <="0100001";

        WHEN "1110" => BSEGIN2 <="0000110";

        WHEN "1111" => BSEGIN2 <="0001110";

        WHEN OTHERS =>NULL;

        END CASE;

      END PROCESS;

     

    --U1 : f_adder PORT MAP(AIN => AIN(0), BIN => BIN(0), CIN => CIN, SUM => SUM(0), COUT => C1);

    --U2 : f_adder PORT MAP(AIN => AI N(1), BIN => BIN(1), CIN => C1, SUM => SUM(1), COUT => C2);

    --U3 : f_adder PORT MAP(AIN => AIN(2), BIN => BIN(2), CIN => C2, SUM => SUM(2), COUT => C3);

    --U4 : f_adder PORT MAP(AIN => AIN(3), BIN => BIN(3), CIN => C3, SUM => SUM(3), COUT => C4);

    --U5 : f_adder PORT MAP(AIN => AIN(4), BIN => BIN(4), CIN => C4, SUM => SUM(4), COUT => C5);

    --U6 : f_adder PORT MAP(AIN => AIN(5), BIN => BIN(5), CIN => C5, SUM => SUM(5), COUT => C6);

    --U7 : f_adder PORT MAP(AIN => AIN(6), BIN => BIN(6), CIN => C6, SUM => SUM(6), COUT => C7);

    --U8 : f_adder PORT MAP(AIN => AIN(7), BIN => BIN(7), CIN => C7, SUM => SUM(7), COUT => COUT);

END ONE;

三、编译及仿真结果

程序波形仿真图

时间分析

方法二:使用LPM创立元件

一、打开MegaWizard Plug-In Manager

二、按照提示,一步步完成全加器/全减器的创建

三、创建成功,生成CMP文件

四、调用CMP文件,例化元件,生成可以使用的元件。

元件例化程序如下:

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY lpm_fadder1 IS

PORT(ADD_SUB,CIN,CLK: IN std_logic;

    AIN,BIN: IN std_logic_vector(7 DOWNTO 0);

    SUM   : OUT std_logic_vector(7 DOWNTO 0);

    OVERFLOW,COUT : OUT std_logic

    );

END ENTITY lpm_fadder1;

ARCHITECTURE add_sub OF lpm_fadder1 IS

    component lpm_fadder8

        PORT

        (

            add_sub        : IN STD_LOGIC ;

            cin     : IN STD_LOGIC ;

            clock      : IN STD_LOGIC ;

            dataa      : IN STD_LOGIC_VECTOR (7 DOWNTO 0);

            datab      : IN STD_LOGIC_VECTOR (7 DOWNTO 0);

            cout       : OUT STD_LOGIC ;

            overflow       : OUT STD_LOGIC ;

            result     : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)

        );

    end component;

    BEGIN

    U1: lpm_fadder8 PORT MAP(add_sub=>ADD_SUB,cin=>CIN,clock=>CLK,dataa=>AIN,datab=>BIN,cout=>COUT,overflow=>OVERFLOW,result=>SUM);

    END ARCHITECTURE add_sub;      

最后生成的加法器如图:

时间分析

实验总结:

本次试验让我熟悉了VHDL语句的综合运用,提高了我的逻辑思维能力。虽然写了三个晚上,但十六进制转十进制输出显示依然未能完成。此次我的程序非常长,分析其原因,是元件的底层例化没有写好,应该把D触发器首先例化到一位全加器上,然后用一位全加器例化八位全加器。这样就可节省近二十行代码。

经过时间分析发现,自己写的代码用时12.5ns,使用元件向导用时18ns,所以自己写的代码运行起来比较省时!

更多相关推荐:
加法器 数电实验报告三

实验三加法器一实验目的1掌握用SSI器件实现全加器的方法2掌握用MSI组合逻辑器件实现全加器的方法3掌握集成加法器的应用二实验设备及器件1数字逻辑电路实验板1块274HCLS00四二输入与非门1片374HCLS...

八位加法器的设计实验报告

八位加法器的设计实验报告学号U20xx15272班级信息安全0901姓名方浏洋日期20xx528位加法器的设计实验报告目录一实验概述2二设计思路321Quartus中74181的功能分析3228位先行加法器的设...

四位加法器实验报告

四位加法器实验报告1实验目的掌握组合逻辑电路的基本分析与设计方法理解半加器和全加器的工作原理并掌握利用全加器构成不同字长加法器的各种方法学习元件例化的方式进行硬件电路设计学会利用软件仿真实现对数字电路的逻辑功能...

加法器的基本原理实验报告

一实验目的1了解加法器的基本原理掌握组合逻辑电路在Quartus中的图形输入方法及文本输入方法2学习和掌握半加器全加器的工作和设计原理3熟悉EDA工具QuartusII和Modelsim的使用能够熟练运用Vri...

加法器设计实验报告全

重庆XXXX实验报告课程名称实验名称实验类型系别年级班别学生姓名实验教师电子电路基础实验加法器设计设计学时3学时物理与电子工程学院专业电子信息工程09级电信2班学期20xx20xx上xxx学号20xx0701x...

数字电路加法器实验报告

中山大学移动信息工程学院本科生实验报告20xx学年秋季学期课程名称数字电路实验任课教师王军助教李正一实验题目Lab9用3种不同的方法实现4位加法器1行为级描述的加法器2行波进位加法器3超前进位加法器二实验目的1...

串行加法器实验报告

深圳大学实验报告课程名称学院信息工程学院班级实验时间实验报告提交时间教务部制实验要求设计一个串行数据检测器要求连续4个或4个以上为1时输出为1其他输入情况为0编写测试模块对模块进行各种层次的仿真并观察波形编写实...

8位加法器实验报告

61实验一8位加法器的设计1实验目的1学习isEXPERTMAXplusisEXPERTMAXplusIIFoudationSeries软件的基本使用方法2学习GW48CKEDA实验开发系统的基本使用方法3了解...

4位加法器实验报告

硬件描述语言实验题目四位全加器学院数学与计算机学院学科门类xxxxxxxxxx专业xxxxxxxxxx学号姓名x指导教师xxxx20xx年x月xx日11实验目的练习VHDL语言设计工程的建立与仿真的步骤和方法熟...

八位加法器设计实验报告

8位加法器的设计姓名黄志刚班级电科1201学号12401720xx11实验目的1学习QuartusIIISESuiteispLEVER软件的基本使用方法2学习GW48CK或其他EDA实验开发系统的基本使用方法3...

多路选择器及硬件加法器实验报告

实验报告课程名称EDA技术实验实验名称班级姓名指导老师评定签名一实验目的用VHDL设计一个2选1多路选择器并设计一个8位硬件加法器二实验仪器计算机一台U盘一个Quartus软件三实验步骤一2选1多路选择器的VH...

四位并行加法器实验报告

安徽大学计科院计算机组成原理课程设计实验设计报告设计题目四位并行加法器设计班级小组成员黄德宏指导老师周勇完成日期08软件二班E20xx4116胡从建E20xx411020xx315一任务概述11设计题目概述四位...

加法器实验报告(30篇)