版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
EDA技術(shù)與VHDL
第3章VHDL基礎(chǔ)
3.1VHDL基本語法
3.1.1組合電路描述圖3-1mux21a實(shí)體
圖3-2mux21a結(jié)構(gòu)體
3.1VHDL基本語法3.1.1組合電路描述【例3-1】ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINy<=aWHENs='0'ELSEb;ENDARCHITECTUREone;3.1VHDL基本語法3.1.1組合電路描述【例3-2】
ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISSIGNALd,e:BIT;BEGINd<=aAND(NOTS);e<=bANDs;y<=dORe;ENDARCHITECTUREone;
3.1VHDL基本語法【例3-3】
ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs='0'THENy<=a;ELSEy<=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;
3.1.1組合電路描述3.1VHDL基本語法圖3-3mux21a功能時序波形
3.1.1組合電路描述3.1VHDL基本語法3.1.2VHDL結(jié)構(gòu)【例3-4】ENTITYe_nameISPORT(p_name:port_mdata_type;...
p_namei:port_midata_type);ENDENTITYe_name;1.實(shí)體表達(dá)3.1VHDL基本語法2.實(shí)體名3.端口語句和端口信號名4.端口模式“IN”、“OUT”、“INOUT”、“BUFFER”5.數(shù)據(jù)類型3.1VHDL基本語法6.結(jié)構(gòu)體表達(dá)【例3-5】ARCHITECTUREarch_nameOFe_nameIS[說明語句]BEGIN(功能描述語句)ENDARCHITECTUREarch_name;3.1VHDL基本語法7.賦值符號和數(shù)據(jù)比較符號
IFaTHEN...--注意,a的數(shù)據(jù)類型必須是booleanIF(s1='0')AND(s2='1')OR(c<b+1)THEN..
8.邏輯操作符BIT、BOOLEAN、STD_LOGICAND(與)、OR(或)、NAND(與非)、NOR(或非)、XOR(異或)、XNOR(同或)和NOT(取反)3.1VHDL基本語法9.條件語句10.WHEN_ELSE條件信號賦值語句賦值目標(biāo)<=表達(dá)式WHEN賦值條件ELSE表達(dá)式WHEN賦值條件ELSE...
表達(dá)式;z<=aWHENp1='1'ELSEbWHENp2='1'ELSEc;
3.1VHDL基本語法11.進(jìn)程語句和順序語句12.文件取名和存盤IF_THEN_ELSE_ENDIF;
PROCESS...ENDPROCESS
“.vhd”
adder_f.vhd
3.2時序電路描述3.2.1D觸發(fā)器【例3-6】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF1ISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF1ISSIGNALQ1:STD_LOGIC;--類似于在芯片內(nèi)部定義一個數(shù)據(jù)的暫存節(jié)點(diǎn)
BEGINPROCESS(CLK,Q1)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=D;ENDIF;ENDPROCESS;Q<=Q1;--將內(nèi)部的暫存數(shù)據(jù)向端口輸出(雙橫線--是注釋符號)
ENDbhv;
圖3-4D觸發(fā)器
3.2時序電路描述3.2.2時序描述VHDL規(guī)則
1.標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類型STD_LOGICBIT數(shù)據(jù)類型定義:
TYPEBITIS('0','1');--只有兩種取值STD_LOGIC數(shù)據(jù)類型定義:
TYPESTD_LOGICIS('U','X','0','1','Z','W','L','H','-');--有9種取值
3.2時序電路描述2.設(shè)計(jì)庫和標(biāo)準(zhǔn)程序包LIBRARYWORK;LIBRARYSTD;USESTD.STANDARD.ALL;
LIBRARY<設(shè)計(jì)庫名>;USE<設(shè)計(jì)庫名>.<程序包名>.ALL;
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;
3.2時序電路描述3.信號定義和數(shù)據(jù)對象<信號名>'EVENT
4.上升沿檢測表式和信號屬性函數(shù)EVENT5.不完整條件語句與時序電路3.2時序電路描述【例3-7】ENTITYCOMP_BADISPORT(a1,b1:INBIT;q1:OUTBIT);END;ARCHITECTUREoneOFCOMP_BADISBEGINPROCESS(a1,b1)BEGINIFa1>b1THENq1<='1';ELSIFa1<b1THENq1<='0';--未提及當(dāng)a1=b1時,q1作何操作ENDIF;ENDPROCESS;END;3.2時序電路描述圖3-5例3-7的電路圖
3.2時序電路描述圖3-6例3-8的電路圖
【例3-8】...IFa1>b1THENq1<='1';ELSEq1<='0';ENDIF;...
3.2時序電路描述3.2.3時序電路的不同表述【例3-9】...PROCESS(CLK)BEGINIFCLK'EVENTAND(CLK='1')AND(CLK'LAST_VALUE='0')THENQ<=D;--確保CLK的變化是一次上升沿的跳變
ENDIF;ENDPROCESS;【例3-10】...PROCESS(CLK)BEGINIFCLK='1'ANDCLK'LAST_VALUE='0'--同例3-9THENQ<=D;ENDIF;ENDPROCESS;3.2時序電路描述【例3-11】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISSIGNALQ1:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFrising_edge(CLK)--必須打開STD_LOGIC_1164程序包
THENQ1<=D;ENDIF;ENDPROCESS;Q<=Q1;--在此,賦值語句可以放在進(jìn)程外,作為并行賦值語句
END;3.2時序電路描述3.2.3實(shí)現(xiàn)時序電路的不同表述【例3-12】...PROCESSBEGINwaituntilCLK='1';--利用wait語句
Q<=D;ENDPROCESS;3.2時序電路描述【例3-13】...PROCESS(CLK)BEGINIFCLK='1'THENQ<=D;--利用進(jìn)程的啟動特性產(chǎn)生對CLK的邊沿檢測
ENDIF;ENDPROCESS圖3-7例3-13的時序波形
3.2時序電路描述【例3-14】...PROCESS(CLK,D)BEGINIFCLK='1'--電平觸發(fā)型寄存器
THENQ<=D;ENDIF;ENDPROCESS;
圖3-8例3-14的時序波形
3.3全加器的VHDL描述3.3.1半加器描述圖3-9全加器f_adder電路圖及其實(shí)體模塊3.3全加器的VHDL描述
3.3.1半加器描述圖3-10半加器h_adder電路圖及其真值表
3.3全加器的VHDL描述3.3.1半加器描述【例3-15】LIBRARYIEEE;--半加器描述(1):布爾方程描述方法USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREfh1OFh_adderisBEGINso<=NOT(aXOR(NOTb));co<=aANDb;ENDARCHITECTUREfh1;3.3全加器的VHDL描述【例3-16】LIBRARYIEEE;--半加器描述(2):真值表描述方法USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREfh1OFh_adderisSIGNALabc:STD_LOGIC_VECTOR(1DOWNTO0);--定義標(biāo)準(zhǔn)邏輯位矢量數(shù)據(jù)類型BEGIN
abc<=a&b;--a相并b,即a與b并置操作
PROCESS(abc)BEGINCASEabcIS--類似于真值表的CASE語句
WHEN"00"=>so<='0';co<='0';WHEN"01"=>so<='1';co<='0';WHEN"10"=>so<='1';co<='0';WHEN"11"=>so<='0';co<='1';WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;ENDARCHITECTUREfh1;3.3全加器的VHDL描述3.3.1半加器描述【例3-17】
LIBRARYIEEE;--或門邏輯描述
USEIEEE.STD_LOGIC_1164.ALL;ENTITYor2aISPORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDENTITYor2a;
ARCHITECTUREoneOFor2aISBEGINc<=aORb;ENDARCHITECTUREone;3.3全加器的VHDL描述【例3-18】
LIBRARYIEEE;--1位二進(jìn)制全加器頂層設(shè)計(jì)描述
USEIEEE.STD_LOGIC_1164.ALL;ENTITYf_adderISPORT(ain,bin,cin:INSTD_LOGIC;
cout,sum:OUTSTD_LOGIC);ENDENTITYf_adder;ARCHITECTUREfd1OFf_adderISCOMPONENTh_adder--調(diào)用半加器聲明語句
PORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDCOMPONENT;
COMPONENTor2aPORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALd,e,f:STD_LOGIC;--定義3個信號作為內(nèi)部的連接線。
BEGINu1:h_adderPORTMAP(a=>ain,b=>bin,co=>d,so=>e);--例化語句
u2:h_adderPORTMAP(a=>e,
b=>cin,
co=>f,so=>sum);u3:or2aPORTMAP(a=>d,
b=>f,
c=>cout);ENDARCHITECTUREfd1;3.3全加器的VHDL描述3.3.2CASE語句
1.
CASE語句
CASE<表達(dá)式>ISWhen<選擇值或標(biāo)識符>=><順序語句>;...;<順序語句>;When<選擇值或標(biāo)識符>=><順序語句>;...;<順序語句>;...WHENOTHERS=><順序語句>;ENDCASE;3.3全加器的VHDL描述2.標(biāo)準(zhǔn)邏輯矢量數(shù)據(jù)類型
B<="01100010";--B(7)為
'0'B(4DOWNTO1)<="1101";--B(4)為
'1'B(7DOWNTO4)<=A;--B(6)等于
A(2)
SIGNALC:BIT_VECTOR(3DOWNTO0);
B:OUTSTD_LOGIC_VECTOR(7DOWNTO0);或SIGNALA:STD_LOGIC_VECTOR(1TO4)3.3全加器的VHDL描述3.并置操作符
SIGNALa:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALd:STD_LOGIC_VECTOR(1DOWNTO0);...a<='1'
'0'
d(1)
'1';--元素與元素并置,并置后的數(shù)組長度為4...IFa
d="101011"THEN...–-在IF條件句中可以使用并置符
3.3全加器的VHDL描述3.3.3例化語句
COMPONENT元件名ISPORT(端口名表);
ENDCOMPONENT文件名;COMPONENTh_adderPORT(c,d:INSTD_LOGIC;e,f:OUTSTD_LOGIC);例化名
:元件名
PORTMAP([端口名
=>]連接端口名,...);3.4計(jì)數(shù)器設(shè)計(jì)【例3-19】ENTITYCNT4ISPORT(CLK:INBIT;Q:BUFFERINTEGERRANGE15DOWNTO0);END;ARCHITECTUREbhvOFCNT4ISBEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ<=Q+1;ENDIF;ENDPROCESS;ENDbhv;
3.4計(jì)數(shù)器設(shè)計(jì)1.程序說明
表式Q<=Q+1的右項(xiàng)與左項(xiàng)并非處于相同的時刻內(nèi),對于時序電路,除了傳輸延時外,前者的結(jié)果出現(xiàn)于當(dāng)前時鐘周期;后者,即左項(xiàng)要獲得當(dāng)前的Q+1,需等待下一個時鐘周期。
3.4計(jì)數(shù)器設(shè)計(jì)2.?dāng)?shù)據(jù)類型說明
1 十進(jìn)制整數(shù)0 十進(jìn)制整數(shù)35 十進(jìn)制整數(shù)10E3 十進(jìn)制整數(shù),等于十進(jìn)制整數(shù)100016#D9# 十六進(jìn)制整數(shù),等于十六進(jìn)制整數(shù)D9H8#720# 八進(jìn)制整數(shù),等于八進(jìn)制整數(shù)720O2#11010010#二進(jìn)制整數(shù),等于二進(jìn)制整數(shù)11010010B
Q:BUFFERNATURALRANGE15DOWNTO0;Q:BUFFERINTEGERRANGE15DOWNTO0;
3.4計(jì)數(shù)器設(shè)計(jì)3.計(jì)數(shù)器的其他表述方法
【例3-20】
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT4ISPORT(CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;ARCHITECTUREbhvOFCNT4ISSIGNALQ1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=Q1+1;ENDIF;ENDPROCESS;Q<=Q1;ENDbhv;
3.5一般計(jì)數(shù)器的VHDL設(shè)計(jì)方法
【例3-21】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLK,RST,EN:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:OUTSTD_LOGIC);ENDCNT10;ARCHITECTUREbehavOFCNT10ISBEGINPROCESS(CLK,RST,EN)VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFRST='1'THENCQI:=(OTHERS=>'0');--計(jì)數(shù)器異步復(fù)位
ELSIFCLK'EVENTANDCLK='1'THEN--檢測時鐘上升沿
IFEN='1'THEN--檢測是否允許計(jì)數(shù)(同步使能)
IFCQI<9THENCQI:=CQI+1;--允許計(jì)數(shù),檢測是否小于9ELSECQI:=(OTHERS=>'0');--大于9,計(jì)數(shù)值清零
ENDIF;ENDIF;ENDIF;IFCQI=9THENCOUT<='1';--計(jì)數(shù)大于9,輸出進(jìn)位信號
ELSECOUT<='0';ENDIF;CQ<=CQI;--將計(jì)數(shù)值向端口輸出
ENDPROCESS;ENDbehav;
3.5一般計(jì)數(shù)器的VHDL設(shè)計(jì)方法3.5.1相關(guān)語法
SIGNALd1:STD_LOGIC_VECTOR(4DOWNTO0);VARIABLEa1:STD_LOGIC_VECTOR(15DOWNTO0);
...d1<=(OTHERS=>'0');a1:=(OTHERS=>'0');d1<=(1=>e(3),3=>e(5),OTHERS=>e(1));
f<=e(1)&e(5)&e(1)&e(3)&e(1);
3.5一般計(jì)數(shù)器的VHDL設(shè)計(jì)方法3.5.2程序功能分析圖3-11例3-21的RTL電路(Synplify綜合)
3.5一般計(jì)數(shù)器的VHDL設(shè)計(jì)方法3.5.2程序功能分析圖3-12例3-21的工作時序
3.5一般計(jì)數(shù)器的VHDL設(shè)計(jì)方法3.5.3移位寄存器設(shè)計(jì)【例3-22】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSHFRTIS--8位右移寄存器
PORT(CLK,LOAD:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);QB:OUTSTD_LOGIC);ENDSHFRT;ARCHITECTUREbehavOFSHFRTISBEGINPROCESS(CLK,LOAD)VARIABLEREG8:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFCLK'EVENTANDCLK='1'THENIFLOAD='1'THENREG8:=DIN;--由(LOAD='1')裝載新數(shù)據(jù)
ELSEREG8(6DOWNTO0):=REG8(7DOWNTO1);ENDIF;ENDIF;QB<=REG8(0);--輸出最低位
ENDPROCESS;ENDbehav;3.5一般計(jì)數(shù)器的VHDL設(shè)計(jì)方法3.5.3移位寄存器設(shè)計(jì)圖3-13例3-22的工作時序
3.6數(shù)據(jù)對象
3.6.1常數(shù)
CONSTANT常數(shù)名:數(shù)據(jù)類型
:=表達(dá)式
;
CONSTANTFBT:STD_LOGIC_VECTOR:="010110";--標(biāo)準(zhǔn)位矢類型
CONSTANTDATAIN:INTEGER:=15;--整數(shù)類型
3.6數(shù)據(jù)對象
3.6.2變量
VARIABLE變量名
:數(shù)據(jù)類型
:=初始值
;VARIABLEa:INTEGERRANGE0TO15;--變量a定義為常數(shù),取值范圍是0到5VARIABLEd:STD_LOGIC:=‘1’;--變量a定義為標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類型,初始值是1
目標(biāo)變量名
:=表達(dá)式
;VARIABLEx,y:INTEGERRANGE15DOWNTO0;--分別定義變量x和y為整數(shù)類型VARIABLEa,b:STD_LOGIC_VECTOR(7DOWNTO0);x:=11;y:=2+x;--運(yùn)算表達(dá)式賦值,y也是實(shí)數(shù)變量a:=b--b向a賦值
a(0TO5):=b(2TO7);
3.6數(shù)據(jù)對象
3.6.3信號
SIGNAL信號名:
數(shù)據(jù)類型
:=初始值
;
目標(biāo)信號名
<=表達(dá)式
AFTER時間量;SIGNALa,b,c,y,z:INTEGER;
...PROCESS(a,b,c)BEGINy<=a+b;z<=c–a;y<=b;ENDPROCESS;
3.6數(shù)據(jù)對象
3.6.4進(jìn)程中的信號賦值與變量賦值
信號SIGNAL變量VARIABLE基本用法用于作為電路中的信號連線用于作為進(jìn)程中局部數(shù)據(jù)存儲單元適用范圍在整個結(jié)構(gòu)體內(nèi)的任何地方都能適用只能在所定義的進(jìn)程中使用行為特性在進(jìn)程的最后才對信號賦值立即賦值表3-1信號與變量賦值語句功能的比較
3.6數(shù)據(jù)對象
3.6.4進(jìn)程中的信號賦值與變量賦值
【例3-23】
ARCHITECTUREbhvOFDFF3ISBEGINPROCESS(CLK)VARIABLEQQ:STD_LOGIC;BEGINIFCLK'EVENTANDCLK='1'THENQQ:=D1;ENDIF;ENDPROCESS;Q1<=QQ;
END;
3.6數(shù)據(jù)對象
3.6.4進(jìn)程中的信號賦值與變量賦值
【例3-24】ARCHITECTUREbhvOFDFF3ISSIGNALQQ:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQQ<=D1;ENDIF;ENDPROCESS;Q1<=QQ;
END;
3.6數(shù)據(jù)對象
【例3-25】
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D1:INSTD_LOGIC;Q1:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISSIGNALA,B:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENA<=D1;B<=A;Q1<=B;ENDIF;ENDPROCESS;
END;3.6數(shù)據(jù)對象
【例3-26】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D1:INSTD_LOGIC;Q1:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISBEGINPROCESS(CLK)VARIABLEA,B:STD_LOGIC;BEGINIFCLK'EVENTANDCLK='1'THENA:=D1;B:=A;Q1<=B;ENDIF;ENDPROCESS;
END;
3.6數(shù)據(jù)對象
3.6.4進(jìn)程中的信號賦值與變量賦值
圖3-15例3-26的RTL電路
圖3-16D觸發(fā)器電路
3.6數(shù)據(jù)對象
【例3-27】
SIGNALin1,in2,e1,
...:
STD_LOGIC;...PROCESS(in1,in2,
...)VARIABLEc1,...:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFin1='1'THEN...–-第
1行
e1<="1010";
–-第
2行
...IFin2='0'THEN...–-第
15+n行
...c1:="0011";
–-第
30+m行
...ENDIF;
ENDPROCESS;【例3-28】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux4ISPORT(i0,i1,i2,i3,a,b:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDmux4;ARCHITECTUREbody_mux4OFmux4ISsignalmuxval:integerrange7downto0;BEGINprocess(i0,i1,i2,i3,a,b)begin
muxval<=0;if(a='1')thenmuxval<=muxval+1;endif;if(b='1')thenmuxval<=muxval+2;endif;casemuxvaliswhen0=>q<=i0;when1=>q<=i1;when2=>q<=i2;when3=>q<=i3;whenothers=>null;endcase;endprocess;ENDbody_mux4;【例3-29】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux4ISPORT(i0,i1,i2,i3,a,b:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDmux4;ARCHITECTUREbody_mux4OFmux4ISBEGINprocess(i0,i1,i2,i3,a,b)variablemuxval:integerrange7downto0;begin
muxval:=0;if(a='1')thenmuxval:=muxval+1;endif;if(b='1')thenmuxval:=muxval+2;endif;casemuxvaliswhen0=>q<=i0;when1=>q<=i1;when2=>q<=i2;when3=>q<=i3;whenothers=>null;endcase;endprocess;ENDbody_mux4;圖3-16例3-28的RTL電路
圖3-17例3-29的RTL電路
3.6數(shù)據(jù)對象
3.6.4進(jìn)程中的信號賦值與變量賦值
圖3-18例3-28中錯誤的工作時序
3.6數(shù)據(jù)對象
3.6.4進(jìn)程中的信號賦值與變量賦值
圖3-19例3-29中正確的工作時序
【例3-30】LibraryIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSHIFTIS PORT(CLK,C0:INSTD_LOGIC;--時鐘和進(jìn)位輸入
MD:INSTD_LOGIC_VECTOR(2DOWNTO0);--移位模式控制字
D:INSTD_LOGIC_VECTOR(7DOWNTO0);--待加載移位的數(shù)據(jù)
QB:OUTSTD_LOGIC_VECTOR(7DOWNTO0);--移位數(shù)據(jù)輸出
CN:OUTSTD_LOGIC);--進(jìn)位輸出ENDENTITY;ARCHITECTUREBEHAVOFSHIFTIS SIGNALREG:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALCY:STD_LOGIC;BEGIN PROCESS(CLK,MD,C0)BEGINIFCLK‘EVENTANDCLK=’1‘THEN接下頁
CASEMDISWHEN"001"=> REG(0)<=C0;REG(7DOWNTO1)<=REG(6DOWNTO0);CY<=REG(7);--帶進(jìn)位循環(huán)左移
WHEN"010"=> REG(0)<=REG(7);REG(7DOWNTO1)<=REG(6DOWNTO0);--自循環(huán)左移
WHEN"011"=> REG(7)<=REG(0);REG(6DOWNTO0)<=REG(7DOWNTO1);--自循環(huán)右移
WHEN"100"=> REG(7)<=C0;REG(6DOWNTO0)<=REG(7DOWNTO1);CY<=REG(0);--帶進(jìn)位循環(huán)右移
WHEN"101"=>REG(7DOWNTO0)<=D(7DOWNTO0);--加載待移數(shù)
WHENOTHERS=>REG<=REG;CY<=CY;--保持
ENDCASE;ENDIF;ENDPROCESS; QB(7DOWNTO0)<=REG(7DOWNTO0);CN<=CY; --移位后輸出ENDBEHAV;3.6數(shù)據(jù)對象
3.6.4進(jìn)程中的信號賦值與變量賦值
圖3-20例3-30中帶進(jìn)位循環(huán)左移仿真波形(MD="001")
3.7IF語句概述
IF條件句
Then
順序語句
ENDIF;
1IF條件句
Then
順序語句ELSIF條件句
Then順序語句...ELSE
順序語句ENDIF
4IF條件句
Then順序語句
ELSE
順序語句
ENDIF;
2IF條件句
ThenIF條件句
Then...ENDIFENDIF
3【例3-31】
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcontrol_stmtsISPORT(a,b,c:INBOOLEAN;output:OUTBOOLEAN);ENDcontrol_stmts;ARCHITECTUREexampleOFcontrol_stmtsISBEGINPROCESS(a,b,c)VARIABLEn:BOOLEAN;BEGINIFaTHENn:=b;ELSEn:=c;ENDIF;output<=n;ENDPROCESS;
ENDexample;
【例3-32】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcoderISPORT(din:INSTD_LOGIC_VECTOR(0TO7);output:OUTSTD_LOGIC_VECTOR(0TO2));ENDcoder;ARCHITECTUREbehavOFcoderISSIGNALSINT:STD_LOGIC_VECTOR(4DOWNTO0);BEGINPROCESS(din)BEGINIF(din(7)='0')THENoutput<="000";ELSIF(din(6)='0')THENoutput<="100";ELSIF(din(5)='0')THENoutput<="010";ELSIF(din(4)='0')THENoutput<="110";ELSIF(din(3)='0')THENoutput<="001";ELSIF(din(2)='0')THENoutput<="101";ELSIF(din(1)='0')THENoutput<="011";ELSEoutput<="111";ENDIF;
ENDPROCESS;
ENDbehav;
3.7IF語句概述
輸入輸出din0din1din2din3din4din5din6din7
output0output1output2
xxxxxxx0
000
xxxxxx01
100
xxxxx011
010
xxxx0111
110
xxx01111
001
xx011111
101
x0111111
011
01111111
111表3-28線-3線優(yōu)先編碼器真值表
注:表中的“x”為任意,類似VHDL中的“-”值。
3.8進(jìn)程語句歸納
3.8.1進(jìn)程語句格式
PROCESS語句結(jié)構(gòu)的一般表達(dá)格式如下
[進(jìn)程標(biāo)號:]PROCESS[(敏感信號參數(shù)表
)][IS][進(jìn)程說明部分]BEGIN
順序描述語句
ENDPROCESS[進(jìn)程標(biāo)號];
3.8進(jìn)程語句歸納
3.8.2進(jìn)程結(jié)構(gòu)組成
進(jìn)程說明部分順序描述語句部分敏感信號參數(shù)表3.8進(jìn)程語句歸納
3.8.3進(jìn)程要點(diǎn)
1.
PROCESS為一無限循環(huán)語句
2.
PROCESS中的順序語句具有明顯的順序/并行運(yùn)行雙重性
PROCESS(abc)BEGINCASEabcISWHEN"0000"=>so<="010";WHEN"0001"=>so<="111";WHEN"0010"=>so<="101";...WHEN"1110"=>so<="100";WHEN"1111"=>so<="000";WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;
3.8進(jìn)程語句歸納
3.進(jìn)程必須由敏感信號的變化來啟動
4.進(jìn)程語句本身是并行語句
3.8.3進(jìn)程要點(diǎn)
5.信號是多個進(jìn)程間的通信線
6.一個進(jìn)程中只允許描述對應(yīng)于一個時鐘信號的同步時序邏輯
3.8進(jìn)程語句歸納
【例3-33】ENTITYmulISPORT(a,b,c,selx,sely:INBIT;data_out:OUTBIT);ENDmul;ARCHITECTUREexOFmulISSIGNALtemp:BIT;BEGINp_a:PROCESS(a,b,selx)BEGINIF(selx='0')THENtemp<=a;ELSEtemp<=b;ENDIF;ENDPROCESSp_a;p_b:PROCESS(temp,c,sely)BEGINIF(sely='0')THENdata_out<=temp;ELSEdata_out<=c;ENDIF;ENDPROCESSp_b;ENDex;
3.9并行賦值語句概述
【例3-34】SIGNALseiect
:
INTEGERRANGE15DOWNTO0;...Select<=0WHENs0=’0’ANDs1=’0’ELSE1WHENs0=’1’ANDs1=’0’ELSE2WHENs0=’0’ANDs1=’1’ELSE3;x<=aWHENselect=0ELSEbWHENselect=1ELSEcWHENselect=2ELSEd;
3.10雙向和三態(tài)電路信號賦值
【例3-36】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtri_sISport(enable:INSTD_LOGIC;
datain:INSTD_LOGIC_VECTOR(7DOWNTO0);
dataout:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDtri_s;ARCHITECTUREbhvOFtri_sISBEGINPROCESS(enable,datain)BEGINIFenable='1'THENdataout<=datain;ELSEdataout<="ZZZZZZZZ";ENDIF;ENDPROCESS;ENDbhv;3.10.1三態(tài)門設(shè)計(jì)
3.10雙向和三態(tài)電路信號賦值
3.10.1三態(tài)門設(shè)計(jì)
圖3-218位3態(tài)控制門電路
3.10雙向和三態(tài)電路信號賦值
【例3-36】libraryieee;useieee.std_logic_1164.all;entitytri_stateisport(control:instd_logic;in1:instd_logic_vector(7downto0);q:inoutstd_logic_vector(7downto0);x:outstd_logic_vector(7downto0));endtri_state;architecturebody_trioftri_stateisbeginprocess(control,q,in1)beginif(control='0')thenx<=q;elseq<=in1;x<="ZZZZZZZZ";
endif;endprocess;endbody_tri;3.10.2雙向端口設(shè)計(jì)
3.10雙向和三態(tài)電路信號賦值
【例3-37】(以上部分同上例)process(control,q,in1)beginif(control='0')thenx<=q;q<="ZZZZZZZZ";elseq<=in1;x<="ZZZZZZZZ";
endif;endprocess;endbody_tri;3.10.2雙向端口設(shè)計(jì)
3.10雙向和三態(tài)電路信號賦值
3.10.2雙向端口設(shè)計(jì)
圖3-23例3-36的仿真波形圖
3.10雙向和三態(tài)電路信號賦值
3.10.2雙向端口設(shè)計(jì)
圖3-24例3-37的綜合結(jié)果
3.10雙向和三態(tài)電路信號賦值
3.10.2雙向端口設(shè)計(jì)
圖3-25例3-37的仿真波形圖
3.10雙向和三態(tài)電路信號賦值
3.10.3三態(tài)總線電路設(shè)計(jì)
【例3-38】
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtristate2ISport(input3,input2,input1,input0:INSTD_LOGIC_VECTOR(7DOWNTO0);enable:INSTD_LOGIC_VECTOR(1DOWNTO0);output:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDtristate2;ARCHITECTUREmultiple_driversOFtristate2ISBEGINPROCESS(enable,input3,input2,input1,input0)BEGINIFenable="00"THENoutput<=input3;ELSEoutput<=(OTHERS=>'Z');ENDIF;IFenable="01"THENoutput<=input2;ELSEoutput<=(OTHERS=>'Z');ENDIF;IFenable="10"THENoutput<=input1;ELSEoutput<=(OTHERS=>'Z');ENDIF;IFenable="11"THENoutput<=input0;ELSEoutput<=(OTHERS=>'Z');ENDIF;ENDPROCESS;ENDmultiple_drivers;
3.10雙向和三態(tài)電路信號賦值
3.10.3三態(tài)總線電路設(shè)計(jì)
【例3-39】libraryieee;useieee.std_logic_1164.all;entitytri2isport(ctl:instd_logic_vector(1downto0);datain1,datain2,datain3,datain4:instd_logic_vector(7downto0);q:outstd_logic_vector(7downto0));endtri2;architecturebody_trioftri2isbeginq<=datain1whenctl="00"else(others=>'Z');q<=datain2whenctl="01"else(others=>'Z');q<=datain3whenctl="10"else(others=>'Z');q<=datain4whenctl="11"else(others=>'Z');endbody_tri;
3.10雙向和三態(tài)電路信號賦值
3.10.3三態(tài)總線電路設(shè)計(jì)
圖3-26例3-38錯誤的綜合結(jié)果
3.10雙向和三態(tài)電路信號賦值
圖3-27例3-39正確的綜合結(jié)果
3.11仿真延時
3.11.1固有延時
z<=xXORyA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西電力職業(yè)技術(shù)學(xué)院《社會保障史》2023-2024學(xué)年第一學(xué)期期末試卷
- 吉林體育學(xué)院《解剖和生理(生理)》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南食品藥品職業(yè)學(xué)院《高等數(shù)理統(tǒng)計(jì)一》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南大眾傳媒職業(yè)技術(shù)學(xué)院《國際物流與供應(yīng)鏈管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 【物理】《壓強(qiáng)》(教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教版(2024)初中物理八年級下冊
- 高考物理總復(fù)習(xí)《力與物體的平衡》專項(xiàng)測試卷含答案
- 年產(chǎn)5萬臺模塊化操動機(jī)構(gòu)及高壓斷路器生產(chǎn)線項(xiàng)目可行性研究報告寫作模板-備案審批
- 鄭州軟件職業(yè)技術(shù)學(xué)院《鋼結(jié)構(gòu)設(shè)計(jì)B》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江電力職業(yè)技術(shù)學(xué)院《光電技術(shù)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 長安大學(xué)《個體防護(hù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海車位交易指南(2024版)
- 醫(yī)學(xué)脂質(zhì)的構(gòu)成功能及分析專題課件
- 新疆塔城地區(qū)(2024年-2025年小學(xué)六年級語文)部編版期末考試(下學(xué)期)試卷及答案
- 2024年9月時事政治試題帶答案
- 汽車供應(yīng)商審核培訓(xùn)
- 《計(jì)算機(jī)網(wǎng)絡(luò) 》課件第1章
- 1《地球的表面》說課稿-2024-2025學(xué)年科學(xué)五年級上冊教科版
- GB/T 44764-2024石油、石化和天然氣工業(yè)腐蝕性石油煉制環(huán)境中抗硫化物應(yīng)力開裂的金屬材料
- 自動化招聘筆試試題及答案
- 重慶市主城四區(qū)2025屆高一物理第一學(xué)期期末聯(lián)考試題含解析
- 燃?xì)庑袠I(yè)有限空間作業(yè)安全管理制度
評論
0/150
提交評論