资源描述
组合逻辑电路课程设计——
4位二进制全加器/全减器
作者:
学号:
课程设计题目规定:
1) 使用74LS283构成4位二进制全加/全减器。
2) 阐述设计思路。
3) 列出真值表。
4) 画出设计逻辑图。
5) 用VHDL对所画电路进行仿真。
目录
摘要 1
1总电路设计 2
1.1硬件电路的设计 2
1.2全加器(full-adder ) 3
1.2.1四位二级制加法器 4
1.2.1.1串行进位加法器 4
1.2.1.2超前进位加法器 5
1.2.1.3超前位链结构加法器 5
1.3全减器(full-substracter ) 5
1.4总电路设计 6
2设计思路 7
2.1全加器 7
2.2全减器 7
3真值表 8
4逻辑图与仿真 9
5软件程序的设计 12
6结果分析与总结 12
摘要
加法器是数字系统中产生数和装置。加数和被加数为输入,和数与进位为输出装置为半加器。若加数、被加数与低位进位数为输入,而和数与进位为输出则为全加器。例如:为了节约资源,减法器和硬件乘法器都可以用加法器来构成。但宽位加法器设计是很耗资源,因而在实际设计和有关饿得设计与开发中需要注意资源运用率和进位速度两方面问题,多位加法器构成重要有两种:并行进位和串行进位。并行进位加法器设有并行进位产生逻辑,运营速度比串行进位快;串行进位是将全加器采用并行级联或菊花链式级联构成多位加法器。加法器也是惯用作计算机算术逻辑部件,执行逻辑操作、移位与指令调用。此外还可以用来表达各种数值,如:BCD、加三码,重要加法器是以二进制作运算。
本文将采用4位二进制并行加法器作为折中选取,所选加法器为74LS283,74LS283是4位二进制先行进位加法器,它只用了几级逻辑来形成和及进位输出,故由其构成4位二进制全加器;而四位全减器可以用加法器简朴改造而来,最后本文采用 VHDL对四位全加器/全减器进行仿真。
核心字
74LS283全加器、四位二进制、迭代电路、并行进位、串行进位、VHDL
1总电路设计
1.1硬件电路设计
该4位二进制全加器以74LS283为核心,74LS283芯片引脚图如下图,本文采用先行进位方式,极大地提高了电路运营速度,下面是对4位全加器电路设计详细分析。
图1.1 74LS283芯片引脚图
1.2全加器(full-adder )
全加器是针对超过一位操作数相加,必要提供位与位之间进位而设计一种加法器,具备广泛而重要应用。它除了有加数位X和Y,尚有来自低位进位Cin和输出S与给高位进位Cout, 详细满足下面等式:
其中,如果有奇数个1,则S为1;如果输入有2个或2个以上1,则Cout为1。全加器功能表如下:
表1.2.1全加器功能表
输 入
输 出
输 入
输 出
Cin A B
S Cout
CI A B
S Cout
0 0 0
0 0 1
0 1 0
0 1 1
0 0
1 0
1 0
0 1
1 0 0
1 0 1
1 1 0
1 1 1
1 0
0 1
0 1
1 1
逻辑表达式:
实现全加器电路图如下:
图1.2. 1全加器等式电路图
图1.2.2全加器简化模型图
1.2.1四位二级制加法器
1.2.1.1串行进位加法器
四位二进制加法器为4个全加器级联,每个解决一位。最低有效位进位输入普通置为0,每个全加器进位输出连到高一位全加器进位输入。
图1.1.2.1.1四位二进制加法器实现流程图
输入Input
A3A2A1A0
加数输入
B3B2B1B0
加数输入
C0
进位输入Cin
输出Output
S3S2S1S0
和数输入
C4
进位输出Cout
1.2.1.2超迈进位加法器
为了提高运算速度,必要设法减小或消除由于进位信号逐级传递所消耗时间,于是制成了超迈进位加法器。
长处:与串行进位加法器相比,(特别是位数比较大时候)超迈进位加法器延迟时间大大缩短了。但是它缺陷就是电路比较复杂。
1.2.1.3超前位链构造加法器
=AB+
令 产生进位产生传播信号,
四位全加器进位链逻辑可以表达为如下:
+
1.3全减器(full-substracter )
全减器有两种构造办法:
1. 全减器解决二进制算法一位,其输入位为X(被减数),Y(减数)和Bin(借位输入),其输入位为D(差)和Bout(借位输入),依照二进制减法表,可以写出如下等式:
这些等式非常类似于全加器中档式,但局限性为奇。因此咱们可以按照全加器构造思路来构造全加器。
2. 依照二进制补码减法运算,X-Y可以通过加法操作来完毕,也就是说,可以通过把Y二进制补码加到X上来完毕。Y二进制补码等于Y’+1。其中Y’等于Y各个位取反。因此得出下式:
即全减器可以通过全加器来实现。其逻辑图如下图:
图1.3.1全减器/全加器设计逻辑图
1.4总电路设计
图1.4全加器全减器总电路设计
2设计思路
2.1全加器
由上面对加法器详细分析, 咱们分别假定两个4位二进制数分别为A3A2A1A0、B3B2B1B0,运用Verilog HDL软件进行仿真,每个数位上数值1、0用开关高低电平表达,当开关打到红色点上时表达该位数值为1,反之如果打到蓝色点上时为0,输出四位二进制用S3S2S1S0表达,当输出各位上亮红灯了该位输出为1,如果为蓝色则表达为0,Cout进位输入端,C4为进位输出端,以此进行仿真。
2.2全减器
一方面将74LS283B口四个输入按1.3.1作优化,添加一种选取端select。通过该选取端来控制做加法还是做减法运算。
做减法运算时选取端select=1,各个与非门输出与输入相反,达到了取反目,此时Cin=1,从而实现了减法器功能。
做加法运算时选取端select=0,各个与非门输出与输入相似,达到了保持不变目,此时时Cin=外部输入,从而实现了加法功能。
3真值表
依照上面对加法器详细分析,下面给出是4位二进制全加器某些真值表:
表3.1 4位二进制全加器真值表
A3
A2
A1
A0
B3
B2
B1
B0
Cin
S3
S2
S1
S0
Cout
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
1
0
0
0
1
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0
1
0
1
0
0
0
1
1
0
0
1
0
0
0
1
0
1
0
0
1
0
0
0
0
0
0
1
0
1
0
1
0
0
0
1
0
0
0
1
0
0
0
1
0
0
0
0
1
1
1
0
0
0
0
1
1
0
0
0
0
0
1
0
1
0
0
0
0
1
0
1
1
0
0
1
0
0
0
1
0
0
0
0
0
0
0
0
1
1
0
0
0
1
0
0
0
1
0
0
0
1
1
1
0
0
1
0
0
1
1
0
1
1
0
0
0
1
0
0
1
0
1
0
0
0
1
1
0
1
0
1
0
0
0
0
1
1
0
0
1
1
1
0
0
1
0
0
0
0
1
1
0
1
1
1
1
1
0
1
0
1
0
1
0
0
1
0
0
0
1
1
1
1
0
1
0
1
0
0
1
1
0
1
0
0
1
1
0
0
0
1
0
0
1
0
0
0
0
1
1
1
0
0
0
1
0
0
1
1
0
0
1
0
1
...
...
...
...
...
...
...
...
...
...
...
...
...
...
表3.2 4位二进制全减器真值表
A3
A2
A1
A0
B3
B2
B1
B0
Cin
S3
S2
S1
S0
Cout
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
1
0
0
0
1
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0
1
0
1
0
0
0
1
1
0
0
1
0
0
0
1
0
1
0
0
1
0
0
0
0
0
0
1
0
1
0
1
0
0
0
1
0
0
0
1
0
0
0
1
0
0
0
0
1
1
1
0
0
0
0
1
1
0
0
0
0
0
1
0
1
0
0
0
0
1
0
1
1
0
0
1
0
0
0
1
0
0
0
0
0
0
0
0
1
1
0
0
0
1
0
0
0
1
0
0
0
1
1
1
0
0
1
0
0
1
1
0
1
1
0
0
0
1
0
0
1
0
1
0
0
0
1
1
0
1
0
1
0
0
0
0
1
1
0
0
1
1
1
0
0
1
0
0
0
0
1
1
0
1
1
1
1
1
0
1
0
1
0
1
0
0
1
0
0
0
1
1
1
1
0
1
0
1
0
0
1
1
0
1
0
0
1
1
0
0
0
1
0
0
1
0
0
0
0
1
1
1
0
0
0
1
0
0
1
1
0
0
1
0
1
...
...
...
...
...
...
...
...
...
...
...
...
...
...
4逻辑图与仿真
下面是74LS283四位二进制全加器逻辑电路图:
图4.174LS283四位二进制全加器逻辑电路图
图4.1
图4.2
图4.3
图4.4
5软件程序设计
采用Verilog HDL语言对设计4位二进制全加器进行仿真,下面是详细Verilog HDL 程序:
第一步:建立一种半加器VHD程序。Hadd_v.vhd
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity hadd_v is
port(a,b:in std_logic;
s,c:out std_logic);
end hadd_v;
architecture a of hadd_v is
signal temp:std_logic_vector(1 downto 0);
begin
temp<=(‘0’&A)+B;
s<=temp(0);
c<=temp(1);
end a;
编译通过
第二步:建立一种全加器VHD程序,fadd_v.vhd
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity fadd_v is
port(a,b,ci:in std_logic;
s,co :out std_logic);
end fadd_v;
architecture a of fadd_v is
signal temp :std_logic_vector(1 downto 0);
begin
temp<=(‘0’&a)+b+ci;
s<=temp(0);
co<=temp(1);
end a;
编译通过。
第三步:建立一种加入全加器半加器VHD程序,为程序包 add_v.vhd
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
PACKAGE add_v IS
COMPONENT had_v
PORT(
a,b :IN STD_LOGIC;
s,c :OUT STD_LOGIC);
END COMPONENT;
COMPONENT fadd_v
PORT(
a,b,ci :IN STD_LOGIC;
s,co :OUT STD_LOGIC);
END COMPONENT;
END add_v;
第四步:四位加法器程序 add4_v.VHD
library ieee;
use ieee.std_logic_1164.all;
use Wore.add_v.all;
entity add4_v is
port(A,B:in std_logic_vector(3 downto 0);
S:out std_logic_vector(3 downto 0);
Cout:out std_logic);
End add4_v;
Architecture x of add4_v is
Signal N1,N2,N3:std_logic;
begin
h0:hadd_v
port map(a=>A(0),b=>B(0),c=>N1);
h1:fadd_v
port map(a=>A(1),b=>B(1),s=>S(1),co=>N2);
h2:fadd_v
port map(a=>A(2),b=>B(2),s=>S(2),co=>N3);
h3:fadd_v
port map(a=>A(3),b=>B(3),s=>S(3),co=>cout);
end x;
结束。
6成果分析与总结
由上图可以看出仿真成果与实际运算成果是相似。
由仿真程序成果可知,设计程序完毕了四位全加器功能,因而,该程序对的。
一方面感谢教师严谨教学与悉心指引。通过本次课程设计,我加深了对所学知识理解,并对某些知识进行较好地应用,如:全加器、74LS283等。同步完毕了74LS283构成4位二进制全加器电路硬件设计和VHDL仿真,完毕课程设计过程中也更加强化了自己查阅资料能力,这有助于提高咱们自学能力,整个过程中咱们尚有请教其她同窗。总之,本次课程设计加深了我对数字逻辑设计这门课理解,更加激发了我对数字逻辑设计这门课兴趣,有助于咱们后续课程学习。
参照文献:
数字逻辑设计及应用,姜书艳/主编,电子科技大学出版社
参照网址:
展开阅读全文