EDA课程设计报告8位加法器的设计

阅读: 评论:0

                      8位加法器的设计
 
一  设计原理
  1.课题认识
加法器是为了实现加法的即是产生数的和的装置。加数和被加数为输入,和数与进位为输出的装置为半加器。若加数、被加数与低位的进位数为输入,而和数与进位为输出则为全加器。常用作计算机算术逻辑部件,执行逻辑操作、移位与指令调用。
由任务书可知,本次课题要解决的问题如下:
1.四位加法器的设计。
2.两个四位加法器级联为八位加法器的问题。
3.8位结果和进位显示十进制的问题。
4.动态显示的问题。
2.设计思路
8位加法器采用两个4位二进制并行加法器级联而成。  四位加法器可以采用四个一位全加器级连成串行进位加法器,实现框图如下图所示
课题要求计算的和要用十进制显示,并要求动态显示。可以设计一个9位二进制显示为十进制的子程序,并采用分频,来实现动态显示!
用两个并行四位加法器实现一个八位加法器的框图如下:                             
二  设计过程
    有设计思路可知,要实现8位加法器,需要三个子程序:1. 4位加法器;2.十进制显示环节;3.动态显示环节。
1. 4位二进制并行加法器的设计
    运用四个全加器级连成串行进位加法器。程序如下: 
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ADD4 IS
  Port(A,B:in STD_logic_vector(3 downto 0);      --输入四位二进制。
      ci:in STD_logic;                        --输入进位。金属防水接头
      co: out STD_logic;                      --输出进位。
so:out STD_logic_vector(3 downto 0) );          --输出和。
end;
ARCHITECTURE h1 of  ADD4 is
begin
process(A,B)
variable cq, qq, sq: STD_logic_vector(3 downto 0);         
begin
qq(0):= not(A(0) XOR (NOT (B(0)))); sq(0):= not(qq(0) XOR (NOT(ci)));  --低位相加并 
if  ((A(0) xor B(0))='1') then  cq(0):= ci;                          --产生进位。
            ELSE  cq(0):=A(0);  END if;
qq(1):= not(A(1) xor (NOT(B(1)))); sq(1):= not(qq(1) xor (NOT(cq(0)))); --第二位于前一进      if((A(1) xor B(1))='1') Then  cq(1):= cq(0);          --  位相加,并产生进位。 
ELSE  cq(1):=A(1); END if;
qq(2):= not(A(2) XOR (NOT(B(2))));sq(2):= not(qq(2) XOR (NOT(cq(1))));
      if ((A(2) xor B(2))='1') then  cq(2):= cq(1); 
        ELSE  cq(2):=A(2);    END if;
qq(3):=not(A(3) XOR (NOT B(3))); sq(3):=not(qq(3) XOR (NOT(cq(2)))); --前一位位进位
        if  ((A(3) xor B(3))='1') then  cq(3):= cq(2);        --与高位相加并产生进位。
433m天线          ELSE  cq(3):=A(3);  END if;
Co<=cq(3);  So<=sq;    End process;    End architecture  h1;
太阳能玻璃② 四位并行加法器波形如下:
2. 转换显示设计 
① 加法器得到的和为二进制,设计以下程序使它显示为十进制。程序如下:
library ieee;
use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;
entity look is
port(d:in std_logic_vector(8 downto 0);    --输入要转换的二进制。
clk3:in std_logic;
smg: out std_logic_vector(2 downto 0);    --位选,分别显示个位,十位,百位。
led7s:out std_logic_vector(6 downto 0));     
end;
architecture one of look is
signal ai,bi,ci:integer range 0 to 9;
signal xi:std_logic_vector(2 downto 0);
signal led7s1:std_logic_vector(20 downto 0);
signal di:integer range 0 to 512;
begin
di<=conv_integer(d);                        --把8位二进制加进位转为整型。
process(di)
variable a,b,c:integer range 0 to 9;
begin
a:=di rem 10;                            --把整型数的个位赋值给a.。
b:=((di-a) rem 100)/10;                    --把整型数的十位赋值给b。
c:=(di-a-10*b)/100;                        --把整型数的百位赋值给c。
ai<=a;bi<=b;ci<=c;    end process;乙基氯化物
process(ai)    --把个位赋值给led7s1显示出来。
begin
case ai is
    when 0=>led7s1(6 downto 0)<="1000000";
    when 1=>led7s1(6 downto 0)<="1111001";
    when 2=>led7s1(6 downto 0)<="0100100";
    when 3=>led7s1(6 downto 0)<="0110000";
    when 4=>led7s1(6 downto 0)<="0011001";
    when 5=>led7s1(6 downto 0)<="0010010";
    when 6=>led7s1(6 downto 0)<="0000010";
    when 7=>led7s1(6 downto 0)<="1111000";
    when 8=>led7s1(6 downto 0)<="0000000";
    when 9=>led7s1(6 downto 0)<="0010000";
    when others=>led7s1(6 downto 0)<="XXXXXXX";
end case;    end process;
process(bi)              --  把十位赋值给led7s1显示出来.。       
begin
case bi is
    when 0=>led7s1(13 downto 7)<="1000000";       
    when 1=>led7s1(13 downto 7)<="1111001";
    when 2=>led7s1(13 downto 7)<="0100100";
    when 3=>led7s1(13 downto 7)<="0110000";
    when 4=>led7s1(13 downto 7)<="0011001";
    when 5=>led7s1(13 downto 7)<="0010010";
    when 6=>led7s1(13 downto 7)<="0000010";
    when 7=>led7s1(13 downto 7)<="1111000";
    when 8=>led7s1(13 downto 7)<="0000000";
盖型螺母    when 9=>led7s1(13 downto 7)<="0010000";
桥架接头    when others=>led7s1(13 downto 7)<="XXXXXXX";
end case;  end process;
process(ci)                              --把百位赋值给led7s1显示出来.。
begin
case ci is
    when 0=>led7s1(20 downto 14)<="1000000";
    when 1=>led7s1(20 downto 14)<="1111001";
    when 2=>led7s1(20 downto 14)<="0100100";

本文发布于:2023-05-15 22:32:50,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/2/100851.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:显示   进位   二进制   设计   实现
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图