2.2 全减器的设计
全减器考虑低位向本位的借位。一位全减器有三个输入、两个输出,见图2-4。图中的“借位入”即低位向本位的借位,也就是低位的“借位出”。
(被减数)Ai
(减数)Bi
(借位入)Ci-1
(差)Si(N-1..0)
全减器 (借位出)Ci
图2-4 一位全减器示意图
表2-2为一位全减器真值表,由此表可写出一位全减器关于Ci与Si的逻辑表达式:
ci?abci?1?abci?1i?abci?1i?ab?(ab?ab)ci?1
______s?abci__i?1?abci?1i?abci?1?a?b?ci?1
表2-2 全减器真值表 输入 Ci-1 0 0 0 0 1 1 1 1 Bi 0 0 1 1 0 0 1 1 Ai 0 1 0 1 0 1 0 1 Di 0 1 1 0 1 0 0 1 输出 Ci 0 0 0 1 0 1 1 1 _?
根据全减器逻辑表达式其仿真电路图如下:前面3个输出分别用a,b,Ci-1表示,中间是上面的两个半减器(a,b输入,s,c输出)和一个‘与’门最后是两个输出用Si和Ci表示。
图2-5 全减器仿真电路图
5
对全减器测试其功能的正确性,即逻辑仿真,建立波形图,输入信号节点,设置波形参量,设定仿真时间宽度,加上输入信号,波形文件存盘,运行仿真器,结果如下:
图2-6全减器波形图
观察其仿真结果,得出原理图是正确的,然后对其进行封装:
图2-7全减器封装图
根据全减器逻辑表达式,用VHDL语言来实现全减器设计,其程序代码: --f_suber
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_suber is
PORT(fx,fy,sub_in:IN STD_LOGIC; diffr,sub_out:OUT STD_LOGIC); END ENTITY f_suber;
ARCHITECTURE behav OF f_suber IS COMPONENT h_suber
PORT(x,y : IN STD_LOGIC; diff,s_out:OUT STD_LOGIC);
6
END COMPONENT; SIGNAL a,b,c : STD_LOGIC; BEGIN
u1:h_suber PORT MAP(x=>fx,y=>fy,diff=>a,s_out=>b); u2:h_suber PORT MAP(x=>a,y=>sub_in,diff=>diffr,s_out=>c); sub_out<=b AND c; END behav; --end f_suber
2.3八位全减器的设计
一位全减器在上面已经设计出来了,现在我们把这8个一位全减器串行,即可得到8位全减器了。其原理图如下:因为是8位全减器,在减的时候需要借位,所以有17个输入,分别对应连接8个全减器的输入,后面是9个输出,表示其结果。
图2-8八位全减器逻辑电路图
7
对8位全减器测试其功能的正确性,即逻辑仿真,建立波形图,输入信号节点,设置波形参量,设定仿真时间宽度,加上输入信号,波形文件存盘,运行仿真器,结果如下
图2-9八位全减器波形图
根据全减器的设计,将其8个串行连接即可得8位全减器,用VHDL语言实现八位全减器仿真函数其程序代码如下:
--f_suber8 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_suber8 IS
PORT(fx8,fy8 :IN STD_LOGIC_VECTOR(7 DOWNTO 0); sub_in8: IN STD_LOGIC;
diff8: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); s_out8: OUT STD_LOGIC); END ENTITY f_suber8;
8
ARCHITECTURE behav OF f_suber8 IS COMPONENT f_suber
PORT(fx,fy,sub_in:IN STD_LOGIC; diffr,sub_out:OUT STD_LOGIC); END COMPONENT;
SIGNAL s_outs: STD_LOGIC_VECTOR(6 DOWNTO 0); BEGIN
u1 : f_suber PORT
MAP(fx=>fx8(0),fy=>fy8(0),sub_in=>sub_in8,diffr=>diff8(0),sub_out=>s_outs(0)); u2 : f_suber PORT
MAP(fx=>fx8(1),fy=>fy8(1),sub_in=>s_outs(0),diffr=>diff8(1),sub_out=>s_outs(1)); u3 : f_suber PORT
MAP(fx=>fx8(2),fy=>fy8(2),sub_in=>s_outs(1),diffr=>diff8(2),sub_out=>s_outs(2)); u4 : f_suber PORT
MAP(fx=>fx8(3),fy=>fy8(3),sub_in=>s_outs(2),diffr=>diff8(3),sub_out=>s_outs(3)); u5 : f_suber PORT
MAP(fx=>fx8(4),fy=>fy8(4),sub_in=>s_outs(3),diffr=>diff8(4),sub_out=>s_outs(4)); u6 : f_suber PORT
MAP(fx=>fx8(5),fy=>fy8(5),sub_in=>s_outs(4),diffr=>diff8(5),sub_out=>s_outs(5)); u7 : f_suber PORT
MAP(fx=>fx8(6),fy=>fy8(6),sub_in=>s_outs(5),diffr=>diff8(6),sub_out=>s_outs(6)); u8 : f_suber PORT
MAP(fx=>fx8(7),fy=>fy8(7),sub_in=>s_outs(6),diffr=>diff8(7),sub_out=>s_out8); END behav; --end f_sube
9
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库减法器(2)在线全文阅读。
相关推荐: