| 
  |||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe  | 
  
狀態(tài)機(jī)設(shè)計(jì),選用了One-Hot State Mchine,F、G狀態(tài)不是很理解 | 
  
| 作者:海棠 欄目:EDA技術(shù) | 
原程序如下: //seq.v /*一個簡單的狀態(tài)機(jī)設(shè)計(jì),功能是檢測一個5位二進(jìn)制序列"10010"。 考慮到序列重疊的可能,有限狀態(tài)機(jī)共提供8個狀態(tài)(包括初始狀態(tài)IDLE)。 */ MODULE seq(x,clk,rst,z,state); input x,clk,rst; OUTPUT z; OUTPUT[2:0] state; reg[2:0] state; wire z; parameter IDLE='d0, A='d1, B='d2, C='d3, D='d4, E='d5, F='d6, G='d7; assign z = ( state==E && x==0 )? 1 : 0; //當(dāng)x=0時,狀態(tài)已變?yōu)镋, //狀態(tài)為D時,x仍為1。因此 //輸出為1的條件為( state==E && x==0 )。 always @(posedge clk) if(!rst) begin state <= IDLE; //保證進(jìn)入有效狀態(tài) end else casex(state) //要求檢測的序列是‘10010’ IDLE : if(x==1) begin state <= A; end A: if(x==0) begin state <= B; end B: if(x==0) begin state <= C; end else begin state <= F; //為什么不讓它直接跳回A狀態(tài)??? end C: if(x==1) begin state <= D; end else begin state <= G; end D: if(x==0) begin state <= E; end else begin state <= A; end E: if(x==0) begin state <= C; end else begin state <= A; end //--------------------------  | 
  
| 2樓: | >>參與討論 | 
| 作者: 海棠 于 2005/1/27 15:12:00 發(fā)布:
         大家?guī)头治龇治觥?br>疑問在B、C狀態(tài)的else語句那里,這樣設(shè)計(jì)有什么好處?  | 
  |
| 3樓: | >>參與討論 | 
| 作者: 水管工 于 2005/1/29 5:47:00 發(fā)布:
         其實(shí)也沒有什么特殊意義 一個可能是為了以后擴(kuò)充 另外更重要的就是要把各種狀態(tài)占滿。一旦期間受到干擾,這可以保證一定時間后期間會自動回到正確的軌道上來。 由于是觸發(fā)器結(jié)構(gòu),我不認(rèn)為有什么抗干擾的好處 當(dāng)然,如果牛人(或某些軟件自動生成)可以看出這樣的設(shè)計(jì)會減少邏輯門的占用那就不是我所能理解的了。給出真值表供參考 state[2] s1 s0 x OUTPUT S2 S1 S0 IDLE 0 0 0 0 IDLE 0 0 0 IDLE 0 0 0 1 A 0 0 1 A 0 0 1 0 B 0 1 0 A 0 0 1 1 A 0 0 1 B 0 1 0 0 C 0 1 1 B 0 1 0 1 F 1 1 0 C 0 1 1 0 G 1 1 1 C 0 1 1 1 D 1 0 0 D 1 0 0 0 E 1 0 1 D 1 0 0 1 A 0 0 1 E 1 0 1 0 C 0 1 1 E 1 0 1 1 A 0 0 1 F 1 1 0 0 B 0 1 0 F 1 1 0 1 A 0 0 1 G 1 1 1 0 G 1 1 1 G 1 1 1 1 F 1 1 0  | 
  |
| 4樓: | >>參與討論 | 
| 作者: caiyanan 于 2005/3/5 18:49:00 發(fā)布:
         同樣迷惑 昨天看這個例子的時候同樣迷惑了半天,自己寫的話怎么也想不到去增加這兩個狀態(tài)。樓上說占滿狀態(tài),受到干擾時可以自動回到正確的軌道上來,肯定是有這個原因的,但是就算沒有這兩個狀態(tài),也還有default狀態(tài)?對了樓主,這個FSM采用的不是One-Hot State Mchine吧?  | 
  |
  | 
    
 
  | 
  
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 | 
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號  |