小紅帽技術論壇 在這裡你可以看到你訂閱的主題,悄悄話,編輯個人資料及環境設定 免費註冊! 行事曆 搜尋其他會員 常見問題
搜尋 小紅帽流量分析 小紅帽專用irc 聊天室 Web 版!建議安裝使用 hmirc 軟體! 回首頁 登出
小紅帽技術論壇 : Powered by vBulletin version 2.2.9 小紅帽技術論壇 > 電腦類 > 程式設計討論區 > 《問題》狀態機
  上一篇主題   下一篇主題
作者
主題、內容    發表新的文章     回覆文章

eleeric
新進會員


註冊日期: Oct 2003
來自:
發表文章數: 3

《問題》狀態機

各位大大
我想請問一個問題

你知道"狀態機"(state machine)到底要怎麼做判斷嗎??
就是MOORE機和MEALY機
我會寫他的程式
但是我搞不懂他的理念
什麼訊號可重複那些

想問說哪裡可以找的到資料或是哪位可以幫助我阿?
拜託嚕
(我在使用vhdl的軟體~但我想知道他的判斷觀念)

文章編號:0 | 向板主反映這篇文章 | 顯示 IP

eleeric 已離線! Old Post 12-13-2003 01:32
點選這裡查看 eleeric 的個人檔案 點選這裡寄送 Email 給 eleeric 按這裡傳送悄悄話給 eleeric 按這裡搜尋 eleeric 所發表的文章 按這裡將 eleeric 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

kevinmech
超級會員


註冊日期: Apr 2001
來自:
發表文章數: 746

我是用 Verilog 的,而不是用 VHDL

但我想合成工具的核心應該是差不多的

有些合成工具還要求你要照固定的 Coding Style 下去寫 Finite State Machine

不然合出來的電路,可能跟你預期的電路不符

我曾經去想過合成軟體到底是如何判斷你所寫的程式是要做一個 Finite State Machine

但是發現這真的很難,每個人寫個程式"語法"不一樣,但是"語意"確是一樣

VHDL 跟 Verilog 也是一種程式語言

而程式語言中最難判斷的就是"語意"的部份

我當初在想一想,結論就是,它可能是在 Parse Tree 中做一些分析


至於如果你對 Mealy Machine 跟 Moore Machine 不是很了解的話

可能去看一下數位系統設計的相關書籍都會教

我是比較喜歡用 Moore Machine 啦

因為 Mealy Machine 的一些情況處理起來比較麻煩...

就這樣..



---------------------------------------------------------- 簽名列 -----------

小弟不才,以上言論如有錯誤,煩請各位大大賜教
kevinmech@pchome.com.tw

文章編號:1 | 向板主反映這篇文章 | 顯示 IP

kevinmech 已離線! Old Post 12-13-2003 10:15
點選這裡查看 kevinmech 的個人檔案 點選這裡寄送 Email 給 kevinmech 按這裡傳送悄悄話給 kevinmech 按這裡搜尋 kevinmech 所發表的文章 按這裡將 kevinmech 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

eleeric
新進會員


註冊日期: Oct 2003
來自:
發表文章數: 3

嗯~~感謝大大您的回答阿
有一些問題還想再請教
假設我現在是"1011"的狀態~我才能夠通
我要如何判別"1001"要跑到哪個狀態~"1010"又該跑到哪種狀態(S0?S1?)
也就是考慮這個該怎麼去考慮呢?
是考慮他所有的"可能性"嗎?
什麼時候"資料"又可以重複使用呢?

文章編號:2 | 向板主反映這篇文章 | 顯示 IP

eleeric 已離線! Old Post 12-15-2003 09:53
點選這裡查看 eleeric 的個人檔案 點選這裡寄送 Email 給 eleeric 按這裡傳送悄悄話給 eleeric 按這裡搜尋 eleeric 所發表的文章 按這裡將 eleeric 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

kevinmech
超級會員


註冊日期: Apr 2001
來自:
發表文章數: 746

S0 跟 S1 這些是你定義的啦

主要是為了讓自已看的懂

一般我在寫的時侯,都是直接對應
S0 -> 0000
S1 -> 0001
...

不過這不是最有效的方法
在數位系統設計的書,會教你如何讓你的 Finite State Machine 做出來的電路所使用的邏輯閘個數最少,當然這不是絕對的,有興趣的話,找一下書吧

還有我不知道你所謂的"資料重覆"

是指 State 重覆嗎?如果是這個的話,這已經有方法可以檢查你的 Finite State Machine 中是否有重覆的 State ,一樣找書吧

應該都是在 Finite State Machine 那一章

再來就是你在寫程式的時侯要注意一下

一般我們在寫 Finite State Machin 時,會分成 Next_State 及 Output_Logic 二部份

在一些合成軟體中,它們都是建議你將這二個部份分開來寫

以 Verilog 為例:
假設今天我要寫一個四個 State 的 Finite State Machine

這樣寫出來的 Finite State Machine 的 Initial State 是在 State(00)
而且一個 Clock 一個 Clock 的從下一個 State 跑
code:

reg [1:0] state;

always @ ( posedge clk or posedge rst ) begin
if ( rst ) begin
state <= 2'b00; // Initial state
end
else begin
case ( state )
2'b00: // state 0
state <= 2'b01;
2'b01: // state 1
state <= 2'b10:
2'b10: // state 2
state <= 2'b11;
2'b11: // state 3
state <= 2'b00;
endcase
end
end


再來就是 Output Logic 的部份:
code:

always @ ( posedge clk or posedge rst ) begin
if ( rst ) begin
...Reset 要做的事
end
else begin
case ( state )
2'b00: beign
... State(00) 要做的事
end
2'b01: beign
... State(01) 要做的事
end
2'b10: beign
... State(10) 要做的事
end
2'b11: beign
... State(11) 要做的事
end
endcase
end


我這樣寫是在做 Moore Machine

而 Moore Machine 跟 Mealy Machine 最大的差別在於 Output_Logic 的部份

Moore Machine 的輸出是在 State 中做的,而
Mealy Machine 的輸出則是在轉態中做的

大概就是這樣

如果你是使用 Xilinx ISE 的話

合成後,可以看一下合成出來的電路,會有一個 FSM ,這個就是你所寫的 Finite State Machine ,而你所寫的 Output_Logic 都接在這個 FSM 的外面

就這樣...



---------------------------------------------------------- 簽名列 -----------

小弟不才,以上言論如有錯誤,煩請各位大大賜教
kevinmech@pchome.com.tw

------------------------------RedHat Forum------------------------
被 kevinmech 修改於 12-15-2003 at 12:44
------------------------------------------------------------------

文章編號:3 | 向板主反映這篇文章 | 顯示 IP

kevinmech 已離線! Old Post 12-15-2003 12:41
點選這裡查看 kevinmech 的個人檔案 點選這裡寄送 Email 給 kevinmech 按這裡傳送悄悄話給 kevinmech 按這裡搜尋 kevinmech 所發表的文章 按這裡將 kevinmech 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

eleeric
新進會員


註冊日期: Oct 2003
來自:
發表文章數: 3

呵呵
謝謝你了
這樣我懂了^^"
感謝

文章編號:4 | 向板主反映這篇文章 | 顯示 IP

eleeric 已離線! Old Post 12-15-2003 21:06
點選這裡查看 eleeric 的個人檔案 點選這裡寄送 Email 給 eleeric 按這裡傳送悄悄話給 eleeric 按這裡搜尋 eleeric 所發表的文章 按這裡將 eleeric 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

目前使用的時域為(台北時間),現在時間是 08:52 。    發表新的文章     回覆文章
上一篇主題   下一篇主題
友善列印 | 把這一篇寄給好朋友! | 訂閱這個主題

跳至:
評分主題:
 

討論區權限說明:
不可以 發表新文章
不可以 回覆文章
不可以 上傳附加檔案
不可以 修改你發表的文章
HTML code 目前狀態是 關閉
vB code 目前狀態是 開啟
表情符號 目前狀態是 開啟
[IMG] code 目前狀態是 開啟



< 聯絡我們 - 小紅帽全球資訊網 >

中文化:第一版 by Eric 第二版 by Jolin 於 小紅帽全球資訊網
(版權所有,翻拷必究)
小紅帽技術論壇創立於 2000/09/15 ,使用 vBulletin 合法註冊版權