四、實(shí)驗(yàn)
用VHDL 設(shè)計(jì)的狀態(tài)機(jī)的一般結(jié)構(gòu)有以下幾部分組成:
1. 說明部分
說明部分中有新數(shù)據(jù)類型TYPE 的定義及其狀態(tài)類型(狀態(tài)名)和在此新數(shù)據(jù)類型下定義的狀態(tài)變量。狀態(tài)類型一般用枚舉類型,其中每一個(gè)狀態(tài)名可任意選取。但為了便于辨認(rèn)和含義明確,狀態(tài)名最好有明顯的解釋性意義。狀態(tài)變量應(yīng)定義為信號(hào),便于信息傳遞。說明部分一般放在ARCHITECTURE 和BEGIN之間。
2. 主控時(shí)序進(jìn)程:
狀態(tài)機(jī)是隨外部時(shí)鐘信號(hào)以同步時(shí)序方式工作的,因此狀態(tài)機(jī)中必須包含一個(gè)對(duì)工作時(shí)鐘信號(hào)敏感的進(jìn)程作為狀態(tài)機(jī)的“驅(qū)動(dòng)泵”。當(dāng)時(shí)鐘發(fā)生有效跳變時(shí),狀態(tài)機(jī)的狀態(tài)才發(fā)生變化。狀態(tài)機(jī)的下一狀態(tài)(包括再次進(jìn)入本狀態(tài))僅僅取決于時(shí)鐘信號(hào)的到來。一般地,主控時(shí)序進(jìn)程不負(fù)責(zé)進(jìn)入的下一狀態(tài)的具體狀態(tài)取值。當(dāng)時(shí)鐘的有效跳變到來時(shí),時(shí)序進(jìn)程只是機(jī)械地將代表下一狀態(tài)的信號(hào)next_state 中的內(nèi)容送入代表本狀態(tài)的信current_state 中,而信號(hào)next_state 中的內(nèi)容完全由其它的進(jìn)程根據(jù)實(shí)際情況來決定。當(dāng)然此進(jìn)程中也可以放置一些同步或異步清零、置位方面的控制信號(hào)??傮w來說,主控時(shí)序進(jìn)程的設(shè)計(jì)比較固定、單一和簡單。
3. 主控組合進(jìn)程:
主控組合進(jìn)程的任務(wù)是根據(jù)外部輸入的控制信號(hào)(包括來自狀態(tài)機(jī)外部的信號(hào)和來自狀態(tài)機(jī)內(nèi)部其它非主控的組合或時(shí)序進(jìn)程的信號(hào)),或(和)當(dāng)前狀態(tài)的狀態(tài)值確定下一狀態(tài)(next_state)的取向,即next_state的取值內(nèi)容,以及確定對(duì)外輸出或?qū)?nèi)部其它組合或時(shí)序進(jìn)程輸出控制信號(hào)的內(nèi)容。
4. 普通組合進(jìn)程
用于配合狀態(tài)機(jī)工作的其它組合進(jìn)程,如為了完成某種算法的進(jìn)程。
5. 普通時(shí)序進(jìn)程
用于配合狀態(tài)機(jī)工作的其它時(shí)序進(jìn)程,如為了穩(wěn)定輸出設(shè)置的數(shù)據(jù)鎖存器等。一個(gè)狀態(tài)機(jī)的最簡結(jié)構(gòu)應(yīng)至少由兩個(gè)進(jìn)程構(gòu)成(也有單進(jìn)程狀態(tài)機(jī),但并不常用)即一個(gè)主控時(shí)序進(jìn)程和一個(gè)主控組合進(jìn)程,一個(gè)進(jìn)程作“驅(qū)動(dòng)泵”,描述時(shí)序邏輯,包括狀態(tài)寄存器的工作和寄存器狀態(tài)的輸出;另一個(gè)進(jìn)程描述組合邏輯,包括進(jìn)程間狀態(tài)值的傳遞邏輯以及狀態(tài)轉(zhuǎn)換值的輸出。當(dāng)然必要時(shí)還可以引入第3 個(gè)和第4 個(gè)進(jìn)程,以完成其它的邏輯功能。
從一般意義上說進(jìn)程間是并行運(yùn)行的,但由于敏感信號(hào)的設(shè)置不同以及電路的延遲,在時(shí)序上進(jìn)程間的動(dòng)作是有先后的。在設(shè)計(jì)中,如果希望輸出的信號(hào)具有寄存器鎖存功能,則需要為此輸出寫第3 個(gè)進(jìn)程,并把clk 和reset信號(hào)放入敏感信號(hào)表中。用于進(jìn)程間信息傳遞的信號(hào)current_state 和next_state ,在狀態(tài)機(jī)設(shè)計(jì)中稱為反饋信號(hào)。狀態(tài)機(jī)運(yùn)行中,信號(hào)傳遞的反饋機(jī)制的作用是實(shí)現(xiàn)當(dāng)前狀態(tài)的存儲(chǔ)和下一個(gè)狀態(tài)的譯碼設(shè)定等功能。在VHDL中可以有兩種方式來創(chuàng)建反饋機(jī)制,即使用信號(hào)的方式和使用變量的方式,通常傾向于使用信號(hào)的方式。附圖8-1為一般狀態(tài)機(jī)結(jié)構(gòu)圖。
圖8-1 一般狀態(tài)機(jī)結(jié)構(gòu)框圖工作示意圖
附圖8-2和8-3為控制ADC0809采樣狀態(tài)機(jī)結(jié)構(gòu)圖和狀態(tài)轉(zhuǎn)換圖
圖8-2 采樣狀態(tài)機(jī)結(jié)構(gòu)框圖
設(shè)計(jì)提示:
設(shè)目標(biāo)器件是EP1C6Q240C8,建議選擇實(shí)驗(yàn)電路結(jié)構(gòu)圖No.5(即結(jié)構(gòu)圖No.5A,附圖1-14,由該圖可見,ADC0809的轉(zhuǎn)換時(shí)鐘CLK已經(jīng)事先接有750KHz的頻率),將實(shí)驗(yàn)系統(tǒng)左下角選擇插針處的“轉(zhuǎn)換結(jié)束”和“A/D使能”用跳線帽短接。下載目標(biāo)文件后,可用螺絲刀旋轉(zhuǎn)實(shí)驗(yàn)系統(tǒng)左下角的電位器,以便為ADC0809提供變化的待測(cè)模擬信號(hào),這時(shí)數(shù)碼管8和7將顯示ADC0809采樣輸出并被鎖存的數(shù)字值(16進(jìn)制)。
圖8-3 控制ADC0809采樣狀態(tài)圖
圖8-4 控制ADC0809采樣時(shí)序圖
評(píng)論