|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
如何設(shè)計(jì)最優(yōu)化的狀態(tài)機(jī) (經(jīng)驗(yàn)介紹) |
| 作者:hziee2003 欄目:EDA技術(shù) |
如何設(shè)計(jì)最優(yōu)化的狀態(tài)機(jī) 前言:數(shù)字電路通常分為組合邏輯電路和時(shí)序電路, 組合邏輯電路 outputs = F(current inputs) 時(shí)序電路 outputs = F(current inputs,past inputs) 有限狀態(tài)機(jī)就是時(shí)序電路的數(shù)學(xué)抽象,一個(gè)有限狀態(tài)機(jī)系統(tǒng)包括inputs ,outputs, states .狀態(tài)機(jī)分為同步狀態(tài)機(jī)(synchronous)和異步狀態(tài)機(jī)(asynchronous),異步狀態(tài)機(jī)由于輸出信號(hào)不穩(wěn)定,所以不詳細(xì)討論,對(duì)絕大多數(shù)設(shè)計(jì)來(lái)說(shuō),用的最廣泛的是同步狀態(tài)機(jī)。下面主要討論了同步狀態(tài)機(jī)的設(shè)計(jì)。 一.狀態(tài)機(jī)的基礎(chǔ)知識(shí) 1.1. moore狀態(tài)機(jī)和mealy狀態(tài)機(jī)的區(qū)別: 2.1.1moore狀態(tài)機(jī)輸出只依賴于及其的當(dāng)前狀態(tài),與輸入信號(hào)無(wú)關(guān)。這是moore狀態(tài)機(jī)的優(yōu)點(diǎn)。下面是moore狀態(tài)機(jī)的模型: moore狀態(tài)機(jī)比較容易用數(shù)學(xué)的方式來(lái)分析,因此被更廣泛的用在代數(shù)狀態(tài)機(jī)理論中(algebraic FSM theory)。 Mealy狀態(tài)機(jī)輸出依賴于機(jī)器現(xiàn)在的狀態(tài)和輸入的值,如果輸入改變,輸出可以在一個(gè)時(shí)鐘周期中將發(fā)生了改變。其模型如下: 圖的說(shuō)明:state MEMORY :保存現(xiàn)在的狀態(tài)(current state s(t) ) state transistion function :根據(jù)現(xiàn)態(tài)和輸入x(t),s(t+1)來(lái)決定下一個(gè)狀態(tài)。 OUTPUT function :根據(jù)s(t)和x(t)來(lái)決定最后的輸出。 Mealy 狀態(tài)機(jī)通?梢杂懈俚臓顟B(tài)變量,因此在工程領(lǐng)域有更為廣闊的應(yīng)用, 狀態(tài)變量越少,則所需的存儲(chǔ)單元就越少。 下面用簡(jiǎn)單的實(shí)例來(lái)具體說(shuō)明兩者編程的區(qū)別,和綜合出來(lái)的結(jié)果的不同: Mealy狀態(tài)機(jī)的簡(jiǎn)單例子: 1. 源程序: demo_PROCESS:PROCESS(clk,reset) begin if(reset = '1')then state <= s0; out1 <= (others=>'0'); elsif rising_edge(clk) then case state is when s0 => if(in1 = '1')then state <= s1; out1 <= "1000"; end if; when s1 => if(in1 = '0')then state <= s2; out1 <= "1001"; end if; when s2 => if(in1 = '1')then state <= s3; out1 <= "1100"; end if; when s3 => if(in1 = '0')then state <= s0; out1 <= "1111"; end if; when others => null; end case; end if; end PROCESS; modelsim仿真結(jié)果: synplify綜合結(jié)果: 1.模塊表示圖: 在這張綜合圖上可以明顯得看出紅線即input所參與決定的是狀態(tài)的產(chǎn)生和輸出。而且輸出out1為了防止輸出的波形不好(因?yàn)橥ㄟ^(guò)組合電路輸出的波形不穩(wěn)定),所以加了一個(gè)觸發(fā)器。 2.門級(jí)綜合結(jié)果(僅作參考): 其中狀態(tài)機(jī)模塊編碼采用兩個(gè)觸發(fā)器,見(jiàn)下圖: 所以如果在語(yǔ)言中沒(méi)有對(duì)狀態(tài)進(jìn)行編碼,那么綜合器會(huì)自動(dòng)將編碼方式設(shè)為順序編碼。 Moore狀態(tài)機(jī)的簡(jiǎn)單例子: 1源程序: demo_PROCESS:PROCESS(clk,reset) begin if(reset = '1')then state <= s0; out1 <= (others=>'0'); elsif rising_edge(clk) then case state is when s0 => if(in1 = '1')then state <= s1; end if; out1 <= "1000"; when s1 => if(in1 = '0')then state <= s2; end if; out1 <= "1001"; when s2 => if(in1 = '1')then state <= s3; end if;   |
| 2樓: | >>參與討論 |
| 作者: 吳明詩(shī) 于 2005/7/22 22:03:00 發(fā)布:
摟主辛苦了,頂一下 |
|
| 3樓: | >>參與討論 |
| 作者: hqgboy 于 2005/7/23 16:40:00 發(fā)布:
好。。。。。。。。。 |
|
| 4樓: | >>參與討論 |
| 作者: 代成志 于 2005/7/23 23:00:00 發(fā)布:
怎么看不見(jiàn)圖呢?? 好文 |
|
| 5樓: | >>參與討論 |
| 作者: lwsmile 于 2005/7/24 14:40:00 發(fā)布:
樓主好人啊! 辛苦了樓主! 可是看不見(jiàn)圖啊! |
|
| 6樓: | >>參與討論 |
| 作者: tuo176 于 2005/7/27 22:05:00 發(fā)布:
看不見(jiàn)圖啊,不過(guò)分析的不錯(cuò)! |
|
| 7樓: | >>參與討論 |
| 作者: n3207 于 2005/7/27 23:00:00 發(fā)布:
如果在這里貼圖不方便,可以上傳PDF的格式,方便大家閱讀 |
|
| 8樓: | >>參與討論 |
| 作者: julianmoon 于 2005/7/29 20:07:00 發(fā)布:
EDA 技術(shù) 好東西啊,但是能看到圖就更好拉! |
|
| 9樓: | >>參與討論 |
| 作者: Faucon 于 2005/7/31 18:09:00 發(fā)布:
Re 看不見(jiàn)圖啊 |
|
| 10樓: | >>參與討論 |
| 作者: peiassaa 于 2005/8/2 8:07:00 發(fā)布:
回復(fù) 有東西大家來(lái)分享。。樓主做的不錯(cuò)啊 |
|
| 11樓: | >>參與討論 |
| 作者: pzlvisiter 于 2005/8/9 20:35:00 發(fā)布:
好累啊 |
|
| 12樓: | >>參與討論 |
| 作者: 月光寶盒 于 2005/8/9 21:11:00 發(fā)布:
樓主辛苦!· |
|
| 13樓: | >>參與討論 |
| 作者: 劍寒情暖 于 2005/8/10 14:28:00 發(fā)布:
辛苦 |
|
| 14樓: | >>參與討論 |
| 作者: yezaixiao 于 2005/8/25 19:36:00 發(fā)布:
好東西 好東西,頂,頂,頂! |
|
| 15樓: | >>參與討論 |
| 作者: 4wolf 于 2005/8/25 21:30:00 發(fā)布:
寫(xiě)得好,還有好的分享嗎? 謝謝 |
|
| 16樓: | >>參與討論 |
| 作者: future_god 于 2005/8/26 20:16:00 發(fā)布:
樓主辛苦了,不過(guò)我看不大懂啊 |
|
| 17樓: | >>參與討論 |
| 作者: sagestar 于 2006/3/3 9:58:00 發(fā)布:
ok 不錯(cuò),加油 |
|
| 18樓: | >>參與討論 |
| 作者: 無(wú)常 于 2006/3/9 15:08:00 發(fā)布:
作個(gè)記號(hào) 好東西 |
|
| 19樓: | >>參與討論 |
| 作者: wang_4972 于 2006/3/21 11:08:00 發(fā)布:
看不見(jiàn)圖,建議摟主,給出Pdf版本 分析的很好,想看圖 |
|
| 20樓: | >>參與討論 |
| 作者: ryan999 于 2006/3/22 18:24:00 發(fā)布:
ddffdfdfd |
|
| 21樓: | >>參與討論 |
| 作者: leonyang 于 2006/3/23 21:39:00 發(fā)布:
辛苦拉 |
|
| 22樓: | >>參與討論 |
| 作者: robshine 于 2006/4/8 16:26:00 發(fā)布:
無(wú)圖 急,怎么沒(méi)圖的? |
|
| 23樓: | >>參與討論 |
| 作者: laurel_lei 于 2006/4/9 18:04:00 發(fā)布:
收下了 |
|
| 24樓: | >>參與討論 |
| 作者: jds9710 于 2006/4/22 17:42:00 發(fā)布:
謝謝了,樓主 |
|
| 25樓: | >>參與討論 |
| 作者: kugou 于 2006/5/24 10:06:00 發(fā)布:
簡(jiǎn)單,易入手! |
|
| 26樓: | >>參與討論 |
| 作者: wuhanmcu 于 2006/5/24 19:12:00 發(fā)布:
樓主厲害! |
|
| 27樓: | >>參與討論 |
| 作者: zyz013920 于 2006/6/10 17:20:00 發(fā)布:
好帖! 好帖! |
|
| 28樓: | >>參與討論 |
| 作者: 李海松 于 2006/6/10 20:35:00 發(fā)布:
高 看你寫(xiě)的好?墒俏乙稽c(diǎn)也看不明的。我也是個(gè)電子愛(ài)好者。學(xué)的還是電子以為自已知道一點(diǎn),F(xiàn)在明的白了,電子的深。以后還要多多學(xué), |
|
| 29樓: | >>參與討論 |
| 作者: lspower 于 2006/6/12 19:15:00 發(fā)布:
我還看不懂 |
|
| 30樓: | >>參與討論 |
| 作者: sunhuaiyi 于 2006/6/17 15:00:00 發(fā)布:
好文章,支持! |
|
| 31樓: | >>參與討論 |
| 作者: sharn 于 2006/6/22 8:58:00 發(fā)布:
好象沒(méi)圖! |
|
| 32樓: | >>參與討論 |
| 作者: 解牛 于 2006/7/1 20:40:00 發(fā)布:
很經(jīng)典 很簡(jiǎn)練 可是為什么看不見(jiàn)圖呢 |
|
| 33樓: | >>參與討論 |
| 作者: ddc21ic 于 2006/7/17 19:49:00 發(fā)布:
很詳細(xì),辛苦了,謝謝樓主的奉獻(xiàn)!! |
|
| 34樓: | >>參與討論 |
| 作者: 伊萊克斯 于 2006/7/18 8:38:00 發(fā)布:
寫(xiě)單片機(jī)程序也推薦使用MOORE模型 我一直就是這么干的,感覺(jué)這樣寫(xiě)思路很清楚. |
|
| 35樓: | >>參與討論 |
| 作者: seal0072 于 2006/7/25 23:55:00 發(fā)布:
book mark GOOD thing! |
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |