版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第三章VHDL硬件描述語言3.1VHDL設(shè)計(jì)初步(VHDL基本知識;簡單組合時序電路描述實(shí)現(xiàn)——程序結(jié)構(gòu)、電路描述方法、層次化設(shè)計(jì)實(shí)現(xiàn)及相關(guān)語法知識介紹)3.2VHDL設(shè)計(jì)進(jìn)階3.3VHDL語言程序基本結(jié)構(gòu)3.4VHDL語言的對象和數(shù)據(jù)類型及運(yùn)算操作符3.5VHDL的基本描述語句3.6程序包及庫和配置3.7狀態(tài)機(jī)設(shè)計(jì)(常用較復(fù)雜電路模塊的設(shè)計(jì)及語法知識介紹)(重要的實(shí)用工程化設(shè)計(jì)方法)(3,4,5,6-VHDL語言語法知識系統(tǒng)講解)什么是VHDL?VeryhighspeedintegratedHardwareDescriptionLanguage(VHDL)是IEEE、工業(yè)標(biāo)準(zhǔn)硬件描述語言用語言的方式而非圖形等方式描述硬件電路容易修改容易保存特別適合于設(shè)計(jì)的電路有:復(fù)雜組合邏輯電路,如:譯碼器、編碼器、加減法器、多路選擇器、地址譯碼器…...狀態(tài)機(jī)等等……..3.1VHDL設(shè)計(jì)初步Graphiciswhatyoudrawiswhatyouget“tellmewhathardwareyouwantandIwillgiveittoyou”VHDLiswhatyouwriteiswhatfunctionalyouget“tellmehowyourcircuitshouldbehaveandtheVHDLcompilerwillgiveyouthehardwarethatdoesthejob”
butthedesignercannotcontrolhowthecircuitimplement原理圖輸入與
VHDL文本輸入設(shè)計(jì)的區(qū)別WhyusingVHDLinsteadofGraphicEasytoModifyItismorepowerfulthanGraphicVHDLisaportablelanguagebecauseisdeviceindependentthesamecodecanbeappliedtoDevicemanufacturedbyCompanyAorCompanyBVHDL文本輸入設(shè)計(jì)的優(yōu)勢VHDLSynthesisvs.otherHDLsSynthesisVHDL: “tellmehowyourcircuitshouldbehave andIwillgiveyouhardwarethatdoesthejob”ABEL,PALASM,AHDL: “tellmewhathardwareyouwantandI willgiveittoyou”VHDL與其他HDL的區(qū)別VHDL的功能和標(biāo)準(zhǔn)
VHDL描述輸入端口輸出端口電路的行為和功能VHDL的標(biāo)準(zhǔn):IEEEStd1076-1987(calledVHDL1987)IEEEStd1076-1993(calledVHDL1993)IEEEStd1076-2002(calledVHDL2002)(人們對電路或電子系統(tǒng)的認(rèn)識過程:先外部端口信息,后內(nèi)部電路功能)——簡單組合電路的VHDL描述舉例3.1.1多路選擇器VHDL描述圖mux21a功能示意波形(s為0時y<=a;s為1時y<=b)圖mux21a邏輯符合圖【例3-1】ENTITY
mux21a
IS
PORT(a,b:INBIT;s:IN
BIT;y:
OUTBIT);ENDENTITY
mux21a;ARCHITECTURE
oneOF
mux21a
IS
BEGIN
y<=a
WHENs='0'
ELSE
b;ENDARCHITECTURE
one;實(shí)體說明結(jié)構(gòu)體3.1.1多路選擇器VHDL描述圖3-1mux21a實(shí)體(邏輯符號圖)圖3-2mux21a結(jié)構(gòu)體(1)2選1多路選擇器的VHDL描述VHDL程序一般由五部分組成,其中必不可少的是其中的實(shí)體說明部分(端口描述)和結(jié)構(gòu)體部分(功能描述)組合邏輯電路描述舉例(行為描述方式)(1)
2選1多路選擇器的VHDL描述【例3-2】
ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISSIGNALd,e:BIT;BEGINd<=aAND(NOTS);e<=bANDs;y<=dORe;ENDARCHITECTUREone;【例3-3】...
ARCHITECTUREoneOFmux21aISBEGINy<=(aAND(NOTs))OR(bANDs);ENDARCHITECTUREone;結(jié)構(gòu)體內(nèi)區(qū)域是并行區(qū)域,其內(nèi)只能是表現(xiàn)電路并發(fā)特性的并行語句信號定義的語法格式及信號定義的位置(數(shù)據(jù)流描述或稱RTL描述方式)(1)
2選1多路選擇器的VHDL描述【例3-4】
ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs='0'THENy<=a;ELSEy<=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;表示程序轉(zhuǎn)向控制的if語句均是順序語句Process語句是最常用的并行語句,其內(nèi)是順序區(qū)域,只能書寫順序語句;注意process語句的啟動信號及語法格式(1)
2選1多路選擇器的VHDL描述圖5-3mux21a功能時序波形輸入、輸出信號在仿真的表示符號;仿真時先設(shè)置輸入信號,通過觀察仿真輸出信號檢驗(yàn)設(shè)計(jì)結(jié)果是否正確。(2)VHDL相關(guān)語句說明1.實(shí)體表達(dá)【例3-5】93標(biāo)準(zhǔn)較為規(guī)范ENTITYe_nameISPORT(p_name:port_mdata_type;...p_namei:port_midata_type);ENDENTITYe_name;或:【例3-6】87標(biāo)準(zhǔn)較為靈活ENTITYe_nameISPORT(p_name:port_mdata_type;...p_namei:port_midata_type);ENDe_name;實(shí)體名端口模式數(shù)據(jù)類型Port語句—端口信號說明語句(2)
VHDL相關(guān)語句說明2.實(shí)體名3.PORT語句和端口信號名4.端口模式INOUTINOUTBUFFER5.數(shù)據(jù)類型BIT標(biāo)識符只能由字母、數(shù)字、下劃線組成,只能由字母開頭,不能由下劃線結(jié)尾,下劃線不能連續(xù)使用。對應(yīng)信號的數(shù)據(jù)流向及讀寫性能Bit及std_logic數(shù)據(jù)類型的取值類型及取值范圍及邏輯位的賦值方法(‘單個字符’,”字符串“)Port語句格式及端口信號定義的格式設(shè)計(jì)實(shí)體與實(shí)體說明(端口信息描述)數(shù)據(jù)類型:說明數(shù)據(jù)的取值類型和取值范圍用戶自己定義的對象名稱稱為標(biāo)識符buffer:輸出但對內(nèi)部有反饋(2)
VHDL相關(guān)語句說明6.結(jié)構(gòu)體表達(dá)【例5-7】93標(biāo)準(zhǔn)較為規(guī)范ARCHITECTUREarch_nameOFe_nameIS(說明語句)BEGIN(功能描述語句)ENDARCHITECTUREarch_name;或:【例5-8】87標(biāo)準(zhǔn)較為靈活A(yù)RCHITECTUREarch_nameOFe_nameIS(說明語句)BEGIN(功能描述語句)ENDarch_name;7.信號傳輸(賦值)符號和數(shù)據(jù)比較符號賦值目標(biāo)<=表達(dá)式>,<,=,>=,<=,/=結(jié)構(gòu)體名實(shí)體名(2)
VHDL相關(guān)語句說明8.邏輯操作符AND、OR、NOT9.IF_THEN條件語句10.WHEN_ELSE條件信號賦值語句賦值目標(biāo)<=表達(dá)式WHEN賦值條件ELSE
表達(dá)式WHEN賦值條件ELSE...
表達(dá)式;11.PROCESS進(jìn)程語句和順序語句12.文件取名和存盤不完全條件語句生成時序邏輯(未指定情況保持原狀態(tài)),完全條件語句生成組合邏輯條件信號賦值語句是并行語句;條件信號賦值語句的語法格式順序語句仿真時順序執(zhí)行,用于算法的描寫。文件名應(yīng)按層次化設(shè)計(jì)頂層設(shè)計(jì)實(shí)體功能取,max+plus文本方式輸入的設(shè)計(jì)要求文件名與實(shí)體名必須相同;文件不可直接存于根目錄下(3)VHDL設(shè)計(jì)的基本概念和語句小節(jié)數(shù)據(jù)類型信號賦值符條件比較符延時實(shí)體結(jié)構(gòu)體端口定義端口模式邏輯操作符IF條件語句并行條件語句進(jìn)程語句順序語句并行語句文件取名文件存盤(并行語句:位于并行區(qū)域體現(xiàn)電路并發(fā)特性的語句;順序語句:位于順序區(qū)域仿真時順序執(zhí)行用于算法描述的語句)3.1.2寄存器描述及其VHDL語言現(xiàn)象(1)D觸發(fā)器的VHDL描述【例5-9】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF1ISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF1IS
SIGNALQ1:STD_LOGIC;--類似于在芯片內(nèi)部定義一個數(shù)據(jù)的暫存節(jié)點(diǎn)
BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=D;ENDIF;Q<=Q1;--將內(nèi)部的暫存數(shù)據(jù)向端口輸出
ENDPROCESS;ENDbhv;D觸發(fā)器時序邏輯電路描述舉例(時鐘邊沿檢測)Out模式的只寫特性一般的非端口信號既可讀也可寫標(biāo)準(zhǔn)邏輯位進(jìn)程體邊沿檢測庫與程序包聲明3.1.2寄存器描述及其VHDL語言現(xiàn)象(1)D觸發(fā)器的VHDL描述【例5-9】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF1ISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF1IS--SIGNALQ1:STD_LOGIC;--類似于在芯片內(nèi)部定義一個數(shù)據(jù)的暫存節(jié)點(diǎn)
BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ<=D;--THENQ1<=D;ENDIF;--Q<=Q1;--將內(nèi)部的暫存數(shù)據(jù)向端口輸出
ENDPROCESS;ENDbhv;D觸發(fā)器時序邏輯電路描述舉例(時鐘邊沿檢測)Out模式的只寫特性一般的非端口信號既可讀也可寫Out模式的只寫特性,而此程序中對Q只有寫操作,所以可不用定義中間信號Q1作過渡(JK_FF應(yīng)如何實(shí)現(xiàn))比較用4種不同語句的D觸發(fā)器VHDL程序Entitytest1isport(clk,d:inbit;q:outbit);endtest1;architecturebodyoftest1issignalq1:bit;beginprocess(clk)beginif
clk='1'ANDclk’last_value='0'
thenq1<=d;endif;q<=q1;endprocess;endtest1_body;LIBRARYIEEE;USEIEEE.std_logic_1164.all;Entitytest1isport(clk,d:inbit;q:outbit);endtest1;architecturebodyoftest1isbeginprocess(clk,d)begin
ifrising_edge(clk)then
q<=d;endif;endprocess;endtest1_body;TheyareallthesameDFF?Entitytest1isport(clk:inbit;d:inbit;q:outbit);endtest1;architecturebodyoftest1issignalq1:bit;beginprocess(clk,d)begin
if(clk=‘1’)then
q1<=d;endif;q<=q1;endprocess;endbody;Entitytest1isport(clk:inbit;d:inbit;q:outbit);endtest1;architecturebodyoftest1issignalq1:bit;beginprocess(clk)begin
if(clk=‘1’)then
q1<=d;endif;q<=q1;endprocess;endbody;前三種為邊沿型(邊沿信號檢測方式),最后一種為電平型觸發(fā)(CLK=1則輸出跟隨輸入變化)HowManyRegisters?ENTITYreg1ISPORT(d:inBIT;clk:inBIT;q :outBIT);ENDreg1;ARCHITECTUREreg1OFreg1ISSIGNALa,b:BIT;BEGINPROCESS(clk)BEGINIFclk='1'ANDclk’eventTHENa<=d;b<=a;q<=b;ENDIF;ENDPROCESS;ENDreg1;信號是全局量在實(shí)體、結(jié)構(gòu)體和塊語句中定義和使用進(jìn)程中的信號賦值是在進(jìn)程結(jié)束時同時完成賦值的--信號定義的位置及語法功能相當(dāng)于串行輸入的寄存器信號物理概念上相當(dāng)于內(nèi)部連線,作輸出時為寄存器輸出HowManyRegisters?ENTITYreg1ISPORT(d :inBIT;clk :inBIT;q :outBIT);ENDreg1;ARCHITECTUREreg1OFreg1ISBEGINPROCESS(clk)VARIABLEa,b:BIT;BEGINIFclk='1'ANDclk’eventTHENa:=d;b:=a;q<=b;ENDIF;ENDPROCESS;ENDreg1;變量是局部量只能在進(jìn)程和子程序中定義和使用變量的賦值是執(zhí)行到該語句立即完成的--變量定義的位置及語法用VHDL設(shè)計(jì)4位計(jì)數(shù)器AB01010101取整數(shù)數(shù)據(jù)類型,為什么?整數(shù)數(shù)據(jù)類型必須指定數(shù)據(jù)取值范圍端口信號模式取BUFFER,為什么?注意整數(shù)和位的不同表達(dá)方式!Maxplus+II開發(fā)系統(tǒng)默認(rèn)支持的是bit和integer數(shù)據(jù)類型及其運(yùn)算。Out類型信號只能寫入不能讀。如需對輸出數(shù)據(jù)讀則需改變其數(shù)據(jù)類型或利用中間信號進(jìn)行過度。Buffer模式輸出但對內(nèi)有反饋可讀(說明:計(jì)數(shù)器端口及功能要求,程序設(shè)計(jì)涉及的主要問題)修改后的程序運(yùn)算符加載注意,信號端口模式和數(shù)據(jù)類型的改變!注意,引進(jìn)內(nèi)部信號矢量!標(biāo)準(zhǔn)邏輯矢量數(shù)據(jù)類型必須指定矢量中元素個數(shù)4位鎖存器組合電路加1器鎖存信號輸出反饋綜合后的計(jì)數(shù)器電路RTL圖用VHDL設(shè)計(jì)7段16進(jìn)制譯碼器用CASE語句完成真值表的功能向7段數(shù)碼管輸出信號,最高位控制小數(shù)點(diǎn)相當(dāng)于thenCase語句是串行語句;case語句語法CASE語句實(shí)現(xiàn)真值表畫出電路符號及真值表注意,此語句說明未列出條件的處理情況,為滿足語法要求必須加入4位加法計(jì)數(shù)器7段譯碼器8位總線輸出信號輸出組合邏輯實(shí)現(xiàn)的一般化方法:真值表方法;時序邏輯實(shí)現(xiàn)的一般化方法:狀態(tài)機(jī)Signalsvs.VariablesRepresentCircuit RepresentlocalstorageInterconnect GlobalScope(anywhere) LocalScope (insideprocessorsubprogram)UpdatedatendofPROCESS UpdatedImmediately(newvaluenotavailable) (newvalueavailable)
SIGNALS
VARIABLES
UTILITY:
SCOPE:BEHAVIOR:數(shù)據(jù)對象:信號Signal和變量Variable例:4選1多路選擇器的VHDL描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux4ISPORT(i0,i1,i2,i3,a,b:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDmux4;ARCHITECTUREbody_mux4OFmux4ISsignalmuxval:integer;BEGINprocess(i0,i1,i2,i3,a,b)beginmuxval<=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;Why????Muxval被定義為信號,由進(jìn)程中信號賦值為進(jìn)程結(jié)束時同步完成,可知進(jìn)程中若多個源對同一信號賦值,只有接近endprocess的會被執(zhí)行進(jìn)程中Signal和variable在賦值行為上的不同算法與實(shí)現(xiàn)方法需要結(jié)合才能達(dá)到目的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:integerrange0to3;beginmuxval:=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;程序改進(jìn):只用case語句如何寫?—層次結(jié)構(gòu)的VHDL描述以下通過一個全加器的設(shè)計(jì)流程,介紹含有層次結(jié)構(gòu)的VHDL程序設(shè)計(jì)。其中包含一個在層次化設(shè)計(jì)或結(jié)構(gòu)化設(shè)計(jì)中非常重要的語句——元件例化語句:其可以分為元件調(diào)用聲明語句和端口映射語句兩個部分。語言方式層次化設(shè)計(jì)舉例(層次化設(shè)計(jì)的兩種常用方法:(1)將各種方式設(shè)計(jì)的底層元件生成對應(yīng)符號塊,在頂層用原理圖方式將他們連接進(jìn)而實(shí)現(xiàn)頂層設(shè)計(jì)(2)用純文本方式描述出底層元件,利用元件例化語句將底層元件連接關(guān)系描述出來,實(shí)現(xiàn)頂層設(shè)計(jì))(層次化設(shè)計(jì):將設(shè)計(jì)分層描述,先描述實(shí)現(xiàn)底層元件,然后用底層元件構(gòu)造出頂層,從而實(shí)現(xiàn)設(shè)計(jì))LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderIS PORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREfh1OFh_adderIBEGIN so<=(aORb)AND(aNANDb); co<=NOT(aNANDb);ENDARCHITECTUREfh1;用二進(jìn)制半加器設(shè)計(jì)一位全加器1位二進(jìn)制半加器(語言方式層次化設(shè)計(jì)舉例)(數(shù)據(jù)流即輸入數(shù)據(jù)處理過程描述)1位二進(jìn)制全加器內(nèi)部端口外部端口端口連線(語言方式層次化設(shè)計(jì)舉例)用VHDL語言描述各底層設(shè)計(jì)模塊后,用元件例化語句描述底層元件間的連接關(guān)系,最終實(shí)現(xiàn)頂層電路的描述所有描述可置于同一文件中,僅需將頂層實(shí)體名作為文件名即可。(結(jié)構(gòu)化描述)(原理圖要素)--或門描述元件說明語句元件例化語句底層元件端口名頂層元件端口名或中間連接信號名元件實(shí)例(元件例化名)U2例化元件h_adder實(shí)體說明部分端口映射語句(2)D觸發(fā)器VHDL描述的語言現(xiàn)象說明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','-');STD_LOGIC所定義的9種數(shù)據(jù)的含義是:‘U’表示未初始化的;‘X’表示強(qiáng)未知的;
‘0’表示強(qiáng)邏輯0;
‘1’表示強(qiáng)邏輯1;‘Z’表示高阻態(tài);
‘W’表示弱未知的;
‘L’表示弱邏輯0;‘H’表示弱邏輯1;‘-’表示忽略。語言現(xiàn)象說明STD_LOGIC的綜合器支持對于STD_LOGIC類型,綜合器只支持‘X’(或‘-’),‘0’,‘1’,‘Z’(2)
D觸發(fā)器VHDL描述的語言現(xiàn)象說明2.設(shè)計(jì)庫和標(biāo)準(zhǔn)程序包使用庫的一般定義表式是:
LIBRARY<設(shè)計(jì)庫名>;
IEEE標(biāo)準(zhǔn)庫:LIBRARYIEEE默認(rèn)加載的設(shè)計(jì)庫STD 標(biāo)準(zhǔn)庫WORK 工作庫(當(dāng)前設(shè)計(jì))數(shù)據(jù)類型:BIT、BIT_VECTOR一樣,INTEGER、NATURAL(自然數(shù))和POSITIVE(正整數(shù))都定義在VHDL標(biāo)準(zhǔn)程序包STANDARD中。由于是默認(rèn)打開的,所以在前面例子中,沒有以顯式打開STD庫和程序包STANDARD。格式:LIBRARY<設(shè)計(jì)庫名>;USE<設(shè)計(jì)庫名>.<程序包名>.ALL;IEEE標(biāo)準(zhǔn)庫中的STD_LOGIC_1164:含STD_LOGIC及STD_LOGIC_VECTOR的定義IEEE1164使用程序包的一般定義表式是:
USE<設(shè)計(jì)庫名>.<程序包名>.ALL;(2)
D觸發(fā)器VHDL描述的語言現(xiàn)象說明3.SIGNAL信號定義和數(shù)據(jù)對象信號定義的語法格式;信號的使用范圍三類數(shù)據(jù)對象:常數(shù)、變量、信號(物理意義)(變量定義的語法格式;變量的使用范圍)注意:變量VARIABLE與信號SIGNAL都屬于數(shù)據(jù)對象。但變量的賦值符號與信號的賦值符號是不同的,信號的賦值符號是“<=”,而變量的賦值符號是“:=”。(2)
D觸發(fā)器VHDL描述的語言現(xiàn)象說明4.上升沿檢測表式和信號屬性函數(shù)EVENT關(guān)鍵詞EVENT是信號屬性,VHDL通過以下表式來測定某信號的上升沿:
CLK’EVENTANDCLK=‘1’信號屬性EVENT<信號名>‘EVENT測定信號是否有變化函數(shù)RISING_EDGE(CLK)(上升沿檢測常用方式)5.不完整條件語句與時序電路【例3-11】ENTITYCOMP_BADISPORT(a1:INBIT;b1:INBIT;q1:OUTBIT);END;ARCHITECTUREoneOFCOMP_BADISBEGINPROCESS(a1,b1)BEGINIFa1>b1THENq1<='1';ELSIFa1<b1THENq1<='0';--未提及當(dāng)a1=b1時,q1作何操作ENDIF;
ENDPROCESS;END;(2)
D觸發(fā)器VHDL描述的語言現(xiàn)象說明注意此處多分支選擇語句與一般嵌套式IF語句語法上的不同5.不完整條件語句與時序電路圖例3-11的電路圖5.不完整條件語句與時序電路【例3-12】ENTITYCOMP_GOODISPORT(a1:INBIT;b1:INBIT;q1:OUTBIT);END;ARCHITECTUREoneOFCOMP_GOODISBEGINPROCESS(a1,b1)BEGINIFa1>b1THENq1<='1';ELSEq1<='0';ENDIF;ENDPROCESS;END圖例3-12的電路圖(1位輸出僅能表示兩種結(jié)果狀態(tài))(3)
實(shí)現(xiàn)時序電路邊沿信號檢測的VHDL不同表達(dá)方式【例5-13】...PROCESS(CLK)BEGINIFCLK'EVENTAND(CLK='1')AND(CLK'LAST_VALUE='0')
THENQ<=D;--確保CLK的變化是一次上升沿的跳變
ENDIF;ENDPROCESS;【例5-14】...PROCESS(CLK)BEGINIFCLK='1'ANDCLK'LAST_VALUE='0'
THENQ<=D;ENDIF;ENDPROCESS;【例5-15】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISSIGNALQ1:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFrising_edge(CLK)--CLK的數(shù)據(jù)類型必須是STD_LOGIC
THENQ1<=D;ENDIF;Q<=Q1;ENDPROCESS;END;(3)
實(shí)現(xiàn)時序電路邊沿信號檢測的VHDL不同表達(dá)方式【例5-16】...
PROCESSBEGIN
waituntilCLK=‘1’;--利用wait語句
Q<=D;(對敏感信號檢測啟動進(jìn)程的另一種方式)ENDPROCESS;【例5-17】...
PROCESS(CLK)BEGINIFCLK='1'
THENQ<=D;--利用進(jìn)程的啟動特性產(chǎn)生對CLK的邊沿檢測
ENDIF;ENDPROCESS;【例5-18】...
PROCESS(CLK,D)BEGINIFCLK='1'--電平觸發(fā)型寄存器
THENQ<=D;
ENDIF;ENDPROCESS;(3)
實(shí)現(xiàn)時序電路邊沿信號檢測的VHDL不同表達(dá)方式圖3-7邊沿型觸發(fā)器時序波形圖3-8電平觸發(fā)型寄存器的時序波形(3)實(shí)現(xiàn)時序電路的VHDL不同表達(dá)方式(3)
實(shí)現(xiàn)時序電路邊沿信號檢測的VHDL不同表達(dá)方式(不同觸發(fā)方式下輸出跟隨輸入變化的特點(diǎn))(4)異步時序電路設(shè)計(jì)【例3-19】...
ARCHITECTUREbhvOFMULTI_DFFISSIGNALQ1,Q2:STD_LOGIC;BEGINPRO1:PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=NOT(Q2ORA);ENDIF;ENDPROCESS;PRO2:PROCESS(Q1)BEGINIFQ1'EVENTANDQ1='1'THENQ2<=D;ENDIF;QQ<=Q2;ENDPROCESS;圖例3-19綜合的電路一個時鐘進(jìn)程只能構(gòu)成對應(yīng)單一時鐘信號的時序電路,即同步時序電路。異步時序邏輯最好用多個時鐘進(jìn)程語句來構(gòu)成。仿真時一個進(jìn)程中可有多個時鐘,但綜合器只能對只有一個時鐘的進(jìn)程進(jìn)行綜合(5)VHDL設(shè)計(jì)基本概念和語言現(xiàn)象小節(jié)數(shù)據(jù)類型數(shù)據(jù)對象信號屬性時鐘檢測VHDL庫程序包時序電路異步時序3.1.31位二進(jìn)制全加器的VHDL設(shè)計(jì)圖5-10半加器h_adder電路圖圖5-11全加器f_adder電路圖——通過對真值表的描述實(shí)現(xiàn)設(shè)計(jì)(1)半加器描述和CASE語句a b so co 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1表5-1半加器h_adder邏輯功能真值表1.CASE語句CASE語句的一般表式是:CASE<表達(dá)式>ISWhen<選擇值或標(biāo)識符>=><順序語句>;...;<順序語句>;When<選擇值或標(biāo)識符>=><順序語句>;...;<順序語句>;...ENDCASE;Case語句的語法格式;case語句屬于順序語句;case后表達(dá)式必須是一個值可變的對象:信號或變量1位二進(jìn)制全加器的VHDL設(shè)計(jì)—相關(guān)語法知識2.標(biāo)準(zhǔn)邏輯矢量數(shù)據(jù)類型STD_LOGIC_VECTOR以下是一些并置操作示例:SIGNALa:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALd:STD_LOGIC_VECTOR(1DOWNTO0);...a<='1''0'd(1)'1';--元素與元素并置,并置后的數(shù)組長度為4...IFa
d="101011"THEN...–-在IF條件句中可以使用并置符(1)半加器描述和CASE語句在使用STD_LOGIC_VECTOR中,必須注明其數(shù)組寬度,即位寬,如:
B:OUTSTD_LOGIC_VECTOR(7DOWNTO0);或
SIGNALA:STD_LOGIC_VECTOR(1TO4)端口信號定義中間信號定義3.并置操作符將單個操作數(shù)或數(shù)組合并為一個新的數(shù)組(1)半加器描述和CASE語句【例3-20】
LIBRARYIEEE;--或門邏輯描述
USEIEEE.STD_LOGIC_1164.ALL;ENTITYor2aISPORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDENTITYor2a;ARCHITECTUREoneOFor2aISBEGINc<=aORb;ENDARCHITECTUREfu1;【例3-21】LIBRARYIEEE;--半加器描述(1)USEIEEE.STD_LOGIC_1164.ALL;ENTITYadderISPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYadder;ARCHITECTUREfh1OFadderisBEGINso<=NOT(aXOR(NOTb));co<=aANDb;ENDARCHITECTUREfh1;數(shù)據(jù)流方式描述【例3-22】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);BEGINabc<=a&b;PROCESS(abc)BEGINCASEabcISWHEN"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-23】
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_adderPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTor2aPORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALd,e,f:STD_LOGIC;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;(結(jié)構(gòu)化描述)(2)
全加器描述和例化語句
元件例化語句由兩部分組成,第一部分是對一個現(xiàn)成的設(shè)計(jì)實(shí)體定義為一個元件,語句的功能是對待調(diào)用的元件作出調(diào)用聲明,它的最簡表達(dá)式如下所示:COMPONENT元件名ISPORT(端口名表);ENDCOMPONENT元件名;
元件例化語句的第二部分則是此元件與當(dāng)前設(shè)計(jì)實(shí)體(頂層文件)中元件間及端口的連接說明。語句的表達(dá)式如下:例化名:元件名PORTMAP([端口名=>]連接端口名,...);元件聲明語句是對元件端口信息的說明,其語法格式與實(shí)體說明語句相同,僅將entity換為component元件實(shí)例名:例化元件名portmap([底層元件端口名=>]中間信號或頂層元件端口名)既:端口映射語句名字關(guān)聯(lián)與位置關(guān)聯(lián)VHDL設(shè)計(jì)流程:
V-S-F-PVHDLEntryUseanyTextEditortoinputyourdesignSynthesisUseanyVHDLCompilertoconvertyourlanguagedesigntoGatelevelwithoptimizationintermofSpeed/AreaFittingArchitectureSynthesisTomapthelogictoAlteraDeviceArchitecturee.g.LUT,Carry/CascadeChain,EAB......(furtherlogicoptimization)Perogr.DownLoadConfigure/ProgrammingtheAlteraDeviceanddoonboarddebugging,prototypingorproductionSTEP1:建立工作庫文件夾STEP2:輸入設(shè)計(jì)項(xiàng)目原理圖/VHDL文本代碼STEP3:存盤,注意原理圖/文本取名STEP4:將設(shè)計(jì)項(xiàng)目設(shè)置成ProjectSTEP5:選擇目標(biāo)器件
STEP11:
硬件測試STEP9:引腳鎖定并編譯STEP8:仿真測試和波形分析STEP7:建立仿真波形文件STEP6:啟動編譯STEP10:編程下載/配置VHDL文本輸入設(shè)計(jì)流程(具體操作過程)注意:Max+plusII以工程項(xiàng)目方式管理設(shè)計(jì)文件,所進(jìn)行的軟件操作都是只針對當(dāng)前的工程的。所以設(shè)計(jì)的頂層文件應(yīng)作為當(dāng)前的工程,即將頂層文件設(shè)置為當(dāng)前工程。另要注意每當(dāng)將設(shè)計(jì)作了修改或加入了新的設(shè)計(jì)信息都應(yīng)重新進(jìn)行編譯如已知目標(biāo)器件為了方便后面的工作及時序仿真原理圖輸入時文件名可任意起名;文本輸入時文件名必須與設(shè)計(jì)實(shí)體名相同3.1.4VHDL文本輸入設(shè)計(jì)方法初步為設(shè)計(jì)全加器新建一個文件夾作工作庫文件夾名取為My_prjct注意,不可用中文!注意:設(shè)計(jì)文件不能直接放到根目錄下,而必須放到文件夾下。(1)編輯輸入并保存VHDL源文件新建一個設(shè)計(jì)文件使用文本輸入方法設(shè)計(jì),必須選擇打開文本編輯器圖3-12建立文本編輯器對話框圖5-13在文本編輯窗中輸入VHDL文件并存盤文本編輯窗用鍵盤輸入設(shè)計(jì)文件:多路選擇器存盤文件名必須取為:mux21a.vhd注意,要存在自己建立的文件夾中Max+plusII要求文本輸入時文件名必須與實(shí)體名相同輸入文本及符號時必須為英文輸入狀態(tài)VHDL程序保存時文件后綴為“.VHD”文件存盤后,關(guān)鍵詞將改變顏色!否則文件名一定有錯?。?)將當(dāng)前設(shè)計(jì)設(shè)定為工程(以確保下面的編譯仿真等操作均是針對當(dāng)前工程進(jìn)行的)圖3-14設(shè)定當(dāng)前文件為工程首先點(diǎn)擊這里子菜單中然后選擇此項(xiàng),將當(dāng)前打開的設(shè)計(jì)文件設(shè)置成工程最后注意此路徑指向的改變(標(biāo)題欄前面部分顯示當(dāng)前打開的工程存放位置及其名稱,標(biāo)題欄后面顯示當(dāng)前窗口的文件信息)首先選擇這里器件系列選擇窗,選擇ACEX1K系列根據(jù)實(shí)驗(yàn)板上的目標(biāo)器件型號選擇,如選EP1K30注意,首先消去這里的勾,以便使所有速度級別的器件都能顯示出來(3)為當(dāng)前設(shè)計(jì)選定目標(biāo)器件注意,此路徑指向當(dāng)前的工程!選擇編譯器編譯窗Max+plusII主菜單編譯時可選擇進(jìn)行功能仿真編譯(功能特征網(wǎng)表文件抽?。┗驎r序仿真編譯(時序特征網(wǎng)表文件抽?。?)編譯當(dāng)前設(shè)計(jì)及編譯相關(guān)選項(xiàng)設(shè)置選擇VHDL文本編譯版本號和排錯圖3-15設(shè)定VHDL編譯版本號選擇此項(xiàng)選擇VHDL1993項(xiàng)編譯器默認(rèn)為93標(biāo)準(zhǔn),且其向下兼容87標(biāo)準(zhǔn),一般不用設(shè)置選擇此項(xiàng)消去這里的勾這一默認(rèn)優(yōu)化算法設(shè)置對中文Windows用戶編譯時能出現(xiàn)問題,建議取消這一設(shè)置編譯出錯!可雙擊錯誤提示或單擊提示后用locate定位錯誤選擇VHDL文本編譯版本號和排錯圖5-16確定設(shè)計(jì)文件中的錯誤打開錯誤提示窗,雙極該錯誤提示即可實(shí)現(xiàn)在源程序中的錯誤定位錯誤必須修改;警告一般不用理會錯誤提示及定位是相對的,錯誤一般發(fā)生在定位位置附近;且修改錯誤一般應(yīng)自上而下修改錯誤所在錯誤所在改正錯誤完成編譯!首先選擇此項(xiàng),為仿真測試新建一個文件(5)時序仿真選擇波形編輯器文件(a)新建仿真文件從SNF文件中輸入設(shè)計(jì)文件的信號節(jié)點(diǎn)點(diǎn)擊“LIST”(b)導(dǎo)入仿真信號節(jié)點(diǎn)導(dǎo)入當(dāng)前工程中單個信號導(dǎo)入當(dāng)前工程中所有信號SNF文件中的信號節(jié)點(diǎn)用此鍵選擇左窗中需要的信號進(jìn)入右窗最后點(diǎn)擊“OK”消去這里的勾,以便方便設(shè)置輸入電平在Options菜單中消去網(wǎng)格對齊SnaptoGrid的選擇(消去對勾)
(c)進(jìn)行是否網(wǎng)格捕捉設(shè)置選擇ENDTIME調(diào)整仿真時間區(qū)域。選擇65微秒比較合適(d)仿真時間設(shè)置仿真時間設(shè)置同時使用放大到合適觀察范圍按鈕觀察全時間范圍仿真結(jié)果;或還進(jìn)行觀察時間設(shè)置只觀察某一段時間的仿真結(jié)果(見下頁)用此鍵改變仿真區(qū)域坐標(biāo)到合適位置。點(diǎn)擊‘1’,使拖黑的電平為高電平先點(diǎn)擊‘b’,將其點(diǎn)為黑色然后先點(diǎn)擊此處將彈出時鐘周期設(shè)置窗設(shè)置輸入信號‘b’的周期為800ns(e)仿真輸入信號設(shè)置設(shè)置輸入信號‘a(chǎn)’的周期為2us放大縮小賦值0、1不定態(tài)高阻態(tài)信號取反時鐘周期賦值總線信號(組信號)順序賦值總線信號(組信號)一般賦值有限狀態(tài)機(jī)狀態(tài)賦值仿真波形文件存盤?。╢)仿真文件保存——按照默認(rèn)文件名及位置保存即可選擇仿真器運(yùn)行仿真器(g)時序仿真結(jié)果分析圖3-17mux21a仿真波形仿真波形分析時,可利用移動標(biāo)尺與鼠標(biāo)配合測量信號時間寬度除仿真波形分析外,還可進(jìn)行傳輸延遲分析、建立保持時間分析及對時序電路的最高工作頻率分析即定時分析。僅對時序邏輯電路可進(jìn)行建立保持時間分析及最高工作頻率分析(6)引腳鎖定可選擇鍵8作為多路選擇器的輸入“s”實(shí)驗(yàn)電路結(jié)構(gòu)圖可選擇輸出“y”的信號從揚(yáng)聲器輸出信號a和b輸入兩個不同頻率的時鐘信號根據(jù)硬件連接關(guān)系確定輸入輸出信號所接引腳的編號鍵8的引腳名作為“s”信號鍵8的引腳名對應(yīng)的引腳號選擇實(shí)驗(yàn)板上插有的目標(biāo)器件揚(yáng)聲器引腳號為:99信號b由“clock0”輸入時鐘信號,引腳號為:126信號a由“clock5”輸入時鐘信號,引腳號為:56注意,對于GWAK30+板,時鐘引腳必須查閱以下“時鐘了解表1”
引腳對應(yīng)情況實(shí)驗(yàn)板位置多路選擇器信號通用目標(biāo)器件引腳名目標(biāo)器件EP1K30TC144引腳號1、鍵8:
sPIO13272、揚(yáng)聲器y
SPEAKER993、時鐘輸入信號bCLOCK01264、時鐘輸入信號aCLOCK556根據(jù)硬件連接關(guān)系確定輸入輸出信號所接引腳的編號,將信號鎖定到對應(yīng)引腳上。(根據(jù)實(shí)體輸入輸出信號在器件上連接的情況,將所設(shè)計(jì)電路的信號鎖定到對應(yīng)的器件引腳上)選擇引腳鎖定選項(xiàng)引腳窗引腳鎖定方式一:通過菜單方式鎖定此處輸入信號名此處輸入引腳名按鍵“ADD”即可注意引腳屬性錯誤引腳名將無正確屬性!引腳鎖定方式二:通過主菜單中底板編輯器鎖定再編譯一次,將引腳信息進(jìn)去引腳鎖定完成后必須進(jìn)行編譯才能將引腳信息編輯進(jìn)去引腳鎖定且編譯后,如需撤銷鎖定只能用菜單方式進(jìn)行首次下載前需安裝硬件下載驅(qū)動——方法見課本P1041、打開控制面板(開始->設(shè)置->控制面板->添加硬件)驅(qū)動安裝步驟如下:2、雙擊“添加硬件”圖標(biāo),啟動添加硬件向?qū)?,然后按下一步繼續(xù)。3、選擇“是,硬件已連接好”,然后按下一步繼續(xù)。4、選擇添加新設(shè)備,選擇手動安裝,然后按下一步繼續(xù)。5、選擇“聲音、視頻、游戲控制器”然后按下一步繼續(xù)。6、選擇從磁盤安裝,然后按下一步繼續(xù)。7、選安裝maxplus2目錄下路徑X:\maxplus2\Drivers\win2000\Win2000.inf,運(yùn)行“下一步”8、彈出數(shù)字簽名對話框時,點(diǎn)擊繼續(xù)安裝9、選擇為硬件AlteraByteBlaster按裝驅(qū)動10、點(diǎn)擊“下一步”,安裝完成后重新啟動計(jì)算機(jī)選擇編程器,準(zhǔn)備將設(shè)計(jì)好的半加器文件下載到目器件中去編程窗首次下載前需安裝硬件下載驅(qū)動——方法見課本P104在編程窗打開的情況下選擇下載方式設(shè)置選擇此項(xiàng)下載方式下載方式設(shè)置(首次使用時必須進(jìn)行此項(xiàng)設(shè)置)下載(配置)成功!FPGA選配置(configure)CPLD選編程(program)(5)硬件測試選擇電路模式為“6”模式選擇鍵“s”為高’電平注意時鐘頻率選擇CLOCK5:a頻率選擇1024HzCLOCK0:b頻率選擇256Hz可以三人表決器及四位二進(jìn)制計(jì)數(shù)器為例進(jìn)行文本方式設(shè)計(jì)輸入演示ENTITYCNT4ISPORT(CLK:INBIT;Q:BUFFERINTEGERRANGE15DOWNTO0);END;ARCHITECTUREbhvOFCNT4ISBEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ<=Q+1;ENDIF;ENDPROCESS;ENDbhv;四位二進(jìn)制計(jì)數(shù)器libraryieee;useieee.std_logic_1164.all;entitydecide3isport(vote3,vote2,vote1:instd_logic;red,green:outstd_logic);endentitydecide3;architectureoneofdecide3issignalvote_result:std_logic_vector(3downto1);beginvote_result<=vote3&vote2&vote1;process(vote_result)begincase(vote_result)iswhen"000"=>red<='1';green<='0';when"001"=>red<='1';green<='0';when"010"=>red<='1';green<='0';when"011"=>red<='0';green<='1';when"100"=>red<='1';green<='0';when"101"=>red<='0';green<='1';when"110"=>red<='0';green<='1';when"111"=>red<='0';green<='1';whenothers=>null;endcase;endprocess;endarchitectureone;三人表決器3.2.14位加法計(jì)數(shù)器的VHDL描述(1)4位加法計(jì)數(shù)器【例3.2-1】ENTITYCNT4ISPORT(CLK:INBIT;Q:BUFFER
INTEGER
RANGE15DOWNTO0);END;ARCHITECTUREbhvOFCNT4ISBEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ<=Q+
1;ENDIF;ENDPROCESS;ENDbhv;3.2VHDL設(shè)計(jì)進(jìn)階簡單功能的自然二進(jìn)制碼計(jì)數(shù)器的設(shè)計(jì)(已講過-主要內(nèi)容回顧)(端口信號的工作模式及讀寫特性)(2)4位加法計(jì)數(shù)器的另一種表達(dá)方式(已講過)【例3.2-2】
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;Q<=Q1;ENDPROCESS;ENDbhv;(中間信號作過渡;重載函數(shù)概念)(3)
4位加法計(jì)數(shù)器的另一種表達(dá)方式圖6-24位加法計(jì)數(shù)器工作時序歸納數(shù)據(jù)類型BUFFER模式重載函數(shù)計(jì)數(shù)器結(jié)構(gòu)數(shù)據(jù)類型:說明端口上流動的數(shù)據(jù)的表達(dá)格式(或取值類型)及取值范圍重載函數(shù)概念:同名但具有不同參數(shù)列表和函數(shù)體的函數(shù)函數(shù)重載技術(shù)(即同名函數(shù)根據(jù)參數(shù)不同執(zhí)行不同函數(shù)體)為編程帶來了很大的便利。3.2.2不同工作方式的時序電路設(shè)計(jì)(1)將要涉及的相關(guān)語法說明1.變量
為了簡化表達(dá)才使用短語“(OTHERS=>X)”,這是一個省略賦值操作符,它可以在較多位的位矢量賦值中作省略化的賦值,如以下語句:
SIGNALd1:STD_LOGIC_VECTOR(4DOWNTO0);VARIABLEa1:STD_LOGIC_VECTOR(15DOWNTO0);...d1<=(OTHERS=>'0');a1:=(OTHERS=>'0');d1<=(1=>’1’,OTHERS=>‘0’);位矢量d1第1位賦值為1,其余位賦值為0——帶清零、置數(shù)、使能等控制功能的任意進(jìn)制計(jì)數(shù)器的設(shè)計(jì)及移位寄存器設(shè)計(jì)2.省略賦值操作符(OTHERS=>X)用于為位矢量中多位同時賦以相同的值X,優(yōu)點(diǎn)是該賦值與位矢量長度無關(guān)(2)帶有復(fù)位和時鐘使能的10進(jìn)制計(jì)數(shù)器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);--進(jìn)位信號
ENDCNT10;ARCHITECTUREbehavOFCNT10ISBEGINPROCESS(CLK,RST,EN)
VARIABLE
CQI:STD_LOGIC_VECTOR(3DOWNTO0);
BEGINIFRST='1'THENCQI:=(OTHERS=>'0');--計(jì)數(shù)器復(fù)位
ELSIFCLK'EVENTANDCLK='1'THEN--檢測時鐘上升沿
IFEN='1'THEN--檢測是否允許計(jì)數(shù)
IFCQI<"1001"THENCQI:=CQI+1;--允許計(jì)數(shù)
ELSECQI:=(OTHERS=>‘0’);--中間變量等于9,計(jì)數(shù)值清零
ENDIF;ENDIF;ENDIF;IFCQI=“1001”THENCOUT<=‘1’;--中間變量計(jì)數(shù)等于9,輸出進(jìn)位信號
ELSECOUT<='0';ENDIF;CQ<=CQI;--將計(jì)數(shù)值向端口輸出
ENDPROCESS;ENDbehav;【例3.2-3】實(shí)現(xiàn)復(fù)位及計(jì)數(shù)功能部分實(shí)現(xiàn)進(jìn)位邏輯部分同步(異步)置數(shù)、清零區(qū)別是否需時鐘信號配合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);--進(jìn)位信號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<"1001"THENCQI:=CQI+1;--允許計(jì)數(shù)
ELSECQI:=(OTHERS=>'0');--大于9,計(jì)數(shù)值清零
ENDIF;ENDIF;ENDIF;IFCQI="1001"THENCOUT<='1';--計(jì)數(shù)等于9,輸出進(jìn)位信號
ELSECOUT<='0';ENDIF;CQ<=CQI;--將計(jì)數(shù)值向端口輸出
ENDPROCESS;ENDbehav;去掉非法字符后調(diào)通的程序圖3.2-3
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖北省大學(xué)生鄉(xiāng)村醫(yī)生專項(xiàng)計(jì)劃招聘386人備考題庫含答案詳解
- 2025年東莞市道滘鎮(zhèn)中心幼兒園招聘編外教師備考題庫及完整答案詳解1套
- 重慶市開州區(qū)中醫(yī)院2025年公開招聘臨聘人員備考題庫及1套完整答案詳解
- 2026年出口管制合規(guī)體系建設(shè)咨詢合同
- 清華大學(xué)出版社2026年校園招聘7人備考題庫及答案詳解1套
- 2026年州際文化交換合同
- 空白的抵押合同(標(biāo)準(zhǔn)版)
- 2026年北京中醫(yī)醫(yī)院派遣制職工招聘10人備考題庫及答案詳解1套
- 員工應(yīng)急預(yù)案演練(3篇)
- 2026年生活場景攝影合同
- 湖南省長郡二十校聯(lián)盟2025-2026學(xué)年高三上學(xué)期12月考試數(shù)學(xué)試卷
- 供應(yīng)商選擇風(fēng)險(xiǎn)評估表
- 聯(lián)合站安全監(jiān)控系統(tǒng)軟件設(shè)計(jì)(采用PLC方案)及聯(lián)合站安全監(jiān)控系統(tǒng)軟件設(shè)計(jì)(采用PLC、儀表方案)
- 2021年重慶萬州上海中學(xué)高一物理聯(lián)考試題含解析
- 挑戰(zhàn)式銷售課件
- 數(shù)量遺傳學(xué)10-11-第11章QTL定位-1
- 歷年上海高考英語作文(題目匯總)
- 安徽省清單定額解釋及綜合估價表問題的解釋
- 馬克思主義基本原理概論第五章 資本主義發(fā)展的歷史進(jìn)程
- SPC統(tǒng)計(jì)過程控制培訓(xùn)教材
- GB/T 10405-2009控制電機(jī)型號命名方法
評論
0/150
提交評論