版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第4章VHDL設(shè)計進(jìn)階4.1學(xué)習(xí)VHDL的基本語句4.2了解VHDL的描述風(fēng)格4.3有限狀態(tài)機(jī)的設(shè)計
4.1 學(xué)習(xí)VHDL的基本語句
4.1.1順序語句順序語句是相對于并行語句而言的,順序語句的特點:每一條順序語句的執(zhí)行順序與語句的書寫順序有關(guān),即語句的先后順序有因果關(guān)系,這一點和傳統(tǒng)的軟件編程語言是十分相似的。這里的順序是從仿真軟件的運(yùn)行或順應(yīng)VHDL語法的編程思路而言的,相應(yīng)的硬件邏輯工作方式未必如此。
順序語句通常用來描述各種邏輯功能,即算法的實現(xiàn)。
順序語句只能在進(jìn)程(Process)和子程序(函數(shù)和過程)中使用。
VHDL有六種順序語句:賦值語句、流程控制語句、等待語句、子程序調(diào)用語句、返回語句、空操作語句。
1.賦值語句
【例4-1】用VHDL設(shè)計一個按鍵控制八個發(fā)光二極管,鍵按下時,間隔點亮;鍵松開時,都不亮。程序代碼如下:
賦值語句的功能就是將一個值或一個表達(dá)式的結(jié)果傳遞給某一數(shù)據(jù)對象,如信號或變量。VHDL設(shè)計實體內(nèi)的數(shù)據(jù)傳遞以及對外部數(shù)據(jù)的讀寫都是通過賦值語句來實現(xiàn)的。
賦值語句有兩種,即信號賦值語句和變量賦值語句。每一種賦值語句都由三個基本部分組成,即賦值目標(biāo)、賦值符號和賦值源。賦值目標(biāo)是所賦值的受體,它可以是信號或變量;賦值符號只有兩種,信號賦值符是“<=”;變量賦值符是“:=”;賦值源是賦值的主體,它可以是一個數(shù)值,也可以是一個邏輯或運(yùn)算表達(dá)式。VHDL規(guī)定,賦值目標(biāo)和賦值源的數(shù)據(jù)類型必須一致。
1)變量賦值與信號賦值
變量賦值語句及信號賦值語句的格式如下:
變量賦值目標(biāo):=賦值源;
信號賦值目標(biāo)<=賦值源;
比較例4-2和例4-3,可以看出它們唯一的區(qū)別是對進(jìn)程(process)中的a和b做了不同的定義,前者定義為信號而后者定義為變量。然而,它們綜合的結(jié)果卻有很大的不同,前者的電路圖是圖4-1,而后者的電路圖是圖4-2。
圖4-1例4-2的電路圖4-2例4-3的電路
信號賦值和變量賦值的區(qū)別:
(1)變量是局部、暫時性數(shù)據(jù)對象,它的有效性只局限于一個進(jìn)程或一個子程序中,在進(jìn)程內(nèi)部定義;信號具有全局特征,在進(jìn)程的外部定義。
(2)變量的賦值是立即發(fā)生的;信號的賦值并不是立即發(fā)生的,而是在進(jìn)程結(jié)束時進(jìn)行的,同一進(jìn)程中,同一信號賦值目標(biāo)有多個賦值源時,信號賦值目標(biāo)獲得的是最后一個賦值源的賦值。
(3)信號賦值符和變量賦值符的區(qū)別。
2)省略賦值(OTHERS=>X)
在位數(shù)較多的矢量賦值中,為了簡化表達(dá)可以使用短語“(OTHERS=>X)”作省略化的賦值,如以下語句:
以上兩條語句等同于A1<=“00000”、B1:=“11111111”,其優(yōu)點是在給位數(shù)較多的矢量賦值時簡化了表述,明確了含義,而且這種表述與位矢量的長度無關(guān)。
利用“(OTHERS=>X)”短語還可以在給位矢量的某些位賦值之后再用OTHERS給剩余的位賦值,如A1<=(1=>'1',4=>'1',OTHERS=>'0'),此賦值語句的含義是給矢量A1的第1位和第4位賦值為1,而其余位賦值為0,即A1<="10010"。
2.流程控制語句
流程控制語句是通過設(shè)置條件和判斷條件是否成立來控制語句的執(zhí)行的。這類語句共有五種:IF語句、CASE語句、LOOP語句、NEXT語句、EXIT語句。
1)
IF語句
IF語句是VHDL中最重要的語句結(jié)構(gòu)之一,它根據(jù)語句中設(shè)置的一種或多種條件,有選擇地執(zhí)行指定的順序語句。IF語句的基本結(jié)構(gòu)有以下四種:
(1)IF條件句THEN --第一種IF語句結(jié)構(gòu)
順序語句;
ENDIF;
(2)IF條件句THEN --第二種IF語句結(jié)構(gòu)
順序語句;
ELSE
順序語句;
ENDIF;
(3)IF條件句THEN --第三種IF語句結(jié)構(gòu)
IF條件句THEN
順序語句;
ENDIF;
ENDIF;
(4)IF條件句THEN --第四種IF語句結(jié)構(gòu)
順序語句;
ELSIF條件句THEN
順序語句;
ENDIF;
IF語句中至少要有一個條件句,條件句必須是一個BOOLEAN類型的表達(dá)式,即結(jié)果只能是TRUE或FALSE。
如:
IFATHEN…
IF(AandB)THEN…
這里的A和B都是布爾類型的標(biāo)識符,IF語句根據(jù)條件句的結(jié)果,選擇執(zhí)行其后的順序語句。
下面簡要介紹這四種類型的IF語句。
(1)第一種結(jié)構(gòu)是最簡單的IF語句結(jié)構(gòu)。執(zhí)行此句時,首先判斷條件句的結(jié)果,若結(jié)果為TRUE,則執(zhí)行關(guān)鍵詞“THEN”和“ENDIF”之間的順序語句;若條件為FALSE,則不執(zhí)行,直接結(jié)束IF語句。這是一種非完整性的條件語句,通常用于產(chǎn)生時序電路。例如:
IF
(a>b)
THEN
Output
<=
‘1’;
ENDIF;
當(dāng)條件句(a>b)成立時,向信號Output賦值1;不成立時,則直接結(jié)束IF語句,此信號維持原值。由于信號Output的值可以保持,即有記憶功能,因此這種語句通常用于產(chǎn)生時序電路。
(2)第二種IF語句結(jié)構(gòu)可以實現(xiàn)條件分支功能,就是通過測定條件句的真假來決定執(zhí)行哪一組順序語句。和第一種結(jié)構(gòu)相比,當(dāng)條件為FALSE時,它并不結(jié)束IF語句的執(zhí)行,而是轉(zhuǎn)去執(zhí)行ELSE后面的另一組順序語句。這是一種完整性的條件語句,它給出了所有可能下的執(zhí)行情況,通常用于產(chǎn)生組合電路。例如:
IF
SELTHEN
Output<=A;
ELSE
Output<=B;
ENDIF;
當(dāng)SEL的值為TRUE時,將A的值賦給信號Output;當(dāng)SEL的值為FALSE時,則將B的值賦給Output。
(3)第三種IF語句是一種多重IF語句的嵌套結(jié)構(gòu),可以產(chǎn)生比較豐富的條件描述,既可以產(chǎn)生時序電路,也可以產(chǎn)生組合電路,或是兩者的混合。在使用這種結(jié)構(gòu)時應(yīng)注意,ENDIF結(jié)束句應(yīng)該與IF條件句的數(shù)量一致,即有一個IF就要有一個ENDIF。
(4)第四種IF語句結(jié)構(gòu)也可以實現(xiàn)不同類型的電路,該語句通過關(guān)鍵詞ELSIF設(shè)定多個條件,使順序語句的執(zhí)行分支可以超過兩個。這種語句結(jié)構(gòu)有一個重要特點,就是語句中各個分支中的順序語句的執(zhí)行條件具有向上相與的特點。例如:
2)
CASE語句
CASE語句的詳細(xì)介紹請參見本書3.1.2小節(jié)。
CASE語句和IF語句也可以混合使用,例4-5是一個算術(shù)邏輯單元的VHDL描述,它在OPCODE信號的控制下分別完成加、減、相等或不相等比較等操作,程序在CASE語句中混合使用了IF語句。
3)
FOR_LOOP語句
FOR_LOOP語句就是循環(huán)語句,它可以使一組順序語句循環(huán)執(zhí)行,執(zhí)行次數(shù)由設(shè)定的循環(huán)變量決定。其語法格式如下:
[標(biāo)號:]FOR循環(huán)變量,IN循環(huán)次數(shù)范圍LOOP
順序語句
ENDLOOP[標(biāo)號];
FOR后面的循環(huán)變量是一個臨時變量,屬LOOP語句的局部變量,不必事先定義。使用時應(yīng)注意,在LOOP語句范圍內(nèi)不要再使用與循環(huán)變量同名的標(biāo)識符。
循環(huán)變量從循環(huán)次數(shù)范圍的初值開始,每執(zhí)行一次順序語句后自動加1,直到循環(huán)次數(shù)范圍指定的最大值。
例4-6利用異或運(yùn)算的特點來檢測1的個數(shù),首先定義一個變量tmp,并將它的初始值設(shè)為0。若此變量與0作異或運(yùn)算則保持不變,仍為0;若與1作異或運(yùn)算則相當(dāng)于取反,異或一次1結(jié)果為1,異或兩次1則結(jié)果為0,以此類推。顯然,若1的個數(shù)為奇數(shù)則結(jié)果為1,若1的個數(shù)為偶數(shù)則結(jié)果為0。
4)?NEXT和EXIT語句
NEXT和EXIT語句主要用在LOOP語句內(nèi)進(jìn)行有條件的或無條件的轉(zhuǎn)向控制。例如:
EXIT語句和NEXT語句很相似,所不同的是EXIT是轉(zhuǎn)向循環(huán)的結(jié)束處,即跳出循環(huán)。
3.等待語句
WAIT語句主要有以下兩種形式:
WAITON信號表;
WAITUNTIL條件表達(dá)式;
4.子程序調(diào)用語句
和其他軟件編程語言一樣,VHDL也可以使用子程序(Subprogram),應(yīng)用子程序的目的是更有效地完成重復(fù)性的工作。VHDL的子程序有過程(Procedure)和函數(shù)(Function)兩種形式,它們可以在VHDL程序的3個不同位置進(jìn)行定義,即可以在程序包、結(jié)構(gòu)體或進(jìn)程中定義,只有在程序包中定義的子程序可以被其他設(shè)計調(diào)用。對子程序的調(diào)用可以有兩種語句方式,即順序語句方式和并行語句方式。
過程和函數(shù)都是利用順序語句來定義和完成算法的,即只能使用順序語句。在函數(shù)中所有的參數(shù)都是輸入?yún)?shù),而過程有輸入?yún)?shù)、輸出參數(shù)和雙向參數(shù);函數(shù)總是只有一個返回值,而過程可以提供多個返回值,或沒有返回值。在調(diào)用子程序時,函數(shù)通常作為表達(dá)式的一部分,常在賦值語句或表達(dá)式中使用,而過程往往單獨存在,其行為類似于進(jìn)程。
在實際應(yīng)用中必須注意,每一次調(diào)用子程序都會產(chǎn)生相同結(jié)構(gòu)的電路模塊,即每調(diào)用一次子程序就意味著增加了一個硬件電路模塊,這和軟件中調(diào)用子程序有很大的不同。因此,在使用中要密切關(guān)注子程序的調(diào)用次數(shù)。
1)過程(Procedure)
定義過程的語句格式如下:
PROCEDURE過程名(參數(shù)表)
--過程首
PROCEDURE過程名(參數(shù)表)IS --過程體
[說明部分]
BEGIN
順序語句;
ENDPROCEDURE過程名;
過程語句由過程首和過程體兩部分組成,其中過程首不是必需的,過程體可以獨立存在和使用。在進(jìn)程或結(jié)構(gòu)體中定義過程時不必定義過程首,而在程序包中必須定義過程首。
在參數(shù)表中可以對常數(shù)、變量和信號這三類數(shù)據(jù)對象進(jìn)行說明,并用關(guān)鍵詞IN、OUT和INOUT定義這些參數(shù)的模式,即信息的流向,默認(rèn)的模式是IN。
過程體是由順序語句組成的,過程的調(diào)用即啟動了過程體的順序語句的執(zhí)行。過程體中的說明部分是局部的,即其中的各種定義只適用于過程體內(nèi)部。
例4-7中,當(dāng)R和S同時為0時,RETURN語句將結(jié)束過程的執(zhí)行,無條件跳轉(zhuǎn)至END處。注意程序中的時間延遲語句和REPORT語句是不可綜合的。
調(diào)用過程的語句格式如下:
過程名[([形參名=>]實參表達(dá)式,
[形參名=>]實參表達(dá)式,…)];
其中,形參名是指在過程參數(shù)表中已說明的參數(shù)名,實參是調(diào)用過程的程序中形參的接受體。形參與實參的對應(yīng)關(guān)系有名字關(guān)聯(lián)法和位置關(guān)聯(lián)法兩種表達(dá)方式,采用位置關(guān)聯(lián)法時可以省去形參名和關(guān)聯(lián)符。
例4-8是一個完整的程序,它先在自定義的程序包中定義了一個整數(shù)類型的子類型MY_TYPE和一個數(shù)組類型MY_ARRAY,然后在進(jìn)程中定義了一個名為SWAP的局部過程(沒有放在程序包中的過程)。這個過程的功能是對一個數(shù)組中的兩個元素進(jìn)行比較,如果發(fā)現(xiàn)這兩個元素的排序不符合要求,就進(jìn)行交換。連續(xù)三次調(diào)用這個過程,就能將一個三元素的數(shù)組元素從小到大排列好。
2)函數(shù)(Function)
VHDL中有多種函數(shù)形式,如各種標(biāo)準(zhǔn)程序包中的預(yù)定義函數(shù)、轉(zhuǎn)換函數(shù)、決斷函數(shù)等。定義函數(shù)的語句格式如下:
FUNCTION函數(shù)名(參數(shù)表)RETURN數(shù)據(jù)類型 --函數(shù)首
FUNCTION函數(shù)名(參數(shù)表)RETURN數(shù)據(jù)類型IS --函數(shù)體
[說明部分]
BEGIN
順序語句;
ENDFUNCTION函數(shù)名;
【例4-9】下面是函數(shù)定義的例子。
例4-9中的函數(shù)返回值由參數(shù)sel決定,當(dāng)sel為高電平時返回“aANDb”的值;為低電平時則返回“aORb”的值。其對應(yīng)的電路圖如圖4-3所示。
圖4-3函數(shù)opt對應(yīng)的電路圖
例4-10在結(jié)構(gòu)體中定義了一個名為SAM的函數(shù),然后在進(jìn)程中調(diào)用了此函數(shù)。輸入端口A被列為進(jìn)程的敏感信號,當(dāng)A的三個位A(0)、A(1)、A(2)中的任何一個有變化時,就啟動對函數(shù)SAM的調(diào)用,并將返回值賦給M輸出。
3)子程序重載
子程序重載(RELOAD)指兩個或多個子程序使用相同的名字,也就是說,VHDL允許設(shè)計者用同一個名字書寫多個子程序,這些子程序的參數(shù)類型和返回值可以是不同的。
在調(diào)用這種重名的子程序時,VHDL根據(jù)下列因素決定調(diào)用哪一個子程序:
(1)子程序調(diào)用中出現(xiàn)的參數(shù)數(shù)目。
(2)調(diào)用中出現(xiàn)的參數(shù)類型。
(3)調(diào)用中使用名字關(guān)聯(lián)法時參數(shù)的名字。
(4)子程序為函數(shù)時返回值的類型。
例4-11在程序包中定義了3個名為MAX的函數(shù),它們的函數(shù)名相同,但參數(shù)類型是不同的,顯然,程序是根據(jù)調(diào)用時出現(xiàn)的參數(shù)類型來決定調(diào)用哪一個函數(shù)的。
注意:在定義子程序的形式參數(shù)時,可以不限定其長度和范圍,如例4-11中函數(shù)MAX的形參A、B均未限定長度,而是由實參的大小來決定的。這樣,該子程序就可以用于不同的情況。
5.返回語句(RETURN)
返回語句只能用于子程序(過程和函數(shù))中,有以下兩種格式:
RETURN; --第一種語句格式
RETURN表達(dá)式;
--第二種語句格式
第一種語句格式只能用于過程,它的功能是結(jié)束過程,并不返回任何值;第二種語句格式只能用于函數(shù),并且必須返回一個值。
6.空操作語句
NULL語句不做任何操作,它的功能就是使程序進(jìn)入下一條語句的執(zhí)行。NULL語句常用于CASE語句中,用來代替其余可能出現(xiàn)的情況,如:
CASEOPCODEIS
WHEN“001”=>TMP:=AANDB;
WHEN“101”=>TMP:=AORB;
WHEN“110”=>TMP:=NOTA;
WHENOTHERS=>NULL;
ENDCASE;
4.1.2并行語句
VHDL中的并行語句主要有以下七種。
(1)塊(BLOCK)語句:由一系列并行運(yùn)行的語句構(gòu)成的組合體,功能是將這些并行語句組合成一個或多個子模塊。
(2)進(jìn)程(PROCESS)語句:由順序語句組成,可按規(guī)定的條件將外部信號或內(nèi)部數(shù)據(jù)向其他信號進(jìn)行賦值。
(3)并行信號賦值語句:將設(shè)計實體內(nèi)的處理結(jié)果向內(nèi)部信號或外部端口進(jìn)行賦值。
(4)條件信號賦值語句:根據(jù)設(shè)定的條件向信號或端口進(jìn)行賦值。
(5)選擇信號賦值語句:根據(jù)表達(dá)式的值向信號或端口進(jìn)行賦值。
(6)元件例化語句:可以把其他的設(shè)計實體當(dāng)作元件來調(diào)用,并將此元件的端口與其他的元件、信號或高層次實體的端口進(jìn)行連接。
(7)生成語句:可以用來復(fù)制一組相同的設(shè)計單元。
1.塊(BLOCK)語句
一個設(shè)計實體原則上只能有一個結(jié)構(gòu)體,但當(dāng)電路功能比較復(fù)雜時,在一個結(jié)構(gòu)體中進(jìn)行描述就顯得很不方便。BLOCK語句的功能就是提供一種劃分機(jī)制,它允許設(shè)計者將一個大的設(shè)計實體劃分成若干個功能模塊,這種劃分只是形式上的,主要目的是改善程序的可讀性,對程序的移植、排錯和仿真也是有益的。
2.進(jìn)程語句(PROCESS)要點
在前面有關(guān)章節(jié)中已多次提到進(jìn)程(PROCESS)語句,并舉出很多示例(詳見3.1.2小節(jié))。進(jìn)程語句是一種并行語句,在一個設(shè)計實體中可以有多個進(jìn)程語句同時并發(fā)執(zhí)行,這和普通軟件編程語言有很大不同。
下面對進(jìn)程語句使用中的注意事項和要點做出以下歸納:
(1)一個進(jìn)程可以與其他進(jìn)程同時運(yùn)行,并可存取結(jié)構(gòu)體或?qū)嶓w中所定義的信號,但不能在不同的進(jìn)程中對同一信號進(jìn)行賦值操作。
(2)盡管在同一進(jìn)程中可以包含多個條件語句,但只允許有一個含有時鐘邊沿檢測的條件語句(如ifrising_edge(clk)…),即一個進(jìn)程中只能描述針對同一時鐘信號的時序邏輯,而多時鐘邏輯必須由多個進(jìn)程來描述。
(3)進(jìn)程本身是并行語句,進(jìn)程中的所有語句都是按順序執(zhí)行的。當(dāng)進(jìn)程的最后一個語句執(zhí)行完畢后,在敏感信號的觸發(fā)下,又從該進(jìn)程的第一個語句開始重復(fù)執(zhí)行,但是如果沒有敏感信號的變化,這個進(jìn)程不會工作。因此,為啟動進(jìn)程,在進(jìn)程語句中必須包含一個敏感信號表,或者包含一個WAIT語句。
(4)進(jìn)程之間的通信是通過信號傳遞來實現(xiàn)的。信號具有全局性,它是進(jìn)程之間進(jìn)行聯(lián)系的重要途徑,因此,在進(jìn)程說明部分不允許定義信號。
3.并行信號賦值語句
并行信號賦值語句是VHDL并行語句中最基本的結(jié)構(gòu),格式如下:
賦值目標(biāo)<=表達(dá)式;
其中,賦值目標(biāo)必須是信號,兩邊的數(shù)據(jù)類型必須一致。這類語句的最大特點是在結(jié)構(gòu)體中的執(zhí)行是同時進(jìn)行的,與書寫順序無關(guān)。一條并行信號代入語句實際上就是一個進(jìn)程語句的縮寫,
例如:
ARCHITECTUREEXAMPLEOFTESTIS
BEGIN
OUT1<=IN1OR(IN2ANDIN3);--并行信號代入語句
ENDEXAMPLE;
此例中的并行信號代入語句實際上是如下進(jìn)程的縮寫:
PROCESS(IN1,IN2,IN3)
BEGIN
OUT1<=IN1OR(IN2ANDIN3);
ENDPROCESS;
4.條件信號賦值語句
條件信號賦值語句的格式如下:
賦值目標(biāo)<=表達(dá)式WHEN賦值條件ELSE
表達(dá)式WHEN賦值條件ELSE
…
表達(dá)式;
5.選擇信號賦值語句
選擇信號賦值語句的格式如下:
WITH選擇表達(dá)式SELECT
賦值目標(biāo)<=表達(dá)式WHEN選擇值,
表達(dá)式WHEN選擇值,
…
表達(dá)式WHEN選擇值;
6.元件例化語句
元件例化語句由兩部分組成,第一部分將事先設(shè)計好的實體定義為一個元件,第二部分則是定義此元件與當(dāng)前設(shè)計實體的連接關(guān)系。
(1)定義元件語句:
COMPONENT元件名
GENERIC(類屬表);
PORT(端口名表);
ENDCOMPONENT元件名;
(2)元件例化語句:
元件名PORTMAP(
[端口名=>]連接端口名,[端口名=>]連接端口名,…);
7.生成語句
生成語句有兩種形式,一種是FOR-GENERATE形式,即
[標(biāo)號]:FOR循環(huán)變量IN取值范圍GENERATE
生成語句
ENDGENERATE[標(biāo)號];
另一種是IF-GENERATE形式,即
[標(biāo)號]:IF條件GENERATE
生成語句
ENDGENERATE[標(biāo)號];
4.1.3其他語句
1.ASSERT語句和REPORT語句
ASSERT(斷言)語句和REPORT語句只能在仿真中使用,它們既可以作為順序語句使用,也可以作為并行語句使用。
2.屬性描述與定義語句
VHDL中的某些項目可以具有屬性(Attribute),如數(shù)據(jù)類型、過程、函數(shù)、信號、變量、常量、實體、結(jié)構(gòu)體、配置、程序包、元件和語句標(biāo)號等。屬性代表這些項目的某種特征,通常可以用一個值或一個表達(dá)式來表示。
VHDL提供了多種預(yù)定義屬性描述語句,可以通過這些語句來檢測或調(diào)用這些項目的各種屬性,這類語句有許多實際的用途,如表4-1所示。VHDL也允許用戶自己定義屬性。
屬性描述語句的格式是:
屬性測試項目名‘屬性名
下面將分類介紹屬性的用法。
1)信號類屬性
信號類屬性中最常用的是EVENT,即事件。EVENT用來檢測信號在一個極短的時間段內(nèi)有無“事件”發(fā)生,如果有,就返回一個布爾值TRUE,反之就返回布爾值FALSE。所謂事件是指信號電平的任何變化,如信號從0變?yōu)?,或從1變?yōu)?都是事件。
例如:
IF(CLK‘EVENTandCLK=’1‘)THEN…
其中,CLK'EVENT用來檢測CLK信號是否有“事件”,當(dāng)CLK'EVENT和CLK='1'都為TRUE時,就說明CLK信號有一個上升沿。但必須注意,只有當(dāng)CLK信號是BIT類型時才能用這種方式檢測上升沿,因為BIT類型只有0和1兩種取值。如果CLK是STD_LOGIC類型,它可能的取值有9種,當(dāng)CLK'EVENT和CLK='1'都為TRUE時就不一定是上升沿了,此時應(yīng)該用“IFRISING_EDGE(CLK)THEN…”來檢測信號的上升沿。
RISING_EDGE()和FALLING_EDGE()是STD_LOGIC_1164標(biāo)準(zhǔn)程序包中預(yù)定義的兩個函數(shù),可用來檢測標(biāo)準(zhǔn)邏輯信號的上升沿和下降沿。
STABLE的測試與EVENT恰好相反,即沒有事件時返回布爾值TRUE,而有事件時返回布爾值FALSE。下面兩條語句的功能是一樣的:
NOTCLK'STABLEANDCLK='1'
CLK'EVENTANDCLK='1'
2)數(shù)據(jù)區(qū)間類屬性
數(shù)據(jù)區(qū)間類屬性有?‘RANGE和?’REVERSE_RANGE。它們主要是對項目的取值區(qū)間進(jìn)行測試,返回的不是一個數(shù)值,而是一個區(qū)間。
例如:
…
SIGNALSIG1:STD_LOGIC_VECTOR(0TO7);
…
FORiINSIG1'RANGELOOP;
…
此例中的FOR-LOOP語句相當(dāng)于“FORiIN0TO7LOOP;”,即SIG1'RANGE返回的是位矢量SIG1定義的元素范圍。如果用REVERSE_RANGE,則返回的區(qū)間只好相反,是(7DOWNTO0)。
3)數(shù)值類屬性
數(shù)值類屬性主要用于對項目的一些數(shù)值特性進(jìn)行測試,返回的是一個數(shù)值。這類屬性主要有?'LEFT、'RIGHT、'HIGH及?'LOW。
4)數(shù)組屬性
數(shù)組屬性('LENGTH)的用法同前三項,只是對數(shù)組的寬度進(jìn)行測試。
4.1.4練習(xí)與測評
一、填空題
1.
VHDL語句可以分為________語句和________語句兩大類。
2.
NEXT語句主要用于在________語句執(zhí)行中進(jìn)行有條件或無條件的________控制。
3.
VHDL的順序語句主要有________、________、________、________和________。
4.根據(jù)要求在橫線上填寫相應(yīng)內(nèi)容。
if條件句then順序處理語句;
else順序處理語句;
endif;
條件成立,執(zhí)行________和________之間的順序處理語句;條件不成立,執(zhí)行________和________之間的順序處理語句。
5.根據(jù)要求在橫線上填寫相應(yīng)內(nèi)容。
6.根據(jù)要求在橫線上填寫相應(yīng)內(nèi)容。
7.有下列程序:
則其中循環(huán)變量I的變化范圍是________。
8.一般地,只有________格式的等待語句可以被綜合器接受(其余等待語句格式只能在VHDL仿真器中使用)。
9.進(jìn)程語句是最基本、最常用的并行語句,同一結(jié)構(gòu)體的不同進(jìn)程之間是________關(guān)系。進(jìn)程中邏輯描述語句是按________運(yùn)行的,在進(jìn)程中只能使用________語句。進(jìn)程的主要組成部分有________,________和________。
10.進(jìn)程中,只能將________列入敏感表,而不能將________列入敏感表,因為進(jìn)程只對________敏感。進(jìn)程的激活可由________表中的任一________信號的變化來啟動,否則必須有一個________語句來激勵。當(dāng)進(jìn)程中定義的任一________信號發(fā)生變化時,由順序語句定義的行為就要立即執(zhí)行一次,當(dāng)進(jìn)程中最后一個語句執(zhí)行完成后,執(zhí)行過程將返回到進(jìn)程的第________個語句,以等待下一次________信號的變化。
11.將下列程序段轉(zhuǎn)換為WHEN-ELSE語句。
12.并行語句包括塊語句、進(jìn)程語句、________、子程序調(diào)用語句、生成語句和________。
13.元件例化語句由兩部分組成,一部分是把一個現(xiàn)成的設(shè)計實體定義為一個元件,另一部分則是________。
14.子程序有兩種類型,即________和________。子程序可以在VHDL程序的________、________和________這三個不同位置進(jìn)行定義,為了被不同的設(shè)計所調(diào)用,一般應(yīng)該將子程序放在________中。子程序具有可________的特點,即允許子程序的________相同,但這些子程序的參數(shù)類型及返回值數(shù)據(jù)類型是不同的。
15.在橫線上說明SEL的選擇值。
16.過程語句由________和________兩部分組成,其中________不是必需的,________可以獨立存在和使用。在進(jìn)程或結(jié)構(gòu)體中定義過程時不必定義________,而在程序包中必須定義________。
17.元件例化語句中所定義的元件的端口名與當(dāng)前系統(tǒng)的連接端口名的接口表達(dá)式有兩種:一種是名字關(guān)聯(lián)方式,另一種是________關(guān)聯(lián)方式。
18.條件信號賦值語句________(填允許或不允許)有重疊現(xiàn)象,這與CASE語句有很大的不同,同時條件信號賦值語句與IF語句功能相似,第一子句具有__________賦值優(yōu)先權(quán)。
19.執(zhí)行下列語句后,Q的值等于________。
二、選擇題
1.下列語句中,屬于順序語句的是()。
A.進(jìn)程語句 B.?IF語句
C.元件例化語句 D.?WITH…SELECT語句
2.在VHDL中,IF語句中至少應(yīng)有1個條件句,條件句必須由()表達(dá)式構(gòu)成。
A.?BIT
B.?STD_LOGIC
C.?BOOLEAN D.任意
3.在VHDL的CASE語句中,條件句中的“=>”不是操作符,它只相當(dāng)于()的作用。
A.?IF B.?THEN C.?AND D.?OR
4.在VHDL的FOR-LOOP語句中,循環(huán)變量是一個臨時變量,屬于LOOP語句的局部變量,()事先聲明。
A.必須
B.不必
C.其類型要 D.其屬性要
5.在VHDL中,用語句()表示檢測clock的上升沿;用語句()表示檢測clock的下降沿。
A.?clock‘EVENT
B.?clock’EVENTANDclock=‘1’
C.?clock=‘1’
D.?clock'EVENTANDclock='0'
6.下列選項中不屬于等待語句(WAIT)書寫方式的為()。
A.
WAIT
B.
WAITON信號表
C.
WAITUNTIL條件表達(dá)式
D.
WAITFOR時間表達(dá)式
7.下列選項中不屬于EXIT語句書寫方式的為()。
A.?EXIT
B.
EXITLOOP標(biāo)號
C.
EXITLOOP標(biāo)號WHEN條件表達(dá)式
D.
EXITLOOP標(biāo)號CASE條件表達(dá)式
8.下列語句完全不屬于順序語句的是()。
A.WAIT語句B.NEXT語句
C.ASSERT語句D.REPORT語句
9.在VHDL中,下列對進(jìn)程(PROCESS)語句結(jié)構(gòu)及語法規(guī)則的描述正確的是()。
A.敏感信號發(fā)生更新時啟動進(jìn)程,執(zhí)行完成后,等待下一次進(jìn)程啟動
B.敏感信號參數(shù)表中,應(yīng)列出進(jìn)程中使用的所有輸入信號
C.進(jìn)程由說明部分、結(jié)構(gòu)體部分和敏感信號參數(shù)表三部分組成
D.當(dāng)前進(jìn)程中聲明的信號也可用于其他進(jìn)程
10.進(jìn)程中的變量賦值語句,變量更新是(),信號更新是()。
A.立即完成 B.按順序完成
C.在進(jìn)程的最后完成 D.都不對
11.下列語句中,不屬于并行語句的是()。
A.進(jìn)程語句
B.
CASE語句
C.元件例化語句
D.
WHEN-ELSE-語句
12.以下對于進(jìn)程PROCESS的說法,正確的是()。
A.進(jìn)程之間可以通過變量進(jìn)行通信
B.進(jìn)程內(nèi)部由一組并行語句來描述進(jìn)程功能
C.進(jìn)程語句本身是并行語句
D.一個進(jìn)程可以同時描述多個時鐘信號的同步時序邏輯
13.進(jìn)程語句中敏感信號列表的作用是()。
A.說明進(jìn)程運(yùn)行的結(jié)果
B.決定進(jìn)程運(yùn)行的先后順序
C.決定進(jìn)程語句的啟動與否
D.實現(xiàn)進(jìn)程語句的獨立性
14.以下關(guān)于VHDL中順序語句和并行語句的區(qū)別,不正確的是()。
A.順序語句按語句的排列順序執(zhí)行,并行語句只執(zhí)行被激活的語句
B.并行語句體現(xiàn)了硬件電路的并行性
C.順序語句可直接構(gòu)成結(jié)構(gòu)體,而并行語句則不能
D.順序語句用于描述模塊的算法,并行語句用于描述模塊間的連接關(guān)系
15.在元件例化(COMPONENT)語句中,用()符號實現(xiàn)名稱映射,將例化元件端口聲明語句中的信號名與PORTMAP中的信號名關(guān)聯(lián)起來。
A.= B.:= C.<= D.=>
16.當(dāng)一個結(jié)構(gòu)體中包含多個進(jìn)程(Process)時,各進(jìn)程之間依靠()來傳遞信息。
A.常量(Constant)
B.變量(Variable)
C.信號(Signal)
D.塊語句(Block)
17.元件例化語句的作用是()。
A.描述元件模塊的算法
B.改善并行語句及其結(jié)構(gòu)的可讀性
C.產(chǎn)生一個與某元件完全相同的一組并行元件
D.在高層次設(shè)計中引用前面已經(jīng)設(shè)計好的元件或電路模塊
18.關(guān)于元件例化語句的元件聲明的作用,以下說法中正確的是()。
A.說明所引用元件的邏輯功能
B.說明所引用元件的端口信息
C.說明所引用元件的個數(shù)
D.說明所引用元件的存儲位置
19.過程調(diào)用前需要將過程的過程首和過程體裝入()中。
A.源程序
B.結(jié)構(gòu)體 C.程序包 D.設(shè)計實體
20.
VHDL的設(shè)計實體可以被高層次的系統(tǒng)(),成為系統(tǒng)的一部分。
A.輸入
B.輸出 C.仿真
D.調(diào)用
21.除了塊語句之外,下列語句中同樣可以將結(jié)構(gòu)體并行描述分成多個層次的是()。
A.元件例化語句(COMPONENT)
B.生成語句(GENERATE)
C.報告語句(REPORT)
D.空操作語句(NULL)
22.以下不是生成語句(GENERATE)組成部分的是()。
A.生成方式B.說明方式C.并行語句D.報告語句
23.斷言語句對錯誤判斷級別最高的是()。
A.?Note(通報)
B.?Warning(警告)
C.?Error(錯誤)
D.?Failure(失敗)
24.下列選項中不屬于過程調(diào)用語句(PROCEDURE)參量表中可定義的流向模式的為()。
A.?IN B.?INOUT
C.?OUT D.?LINE
25.下列重載方式中,不屬于VHDL的是()。
A.函數(shù)重載
B.運(yùn)算符重載
C.別名
D.元件重載
三、分析題
1.分析下列程序段是否正確,如果不正確,請指出錯誤原因并加以改正。
四、簡答題
1.比較CASE語句和WITH-SELECT語句,敘述它們的異同點。
2.寫出幾種時鐘信號的具體描述形式。
3.過程和函數(shù)可以定義在一個VHDL程序的哪些位置?過程與函數(shù)的異同點是什么?
4.什么是重載函數(shù)?重載函數(shù)有何用處?請說出下列運(yùn)算符重載函數(shù)的含義:
FUNCTION"+"(l,r:integer)RETURNinteger;
FUNCTION"+"(l,r:bit_vector)RETURNinteger;
FUNCTION"+"(l,r:std_logic_vector)RETURNinteger;
5.為什么說一條并行信號代入語句可以等效為一個進(jìn)程?它怎樣實現(xiàn)敏感信號的檢測?
2.根據(jù)如圖4-4所示的原理圖,用IF語句實現(xiàn)以下功能:
當(dāng)clr等于0時,q等于0;當(dāng)clr不等于0且clk上升沿到時,q等于d;無論何種狀況下,qn始終等于q值取反。
圖4-4原理圖
3.分別用CASE語句和IF語句設(shè)計3-8譯碼器和4選1選擇器。
4.下列程序是一個10線-4線優(yōu)先編碼器的VHDL描述,試將其補(bǔ)充完整。
5.將以下程序轉(zhuǎn)換為WHEN-ELSE語句。
6.設(shè)計一個數(shù)據(jù)選擇器MUX,其系統(tǒng)模塊圖和功能表如圖4-5和圖4-6所示。試采用下面四種方式來描述該數(shù)據(jù)選擇器MUX的結(jié)構(gòu)體:①用IF語句;②用CASE語句;③用WHEN-ELSE語句;④用WITH-SELECT語句。
圖4-5系統(tǒng)模塊圖圖4-6系統(tǒng)功能表
7.根據(jù)下述例化程序畫出相對應(yīng)的原理圖。
8.根據(jù)如圖4-7所示的原理圖,用WHEN-ELSE語句實現(xiàn)以下功能:
當(dāng)tri='0'時,op<=in1ANDin2;否則op<='z'。
問題:進(jìn)程1執(zhí)行后x和y的結(jié)果是什么?進(jìn)程2執(zhí)行后x和y的結(jié)果是什么?根據(jù)兩個進(jìn)程的執(zhí)行結(jié)果,可以得出什么結(jié)論?
圖4-7系統(tǒng)原理圖
4.2 了解VHDL的描述風(fēng)格
于同樣的電路功能,可以使用不同的語句和不同的描述方式來表達(dá),在VHDL中,通常將各種不同的描述方式歸納為:行為描述、RTL描述和結(jié)構(gòu)描述三類。VHDL通過這三種描述方式,或稱描述風(fēng)格,從不同的側(cè)面描述結(jié)構(gòu)體的行為方式。
4.2.1行為描述
1.案例分析
【例4-13】
2選1多路開關(guān)行為描述(見圖4-8)。
圖4-82選1多路開關(guān)符號圖
2.知識點
如果在結(jié)構(gòu)體中只是描述了電路的功能或者說電路的行為,而沒有涉及實現(xiàn)這些行為的硬件結(jié)構(gòu),則稱這種描述風(fēng)格為行為描述。這里所謂的硬件結(jié)構(gòu)是指具體硬件電路的連接關(guān)系、邏輯門的組成結(jié)構(gòu)、元件或其他各種功能單元的層次結(jié)構(gòu)等。行為描述只涉及輸入與輸出之間的轉(zhuǎn)換關(guān)系,即規(guī)定電路的行為,而不包含任何結(jié)構(gòu)信息。
行為描述方式通常是指含有進(jìn)程的非結(jié)構(gòu)化的邏輯描述,由一個或幾個進(jìn)程構(gòu)成,每一個進(jìn)程又包含了一系列順序語句。
行為描述是一種抽象程度比較高的描述方式,這種方式的優(yōu)越性在于它可以使設(shè)計者專注于電路功能(行為)的設(shè)計,而不必過多地考慮具體的硬件結(jié)構(gòu),只有這樣,才能滿足自頂向下的設(shè)計流程的要求。可以說,沒有行為描述,就沒有EDA技術(shù)。
與其他硬件描述語言相比,VHDL更適合進(jìn)行行為描述,因此有人把VHDL稱為行為描述語言。
4.2.2RTL描述
1.案例分析
【例4-14】2選1多路開關(guān)RTL描述(見圖4-9)。
圖4-92選1多路開關(guān)原理圖
2.知識點
RTL描述也稱數(shù)據(jù)流描述,RTL是寄存器傳輸語言的簡稱。一般來說,RTL描述主要是通過并行信號賦值語句實現(xiàn)的,類似于布爾方程,可以描述時序電路,也可以描述組合電路,它既含有硬件電路的結(jié)構(gòu)信息,又隱含表示某種行為。
與行為描述相比,RTL描述能更直接地對電路的低層邏輯結(jié)構(gòu)進(jìn)行控制。
一般來說,用RTL方式完成的設(shè)計可控性好,綜合優(yōu)化的效率也更高。當(dāng)然,用這種描述風(fēng)格進(jìn)行設(shè)計對設(shè)計人員的要求也更高,通常從事ASIC(專用集成電路)開發(fā)和IC設(shè)計均應(yīng)使用這種描述方式。一般認(rèn)為Verilog語言更適合進(jìn)行RTL描述。
4.2.3結(jié)構(gòu)描述
1.案例分析
【例4-15】全加器電路結(jié)構(gòu)描述(見圖4-10)。
圖4-10一位全加器邏輯原理圖
2.知識點
VHDL的結(jié)構(gòu)描述是一種基于元件例化語句或生成語句的描述風(fēng)格,結(jié)構(gòu)描述就是描述元件之間的互聯(lián)關(guān)系,它將一個大的設(shè)計劃分成若干個小的單元,逐一完成各單元的設(shè)計,然后用結(jié)構(gòu)描述的方式將它們組裝起來,形成更為復(fù)雜的設(shè)計,體現(xiàn)了模塊化的設(shè)計思想。
4.2.4練習(xí)與測評
一、填空題
1.在VHDL中,通常將各種不同的描述方式歸納為________、________和________。在這三種描述風(fēng)格中,________抽象程序最高,最能體現(xiàn)VHDL描述高層次結(jié)構(gòu)和系統(tǒng)的能力,故我們常把VHDL稱為________語言。具備________描述能力的硬件描述語言是實現(xiàn)________設(shè)計方式的基本保證。
2.數(shù)據(jù)流的描述風(fēng)格一般是建立在用________語句描述的基礎(chǔ)上的,數(shù)據(jù)流描述方式能比較直觀地表達(dá)底層________行為。
3.VHDL結(jié)構(gòu)型描述風(fēng)格是基于________語句或________語句的應(yīng)用,利用這種語句可以用不同類型的結(jié)構(gòu)完成多層次的工程,其風(fēng)格最接近實際的________結(jié)構(gòu)。
二、選擇題
1.行為描述是指對()進(jìn)行描述。
A.實體的邏輯功能 B.實體的內(nèi)部結(jié)構(gòu)
C.實體的工作方式 D.實體的外部特征
2.結(jié)構(gòu)描述是指對()進(jìn)行描述。
A.實體的邏輯功能 B.實體的內(nèi)部結(jié)構(gòu)
C.實體的工作方式 D.實體的外部特征
3.行為描述一般采用()來實現(xiàn)。
A.進(jìn)程語句(Process)
B.賦值語句
C.子程序調(diào)用語句 D.元件例化語句
4.結(jié)構(gòu)描述一般采用()來實現(xiàn)。
A.進(jìn)程語句(Process)
B.賦值語句
C.子程序調(diào)用語句 D.元件例化語句
三、設(shè)計題
1.設(shè)計一個三輸入與非門電路,要求采用行為描述方式、寄存器描述方式和結(jié)構(gòu)體描述方式分別進(jìn)行設(shè)計。
2.以數(shù)據(jù)流的方式設(shè)計一個兩位比較器,再以結(jié)構(gòu)描述方式將已設(shè)計好的比較器連接起來,構(gòu)成一個八位比較器。
4.3 有限狀態(tài)機(jī)的設(shè)計
4.3.1案例分析
【例4-16】用狀態(tài)機(jī)描述步進(jìn)電機(jī)雙三拍脈沖分配器。分析:該電路的輸入端包括清零、時鐘,輸出為三位端口。電路功能詳見狀態(tài)轉(zhuǎn)換圖(見圖4-11)。圖4-11帶雙三拍脈沖分配器狀態(tài)轉(zhuǎn)換圖
設(shè)計要點:
(1)用VHDL設(shè)計狀態(tài)機(jī),需要在說明部分定義“狀態(tài)”數(shù)據(jù)類型(states),并定義信號“現(xiàn)態(tài)”(current_state)、“次態(tài)”(next_state)為此類型。在功能描述部分用時序邏輯進(jìn)程和組合邏輯進(jìn)程分別描述狀態(tài)機(jī)的工作方式和各狀態(tài)間的關(guān)系。
(2)TYPE命令定義states為枚舉型數(shù)據(jù)類型,取值包括st0、st1、st2、st3。
4.3.2知識點
1.用VHDL設(shè)計有限狀態(tài)機(jī)
用VHDL設(shè)計的狀態(tài)機(jī)一般由以下幾部分組成:
1)說明部分
在說明部分中要用TYPE語句定義新數(shù)據(jù)類型,一般用枚舉類型,它的每一個取值均代表系統(tǒng)工作時的一個狀態(tài),狀態(tài)名可任意選取。然后使用這個新的數(shù)據(jù)類型定義若干個狀態(tài)變量,狀態(tài)變量要定義為信號,以便在各個進(jìn)程間傳遞信息。
說明部分一般放在ARCHITECTURE和BEGIN之間:
2)主控時序進(jìn)程
實際的狀態(tài)機(jī)一般都是在外部時鐘信號的控制下,以同步方式工作的,因此,狀態(tài)機(jī)中必須包含一個對時鐘信號敏感的進(jìn)程,作為狀態(tài)機(jī)的“驅(qū)動泵”。當(dāng)時鐘信號到來時,狀態(tài)機(jī)的狀態(tài)才發(fā)生變化。一般地,在主控時序進(jìn)程中只是將代表下一狀態(tài)的狀態(tài)變量(信號)的值送給代表當(dāng)前狀態(tài)的狀態(tài)變量,而狀態(tài)變量的具體內(nèi)容則由其他進(jìn)程來決定。當(dāng)然,此進(jìn)程中也可放置一些清零或復(fù)位方面的控制信號??偟膩碚f,主控時序進(jìn)程的設(shè)計比較單一和簡單。
3)主控組合進(jìn)程
主控組合進(jìn)程的任務(wù)是根據(jù)外部輸入的控制信號(包括來自狀態(tài)機(jī)內(nèi)部的其他進(jìn)程的信號)和(或)當(dāng)前的狀態(tài)值確定下一狀態(tài)的取值,以及確定對外輸出或?qū)?nèi)部其他進(jìn)程輸出控制信號的內(nèi)容。
通常一個狀態(tài)機(jī)應(yīng)至少由兩個進(jìn)程構(gòu)成,即一個主控時序進(jìn)程和一個主控組合進(jìn)程。主控時序進(jìn)程作為“驅(qū)動泵”,描述時序邏輯,包括寄存器狀態(tài)的輸出;主控組合進(jìn)程描述組合邏輯,包括進(jìn)程間狀態(tài)值的傳遞以及狀態(tài)轉(zhuǎn)換值的輸出。當(dāng)然,必要時還可引入其他進(jìn)程,以完成其他的邏輯功能。
下面采用狀態(tài)機(jī)的設(shè)計方法,實現(xiàn)一個序列檢測器的設(shè)計。
序列檢測器可用于檢測二進(jìn)制碼組成的脈沖序列信號,當(dāng)序列檢測器接收到一組串行二進(jìn)制碼后,如果這組碼與序列檢測器中預(yù)先設(shè)置的碼相同,則輸出1,表示檢測到正確的序列碼,否則輸出0。
由于這種檢測的關(guān)鍵在于序列碼的接收必須是連續(xù)的,因此要求檢測器必須記住前一次的碼以及正確的序列,直到在連續(xù)的檢測中所收到的每一位碼都與預(yù)置的碼相同。狀態(tài)機(jī)用于序列檢測器的設(shè)計比其他方法更能顯示其優(yōu)越性。
例4-17描述的檢測器完成對8位序列碼“11001000”的檢測,當(dāng)輸入序列信號左移(高位在前)進(jìn)入檢測器后,若與預(yù)置的序列碼相同則輸出1,否則輸出0。因為要求檢測的序列碼有8位,所以需要8個狀態(tài)(S0~S7)。檢測器每收到一位符合要求的串行碼,就需要一個狀態(tài)進(jìn)行記憶。
檢測器的狀態(tài)轉(zhuǎn)移圖如圖4-12所示。
圖4-12序列碼檢測器狀態(tài)轉(zhuǎn)移圖
序列檢測器的具體分析如下:
(1)檢測器狀態(tài)機(jī)在S0狀態(tài):當(dāng)接收到的一位串行碼為1,則狀態(tài)機(jī)進(jìn)入到S1狀態(tài),否則狀態(tài)機(jī)停留在S0狀態(tài)。
(2)檢測器狀態(tài)機(jī)在S1狀態(tài):當(dāng)接收到的一位串行碼為1,則狀態(tài)機(jī)進(jìn)入到S2狀態(tài),否則返回到S0狀態(tài),因為10不是所要檢測的序列碼的前兩位碼,因此要返回到狀態(tài)機(jī)初始狀態(tài)重新開始。
(3)檢測器狀態(tài)機(jī)在S2狀態(tài):當(dāng)接收到的一位串行碼為0,則狀態(tài)機(jī)進(jìn)入到S3狀態(tài),否則停留在S2狀態(tài),因為111不是所要檢測的序列碼的前三位,但11可能是所要檢測的序列碼的前兩位。
(4)檢測器狀態(tài)機(jī)在S3狀態(tài):當(dāng)接收到的一位串行碼為0,則狀態(tài)機(jī)進(jìn)入到S4狀態(tài),否則返回到S1狀態(tài),因為1101不是所要檢測的序列碼的前四位,但剛剛接收到的“1”可能是所要檢測的序列碼的第一位,因此要返回到S1狀態(tài)。
(5)檢測器狀態(tài)機(jī)在S4狀態(tài):當(dāng)接收到的一位串行碼為1,則狀態(tài)機(jī)進(jìn)入到S5狀態(tài),否則返回到S0狀態(tài),因為11000不是所要檢測的序列碼的前五位。
(6)檢測器狀態(tài)機(jī)在S5狀態(tài):當(dāng)接收到的一位串行碼為0,則狀態(tài)機(jī)進(jìn)入到S6狀態(tài),否則返回到S2狀態(tài),因為110011不是所要檢測的序列碼的前六位碼,但11可能是所要檢測的序列碼的前
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版廢鋼回收與再生資源利用項目合作合同3篇
- 2024年度房產(chǎn)抵押借貸合同:法律英語范本解析3篇
- 2024版醫(yī)院停車場瀝青鋪設(shè)工程合同
- 2024版?zhèn)€體工商戶合伙業(yè)務(wù)拓展合作協(xié)議3篇
- 如何避免在網(wǎng)上購物被騙
- 2024年國際貿(mào)易融資貸款委托合同3篇
- 2024年標(biāo)準(zhǔn)化食堂運(yùn)營承包合同范本版
- 2024年互聯(lián)網(wǎng)行業(yè)高級技術(shù)人才引進(jìn)與培養(yǎng)手冊勞動合同3篇
- 內(nèi)蒙古大學(xué)《身段》2023-2024學(xué)年第一學(xué)期期末試卷
- 內(nèi)蒙古財經(jīng)大學(xué)《企業(yè)法律環(huán)境》2023-2024學(xué)年第一學(xué)期期末試卷
- 制藥工程導(dǎo)論論文(優(yōu)秀3篇)
- 《靜女》《 鵲橋仙》《 涉江采芙蓉》課件-統(tǒng)編版高中語文必修上冊
- 路面基層厚度、芯樣完整性試驗檢測記錄表(鉆芯法)
- 露天礦采場現(xiàn)場安全檢查表
- 事業(yè)單位管理崗位職員等級晉升審批表
- 勞技 水仙雕刻造型設(shè)計(第一課時)
- 2022年導(dǎo)電炭黑行業(yè)發(fā)展現(xiàn)狀及競爭格局分析
- 一年級數(shù)學(xué)上冊數(shù)字《0~10、=><》書寫練習(xí)
- 慢性光化性皮炎的診斷及治療課件
- 啟東市學(xué)八級月月考(第二次獨立考試)英語試卷含答案
- DB∕T29-297-2021 海綿城市雨水控制與利用工程施工及驗收標(biāo)準(zhǔn)
評論
0/150
提交評論