二位全减器VHDL设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 半减器原理
两个二进制数相减叫做半减,实现半减操作的电路称为半减器,表 2 为 半减器的真值表。A 为被减数,B 为减数,S 表示半减差,C 表示向高位 借位。 A B S C 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 从二进制数减法的角度看,真值表中只考虑了两个减数本身,没有考虑 低位来的借位,这就是半减器的由来。 S= A xor B C=(NOT A) and B
由 EDA 教程中全加器的顶层设计描述及半加器调用可类比到全减器的设计,可由先对半减 器进行描述,然后进行两次调用。半减器的工作时的逻辑表达式为:so=a XOR b ; co=(NOT a)AND b
1. 全减器原理 全减器能减数、被减数和低位来的借位信号相减,并根据求减结果给出该位 的借位信号。表 4 为全减器的真值表。Ai 表示被减数Bi 表示减数Ci −1 表示相 邻低位来的借位数,Si 表示本为和差,Ci 表示向相邻高位的借位数。 Ai Bi Ci −1 Si Ci 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1
1 1 1 1
0 wenku.baidu.com 1 1 表4
0 1 0 1
1 0 0 1
0 0 0 1
二位全减器:
四、实验程序(程序来源:EDA 技术实验教程)
LIBRARY IEEE ; ——或门逻辑描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT (a, b :IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one OF or2a IS //可以试试不用或门定义试试 BEGIN c <= a OR b ; END ARCHITECTURE one; ////////////////////////////////////////////////////////////////// LIBRARY IEEE; ——半减器描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_suber IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_suber; ARCHITECTURE fh1 OF h_suber is BEGIN so <= a xor b ; co <= (not a )AND b ; END ARCHITECTURE fh1; //////////////////////////////////////////////////////////////////// LIBRARY IEEE; ——1 位二进制全减器顶层设计描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_suber IS PORT (ain,bin,cin : IN STD_LOGIC; cout,sum : OUT STD_LOGIC ); END ENTITY f_suber; ARCHITECTURE fd1 OF f_suber IS COMPONENT h_suber ——调用半减器声明语句 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; ——定义 3 个信号作为内部的连接线 BEGIN u1 : h_suber PORT MAP(a=>ain,b=>bin, co=>d,so=>e); ——例化语句
全减器真值表
根据一位二进制全减器的工作原理, 可得其真值表为 (如下: cin 表示低位向本位借位。 cout 表示本位向高位借位) ain 0 0 0 0 1 1 1 1 bin 0 0 1 1 0 0 1 1 cin 0 1 0 1 0 1 0 1 cout 0 1 1 1 0 0 0 1 sum 0 1 1 0 1 0 0 1
u2 : h_suber PORT MAP(a=>e, b=>cin, co=>f,so=>sum); u3 : or2a PORT MAP(a=>d, b=>f,c=>cout); END ARCHITECTURE fd1 ; ///////////////////////////////////////////////////////////////////////////////// LIBRARY IEEE; ——二位全减器 USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_2_suber IS PORT ( A,B: IN STD_LOGIC_VECTOR(1 DOWNTO 0); C0:IN STD_LOGIC; S: OUT STD_LOGIC_ VECTOR(1 DOWNTO 0); C:OUT STD_LOGIC ); END ENTITY f_2_suber; ARCHITECTURE one OF f_2_suber IS COMPONENT f_suber ——调用一位全减器声明语句 PORT (ain,bin,cin : IN STD_LOGIC; cout,sum : OUT STD_LOGIC ); END COMPONENT ; SIGNAL S1,C1,S2: STD_LOGIC; BEGIN U1: f_suber PORT MAP ( ain=>A(0),bin=>B(0),cin=>C0,cout=>C1,sum=>S1 ); U2: f_suber PORT MAP ( ain=>A(1),bin=>B(1),cin=>C1,cout=>C,sum=>S2 ); S<=S2&S1; END ARCHITECTURE one ;