8位串行二进制全加器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
只用一位二进制全加器为基本元件和一些辅助的时序电路,设计一个8位串行二进制全加器。
Vhdl代码如下:
顶层文件如下:
library ieee;
use ieee.std_logic_1164.all;
entity f8_adder is
port(a,b:in std_logic_vector(7 downto 0);
c0:in std_logic;
s:out std_logic_vector(7 downto 0);
c1:out std_logic);
end f8_adder;
architecture bhv of f8_adder is
signal cout:std_logic_vector(7 downto 1);
component f_adder is
port(ain,bin,cin:in std_logic;
cout,sum:out std_logic);
end component;
begin
u1: f_adder port map(ain=>a(0),bin=>b(0),cin=>c0,sum=>s(0),cout=>cout(1));
u2: f_adder port map(ain=>a(1),bin=>b(1),cin=>cout(1),sum=>s(1),cout=>cout(2));
u3: f_adder port map(ain=>a(2),bin=>b(2),cin=>cout(2),sum=>s(2),cout=>cout(3));
u4: f_adder port map(ain=>a(3),bin=>b(3),cin=>cout(3),sum=>s(3),cout=>cout(4));
u5: f_adder port map(ain=>a(4),bin=>b(4),cin=>cout(4),sum=>s(4),cout=>cout(5));
u6: f_adder port map(ain=>a(5),bin=>b(5),cin=>cout(5),sum=>s(5),cout=>cout(6));
u7: f_adder port map(ain=>a(6),bin=>b(6),cin=>cout(6),sum=>s(6),cout=>cout(7));
u8: f_adder port map(ain=>a(7),bin=>b(7),cin=>cout(7),sum=>s(7),cout=>c1);
end bhv;
全加器描述:
library ieee;
use ieee.std_logic_1164.all;
entity f_adder is
port(ain,bin,cin:in std_logic;
cout,sum:out std_logic);
end f_adder;
architecture fd1 of f_adder is
component h_adder
port(a,b:in std_logic;
co,so:out std_logic);
end component;
component or2a
port(a,b:in std_logic;
c:out std_logic);
end component;
signal d,e,f:std_logic;
begin
u1: h_adder port map(a=>ain,b=>bin,co=>d,so=>e); u2: h_adder port map(a=>e,b=>cin,co=>f,so=>sum); u3: or2a port map(a=>d,b=>f,c=>cout);
end fd1;
半加器描述:
library ieee;
use ieee.std_logic_1164.all;
entity h_adder is
port(a,b:in std_logic;
co,so:out std_logic);
end h_adder;
architecture fh1 of h_adder is
begin
so<=not(a xor not(b));
co<=a and b;
end fh1;
或门电路描述:
library ieee;
use ieee.std_logic_1164.all;
entity or2a is
port(a,b:in std_logic;
c:out std_logic);
end or2a;
architecture one of or2a is
begin
c<=a or b;
end one;
RTL 电路图如下:
由于RTL图比较大,因此将它另外一图片的格式显示出来,这里只给了一个略缩图。
时序仿真图如下: