设计一个多功能的1位加法器-有控制信号M、S2、S1、S0。

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计一个多功能的1位加法器,有控制信号M、S2、S1、S0。

当M=1,做算术运算:
在S2、S1、S0的控制下能完成两个1位二进制数A、B的以下算术运算: A加B,A 加1,A加B加低位来的进位,B加1,A加,A加0,A加A ,A加加1。

当M=0,做逻辑运算:
在S2、S1、S0的控制下能完成两个1位二进制数A、B的以下逻辑运算:A+B,A·B, , ,, ,,
等。

用VHDL编程并仿真(时序)。

library ieee;
use ieee.std_logic_1164。

all;
entity adder is
port(m,s2,s1,s0,a,b,ci:in std_logic;
f,co:out std_logic);
end adder;
architecture behave of adder is
signal f_i:std_logic_vector(3 downto 0);
begin
f_i〈=m&s2&s1&s0;
process(f_i)
begin
case f_i is
when "1000”=〉f〈=a xor b;co<=a and b;
when ”1001"=> f〈=a xor'1';co<=a;
when "1010"=> f<=(a xor b)xor ci;co〈=(a and b)or(ci and(a xor b));
when ”1011”=〉f<=b xor '1’;co<=b;
when ”1100”=> f〈=a xor(not b);co<=a and (not b);
when ”1101”=〉f〈=a xor ’0’;co〈=’0';
when ”1110”=> f〈=a xor a;co〈=a;
when "1111”=> f<=a xor(not b)xor ’1’;co<=(a and b)or(a xor b);
when "0000”=> f〈=a or b;
when "0001"=> f<=a and b;
w hen ”0010"=> f〈=not a;
when ”0011"=> f<=not b;
when ”0100”=〉f〈=a xor b;
when "0101”=> f<=a or (not b);
when "0110”=> f<=not(a xor b);
when "0111"=〉f〈=a and(not b);
when others=> f<='0';co<='0';
end case;
end process;
end behave;。

相关文档
最新文档