VHDL实现加法器
2015-10-07 00:35
316 查看
//全加法器
library ieee;
use ieee.std_logic_1164.all;
entity alladder is
port(
A,B,Cin:in std_logic;
S,Cout:out std_logic
);
end entity alladder;
architecture adderfunc of alladder is
begin
END;
//四位并行加法器
library ieee;
use ieee.std_logic_1164.all;
entity sequenadder is
port(
A:IN BIT_VECTOR(3 DOWNTO 0);
B:IN BIT_VECTOR(3 DOWNTO 0);
Cin:IN BIT;
S:OUT BIT_VECTOR(4 DOWNTO 0)
);
END;
ARCHITECTURE SEQUENFUNC OF sequenadder IS
SIGNAL SIN1:BIT;
SIGNAL SIN2:BIT;
SIGNAL SIN3:BIT;
COMPONENT alladder IS
PORT(
A,B,Cin:IN BIT;
S,Cout:OUT BIT
);
END COMPONENT;
BEGIN
G1:alladder port map(A=>A(0),B=>B(0),Cin=>Cin,S=>S(0),Cout=>SIN1);
G2:alladder port map(A=>A(1),B=>B(1),Cin=>SIN1,S=>S(1),Cout=>SIN2);
G3:alladder port map(A=>A(2),B=>B(2),Cin=>SIN2,S=>S(2),Cout=>SIN3);
G4:alladder port map(A=>A(3),B=>B(3),Cin=>SIN3,S=>S(3),Cout=>S(4));
END;
//超前进位加法器
library ieee;
use ieee.std_logic_1164.all;
entity fastadder is
port(
A:IN BIT_VECTOR(3 DOWNTO 0);
B:IN BIT_VECTOR(3 DOWNTO 0);
CIN:IN BIT;
S:OUT BIT_VECTOR(4 DOWNTO 0)
);
END;
ARCHITECTURE FASTADDFUNC OF fastadder IS
SIGNAL COUT0:BIT;
SIGNAL COUT1:BIT;
SIGNAL COUT2:BIT;
BEGIN
COUT0<=(A(0) AND B(0))OR(CIN AND (A(0) OR B(0)));
COUT1<=(A(1) AND B(1))OR(COUT0 AND (A(1) OR B(1)));
COUT2<=(A(2) AND B(2))OR(COUT1 AND (A(2) OR B(2)));
S(4)<=(A(3) AND B(3))OR(COUT2 AND (A(3) OR B(3)));
S(0)<=A(0) XOR B(0) XOR CIN;
S(1)<=A(1) XOR B(1) XOR COUT0;
S(2)<=A(2) XOR B(2) XOR COUT1;
S(3)<=A(3) XOR B(3) XOR COUT2;
END ;
library ieee;
use ieee.std_logic_1164.all;
entity alladder is
port(
A,B,Cin:in std_logic;
S,Cout:out std_logic
);
end entity alladder;
architecture adderfunc of alladder is
begin
Cout<=((A xor B) AND Cin) OR (A AND B);
END;
//四位并行加法器
library ieee;
use ieee.std_logic_1164.all;
entity sequenadder is
port(
A:IN BIT_VECTOR(3 DOWNTO 0);
B:IN BIT_VECTOR(3 DOWNTO 0);
Cin:IN BIT;
S:OUT BIT_VECTOR(4 DOWNTO 0)
);
END;
ARCHITECTURE SEQUENFUNC OF sequenadder IS
SIGNAL SIN1:BIT;
SIGNAL SIN2:BIT;
SIGNAL SIN3:BIT;
COMPONENT alladder IS
PORT(
A,B,Cin:IN BIT;
S,Cout:OUT BIT
);
END COMPONENT;
BEGIN
G1:alladder port map(A=>A(0),B=>B(0),Cin=>Cin,S=>S(0),Cout=>SIN1);
G2:alladder port map(A=>A(1),B=>B(1),Cin=>SIN1,S=>S(1),Cout=>SIN2);
G3:alladder port map(A=>A(2),B=>B(2),Cin=>SIN2,S=>S(2),Cout=>SIN3);
G4:alladder port map(A=>A(3),B=>B(3),Cin=>SIN3,S=>S(3),Cout=>S(4));
END;
//超前进位加法器
library ieee;
use ieee.std_logic_1164.all;
entity fastadder is
port(
A:IN BIT_VECTOR(3 DOWNTO 0);
B:IN BIT_VECTOR(3 DOWNTO 0);
CIN:IN BIT;
S:OUT BIT_VECTOR(4 DOWNTO 0)
);
END;
ARCHITECTURE FASTADDFUNC OF fastadder IS
SIGNAL COUT0:BIT;
SIGNAL COUT1:BIT;
SIGNAL COUT2:BIT;
BEGIN
COUT0<=(A(0) AND B(0))OR(CIN AND (A(0) OR B(0)));
COUT1<=(A(1) AND B(1))OR(COUT0 AND (A(1) OR B(1)));
COUT2<=(A(2) AND B(2))OR(COUT1 AND (A(2) OR B(2)));
S(4)<=(A(3) AND B(3))OR(COUT2 AND (A(3) OR B(3)));
S(0)<=A(0) XOR B(0) XOR CIN;
S(1)<=A(1) XOR B(1) XOR COUT0;
S(2)<=A(2) XOR B(2) XOR COUT1;
S(3)<=A(3) XOR B(3) XOR COUT2;
END ;
相关文章推荐
- while倒数阶乘的和
- php5.2.17 升级php-5.6.14
- Kinect2.0+Opencv获取高清面部信息
- JAVA中关于主方法调用非静态方法的问题
- Placement Test #2 Kyle’s Book Stack
- 灰度直方图均衡化的算数推导
- 校验码(海明校验,CRC冗余校验,奇偶校验)
- zepto 里的高宽
- 03SQLite的增删改查(Google提供的API)
- CentOS7 配置网卡
- Servlet处理应用
- RET2LIBC 练习(3) -- VIRTUALALLOC
- 使用JQuery快速高效制作网页交互特效第二章到第七章
- android gallery工作流程图
- VB CAD插件二次开发
- 222
- foj2198 Problem 2198 快来快来数一数 dp 矩阵快速幂
- 360doc的文章不能复制的解决办法
- cocos2d-x对Vector<Node*>排序
- CodeforcesRound #322 (Div. 2) 解题报告