四位全加器的VHDL与VerilogHDL实现
更新时间:2024-01-18 04:25:01 阅读量: 教育文库 文档下载
- 四位全加器vhdl代码推荐度:
- 相关推荐
四位全加器的VHDL/VerilogHDL实现
加法器的分类 (一)半加器 能对两个1位二进制数进行相加而求得和及进位的逻辑电路称为半加器。或:只考虑两个一位二进制数的相加,而不考虑来自低位进位数的运算电路,称为半加器。图1为半加器的方框图。图2为半加器原理图。其中:A、B分别为被加数与加数,作为电路的输入端;S为两数相加产生的本位和,它和两数相加产生的向高位的进位C一起作为电路的输出。 根据二进制数相加的原则,得到半加器的真值表如表1所列。 信号输入 A 0 0 1 1 B 0 1 0 1 信号输出 S 0 1 1 0 C 0 0 0 1 表1 半加器的真值表 由真值表可分别写出和数S,进位数C的逻辑函数表达式为: (1) C=AB (2) 由此可见,式(1)是一个异或逻辑关系,可用一个异或门来实现;式(2)可用一个与门实现。仿真结果如图3所示: 图3 半加器仿真图 (二)全加器 除本位两个数相加外,还要加上从低位来的进位数,称为全加器。图4为全加器的方框图。图5全加器原理图。被加数Ai、加数Bi从低位向本位进位Ci-1作为电路的输入,全加和Si与向高位的进位Ci作为电路的输出。能实现全加运算功能的电路称为全加电路。全加器的逻辑功能真值表如表2中所列。 信号输入端 Ai 0 0 0 0 1 1 1 1 Bi 0 0 1 1 0 0 1 1 Ci 0 1 0 1 0 1 0 1 信号输出端 Si 0 1 1 0 1 0 0 1 Ci 0 0 0 1 0 1 1 1 表2 全加器逻辑功能真值表 多位全加器连接可以是逐位进位,也可以是超前进位。逐位进位也称串行进位,其逻辑电路简单,但速度也较低。 五、加法器的VHDL实现 (一) 半加器
VHDL语言描述语句为:
1
so<=a xor b; co<=a and b
程序设计: 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 bh of h_adder is begin
so<=a xor b; ――“异或”运算 co<=a and b; ――“与”运算 end bh;
(二) 全加器
1位全加器可由两个半加器组成,在半加器的基础上,采用元件调用和例化语句,将件连接起来,而实现全加器的VHDL编程和整体功能。全加器包含了两个半加器和一个或门。在此基础上可设计出四位全加器。
六、四位全加器
四位全加器VHDL程序代码如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity add is
port(cin:in std_logic;
a,b:in std_logic_vector(3 downto 0); s:out std_logic_vector(3 downto 0); cout:out std_logic); end add4;
architecture beh of add4 is
signal sint:std_logic_vector(4 downto 0); signal aa,bb:std_logic_vector(4 downto 0); begin
aa<='0' & a(3 downto 0); --4位加数矢量扩为5位,提供进位空间 bb<='0' & b(3 downto 0); sint<=aa+bb+cin;
s(3 downto 0)<=sint(3 downto 0); cout<=sint(4); end beh;
四位全加器VerilogHDL程序代码如下:
module add(A,B,CI,CO,S); parameter N=4;
2
input [N:1] A,B; input CI; output CO;
output [N:1] S;
assign {CO,S}=A+B+CI; endmodule
四位全加器常用三种编程方法:
/*module add(s,co,a,b,ci);//行为描述法 output[3:0] s; output co;
input[3:0] a,b; input ci; reg co;
reg[3:0] s; always@(*) begin
{co,s}=a+b+ci; end
endmodule*/
module add(s,co,a,b,ci);//结构描述法 output[3:0] s; output co;
input[3:0] a,b; input ci;
full_add1 f0(a[0],b[0],ci,s[0],ci1); full_add1 f1(a[1],b[1],ci1,s[1],ci2); full_add1 f2(a[2],b[2],ci2,s[2],ci3); full_add1 f3(a[3],b[3],ci3,s[3],co); endmodule
module full_add1(a,b,cin,sum,cout); input a,b,cin; output sum,cout; wire s1,m1,m2,m3; and(m1,a,b), (m2,b,cin), (m3,a,cin); xor(s1,a,b), (sum,s1,cin);
or(cout,m1,m2,m3); endmodule
/*module add(co,s,a,b,ci);//数据流法
3
output[3:0] s; output co;
input[3:0] a,b; input ci;
assign {co,s}=a+b+ci; endmodule*/
library IEEE;
use IEEE.Std_logic_1164.ALL; entity pro1 is
port(A1,B1,G1BAR,A0,B0,G0BAR:in std_logic; Y20,Y21,Y22,Y23,Y10,Y11,Y12,Y13:out std_logic); end pro1;
architecture pro1_arch of pro1 is begin
Y10<='0' when(B0='0') and ((A0='0') and (G0BAR='0')) else '1';
Y11<='0' when(B0='0') and ((A0='1') and (G0BAR='0')) else '1';
Y12<='0' when(B0='1') and ((A0='0') and (G0BAR='0')) else '1';
Y13<='0' when(B0='1') and ((A0='1') and (G0BAR='0')) else '1';
Y20<='0' when(B1='0') and ((A1='0') and (G1BAR='0')) else '1';
Y21<='0' when(B1='0') and ((A1='1') and (G1BAR='0')) else '1';
Y22<='0' when(B1='1') and ((A1='0') and (G1BAR='0')) else '1';
Y23<='0' when(B1='1') and ((A1='1') and (G1BAR='0')) else '1';
end pro1_arch;
4
一、1位全加器
ENTITY full_add IS PORT( a,b,cin : IN BIT; cout,sum: OUT BIT ); END full_add;
ARCHITECTURE adder OF full_add IS --逻辑表达式实现 BEGIN
cout <= ( (a xor b) and cin ) or ( a and b ); sum <= ( a xor b ) xor cin; END adder;
ARCHITECTURE adder2 OF full_add IS --真值表实现 SIGNAL abcin :BIT_VECTOR( 0 to 2 ); SIGNAL yout : BIT_VECTOR( 0 to 1 ); BEGIN
abcin <= a & b & cin;
WITH abcin SELECT
yout <= \ \ \ \ \ \ \ \ cout <= yout( 0 ); sum <= yout( 1 ); END adder2;
二、4位加法器
之前已生成了full_add.vhd
ENTITY add4par IS PORT( c0: IN BIT;
a,b: IN BIT_VECTOR( 4 downto 1 ); c4: OUT BIT;
sum: OUT BIT_VECTOR( 4 downto 1 ) ); END add4par;
ARCHITECTURE adder of add4par IS COMPONENT full_add
5
PORT( a,b,cin: IN BIT; cout,sum: OUT BIT); END COMPONENT;
SIGNAL c: BIT_VECTOR( 3 downto 1 ); BEGIN
adder1:full_add PORT MAP( a => a(1),b=>b(1),cin=>c0,cout=>c(1),sum=>sum(1) ); --上面的书写方式中,参数顺序可任意调整。
adder2: full_add PORTMAP( a(2),b(2),c(1),c(2),sum(2) ); adder3: full_add PORTMAP( a(3),b(3),c(2),c(3),sum(3) ); adder4: full_add PORTMAP( a(4),b(4),c(3),c(4),sum(4) ); END adder;
--利用生成语句,可进一下简化语句的书写 ENTITY add4gen IS PORT( c0: IN BIT;
a,b: IN BIT_VECTOR( 4 downto 1 ); -- 4改为8 c4: OUT BIT;
sum: OUT BIT_VECTOR( 4 downto 1 ) ); -- 4改为8 END add4gen;
ARCHITECTURE adder OF add4gen IS COMPONENT full_add
PORT( a,b,cin:IN BIT; cout,sum: OUT BIT ); END COMPONENT;
SIGNAL c: BIT_VECTOR( 4 downto 0 ); -- 4改为8 BEGIN
c(0) <=c0;
adders:
FOR i IN 1 to 4 GENERATE --FOR i IN 1 to 8 GENERATE adder: full_add PORTMAP(a(i),b(i),c(i-1),c(i),sum(i) ); END GENERATE;
c4 <= c(4); --c8<=c(8) END adder;
若要扩展为8位加法器,则很容易修改,将上面的4改为8即可
6
PORT( a,b,cin: IN BIT; cout,sum: OUT BIT); END COMPONENT;
SIGNAL c: BIT_VECTOR( 3 downto 1 ); BEGIN
adder1:full_add PORT MAP( a => a(1),b=>b(1),cin=>c0,cout=>c(1),sum=>sum(1) ); --上面的书写方式中,参数顺序可任意调整。
adder2: full_add PORTMAP( a(2),b(2),c(1),c(2),sum(2) ); adder3: full_add PORTMAP( a(3),b(3),c(2),c(3),sum(3) ); adder4: full_add PORTMAP( a(4),b(4),c(3),c(4),sum(4) ); END adder;
--利用生成语句,可进一下简化语句的书写 ENTITY add4gen IS PORT( c0: IN BIT;
a,b: IN BIT_VECTOR( 4 downto 1 ); -- 4改为8 c4: OUT BIT;
sum: OUT BIT_VECTOR( 4 downto 1 ) ); -- 4改为8 END add4gen;
ARCHITECTURE adder OF add4gen IS COMPONENT full_add
PORT( a,b,cin:IN BIT; cout,sum: OUT BIT ); END COMPONENT;
SIGNAL c: BIT_VECTOR( 4 downto 0 ); -- 4改为8 BEGIN
c(0) <=c0;
adders:
FOR i IN 1 to 4 GENERATE --FOR i IN 1 to 8 GENERATE adder: full_add PORTMAP(a(i),b(i),c(i-1),c(i),sum(i) ); END GENERATE;
c4 <= c(4); --c8<=c(8) END adder;
若要扩展为8位加法器,则很容易修改,将上面的4改为8即可
6
正在阅读:
采油作业区职责(采二)01-21
某局法律知识学习及考试考核制度01-16
英语学科特点分析新整理03-21
余杭社会劳动保障局01-06
学校防火安全演练方案通用范本05-20
心得体会 项羽之死读后感范文(精选5篇)04-11
大学生入党申请书4000字09-13
县公安局长年度述职述廉报告09-26
窑操培训试卷10-15
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 全加器
- VerilogHDL
- 实现
- VHDL
- 计算机组成原理CPU设计
- 校园无线网络的规划与设计毕业论文
- 电算化会计第3阶段测试题3b
- 不同的醋有不同的食疗功能
- 山东省青岛市2018届高三统一质量监测英语试题 Word版含答案
- 战略咨询推荐书单-单其武
- 1电气主接线及所用高压接线设计1 - 图文
- 战略管理期末考试试卷A卷
- 全民健身运动会开幕式主持词
- 05-第五章 统计指数
- 2011年度二级建造师公路专业课程路基部分施工技术 - 图文
- 中国海外医疗中介服务市场研究报告
- 溪山幽居图
- 电大 区域经济学paixu
- 电力行业节能减排的技术分析报告
- 语文学案二年级上册答案 - 图文
- 汉滨区机关和事业单位差旅费管理办法
- 鼓励投资和招商引资优惠政策及奖励办法
- 工程签证的重要性及施工单位如何正确进行工程签证
- mooc弗洛伊德课后习题