组合逻辑电路设计案例.docx
《组合逻辑电路设计案例.docx》由会员分享,可在线阅读,更多相关《组合逻辑电路设计案例.docx(48页珍藏版)》请在冰点文库上搜索。
组合逻辑电路设计案例
目录1
简单门电路‥‥‥‥‥‥‥‥‥‥‥‥3
三态门及总线缓冲器‥‥‥‥‥‥‥‥‥‥‥‥6
转换器‥‥‥‥‥‥‥‥‥‥‥‥8
并置运算器‥‥‥‥‥‥‥‥‥‥‥‥9奇偶校验器‥‥‥‥‥‥‥‥‥‥‥‥11加法器‥‥‥‥‥‥‥‥‥‥‥‥12选择器‥‥‥‥‥‥‥‥‥‥‥‥18
编译码器‥‥‥‥‥‥‥‥‥‥‥‥
二输入与门
1★程序:
ENTITYand2IS
PORT(a,b:
INBIT;4-1
例:
出处4.1.1
c:
OUTBIT);:
注意代入语句使用时与知识点
ENDENTITYand2;实际电路工作情况保持一致,延ARCHITECTUREand2_behavOFand2IS时是必须要考虑的因素。
BEGIN
c<=aANDbAFTER5ns;ENDARCHITECTUREand2_behav;
:
2★程序
ENTITYand2IS
1
GENERIC(rise,fall:
TIME);
PORT(a,b:
INBIT;4-44.1.4例出处:
c:
OUTBIT)语句常用于:
GENERIC知识点ENDENTITYand2;不同层次之间点的信息传递,该ARCHITECTUREbehavOFand2IS语句分别对例中使用GENERICSIGNALinternal:
BIT;信号的上升时间和下降时间进BEGIN行了定义。
internal<=aANDb;
WHENinternal='1'ELSE
c<=internalAFTER(rise)
fall);internalAFTER(
ENDARCHITECTUREbehav;
:
★程序3LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYnand2IS
INSTD_LOGIC;PORT(a,b:
OUTSTD_LOGIC);y:
ENDENTITYnand2;
ARCHITECTUREnand2_2OFnand2IS
BEGIN
t1:
PROCESS(a,b)IS
ARIABLEcomb:
STD_LOGIC_VECTOR(1DOWNTO0);
VBEGIN
comb:
=a&b;
CASEcombIS
7-2例出处:
7.1.1WHEN
方式描述构造RTL:
采用知识点WHEN=>y<='1';
语句实现器件的体,使用CASEWHEN=>y<='1';
逻辑功能。
WHEN=>y<='0';
WHENOTHERS=>y<='X';
ENDCASE;
ENDPROCESSt1;ENDARCHITECTUREnand2_2;
2
三态门电路
数据输出数据输入控制输入
doutdinenZ0X
0011
11
★程序1:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYtri_gateIS
INSTD_LOGIC;PORT(din,en:
OUTSTD_LOGIC);dout:
ENDENTITYtri_gate;
出7.1.47-15
ARCHITECTUREzasOFtri_gateIS知识点:
利用IF语句的多选择分BEGIN
支功能描述三态门,注意输入、tri_gate1:
PROCESS(din,en)IS输出间的控制关系。
BEGIN
IF(en='1')THEN
dout<=din;
ELSE
dout<='Z';
ENDIF;
ENDPROCESS;
ENDARCHITECTUREzas;
:
★程序2
ARCHITECTUREblkOFtri_gateIS出处:
7.1.4例7-16
BEGIN
知识点:
使用卫式BLOCK结构tri_gate2:
BLOCK(en='1')描述,注意条件的设立。
BEGIN
dout<=GUARDEDdin;
ENDBLOCK;
ENDARCHITECTUREblk;
3
八位单向总线缓冲器
1:
★程序LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYtri_buf8IS
PORT(din:
INSTD_LOGIC_VECTOR(7DOWNTO0);
dout:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
en:
INSTD_LOGIC);
ENDENTITYtri_buf8;
ARCHITECTUREzasOFtri_buf8IS
BEGIN
tri_buff:
PROCESS(en,din)IS
7-157.1.4例出处:
BEGIN
IF知识点:
采用进程结构,使用IF(en='1')THEN
语句描述器件逻辑功能。
dout<=din;
ELSE
dout<=ZZZZZZZZ;
ENDIF
ENDPROCESS;
ENDARCHITECTUREzas;
双向总线缓冲器
4
★程序1:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYtri_bigateIS
PORT(a,b:
INOUTSTD_LOGIC_VECTOR(7DOWNTO0);
en:
INSTD_LOGIC;
dr:
INSTD_LOGIC);
ENDENTITYtri_bigate;
ARCHITECTURErtlOFtri_bigate
SIGNALaout,bout:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
PROCESS(a,dr,en)IS
BEGIN
IF((en='0')AND(dr='1'))THEN
bout<=a;
7-237.1.4例出处:
ELSE
:
使用两个进程语句分别知识点bout<=ZZZZZZZZ;
对两个方向上的数据传输进行ENDIF;
描述。
b<=bout;
ENDPROCESS;PROCESS(b,dr,en)IS
BEGIN
IF((en='0')AND(dr='0'))THEN
aout<=b;
ELSE
aout<=ZZZZZZZZ;
ENDIF;
a<=aout;
ENDPROCESS;
ENDARCHITECTURErtl;
5
位矢量/整数转换器
x_flagz(i)
q
★程序1:
PROCEDUREvector_to_int
(z:
INSTD_LOGIC_VECTOR;
x_f1ag:
OUTBOOLEAN;
2-7例出处:
2.2.3
q:
INOUTINTEGER)IS
构造体采用子程序语句结知识点:
BEGIN,PROCEDURE)构的过程语句(q:
=0;
掌握语句的书写格式即使用方法。
x_f1ag:
=FALSE;
FORiINz'RANGELOOP
q:
=q*2;
IF(z(i)=1)THEN
q:
=q+1;
ELSIF(z(i)/=0)THEN
x_f1ag:
=TRUE;
ENDIF
ENDLOOP;
ENDPROCEDUREvector_to_int;
/整数转换器标准逻辑矢量
1:
★程序LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYadd5ISPORT(num:
INSTD_LOGIC_VECTOR(2DOWNTO0);
…);
ENDENTITYadd5;3-13.2.4例:
出处
ARCHITECTURErtlOFadd5IS:
程序中使用了转换函知识点SIGNALin_num:
INTEGERRANGE0TO5;语言中常用的转掌握数,VHDL
…换函数的使用方法和所在的包集合。
6
BEGIN
in_num<=CONV_INTEGER(num);
…
ENDARCHITECTURErtl;
7
并置运算器
★程序1:
3.3.4出处:
…:
注意位并置符的使用方知识点tmp_b<=bAND(en&en)&;en&en法和使用时的注意事项。
;&y<=atmp_b…
8
八位奇偶校验电路
a(0)a
(1)a
(2)a(3)
ya(4)
a(5)a(6)a(7)
:
★程序1LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYparity_checkIS
PORT(a:
INSTD_LOGIC_VECTOR(7DOWNTO0);
y:
OUTSTD_LOGIC);
ENDENTITYparity_check;
ARCHITECTURErtlOFparity_checkIS
BEGIN
PROCESS(a)IS
ARIABLEtmp:
STD_LOGIC;
V
5-135.1.7例出处:
BEGIN
语句的书写LOOP注意知识点:
tmp:
='0';
格式及使用。
FORiIN0TO7LOOP
tmp:
=tmpXORa(i);
ENDLOOP;
y<=tmp;
ENDPROCESS;
ENDARCHITECTURErtl;
:
★程序2
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;
ENTITYparity_checkIS
PORT(a:
INSTD_LOGIC_VECTOR(7DOWNTO0);
y:
OUTSTD_LOGIC);
parity_check;
ENDENTITY
ARCHITECTUREbehavOFparity_checkIS
BEGIN
PROCESS(a)IS
ARIABLEtmp:
STD_LOGIC;
V9
BEGIN
tmp:
='0';
i:
=0;
5-14
例:
5.1.7出处WHILE(i<8)LOOP条件的WHILE知识点:
使用带tmp:
=tmpXORa(i);语句描述八位奇偶校验电LOOPi:
=i+1;路的逻辑功能。
ENDLOOP;
y<=tmp;
ENDPROCESS;
ENDARCHITECTUREbehav;
10
加法器
1:
★程序LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYfull_adderIS
INSTD_LOGIC;PORT(a,b,cin:
OUTSTD_LOGIC);s,co:
ENDENTITYfull_adder;
ARCHITECTUREfull1OFfull_adderIS出处:
7.1.3例7-15
COMPONENThalf_adderIS知识点:
采用COMPONENT语INSTD_LOGIC;
PORT(a,b句PORTMA语句调用已定OUTSTD_LOGIC);
s,co:
义原件半加half_adde描述全ENDCOMPONENT;
加器
SIGNALu0_co,u0_s,u1_co:
STD_LOGIC;
BEGIN
u0:
half_adderPORTMAP(a,b,u0_s,u0_co);
u1:
half_adderPORTMAP(u0_s,cin,s,u1_co);
co<=u0_coORu1_co;
ENDARCHITECTUREfull1;
半加器LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYhalf_adderIS
INSTD_LOGIC;PORT(a,b:
OUTSTD_LOGIC);s,co:
ENDENTITYhalf_adder;
ARCHITECTUREhalf1OFhalf_adderIS
SIGNALc,d:
STD_LOGIC;
BEGIN
c<=aORb;
d<=aNANDb;
co<=NOTd;
s<=cANDd;
ENDARCHITECTUREhalf1;
11
二选一选择器
:
★程序1
ENTITYmuxIS
1.2出处:
GENERIC(m:
TIME:
=1ns);
:
理解硬件描述语言能知识点INBIT;PORT(d0,d1比电原理图更有效的表示硬件;sel:
INBIT电路的特性。
OUTBIT)q:
;
ENDENTITYmux;
ARCHITECTUREconnectOFmuxIS
BEGIN
PROCESS(d0,d1,sel)IS
2.1
:
出处ARIBLEtemp1,temp2,temp3:
BIT;
VVHDL知识点:
作为一个完整的BEGIN
程序出现,掌握程序框架的结temp1:
=d0ANDsel;
构;实体与构造体的书写格式;temp2:
=d1AND(NOTsel);
各项参数的含义。
temp3:
=temp1ORtemp2;
q<=temp3AFTERm;ENDPROCESS
ENDARCHITECTUREconnect;
:
(与程序1的描述方式一致,但对原件逻辑功能的描述更简单)2★程序
ENTITYmuxISINBIT;PORT(d0,d1:
sel:
INBIT;
2-3例出处:
2.1.2q:
OUTBIT);
:
构造体内部语句采用并知识点
;ENDENTITYmux与行处理方式,即介于BEGIN
ARCHITECTUREdataflowOFmuxIS之间的语句将会被同时执END
BEGIN
行。
12
q<=(d0ANDsel)OR(NOTselANDd1);
ENDARCHITECTUREdataflow;
★程序3:
ENTITYmuxIS
PORT(d0,d1,sel:
INBIT;
q:
OUTBIT);
ENDENTITYmux;
ARCHITECTUREconnectOFmuxIS
SIGNALtmp1,tmp2,tmp3:
BIT;
BEGIN
出处:
2.2.1例2-4
cale:
BLOCK
知识点:
构造体采用BLOCK结BEGIN
构,掌握块语句结构的书写格式tmp1<=d0ANDsel;
及使用方法。
tmp2<=d1AND(NOTsel);
tmp3<=tmp1ORtmp2;
q<=tmp3;
ENDBLOCKcale;
ENDARCHITECTUREconnect;
4:
★程序ENTITYmuxIS
sel:
INBIT;d1,PORT(d0,
q:
OUTBIT);
ENDENTITYmux;
ARCHITECTUREconnectOFmuxIS
BEGIN
sel)ISd1,cale:
PROCESS(d0,出处:
2.2.2例2-6
tmp3:
BIT;tmp2,VARIABLEtmp1,知识点:
构造体采用进程语句结BEGIN
构,掌握进程(PROCESS)语句tmp1:
=d0ANDsel;
结构的书写格式及使用方法。
tmp2:
=d1AND(NOTsel);
tmp3:
=tmp1ORtmp2;
q<=tmp3;
ENDPROCESScale;
ENDARCHITECTUREconnect;
★程序:
5ENTITYmux2IS
sel:
INBIT;d1,PORT(d0,
q:
OUTBIT);
ENDENTITYmux2;
ARCHITECTUREstructOFmux2IS
COMPONENTand2IS
13
INBIT;b:
PORT(a,c:
OUTBIT);
ENDCOMPONENT;
COMPONENTor2IS
PORT(a,b:
INBIT;
c:
OUTBIT);
ENDCOMPONENT;出处:
4.3.1例4-16
COMPONENTinvIS知识点:
二选一电路采用结构化PORT(a:
INBIT;的方式描述构造体,使用了c:
OUTBIT);COMPONENT语句和PORTENDCOMPONENT;MAP语句,属于最底层的描述方SIGNALaa,ab,nsel:
BIT;式,与实际电路最贴近。
BEGIN
PORTMAP(sel,nsel);
u1:
inv
u2:
and2PORTMAP(nsel,d1,ab);
u3:
and2PORTMAP(d0,sel,aa);
PORTMAP(aa,ab,q);u4:
or2
ENDARCHITECTUREstruct;
★程序6:
ARCHITECTURErtlOFmux2ISBEGINPROCESS(a,b,sel)IS
BEGIN
出5.1.55-7
IF(sel='1')THEN知识点:
利用IF语句的二选择控c<=a;制功能对二选一电路的逻辑控ELSE制进行描述。
c<=b;
ENDIF;
ENDPROCESS;ENDARCHITECTURErtl;
14
四选一选择器
:
★程序1LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYmux4IS
PORT(i0,i1,i2,i3,a,b:
INSTD_LOGIC;
q:
OUTSTD_LOGIC);
ENDENTITYmux4;
ARCHITECTUREbehavOFmux4IS
SIGNALsel:
INTEGER;
BEGIN
WITHselSELECT
q<=i0AFTER10nsWHEN0,
5-18
例:
5.2.4出处i1AFTER10nsWHEN1,:
注意选择信号代入语句知识点i2AFTER10nsWHEN2,
的使用。
条件并行执行,不具有i3AFTER10nsWHEN3,
优先级。
'X'AFTER10nsWHENOTHERS;
sel<=0WHENa='0'ANDb='0'ELSE
4-2
4.1.1:
例出处1WHENa='1'ANDb='0'ELSE
:
注意条件代入语句的使知识点2WHENa='0'ANDb='1'ELSE
用。
3WHENa='1'ANDb='1'ELSE
4;
ENDARCHITECTUREbehav;
2★程序:
15
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNS