国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Verilog 的有限狀態(tài)機(jī)編程方式及研究

2021-06-01 12:57
關(guān)鍵詞:狀態(tài)機(jī)寄存器進(jìn)程

(西安電子科技大學(xué)微電子學(xué)院,陜西西安 710126)

0 引言

Verilog HDL[1]是一種常用的硬件描述語言,可以從系統(tǒng)級、電路級、門級到開關(guān)級對電路進(jìn)行設(shè)計(jì)和驗(yàn)證工作。采用Verilog HDL設(shè)計(jì)電路并進(jìn)行仿真實(shí)驗(yàn),具有方便快捷的特點(diǎn)。

有限狀態(tài)機(jī)FSM(Finite State Machine)的基本結(jié)構(gòu)由狀態(tài)寄存器和組合邏輯電路組成,通過對觸發(fā)器輸入端輸入信號,并由狀態(tài)寄存器對狀態(tài)完成保持或轉(zhuǎn)換,最后通過組合電路完成特定的輸出。分為以下兩種情況:

(1)Moore型有限狀態(tài)機(jī):輸出的信號只與當(dāng)前狀態(tài)有關(guān)。(2)Mealy型有限狀態(tài)機(jī):輸出信號不僅與當(dāng)前狀態(tài)有關(guān),而且與輸入信號有關(guān)。

傳統(tǒng)的狀態(tài)機(jī)設(shè)計(jì)方法需要繁瑣的狀態(tài)分配、繪制狀態(tài)表、化簡次態(tài)方程等步驟[2],而使用Verilog語言可以大大簡化這一過程。

1 有限狀態(tài)機(jī)的設(shè)計(jì)流程

有限狀態(tài)機(jī)處于工作狀態(tài)時(shí),內(nèi)部的狀態(tài)寄存器保持現(xiàn)有狀態(tài)。

根據(jù)工作原理,將有限狀態(tài)機(jī)的設(shè)計(jì)分為以下幾個(gè)步驟[3]:

(1)確定采用Moore型狀態(tài)機(jī)還是Mealy型狀態(tài)機(jī)。(2)列出狀態(tài)機(jī)的所有狀態(tài),并對每一個(gè)狀態(tài)進(jìn)行狀態(tài)編碼。(3)根據(jù)狀態(tài)轉(zhuǎn)移關(guān)系畫出狀態(tài)圖。(4)采用硬件描述語言對狀態(tài)機(jī)進(jìn)行描述。

每一步的選擇都會(huì)導(dǎo)致編程風(fēng)格的不一樣,更會(huì)導(dǎo)致有限狀態(tài)機(jī)性能上各方面的差異。

2 有限狀態(tài)機(jī)的狀態(tài)編碼選擇

狀態(tài)編碼確定維持狀態(tài)所需的觸發(fā)器的數(shù)量并影響實(shí)現(xiàn)下一個(gè)狀態(tài)和輸出時(shí)所用的組合邏輯的復(fù)雜度[4]。Verilog中常用的狀態(tài)編碼方式有二進(jìn)制碼,格雷(Gray)碼和獨(dú)熱(One-hot)碼,如表1所示:

表1 Verilog 的常用狀態(tài)編碼方式Tab.1 Verilog's common state encoding methods

通過比較,可以發(fā)現(xiàn)二進(jìn)制編碼和格雷碼所用的狀態(tài)向量最短。但對于二進(jìn)制編碼,在狀態(tài)寄存器進(jìn)行狀態(tài)轉(zhuǎn)換時(shí),如果狀態(tài)從2’b2翻轉(zhuǎn)到2’b3即從2’b01至2’b10這樣會(huì)產(chǎn)生多個(gè)狀態(tài)的翻轉(zhuǎn)。而格雷碼在變化時(shí),實(shí)現(xiàn)了僅一位的改變,這樣,格雷碼在實(shí)際應(yīng)用中減少了電路相鄰物理信號線同時(shí)變化的情況,從而減少電路中的電噪聲[5],若使用獨(dú)熱碼,則X 個(gè)狀態(tài)就需要X 個(gè)狀態(tài)寄存器,這將使?fàn)顟B(tài)轉(zhuǎn)換過程更加嚴(yán)謹(jǐn),并且電路的容錯(cuò)性將更好。盡管使用了更多的觸發(fā)器。但是由于狀態(tài)解碼簡單,可以減少組合邏輯[6]。因此,獨(dú)熱碼常常在硬件資源豐富的情況下使用。

3 有限狀態(tài)機(jī)的編程方式及其優(yōu)缺點(diǎn)

通過分析有限狀態(tài)機(jī)的工作方式,可以得到單進(jìn)程式,雙進(jìn)程式和三進(jìn)程式三種編程方法。

這幾種編程方式的優(yōu)缺點(diǎn)主要從電路的毛刺、延遲、面積、功耗及速度等方面進(jìn)行考量。毛刺的產(chǎn)生[7]一方面由于狀態(tài)機(jī)中的組合邏輯對時(shí)鐘邊沿信號的影響,另一方面由于狀態(tài)向量通過多條電路傳輸,形成競爭;延遲存在于當(dāng)前信號改變到下一級電路信號改變時(shí)中間經(jīng)歷的時(shí)間,延遲的疊加會(huì)導(dǎo)致電路的不靈敏;面積和速度不能同時(shí)優(yōu)化,有時(shí)為了速度需要犧牲面積。

3.1 單進(jìn)程式描述方式

單進(jìn)程式描述方式只有一個(gè)always過程塊。這種情況下,如果均采用非阻塞語句賦值,電路不會(huì)產(chǎn)生毛刺。由于一段式的描述方法是為STATE本身分配一個(gè)值,因此會(huì)引入一個(gè)周期的延時(shí),在設(shè)計(jì)中需要通過“預(yù)計(jì)算”將其考慮在內(nèi)[8]。如果遇到狀態(tài)較多的情況,編程本身極易出錯(cuò),且代碼冗長,因此,在任何情況下,都不推薦單進(jìn)程式編程。

3.2 雙進(jìn)程式描述方式

雙進(jìn)程式描述方式有兩個(gè)always過程塊。第一個(gè)過程塊描述了狀態(tài)的轉(zhuǎn)移,第二個(gè)過程塊描述了由輸入確定的當(dāng)前狀態(tài)以及組合邏輯控制的輸出。這種方式使編譯器優(yōu)化效果明顯,可以獲得非常理想的速度和資源占用率,是目前使用最廣泛的狀態(tài)機(jī)描述風(fēng)格[9]。

3.3 三進(jìn)程式描述方式

三進(jìn)程式描述方式有三個(gè)always過程塊。它由當(dāng)前狀態(tài)及輸入確定下一級狀態(tài),將對輸出的選擇用單獨(dú)的一個(gè)always過程塊描述,從而將組合邏輯電路分離開,使電路不會(huì)產(chǎn)生毛刺,可靠性高,并且代碼條理清晰,更易維護(hù)。

4 實(shí)例

用有限狀態(tài)機(jī)實(shí)現(xiàn)簡易“110”序列檢測器,要求避免毛刺、冗余現(xiàn)象,有較快速度。

4.1 狀態(tài)選擇

采用Moore型狀態(tài)機(jī),即輸出的信號只與當(dāng)前狀態(tài)有關(guān)。確定狀態(tài)轉(zhuǎn)移圖如圖1 所示:

圖1 “110”序列檢測器的狀態(tài)轉(zhuǎn)移圖Fig.1 State transition diagram of "110" sequence detector

4.2 編碼選擇

因?yàn)橐獙?shí)現(xiàn)簡易狀態(tài)機(jī),故選擇向量長度較短的編碼方式,故考慮二進(jìn)制碼和格雷碼這兩種編碼方式。因?yàn)楦窭状a降低了冗余,故選用格雷碼進(jìn)行編碼。

4.3 編程風(fēng)格選擇

由于要求較快速度,則應(yīng)通過寄存器進(jìn)行輸出,故選用三段式編程方式,這里是犧牲面積,減小延遲,提高速度。

4.4 條件語句選擇

選用case語句不需要考慮優(yōu)先級且編程簡潔方便,不會(huì)產(chǎn)生鎖存器。

4.5 編寫程序

4.6 仿真結(jié)果

本例通過ModelSim SE 10.6d進(jìn)行仿真。前10ns對有限狀態(tài)機(jī)實(shí)現(xiàn)復(fù)位功能,清除上一次運(yùn)行結(jié)果,在第10ns拉高復(fù)位信號,啟動(dòng)有限狀態(tài)機(jī)。之后每過10ns對有限狀態(tài)機(jī)輸入一個(gè)有效信號x,分別為1、1、1、0、1、1、0作為測試序列。通過仿真可以發(fā)現(xiàn),在第一個(gè)零(50ns)以及第二個(gè)零(80ns)出現(xiàn)之后的時(shí)鐘沿輸出1。運(yùn)行100ns后,仿真結(jié)果如圖2所示:

圖2 ModelSim 仿真結(jié)果Fig.2 ModelSim simulation results

5 結(jié)語

有限狀態(tài)機(jī)在集成電路設(shè)計(jì)中有著重要的作用,選用Verilog 語言進(jìn)行編程有著方便、簡潔等特點(diǎn)。利用Verilog語言編寫有限狀態(tài)機(jī)時(shí),編碼的選擇、編程方式的選取均會(huì)影響到有限狀態(tài)機(jī)的性能。對于精確度要求較高的電路可以選用格雷碼或者獨(dú)熱碼。編程方式盡量選擇二進(jìn)程式或者三進(jìn)程式。編寫條件語句時(shí),要注意清除鎖存器。

猜你喜歡
狀態(tài)機(jī)寄存器進(jìn)程
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
債券市場對外開放的進(jìn)程與展望
基于有限狀態(tài)機(jī)的交會(huì)對接飛行任務(wù)規(guī)劃方法
分簇結(jié)構(gòu)向量寄存器分配策略研究*
社會(huì)進(jìn)程中的新聞學(xué)探尋
我國高等教育改革進(jìn)程與反思
Linux僵死進(jìn)程的產(chǎn)生與避免
高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計(jì)