资源描述:
《二位全减器vhdl设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.半减器原理两个二进制数相减叫做半减,实现半减操作的电路称为半减器,表2为半减器的真值表。A为被减数,B为减数,S表示半减差,C表示向高位借位。ABSC0000011110101100从二进制数减法的角度看,真值表中只考虑了两个减数本身,没有考虑低位来的借位,这就是半减器的由来。S=AxorBC=(NOTA)andB全减器真值表根据一位二进制全减器的工作原理,可得其真值表为(如下:cin表示低位向本位借位。cout表示本位向高位借位)ainbincincoutsum0000000111010110111010001101001100011111由EDA教程中全加器的顶层设计描述
2、及半加器调用可类比到全减器的设计,可由先对半减器进行描述,然后进行两次调用。半减器的工作时的逻辑表达式为:so=aXORb;co=(NOTa)ANDb1.全减器原理全减器能减数、被减数和低位来的借位信号相减,并根据求减结果给出该位的借位信号。表4为全减器的真值表。Ai表示被减数Bi表示减数Ci-1表示相邻低位来的借位数,Si表示本为和差,Ci表示向相邻高位的借位数。AiBiCi-1SiCi0000000111010110110110010101001100011111表4二位全减器:四、实验程序(程序来源:EDA技术实验教程)LIBRARYIEEE;——或门逻辑描述USEIEEE
3、.STD_LOGIC_1164.ALL;ENTITYor2aISPORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDENTITYor2a;ARCHITECTUREoneOFor2aIS//可以试试不用或门定义试试BEGINc<=aORb;ENDARCHITECTUREone;//////////////////////////////////////////////////////////////////LIBRARYIEEE;——半减器描述USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_suberISPORT(a,b:INSTD
4、_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_suber;ARCHITECTUREfh1OFh_suberisBEGINso<=axorb;co<=(nota)ANDb;ENDARCHITECTUREfh1;////////////////////////////////////////////////////////////////////LIBRARYIEEE;——1位二进制全减器顶层设计描述USEIEEE.STD_LOGIC_1164.ALL;ENTITYf_suberISPORT(ain,bin,cin:INSTD_LOGIC;cout,su
5、m:OUTSTD_LOGIC);ENDENTITYf_suber;ARCHITECTUREfd1OFf_suberISCOMPONENTh_suber——调用半减器声明语句PORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTor2a——调用或门声明语句PORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALd,e,f:STD_LOGIC;——定义3个信号作为内部的连接线BEGINu1:h_suberPORTMAP(a=>ain,b=>bin,co=>d
6、,so=>e);——例化语句u2:h_suberPORTMAP(a=>e,b=>cin,co=>f,so=>sum);u3:or2aPORTMAP(a=>d,b=>f,c=>cout);ENDARCHITECTUREfd1;/////////////////////////////////////////////////////////////////////////////////LIBRARYIEEE;——二位全减器USEIEEE.STD_LOGIC_1164.ALL;ENTITYf_2_suberISPORT(A,B:INSTD_LOGIC_VECTOR(1DOWNTO0)
7、;C0:INSTD_LOGIC;S:OUTSTD_LOGIC_VECTOR(1DOWNTO0);C:OUTSTD_LOGIC);ENDENTITYf_2_suber;ARCHITECTUREoneOFf_2_suberISCOMPONENTf_suber——调用一位全减器声明语句PORT(ain,bin,cin:INSTD_LOGIC;cout,sum:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALS1,C1,S2:STD_LOGIC;BEGINU1:f_su