![第五講-狀態(tài)機設計及其指導原則_第1頁](http://file4.renrendoc.com/view12/M07/29/2F/wKhkGWcOQxKASjjnAAIYheAZO5Y510.jpg)
![第五講-狀態(tài)機設計及其指導原則_第2頁](http://file4.renrendoc.com/view12/M07/29/2F/wKhkGWcOQxKASjjnAAIYheAZO5Y5102.jpg)
![第五講-狀態(tài)機設計及其指導原則_第3頁](http://file4.renrendoc.com/view12/M07/29/2F/wKhkGWcOQxKASjjnAAIYheAZO5Y5103.jpg)
![第五講-狀態(tài)機設計及其指導原則_第4頁](http://file4.renrendoc.com/view12/M07/29/2F/wKhkGWcOQxKASjjnAAIYheAZO5Y5104.jpg)
![第五講-狀態(tài)機設計及其指導原則_第5頁](http://file4.renrendoc.com/view12/M07/29/2F/wKhkGWcOQxKASjjnAAIYheAZO5Y5105.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第五講狀態(tài)機設計及其指導原則1狀態(tài)機是一種設計思想方法2
狀態(tài)機結構3
狀態(tài)機設計的其他技巧4
狀態(tài)機設計步驟
狀態(tài)機是一種設計思想方法原語描述modulenoconditional(clk,nrst,state,event);input clk,nrstinputstate;outputevent;regevent;reg[2:0]CS;//CurrentStatereg[2:0]NS;//NextStateparameter[2:0]//onehotwithzeroidle
idle =3’b000,dorm =3'b001,
diningroom =3'b010,classroom =3'b100;//sequentialstatetransitionalways@(posedge
clkornegedge
nrst)if(!nrst)CS<=idle;elseCS<=NS;//combinationalconditionjudgmentalways@(CS)begin case(CS) idle: idle_task;NS=dorm; dorm: dorm_task;NS=diningroom;
diningroom:diningroom_task;NS=classroom; classroom: classroom_task;NS=dorm; default: idle_task;NS=dorm;
endcaseendendmodule狀態(tài)機的本質--對具有邏輯順序或時序規(guī)律事件的一種描述方法
狀態(tài)機的兩個應用思路:從狀態(tài)變量入手明確電路的輸出的關系
對于邏輯電路而言,小到一個簡單的時序邏輯,大到復雜的微處理器,都適合用狀態(tài)機方法進行描述。不要僅僅局限于時序邏輯,發(fā)現(xiàn)電路的內在規(guī)律,確認電路的“狀態(tài)變量”,大膽使用狀態(tài)機描述電路模型。由于狀態(tài)機不僅僅是一種電路描述工具,它更是一種思想方法,而且狀態(tài)機的HDL語言表達方式比較規(guī)范,有章可循,所以很多有經(jīng)驗的設計者習慣用狀態(tài)機思想進行邏輯設計,對各種復雜設計都套用狀態(tài)機的設計理念,從而提高設計的效率和穩(wěn)定性??偨Y:
狀態(tài)機結構
摩爾(MOORE)狀態(tài)機
輸出只是當前狀態(tài)值的函數(shù),并且僅在時鐘邊沿到來時才發(fā)生變化米立(MEALY)狀態(tài)機
輸出則是當前狀態(tài)值、當前輸出值和當前輸入值的函數(shù)注:這兩種狀態(tài)機都是同步的時序電路Moore狀態(tài)機
下一個狀態(tài)=F(當前狀態(tài),輸入信號);
輸出信號=G(當前狀態(tài));狀態(tài)譯碼器
F輸出譯碼器
G狀態(tài)寄存器時鐘信號clk
clk
輸入輸入輸出當前狀態(tài)激勵信號時序邏輯組合邏輯組合邏輯Mealy狀態(tài)機
下一個狀態(tài)=F(當前狀態(tài),輸入信號);
輸出信號=G(當前狀態(tài),輸入信號);狀態(tài)譯碼器
F輸出譯碼器
G狀態(tài)寄存器時鐘信號clk
clk
輸入輸入輸出當前狀態(tài)激勵信號時序邏輯組合邏輯組合邏輯
帶流水線的Mealy狀態(tài)機
下一個狀態(tài)=F(當前狀態(tài),輸入信號);
輸出信號=G(當前狀態(tài),輸入信號);狀態(tài)譯碼器
F輸出譯碼器
G狀態(tài)寄存器時鐘信號clk
clk
輸入輸入當前狀態(tài)激勵信號輸出流水線寄存器
clk
輸入時序邏輯組合邏輯組合邏輯時序邏輯基本要素——狀態(tài)、輸出和輸入
狀態(tài):也叫狀態(tài)變量。在邏輯設計中,使用狀態(tài)劃分邏輯順序和時序規(guī)律。比如設計偽隨機碼發(fā)生器時,可以用移位寄存器序列作為狀態(tài);在設計電機控制電路時,可以將電機的不同轉速作為狀態(tài);在設計通信系統(tǒng)時,可以將信令的狀態(tài)作為狀態(tài)變量等。
輸出:輸出指在某一個狀態(tài)時特定發(fā)生的事件。如設計電機控制電路時,如果電機轉速過高,則輸出為轉速過高報警,也可以伴隨減速指令或降溫措施等。
輸入:指狀態(tài)機中進入每個狀態(tài)的條件,有的狀態(tài)機沒有輸入條件,其中的狀態(tài)轉移較為簡單,有的狀態(tài)機有輸入條件,當某個輸入條件存在時才能轉移到相應的狀態(tài)。組成部分
組合邏輯部分:分為狀態(tài)譯碼器和輸出譯碼器:狀態(tài)譯碼器確定狀態(tài)機的下一個狀態(tài),即確定狀態(tài)機的激勵方程;輸出譯碼器確定狀態(tài)機的輸出,即確定狀態(tài)機的輸出方程。
時序邏輯部分:用于存儲狀態(tài)機的內部狀態(tài)基本操作
狀態(tài)機內部狀態(tài)轉換:狀態(tài)機經(jīng)歷一系列狀態(tài),下一狀態(tài)由狀態(tài)譯碼器根據(jù)當前狀態(tài)和輸入條件決定。
產(chǎn)生輸出信號序列:輸出信號由輸出譯碼器根據(jù)當前狀態(tài)和輸入條件決定。
基本描述方式
狀態(tài)轉移圖是狀態(tài)機描述中最自然的方式。狀態(tài)轉移圖經(jīng)常在設計規(guī)劃階段定義邏輯功能時使用,也可以在分析已有源代碼中的狀態(tài)機時使用,這種圖形化的描述方式非常有助于理解設計意圖。
狀態(tài)轉移列表是用列表的方式描述狀態(tài)機,是數(shù)字邏輯電路常用的設計方法之一,經(jīng)常被用于狀態(tài)化簡,對于可編程邏輯設計而言,由于可用邏輯資源比較豐富,而且狀態(tài)編碼要考慮設計的穩(wěn)定性、安全性等因素,所以并不經(jīng)常使用狀態(tài)轉移列表優(yōu)化狀態(tài)。
使用HDL語言描述狀態(tài)機應具有一定的靈活性,但是決不是天馬行空,而是有章可循的.通過使用一些規(guī)范的描述方法,可以使HDL語言描述狀態(tài)機更安全、更穩(wěn)定、更高效、更易于維護。狀態(tài)機設計常用語法
變量聲明(wire,reg等)
狀態(tài)編碼一般都要使用reg
寄存器型向量。
parameter
描述狀態(tài)名稱,增強源代碼的可讀性,簡化描述。
例:
reg[3:0]NS,CS; parameter[3:0]//onehotwithzeroinitial IDLE 3'b0000, S1 3'b0001, S2 3'b0010, S3 3'b0100, ERROR3'b1000;
always——三種使用方法
根據(jù)主時鐘沿完成同步時序的狀態(tài)遷移。例: //sequentialstatetransition always@(posedge
clkornegedge
nrst) if(!nrst) CS<=IDLE; else CS<=NS;
根據(jù)信號敏感表完成組合邏輯的輸出。
根據(jù)時鐘沿完成同步時序邏輯的輸出。
case……endcase
語法格式: case(case_expression) case_item1:case_item_statement1; case_item2:case_item_statement2; case_item3:case_item_statement3; case_item4:case_item_statement4; default:case_item_statement5;
endcase
使用default關鍵字來描述FSM所需狀態(tài)的補集狀態(tài)下的操作,避免FSM進入死循環(huán)。
建議初學者使用完整的case結構,而不使用casex
或casez。
task……endtask
將不同狀態(tài)所對應的輸出用task……endtask
封裝,增強了代碼的可維護性和可讀性。 taskIDLE_out; begin {w_o1,w_o2,w_err}=3'b000; end
狀態(tài)機的描述方式
一段式
將整個狀態(tài)機寫到一個always模塊里面,在該模塊中即描述狀態(tài)轉移,又描述狀態(tài)的輸入和輸出。
兩段式
使用兩個always模塊,其中一個always模塊采用同步時序的方式描述狀態(tài)轉移,而另一個模塊采用組合邏輯的方式判斷狀態(tài)轉移條件,描述狀態(tài)轉移規(guī)律。
三段式
使用3個always模塊,一個always模塊采用同步時序的方式描述狀態(tài)轉移,一個采用組合邏輯的方式判斷狀態(tài)轉移條件,描述狀態(tài)轉移規(guī)律,第三個always模塊使用同步時序電路描述每個狀態(tài)的輸出。例一個非常典型的Melay型狀態(tài)機,共有4種狀態(tài),即IDEL、S1、S2和ERROR,輸入信號包括時鐘“clk”,低電平異步復位信號“nrst”和信號“i1”、“i2”,輸出信號為“o1”、“o2”和“err”,狀態(tài)轉移圖如下。狀態(tài)的輸出如下:IDLE狀態(tài)的輸出為{o1,o2,err}=3'b000;S1狀態(tài)的輸出為{o1,o2,err}=3'b100;S2狀態(tài)的輸出為{o1,o2,err}=3'b010;ERROR狀態(tài)的輸出為{o1,o2,err}=3'b111。S1
RRORS2IDLEi2&!i1
!i2&!i1
i2&i1
i2&i1!i2&i1i1i2!i2!i1!i2&i1基本部分modulestate1(nrst,clk,i1,i2,o1,o2,err);inputnrst,clk;inputi1,i2;outputo1,o2,err;rego1,o2,err;reg[2:0]NS;//NextStateparameter[2:0]//onehotwithzeroidleIDLE=3'b000,S1=3'b001,S2=3'b010,ERROR=3'b100;一段式always@(posedge
clkornegedge
nrst)if(!nrst)beginNS<=IDLE;{o1,o2,err}<=3'b000;endelsebegincase(NS)IDLE:beginif(~i1)begin{o1,o2,err}<=3'b000;NS<=IDLE;endif(i1&&i2)begin{o1,o2,err}<=3'b100;NS<=S1;endif(i1&&~i2)begin{o1,o2,err}<=3'b111;NS<=ERROR;endendS1:beginif(~i2)begin{o1,o2,err}<=3'b100;NS<=S1;endif(i2&&i1)begin{o1,o2,err}<=3'b010;NS<=S2;endif(i2&&(~i1))begin{o1,o2,err}<=3'b111;NS<=ERROR;endendS2:beginif(i2)begin{o1,o2,err}<=3'b010;NS<=S2;endif(~i2&&i1)begin{o1,o2,err}<=3'b000;NS<=IDLE;endif(~i2&&(~i1))begin{o1,o2,err}<=3'b111;NS<=ERROR;endendERROR:beginif(i1)begin{o1,o2,err}<=3'b111;NS<=ERROR;endif(~i1)begin{o1,o2,err}<=3'b000;NS<=IDLE;endenddefault: begin{o1,o2,err}<=3'b000;NS<=IDLE;end
endcaseendendmodule兩段式//outputtasktaskIDLE_out;{o1,o2,err}=3'b000;endtasktaskS1_out;{o1,o2,err}=3'b100;endtasktaskS2_out;{o1,o2,err}=3'b010;endtasktaskERROR_out;{o1,o2,err}=3'b111;endtask//sequentialstatetransitionalways@(posedge
clkornegedge
nrst)if(!nrst)CS<=IDLE;elseCS<=NS;//combinationalconditionjudgmentalways@(CSori1ori2)begincase(CS)IDLE:begin
IDLE_out;if(~i1)NS=IDLE;if(i1&&i2)NS=S1;if(i1&&~i2)NS=ERROR;end S1:beginS1_out;if(~i2)NS=S1;if(i2&&i1)NS=S2;if(i2&&(~i1))NS=ERROR;endS2:beginS2_out;if(i2)NS=S2; if(~i2&&i1)NS=IDLE;if(~i2&&(~i1))NS=ERROR;endERROR:begin
ERROR_out;if(i1)NS=ERROR;if(~i1)NS=IDLE;end default:begin
IDLE_out;NS=IDLE; end
endcaseendendmodule三段式//1stalwaysblock,sequentialstatetransitionalways@(posedge
clkornegedge
nrst)if(!nrst)CS<=IDLE;elseCS<=NS;//2ndalwaysblock,combinationalconditionjudgmentalways@(CSori1ori2)begincase(CS)IDLE:beginif(~i1)NS=IDLE;if(i1&&i2)NS=S1;if(i1&&~i2)NS=ERROR;end S1:beginif(~i2)NS=S1;if(i2&&i1)NS=S2;if(i2&&(~i1))NS=ERROR;endS2:beginif(i2)NS=S2; if(~i2&&i1)NS=IDLE;if(~i2&&(~i1))NS=ERROR;endERROR:beginif(i1)NS=ERROR;if(~i1)NS=IDLE;end default:NS=IDLE;
endcaseend//3rdalwaysblock,thesequentialFSM
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代物流技術與醫(yī)療物資保障體系
- 溝通技巧在教育工作中的創(chuàng)新應用
- 環(huán)保技術在現(xiàn)代城市建設中的應用
- 物流信息技術在商業(yè)領域的應用
- Unit 3 Where did you go?PartB (說課稿)-2023-2024學年人教PEP版英語六年級下冊
- 2《燭之武退秦師》說課稿-2024-2025學年高一語文下學期同步說課稿(統(tǒng)編版必修下冊)
- 2024新教材高中地理 第四章 區(qū)域發(fā)展戰(zhàn)略 第二節(jié) 我國區(qū)域發(fā)展戰(zhàn)略說課稿 湘教版必修第二冊
- Unit3 Amazing animals(說課稿)-2024-2025學年人教PEP版(2024)英語三年級上冊001
- 2024年高中化學 第三章 晶體結構與性質 章末整合說課稿 新人教版選修3
- 1《我是獨特的》第二課時(說課稿)2023-2024學年統(tǒng)編版道德與法治三年級下冊
- 2025-2030年中國清真食品行業(yè)運行狀況及投資發(fā)展前景預測報告
- 廣東省茂名市電白區(qū)2024-2025學年七年級上學期期末質量監(jiān)測生物學試卷(含答案)
- 《教育強國建設規(guī)劃綱要(2024-2035年)》全文
- 山東省濱州市2024-2025學年高二上學期期末地理試題( 含答案)
- 臨床提高膿毒性休克患者1h集束化措施落實率PDCA品管圈
- 春節(jié)節(jié)后施工復工安全培訓
- GB/T 3478.1-1995圓柱直齒漸開線花鍵模數(shù)基本齒廓公差
- GB/T 1346-2001水泥標準稠度用水量、凝結時間、安定性檢驗方法
- FZ/T 25001-2012工業(yè)用毛氈
- 瑞幸咖啡SWOT分析
- 小學生品德發(fā)展水平指標評價體系(小學)
評論
0/150
提交評論