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

?

在硬件課程設(shè)計中引入Quartus Ⅱ狀態(tài)機(jī)編輯器的探索與實(shí)踐

2019-10-23 05:15張永梅
計算機(jī)教育 2019年10期
關(guān)鍵詞:狀態(tài)機(jī)編輯器時序

吳 磊,張永梅

(北方工業(yè)大學(xué) 信息學(xué)院,北京 100144)

1 將QuartusII狀態(tài)機(jī)編輯器引入硬件課程設(shè)計是計算機(jī)發(fā)展和教改的需要

隨著計算機(jī)技術(shù)的快速發(fā)展,社會對計算機(jī)系統(tǒng)軟件設(shè)計和計算機(jī)硬件系統(tǒng)設(shè)計人才的需要更加迫切。計算機(jī)學(xué)科具有技術(shù)發(fā)展快、知識更新快的特點(diǎn),計算機(jī)人才培養(yǎng)只有適應(yīng)社會需要和計算機(jī)技術(shù)發(fā)展的需要,才具有市場競爭力。

在軟件平臺功能日漸強(qiáng)大,逐步替代手工編程,完成大部分硬件設(shè)計各個層面的時代,如何調(diào)動計算機(jī)專業(yè)學(xué)生學(xué)習(xí)硬件的積極性,構(gòu)建以硬件為基礎(chǔ)的系統(tǒng)化實(shí)驗(yàn)與教學(xué)體系是目前亟須解決的問題;培養(yǎng)軟件和硬件兩手都過硬的計算機(jī)系統(tǒng)類人才,是目前各個高校計算機(jī)實(shí)驗(yàn)與教學(xué)面臨的重要問題。

在國外,硬件描述語言課程中較多采用Quartus Ⅱ狀態(tài)機(jī)編輯器作為工具,而在國內(nèi)教學(xué)與實(shí)驗(yàn)中,狀態(tài)機(jī)編輯器還未得到足夠的重視。以往有限狀態(tài)機(jī)只是作為設(shè)計工具而不是作為編程的實(shí)現(xiàn)工具,沒有充分利用其強(qiáng)大的狀態(tài)機(jī)編輯器進(jìn)行有限狀態(tài)機(jī)設(shè)計;另外,由于狀態(tài)機(jī)編輯器僅僅是Quartus Ⅱ平臺的一個功能,并沒有涉及理論,因此大部分介紹Quartus Ⅱ的中文書籍沒有包含狀態(tài)機(jī)編輯器這部分內(nèi)容[1-4]。

2 有限狀態(tài)機(jī)的表述及描述方式

通常,有限狀態(tài)機(jī)FSM 可以用一個6 元組F<S,I,O,F(xiàn),H,s0> 表示,其中,S是狀態(tài)的集合{s0,s1,…,sl};I是輸入的集合 {i0,i1,…,im};O是輸出的集合 {o0,o1,…,on};F是次態(tài)集合(S×I→S);H是輸出函數(shù),將狀態(tài)映射到輸出(S→O);s0是初始狀態(tài)。

有限狀態(tài)機(jī)設(shè)計中主要包含3 個對象:當(dāng)前狀態(tài)(CS)、下一個狀態(tài)(NS)、輸出邏輯(OL)。相應(yīng)地,在用硬件描述語言VHDL 描述有限狀態(tài)機(jī)時,有以下幾種描述方式:①三進(jìn)程描述方式,即現(xiàn)態(tài)、次態(tài)、輸出邏輯各用一個進(jìn)程;②雙進(jìn)程描述方式1(CS+NS、OL);③雙進(jìn)程描述方式2(CS、NS+OL);④單進(jìn)程描述方式(CS+NS+OL)。

設(shè)計時序邏輯電路,首先畫出有限狀態(tài)機(jī)的狀態(tài)遷移圖,然后根據(jù)狀態(tài)遷移圖編寫1 個進(jìn)程、2 個進(jìn)程或3 個進(jìn)程的VHDL 程序,設(shè)計實(shí)現(xiàn)對應(yīng)的邏輯電路系統(tǒng)。然而,根據(jù)狀態(tài)遷移圖用進(jìn)程編寫VHDL 程序并不是一件輕松的事情,特別是當(dāng)狀態(tài)機(jī)比較復(fù)雜時尤其如此[5-7]。

3 用有限狀態(tài)機(jī)描述時序電路是十分重要的設(shè)計思想

使用有限狀態(tài)機(jī)描述時序電路不僅是設(shè)計時序電路的一種工具,而且是一種設(shè)計思想方法,更是擴(kuò)展設(shè)計時序電路的一種重要的思維。

有限狀態(tài)機(jī)的本質(zhì)就是對具有邏輯順序或時序規(guī)律事件的一種描述方法,邏輯順序和時序規(guī)律是狀態(tài)機(jī)所要描述的核心,換言之,所有具有邏輯順序和時序規(guī)律的事情都適合用有限狀態(tài)機(jī)描述。

4 用QuartusII狀態(tài)機(jī)編輯器改革實(shí)驗(yàn)與教學(xué)內(nèi)容的方法與實(shí)現(xiàn)

隨著EDA 技術(shù)的發(fā)展,F(xiàn)PGA 逐步成為最廣泛的實(shí)驗(yàn)平臺。將有限狀態(tài)機(jī)應(yīng)用并融合在基于FPGA 的硬件課程設(shè)計中,是一項(xiàng)非常現(xiàn)實(shí)而有意義的教學(xué)與實(shí)驗(yàn)的重要課題[8-10]。

Quartus Ⅱ狀態(tài)機(jī)編輯器(State Machine Edit)作為一個工具,可以靈活地設(shè)計、編輯狀態(tài)遷移圖,當(dāng)狀態(tài)遷移圖完成后,通過Generate HDL File 命令,可以直接生成HDL 代碼,因此,用Quartus Ⅱ狀態(tài)機(jī)編輯器直接生成HDL 代碼,對初學(xué)硬件描述語言,用VHDL 語言編程沒有太高的要求,在沒有完全掌握硬件描述語言的情況下,也能進(jìn)行有限狀態(tài)機(jī)的設(shè)計。

4.1 使用Quartus Ⅱ狀態(tài)機(jī)編輯器自動生成HDL 代碼的過程

具體的設(shè)計方法可以跟著Quartus Ⅱ狀態(tài)機(jī)編輯器向?qū)б徊揭徊酵瓿桑孩傩陆ㄒ粋€工程;②打開file/new/state machine file;③打開狀態(tài)機(jī)圖形編輯窗后,在工程管理窗中選擇state machine wizard(狀態(tài)機(jī)生成向?qū)В虎茉谧畛醯膶υ捒蛑?,選擇生成一個新狀態(tài)機(jī)“Create a new state machine design”;⑤在彈出的框中分別選擇復(fù)位信號控制方式,有效方式為異步和高電平有效:Asynchronous 和active-high;⑥在狀態(tài)機(jī)編輯器對話框中設(shè)置狀態(tài)變量、輸入輸出信號、狀態(tài)轉(zhuǎn)換條件等;⑦完成后存盤,文件后綴是.smf,可以從狀態(tài)機(jī)圖形編輯器上看到轉(zhuǎn)換圖形,還可以利用左側(cè)的工具進(jìn)行修改補(bǔ)充,將這個圖形狀態(tài)機(jī)存盤后,可以以此文件作為工程進(jìn)行設(shè)計;⑧在tool/generate HDL 中,可以將狀態(tài)機(jī)轉(zhuǎn)換成VHDL 或其他HDL 文件。

概括起來,使用Quartus Ⅱ狀態(tài)機(jī)編輯器進(jìn)行有限狀態(tài)機(jī)設(shè)計的流程如下:①分析并抽象設(shè)計對象,初步建立有限狀態(tài)機(jī)遷移圖;②分析被控對象的時序狀態(tài),確定控制有限狀態(tài)機(jī)的各個狀態(tài)及輸入和輸出條件;③在Quartus Ⅱ狀態(tài)機(jī)編輯器中編輯有限狀態(tài)機(jī)遷移圖,自動產(chǎn)生VHDL 代碼。

學(xué)生的主要工作在第1 步和第2 步。第3 步通過Quartus Ⅱ狀態(tài)機(jī)編輯器完成狀態(tài)遷移圖并自動生成HDL 代碼。通過閱讀HDL 代碼,分析、改進(jìn)狀態(tài)遷移圖,完善邏輯電路系統(tǒng)。

當(dāng)狀態(tài)數(shù)目增多、狀態(tài)圖遷移不易畫出時,可以用狀態(tài)遷移表描述狀態(tài)之間的關(guān)系。

4.2 使用Quartus II 狀態(tài)機(jī)編輯器的優(yōu)點(diǎn)

用Quartus Ⅱ狀態(tài)機(jī)編輯器設(shè)計時序邏輯電路正逐漸成為一種規(guī)范方法,生成的VHDL 程序規(guī)范而清晰,不必進(jìn)行繁雜的狀態(tài)分配,狀態(tài)表繪制和化簡,狀態(tài)寄存器分配,根據(jù)狀態(tài)表求出狀態(tài)方程、次態(tài)方程及輸出方程等工作,不需要考慮所設(shè)計邏輯電路的內(nèi)部結(jié)構(gòu)和邏輯關(guān)系,更不必畫電路原理圖和搭建與測試邏輯電路,很好地解決了對有限狀態(tài)機(jī)復(fù)雜的編程和調(diào)試事務(wù),降低了對編程的要求。

當(dāng)需要修改邏輯電路時,可以直接修改直觀的狀態(tài)遷移圖,達(dá)到修改VHDL 程序,因此,修改VHDL 程序更容易了,同時,提高了設(shè)計邏輯電路的靈活性,降低了編寫VHDL 程序的復(fù)雜度,從而推動了硬件課程設(shè)計的改革,增強(qiáng)了對學(xué)生數(shù)字系統(tǒng)電路設(shè)計能力的培養(yǎng),也為學(xué)生設(shè)計CPU 做了鋪墊。Quartus II 狀態(tài)機(jī)編輯器是實(shí)現(xiàn)對狀態(tài)機(jī)進(jìn)行VHDL 軟件編程的較好的可選方法,是設(shè)計時序電路的重要工具。

5 狀態(tài)遷移圖是否完善和完整直接影響硬件課程設(shè)計的實(shí)驗(yàn)與教學(xué)內(nèi)容的質(zhì)量

狀態(tài)遷移圖的設(shè)計方法和內(nèi)容在有限狀態(tài)機(jī)的實(shí)驗(yàn)與教學(xué)中十分重要,可以在課堂上以數(shù)字檢測為例,講授狀態(tài)圖的設(shè)計方法,以狀態(tài)遷移條件為基礎(chǔ),引導(dǎo)狀態(tài)的遷移,啟發(fā)學(xué)生理解狀態(tài)遷移過程。通過以狀態(tài)遷移圖為導(dǎo)向,優(yōu)化運(yùn)用VHDL 進(jìn)行硬件設(shè)計內(nèi)容,兼顧學(xué)生接受知識由淺入深的學(xué)習(xí)要求,構(gòu)建以狀態(tài)遷移圖進(jìn)行邏輯時序電路設(shè)計的實(shí)驗(yàn)與教學(xué)體系,提高學(xué)生的學(xué)習(xí)效率,學(xué)生就可以做其他更多復(fù)雜的實(shí)驗(yàn)。

6 硬件課程設(shè)計實(shí)驗(yàn)教學(xué)內(nèi)容與方法的探索與實(shí)踐

針對北方工業(yè)大學(xué)計算機(jī)專業(yè)學(xué)生的具體情況,設(shè)計和安排了3 個難度梯度的基于FPGA 的7 個實(shí)驗(yàn),實(shí)驗(yàn)內(nèi)容由簡單到復(fù)雜,由基礎(chǔ)到復(fù)雜,逐步深入;通過不同的實(shí)驗(yàn)題目,學(xué)生逐步掌握邏輯電路的原理與設(shè)計方法。這些題目是:①在7 段數(shù)碼管上顯示自己的最后3 位學(xué)號數(shù)字;②在點(diǎn)陣上顯示自己的名字;③使用圖形輸入方式,用級聯(lián)形式實(shí)現(xiàn)一個多位二進(jìn)制加法器;④使用Quartus Ⅱ狀態(tài)機(jī)編輯器,分別設(shè)計帶重復(fù)和不帶重復(fù)判斷的兩個簡單的序列檢測器;⑤使用Quartus Ⅱ狀態(tài)機(jī)編輯器,設(shè)計一個只賣1 種商品的簡單的自動售貨機(jī);⑥簡單CPU 的設(shè)計;⑦采用兩個進(jìn)程描述方式編寫VHDL 程序,在兩個題目中選做一個題目,即分別設(shè)計帶重復(fù)和不帶重復(fù)判斷的兩個簡單的序列檢測器或者設(shè)計一個可賣兩種商品的簡單的自動售貨機(jī)。

6.1 引入有限狀態(tài)機(jī)設(shè)計CPU

在CPU 設(shè)計中,要通過節(jié)拍的變動,將每條指令隨著節(jié)拍的變化一一進(jìn)行描述。指令的每一個順序步都是一種狀態(tài),任何一條指令的順序步都是有限的。從指令執(zhí)行過程的角度看,CPU任何時間都處在有限狀態(tài)集的某一個狀態(tài)中,CPU 按照指令,從一個狀態(tài)遷移到另一個狀態(tài),完成指令所規(guī)定的操作。

CPU 設(shè)計的核心就是對指令的解析,因此,設(shè)計CPU 教學(xué)的最關(guān)鍵部分是引導(dǎo)學(xué)生通過對指令執(zhí)行過程的分析,確定CPU 的狀態(tài)集,即指令流程圖的每一個方框。圖1 所示為CPU 指令執(zhí)行狀態(tài)集的遷移圖范例,它包含5 個基本的狀態(tài)集,分別是取指令、取數(shù)據(jù)、運(yùn)算、保存結(jié)果、中斷控制。

圖1 CPU 指令執(zhí)行狀態(tài)集的遷移圖范例

6.2 具有5 個狀態(tài)的指令遷移表

首先,給出一個字長為8 位,具有4 種指令格式,共16 條指令的簡單CPU,對這16 條中的每一條指令的功能進(jìn)行定義。在將這5 個狀態(tài)集進(jìn)行功能細(xì)分后,按照每個狀態(tài)應(yīng)該完成的功能,將所有指令的操作,按照狀態(tài)有序地匯集在一起,得到指令遷移的6 個狀態(tài),見表1。

需要說明的是:①如果存儲器的速度不能滿足1 個時鐘周期完成讀寫操作,則處理器不能和該存儲器協(xié)調(diào)工作,需要延長等待時間才能正常工作;②在優(yōu)先級選擇上,是速度優(yōu)先還是成本優(yōu)先,所做的安排也會有很大的不同。

表1 不是唯一的安排,其側(cè)重于過程的清晰易懂,沒有在減少節(jié)拍上做太多的處理,且只是羅列出了正確的指令執(zhí)行過程,沒有考慮優(yōu)化問題。從6 個狀態(tài)的指令遷移表,可以清楚地看到:從CPU 設(shè)計的角度看,控制器可以看做一個有限狀態(tài)機(jī),每一個狀態(tài)對應(yīng)于一個節(jié)拍,即每一個狀態(tài)持續(xù)時間為1 個周期;每一個狀態(tài)發(fā)出不同的控制信號,指揮數(shù)據(jù)的流動,同時根據(jù)反饋信號決定下一步將進(jìn)入的狀態(tài)。

注意,每一步所需要的節(jié)拍數(shù)不完全一樣。

(1)將每一條指令執(zhí)行過程細(xì)分到節(jié)拍,即規(guī)定每一個節(jié)拍要做什么工作,并規(guī)定下一次進(jìn)入哪個節(jié)拍。

(2)按指令功能控制數(shù)據(jù)流過每一個部件,流過一個部件就需要相應(yīng)的控制信號,把控制序列寫出來,并安排到每個節(jié)拍。

(3)由節(jié)拍產(chǎn)生的控制信號引導(dǎo)數(shù)據(jù)流動時,在該節(jié)拍的末尾才被時鐘脈沖打入寄存器。

表1 6 個狀態(tài)的指令遷移

(4)加電時系統(tǒng)自動產(chǎn)生一個復(fù)位信號reset,使所有寄存器清零,控制器處于初始狀態(tài)st_0。

(5)內(nèi)存收到CPU 發(fā)的訪問地址后,需對該地址譯碼,找到相應(yīng)的內(nèi)存單元,這段時間需要1 個時鐘周期,因此,在1 個時鐘周期后才能在內(nèi)存的數(shù)據(jù)輸出端口看到對應(yīng)的數(shù)據(jù)。

(6)指令的執(zhí)行被分成若干步驟,每一步驟占用一個機(jī)器周期。一方面,部件在不同機(jī)器周期可以重復(fù)使用;另一方面,在上一周期中指令執(zhí)行的結(jié)果,需要用于下一周期的操作。

(7)狀態(tài)機(jī)的輸入是指令碼,輸出為所有的控制信號和多路選擇信號。輸出的控制信號取決于當(dāng)前狀態(tài)與輸入的指令碼。

綜上所述,可以看到CPU 的核心是一個由系統(tǒng)時鐘驅(qū)動的有限狀態(tài)機(jī)的邏輯過程。有限狀態(tài)通過狀態(tài)轉(zhuǎn)移圖將復(fù)雜的控制時序圖形化,將復(fù)雜的邏輯關(guān)系轉(zhuǎn)換為簡單的狀態(tài)轉(zhuǎn)移關(guān)系[11-14]。

將有限狀態(tài)機(jī)應(yīng)用于CPU 的設(shè)計與實(shí)現(xiàn),能夠培養(yǎng)學(xué)生對復(fù)雜工程問題的分析與解決能力。通過上述實(shí)驗(yàn)與教學(xué)策略,取得了良好的實(shí)驗(yàn)與教學(xué)效果,為計算機(jī)硬件課程設(shè)計實(shí)驗(yàn)與教學(xué)開拓出了一條創(chuàng)新之路。

7 結(jié) 語

有限狀態(tài)機(jī)是硬件課程設(shè)計實(shí)驗(yàn)與教學(xué)的重點(diǎn),將Quartus Ⅱ狀態(tài)機(jī)編輯器作為基本工具引入有限狀態(tài)機(jī)的實(shí)驗(yàn)與教學(xué)體系,可以使程序設(shè)計更為快捷、簡單和高效。用Quartus Ⅱ狀態(tài)機(jī)編輯器設(shè)計時序邏輯電路,其實(shí)質(zhì)是將過去用進(jìn)程描述有限狀態(tài)機(jī),然后編寫VHDL 程序的思路,轉(zhuǎn)變?yōu)閷⒅攸c(diǎn)放在對狀態(tài)遷移圖的設(shè)計,而不必關(guān)心如何用VHDL 編寫程序代碼。實(shí)驗(yàn)與教學(xué)不僅使學(xué)生比較容易掌握有限狀態(tài)機(jī)這一重要的數(shù)字系統(tǒng)設(shè)計工具,同時還有助于學(xué)生掌握“用有限狀態(tài)機(jī)設(shè)計CPU”的方法。在硬件課程設(shè)計實(shí)踐應(yīng)用中,實(shí)驗(yàn)與教學(xué)效果良好。

猜你喜歡
狀態(tài)機(jī)編輯器時序
顧及多種弛豫模型的GNSS坐標(biāo)時序分析軟件GTSA
清明
基于GEE平臺與Sentinel-NDVI時序數(shù)據(jù)江漢平原種植模式提取
基于Verilog 的有限狀態(tài)機(jī)編程方式及研究
FPGA狀態(tài)機(jī)綜合可靠性探究 ①
司空見慣感覺煩 鎖屏畫面快走開
你不能把整個春天都搬到冬天來
編輯精選APP
基于有限狀態(tài)機(jī)的交會對接飛行任務(wù)規(guī)劃方法
你距離微信創(chuàng)作達(dá)人還有多遠(yuǎn)?
广水市| 通河县| 渝中区| 武川县| 阿城市| 灌云县| 津南区| 丹棱县| 福鼎市| 谢通门县| 乐安县| 新河县| 嘉定区| 成都市| 伽师县| 浑源县| 灵璧县| 兴仁县| 塔城市| 嘉义市| 吉木萨尔县| 日照市| 来安县| 临江市| 湾仔区| 岑巩县| 许昌市| 三门县| 达尔| 保靖县| 蚌埠市| 吴旗县| 余江县| 西和县| 射阳县| 阳高县| 辰溪县| 固原市| 永昌县| 玛曲县| 白河县|