四位全加器的VHDL与VerilogHDL实现
四位全加器的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), …… 此处隐藏:2059字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




