最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(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ù)
狀態(tài)機(jī)設(shè)計(jì),選用了One-Hot State Mchine,F、G狀態(tài)不是很理解


原程序如下:
//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樓: >>參與討論
海棠
大家?guī)头治龇治觥?br>疑問在B、C狀態(tài)的else語句那里,這樣設(shè)計(jì)有什么好處?

3樓: >>參與討論
水管工
其實(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
同樣迷惑
昨天看這個例子的時候同樣迷惑了半天,自己寫的話怎么也想不到去增加這兩個狀態(tài)。樓上說占滿狀態(tài),受到干擾時可以自動回到正確的軌道上來,肯定是有這個原因的,但是就算沒有這兩個狀態(tài),也還有default狀態(tài)?對了樓主,這個FSM采用的不是One-Hot State Mchine吧?

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請教一個ISP的問題?
請教兩個Verilog 的問題!
想學(xué)習(xí)CPLD,準(zhǔn)備做一塊板,請問用些什么配置?
請教,數(shù);旌螴C的仿真方法?
EPM3064A和EPM240A哪個便宜一些?
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號