浅谈FPGA有限状态机
狀態(tài)機(jī)幾乎可以實(shí)現(xiàn)一切時(shí)序電路。
有限狀態(tài)機(jī)(FiniteStateMachine, FSM),根據(jù)狀態(tài)機(jī)的輸出是否與輸入有關(guān),可分為Moore型狀態(tài)機(jī)和Mealy型狀態(tài)機(jī)。Moore型狀態(tài)機(jī)輸出僅僅與現(xiàn)態(tài)有關(guān)和Mealy型狀態(tài)機(jī)不僅與現(xiàn)態(tài)有關(guān),也與輸入有關(guān),所以會(huì)受到輸入的干擾,可能會(huì)產(chǎn)生毛刺(Glith)的現(xiàn)象,所以我們通常使用的是Moore型狀態(tài)機(jī)。
狀態(tài)機(jī)的編碼,二進(jìn)制編碼(Binary),格雷碼編碼(Gray-code),獨(dú)熱碼(One-hot)。不同的編碼方式是防止在狀態(tài)轉(zhuǎn)移中發(fā)生突變,使得狀態(tài)轉(zhuǎn)移更為穩(wěn)定,系統(tǒng)更加可靠,但是通常情況下我們直接采用的是二進(jìn)制進(jìn)行編碼,除非系統(tǒng)對穩(wěn)定性和狀態(tài)編碼有特殊要求。
狀態(tài)機(jī)的描述,一段式、二段式、三段式。
一段式狀態(tài)機(jī),將組合邏輯和時(shí)序邏輯混合在一起,這樣的寫法對于邏輯簡單的狀態(tài)機(jī)來說還是可以使用的,但是對于復(fù)雜的邏輯就不推薦了,如果狀態(tài)復(fù)雜也會(huì)容易出錯(cuò),而且一個(gè)always塊中信號太多也不利于維護(hù)和修改。
兩段式狀態(tài)機(jī)也是一種常用的寫法,它把組合邏輯和時(shí)序邏輯區(qū)分出來,第一段負(fù)責(zé)狀態(tài)的轉(zhuǎn)移,第二段是組合邏輯賦值,但是這種寫法的缺點(diǎn)是,組合邏輯較容易產(chǎn)生毛刺等常見問題。
三段式狀態(tài)機(jī)就可以較好的解決一段二段的不足,我也是比較推薦的寫法,第一段采用時(shí)序邏輯負(fù)責(zé)狀態(tài)轉(zhuǎn)移,第二段組合邏輯負(fù)責(zé)數(shù)據(jù)賦值,第三段時(shí)序邏輯負(fù)責(zé)輸出,代碼層次清晰,容易維護(hù),時(shí)序邏輯的輸出解決了兩段式寫法中組合邏輯的毛刺問題。但是資源消耗會(huì)多一些,此外,三段式從輸入到輸出會(huì)比一段式和二段式延遲一個(gè)時(shí)鐘周期。在書寫狀態(tài)機(jī)的時(shí)候,一定要事先設(shè)計(jì)好狀態(tài)轉(zhuǎn)移圖,將所有的狀態(tài)都考慮到,避免狀態(tài)進(jìn)入死循環(huán),或者跳到偏離態(tài)。
版權(quán)所有權(quán)歸卿萃科技?杭州FPGA事業(yè)部,轉(zhuǎn)載請注明出處
作者:杭州卿萃科技ALIFPGA
原文地址:杭州卿萃科技FPGA極客空間 微信公眾號
掃描二維碼關(guān)注杭州卿萃科技FPGA極客空間
?
總結(jié)
以上是生活随笔為你收集整理的浅谈FPGA有限状态机的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ps插件cutterman安装与使用
- 下一篇: 2016年12月