组合逻辑电路设计案例_第1页
组合逻辑电路设计案例_第2页
组合逻辑电路设计案例_第3页
组合逻辑电路设计案例_第4页
组合逻辑电路设计案例_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE19目录目录简单门电路‥‥‥‥‥‥‥‥‥‥‥‥1三态门及总线缓冲器‥‥‥‥‥‥‥‥‥‥‥‥3转换器‥‥‥‥‥‥‥‥‥‥‥‥6并置运算器‥‥‥‥‥‥‥‥‥‥‥‥8奇偶校验器‥‥‥‥‥‥‥‥‥‥‥‥9加法器‥‥‥‥‥‥‥‥‥‥‥‥11选择器‥‥‥‥‥‥‥‥‥‥‥‥12编译码器‥‥‥‥‥‥‥‥‥‥‥‥18二输入与门★程序1:出处:4.1.1例4-1知识点:注意代入语句使用时与实际电路工作情况保持一致,延时是必须要考虑的因素。ENTITYand2IS

PORT(a,b:INBIT;

c:OUTBIT);

ENDENTITYand2;

ARCHITECTUREand2_behavOFand2IS

BEGIN出处:4.1.1例4-1知识点:注意代入语句使用时与实际电路工作情况保持一致,延时是必须要考虑的因素。★程序2:ENTITYand2IS

GENERIC(rise,fall:TIME);

PORT(a,b:INBIT;

c:OUTBIT)

ENDENTITYand2;

ARCHITECTUREbehavOFand2IS

SIGNALinternal:BIT;

BEGIN

internal<=aANDb;出处:4.1.4例4-4知识点:GENERIC语句常用于不同层次之间点的信息传递,该例中使用GENERIC语句分别对信号的上升时间和下降时间进行了定义。c<=internalAFTER(rise)WHENinternal='1'ELSE

internalAFTER(出处:4.1.4例4-4知识点:GENERIC语句常用于不同层次之间点的信息传递,该例中使用GENERIC语句分别对信号的上升时间和下降时间进行了定义。★程序3:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYnand2IS

PORT(a,b: INSTD_LOGIC;

y: OUTSTD_LOGIC);

ENDENTITYnand2;

ARCHITECTUREnand2_2OFnand2IS

BEGIN

t1:PROCESS(a,b)IS出处:7.1.1例7-2知识点:采用RTL方式描述构造体,使用CASE语句实现器件的逻辑功能。VARIABLEcomb:STD_LOGIC_VECTOR(1DOWNTO0);

BEGIN

comb:=a&b;

CASEcombIS

WHEN"00"=>y<='1';

WHEN"01"=>y<='1';

WHEN"10"=>y<='1';

WHEN"11"=>y<='0';

WHENOTHERS=>y<='X';

ENDCASE;

出处:7.1.1例7-2知识点:采用RTL方式描述构造体,使用CASE语句实现器件的逻辑功能。三态门电路★程序1:出处:7.1.4例7-15知识点:利用IF语句的多选择分支功能描述三态门,注意输入、输出间的控制关系。LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYtri_gateIS

PORT(din,en: INSTD_LOGIC;

dout: OUTSTD_LOGIC);

ENDENTITYtri_gate;

ARCHITECTUREzasOFtri_gateIS

出处:7.1.4例7-15知识点:利用IF语句的多选择分支功能描述三态门,注意输入、输出间的控制关系。IF(en='1')THEN

dout<=din;

ELSE

dout<='Z';

ENDIF;

ENDPROCESS;

ENDARCHITECTUREzas;★程序2:出处:7.1.4例7-16知识点:使用卫式BLOCK结构描述,注意条件的设立。ARCHITECTUREblkOFtri_gateIS

BEGIN

tri_gate2:BLOCK(en='1')

BEGIN

出处:7.1.4例7-16知识点:使用卫式BLOCK结构描述,注意条件的设立。八位单向总线缓冲器★程序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出处:7.1.4例7-15知识点:采用进程结构,使用IF语句描述器件逻辑功能。tri_buff:PROCESS(en,din)IS

BEGIN

IF(en='1')THEN

dout<=din;

ELSE

dout<="ZZZZZZZZ";

出处:7.1.4例7-15知识点:采用进程结构,使用IF语句描述器件逻辑功能。双向总线缓冲器★程序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出处:7.1.4例7-23知识点:使用两个进程语句分别对两个方向上的数据传输进行描述。SIGNALaout,bout:STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

PROCESS(a,dr,en)IS

BEGIN

IF((en='0')AND(dr='1'))THEN

bout<=a;

ELSE

bout<="ZZZZZZZZ";

出处:7.1.4例7-23知识点:使用两个进程语句分别对两个方向上的数据传输进行描述。ENDPROCESS;

PROCESS(b,dr,en)IS

BEGIN

IF((en='0')AND(dr='0'))THEN

aout<=b;

ELSE

aout<="ZZZZZZZZ";

ENDIF;

a<=aout;

ENDPROCESS;

ENDARCHITECTURErtl;位矢量/整数转换器z(i)z(i)x_flagq★程序1:出处:2.2.3例2-7知识点:构造体采用子程序语句结构的过程语句(PROCEDURE),掌握语句的书写格式即使用方法。PROCEDUREvector_to_int

(z:INSTD_LOGIC_VECTOR;

x_f1ag:OUTBOOLEAN;

q:INOUTINTEGER)IS

BEGIN

q:=0;

x_f1ag:=FALSE;

出处:2.2.3例2-7知识点:构造体采用子程序语句结构的过程语句(PROCEDURE),掌握语句的书写格式即使用方法。IF(z(i)=1)THEN

q:=q+1;

ELSIF(z(i)/=0)THEN

x_f1ag:=TRUE;

ENDIF

ENDLOOP;

ENDPROCEDUREvector_to_int;标准逻辑矢量/整数转换器★程序1:出处:3.2.4例3-1知识点:程序中使用了转换函数,掌握VHDL语言中常用的转换函数的使用方法和所在的包集合。LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYadd5IS

PORT(num:INSTD_LOGIC_VECTOR(2DOWNTO0);

…出处:3.2.4例3-1知识点:程序中使用了转换函数,掌握VHDL语言中常用的转换函数的使用方法和所在的包集合。ARCHITECTURErtlOFadd5IS

SIGNALin_num:INTEGERRANGE0TO5;

BEGIN

in_num<=CONV_INTEGER(num);

ENDARCHITECTURErtl;并置运算器★程序1:出处出处:3.3.4知识点:注意位并置符的使用方法和使用时的注意事项。…tmp_b<=bAND(en&en&en&en);

y<=a&tmp_b;…八位奇偶校验电路a(a(4)a(0)a(1)a(2)a(3)a(5)a(6)a(7)y★程序1:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYparity_checkIS

PORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);

 y:OUTSTD_LOGIC);

ENDENTITYparity_check;

ARCHITECTURErtlOFparity_checkIS

BEGIN

PROCESS(a)IS出处:5.1.7例5-13知识点:注意LOOP语句的书写格式及使用。VARIABLEtmp:STD_LOGIC;

BEGIN

tmp:='0';

FORiIN0TO7LOOP

tmp:=tmpXORa(i);

ENDLOOP;

y<=tmp;

出处:5.1.7例5-13知识点:注意LOOP语句的书写格式及使用。★程序2:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYparity_checkIS

PORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);

 y:OUTSTD_LOGIC);

ENDENTITYparity_check;

ARCHITECTUREbehavOFparity_checkIS

BEGIN

PROCESS(a)ISVARIABLEtmp:STD_LOGIC;

BEGIN

tmp:='0';

i:=0;

WHILE(i<8)LOOP

tmp:=tmpXORa(i);

i:=i+1;

ENDLOOP;

y<=tmp;

ENDPROCESS;

ENDARCHITECTUREbehav;出处出处:5.1.7例5-14知识点:使用带WHILE条件的LOOP语句描述八位奇偶校验电路的逻辑功能。加法器★程序1:出处:7.1.3例7-15知识点:采用COMPONENT语句和PORTMAP语句调用已定义原件半加器half_adder描述全加器。LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYfull_adderIS

PORT(a,b,cin: INSTD_LOGIC;

 s,co: OUTSTD_LOGIC);

ENDENTITYfull_adder;

ARCHITECTUREfull1OFfull_adderIS

出处:7.1.3例7-15知识点:采用COMPONENT语句和PORTMAP语句调用已定义原件半加器half_adder描述全加器。s,co: OUTSTD_LOGIC);

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

PORT(a,b: INSTD_LOGIC;

s,co: OUTSTD_LOGIC);

ENDENTITYhalf_adder;

ARCHITECTUREhalf1OFhalf_adderIS

SIGNALc,d:STD_LOGIC;

BEGIN

c<=aORb;d<=aNANDb;

co<=NOTd;

s<=cANDd;

ENDARCHITECTUREhalf1;二选一选择器★程序1:出处:1.2知识点:理解硬件描述语言能够比电原理图更有效的表示硬件电路的特性。ENTITYmuxIS出处:1.2知识点:理解硬件描述语言能够比电原理图更有效的表示硬件电路的特性。PORT(d0, d1:INBIT;

  sel:INBIT;

  q:OUTBIT);

ENDENTITYmux;

ARCHITECTUREconnectOFmuxIS

BEGIN出处:2.1出处:2.1知识点:作为一个完整的VHDL程序出现,掌握程序框架的结构;实体与构造体的书写格式;各项参数的含义。VARIBLEtemp1,temp2,temp3:BIT;BEGINtemp1:=d0ANDsel;temp2:=d1AND(NOTsel);temp3:=temp1ORtemp2;q<=temp3AFTERm;

ENDPROCESSENDARCHITECTUREconnect;★程序2(与程序1的描述方式一致,但对原件逻辑功能的描述更简单):出处:2.1.2例2-3知识点:构造体内部语句采用并行处理方式,即介于BEGIN与END之间的语句将会被同时执行。ENTITYmuxIS

PORT(d0, d1:INBIT;

  sel:INBIT;

  q:OUTBIT);

ENDENTITYmux;

ARCHITECTUREdataflowOFmuxIS

出处:2.1.2例2-3知识点:构造体内部语句采用并行处理方式,即介于BEGIN与END之间的语句将会被同时执行。★程序3:ENTITYmuxIS

PORT(d0,d1,sel:INBIT;

q:OUTBIT);

ENDENTITYmux;

ARCHITECTUREconnectOFmuxIS

SIGNALtmp1,tmp2,tmp3:BIT;

BEGIN

cale:BLOCK出处:2.2.1例2-4知识点:构造体采用BLOCK结构,掌握块语句结构的书写格式及使用方法。BEGIN

tmp1<=d0ANDsel;

出处:2.2.1例2-4知识点:构造体采用BLOCK结构,掌握块语句结构的书写格式及使用方法。★程序4:出处:2.2.2例2-6知识点:构造体采用进程语句结构,掌握进程(PROCESS)语句结构的书写格式及使用方法。ENTITYmuxIS

PORT(d0, d1, sel:INBIT;

q:OUTBIT);

ENDENTITYmux;

ARCHITECTUREconnectOFmuxIS

BEGIN

cale:PROCESS(d0, d1,出处:2.2.2例2-6知识点:构造体采用进程语句结构,掌握进程(PROCESS)语句结构的书写格式及使用方法。tmp1:=d0ANDsel;

tmp2:=d1AND(NOTsel);

tmp3:=tmp1ORtmp2;

q<=tmp3;

ENDPROCESScale;

ENDARCHITECTUREconnect;★程序5:ENTITYmux2IS

PORT(d0, d1, sel:INBIT;

 q:OUTBIT);

ENDENTITYmux2;

ARCHITECTUREstructOFmux2IS

COMPONENTand2IS

PORT(a, b: INBIT;

c: OUTBIT);

ENDCOMPONENT;出处:4.3.1例4-16知识点:二选一电路采用结构化的方式描述构造体,使用了COMPONENT语句和PORTMAP语句,属于最底层的描述方式,与实际电路最贴近。COMPONENTor2IS

PORT(a, b:INBIT;

c:OUTBIT);

ENDCOMPONENT;

COMPONENTinvIS

PORT(a:INBIT;

c:OUTBIT);

ENDCOMPONENT;

出处:4.3.1例4-16知识点:二选一电路采用结构化的方式描述构造体,使用了COMPONENT语句和PORTMAP语句,属于最底层的描述方式,与实际电路最贴近。u2:and2PORTMAP(nsel,d1,ab);

u3:and2PORTMAP(d0,sel,aa);

u4:or2PORTMAP(aa,ab,q);

ENDARCHITECTUREstruct;★程序6:出处:出处:5.1.5例5-7知识点:利用IF语句的二选择控制功能对二选一电路的逻辑控制进行描述。BEGINPROCESS(a,b,sel)ISBEGINIF(sel='1')THENc<=a;ELSEc<=b;ENDIF;ENDPROCESS;ENDARCHITECTURErtl;四选一选择器★程序1:LIBRARYIEEE;

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;出处:5.2.4例5-18知识点:注意选择信号代入语句的使用。条件并行执行,不具有优先级。出处:4.1.1例4-2知识点:注意条件代入语句的使用。BEGIN

WITHselSELECT

q<=i0AFTER10nsWHEN0,

i1AFTER10nsWHEN1,

i2AFTER10nsWHEN2,

i3AFTER10nsWHEN3,

'X'AFTER10nsWHENOTHERS;出处:5.2.4例5-18知识点:注意选择信号代入语句的使用。条件并行执行,不具有优先级。出处:4.1.1例4-2知识点:注意条件代入语句的使用。3WHENa='1'ANDb='1'ELSE

4;

ENDARCHITECTUREbehav;★程序2:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGEND.ALL;

ENTITYmux4IS

PORT(input:INSTD_LOGIC_VECTOR(3DOWNTO0);

sel:INSTD_LOGIC_VECTOR(1DOWNTO0);

y:OUTSTD_LOGIC);出处:4.2.1例4-6知识点:采用RTL描述方式描述四选一电路,注意构造体的逻辑功能描述的方法,与上例进行比较。ENDENTITYmux4;

ARCHITECTURErtlOFmux4IS

BEGIN

y<=input(0)WHENsel="00"ELSE

出处:4.2.1例4-6知识点:采用RTL描述方式描述四选一电路,注意构造体的逻辑功能描述的方法,与上例进行比较。★程序3:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux4IS

PORT(input:INSTD_LOGIC_VECTOR(3DOWNTO0);

  sel:INSTD_LOGIC_VECTOR(1DOWNTO0);

y:OUTSTD_LOGIC);

ENDENTITYmux4;

ARCHITECTURErtlOFmux4IS

BEGIN出处:5.1.5例5-8知识点:利用IF语句的多选择控制功能对四选一电路的逻辑功能进行描述;选择条件顺序执行,具有优先级。注意语句自身为顺序语句。PROCESS(input,sel)IS

BEGIN

IF(sel="00")THEN

y<=input(0);

ELSIF(sel="01")THEN

y<=input(1);

ELSIF(sel="10")THEN

出处:5.1.5例5-8知识点:利用IF语句的多选择控制功能对四选一电路的逻辑功能进行描述;选择条件顺序执行,具有优先级。注意语句自身为顺序语句。ENDIF;

ENDPROCESS;

ENDARCHITECTURErtl;★程序4:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux4IS

PORT(a,b,i0,i1,i2,i3:INSTD_LOGIC;

q:OUTSTD_LOGIC);

ENDENTITYmux4;

ARCHITECTUREmux4_behaveOFmux4IS

SIGNALsel:INTEGERRANGE0TO3;

BEGIN出处:5.1.6例5-9知识点:利用CASE语句的多选择控制功能对四选一电路的逻辑功能进行描述;选择条件并行执行,不具有优先级。注意语句自身为顺序语句。B:PROCESS(a,b,i0,i1,i2,i3)IS

BEGIN

sel<='0';

IF(a='1')THEN

sel<=sel+1;

ENDIF;

IF(b='1')THEN

sel<=sel+2;

出处:5.1.6例5-9知识点:利用CASE语句的多选择控制功能对四选一电路的逻辑功能进行描述;选择条件并行执行,不具有优先级。注意语句自身为顺序语句。WHEN0=>q<=i0;

WHEN1=>q<=i1;

WHEN2=>q<=i2;

WHEN3=>q<=i3;

ENDCASE;

ENDPROCESS;

ENDARCHITECTUREmux4_behave;★程序5:出处:5.2.3例5-17知识点:利用条件信号代入语句对四选一电路的逻辑功能进行描述;条件顺序执行,具有优先级。注意语句自身为并发语句。ENTITYmux4IS

PORT(i0,i1,i2,i3,a,b:INSTD_LOGIC;

q:OUTSTD_LOGIC);

ENDENTITYmux4;

ARCHITECTURErtlOFmux4IS

SIGNALsel:STD_LOGIC_VECTOR(1DOWNTO0);出处:5.2.3例5-17知识点:利用条件信号代入语句对四选一电路的逻辑功能进行描述;条件顺序执行,具有优先级。注意语句自身为并发语句。q<=i0WHENsel="00"ELSE

i1WHENsel="01"ELSE

i2WHENsel="10"ELSE

i3WHENsel="11"ELSE

'X';

ENDARCHITECTURErtl;三-八译码器★程序1:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYdecode_3to8IS

PORT(a,b,c,G1,G2A,G2B:INSTD_LOGIC;

y:OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDENTITYdecode_3to8;

ARCHITECTURErtlOFdecode_3to8IS

SIGNALindata:STD_LOGIC_VECTOR(2DOWNTO0);

BEGIN出处:5.1.6例5-10知识点:利用CASE语句对译码器的逻辑功能进行描述,注意体会语句内部的并行执行过程与WHENOTHERS的使用。indata<=c&b&a;

PROCESS(indata,G1,G2A,G2B)IS

BEGIN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论