Verilog語言,對狀態機的困惑

發布 教育 2024-05-21
7個回答
  1. 匿名使用者2024-02-11

    在狀態機時間序列中,賦值通常為“<=”。"很多,如果沒有特殊需求,就不要用“=”。

    4'd0:begin if(idle_count[5:0] == 6'd50) flag = 1;

    else idle_count[5:0] = idle_count[5:0] +6'd1;

    state[3:0] = 4'd1; end

    4'd1: begin if(falg = 1) falg = 0;……state[3:0] = 4'd2; end

    4'd2: begin ……state[3:0] = 4'd0; end

    案例陳述'd0 滿足狀態後 [3:0] = 4'd1,此賦值立即執行,則 4'd1 又滿意了,然後一路走下去,雖然你的標誌在 50 處設定為 1,但隨後又被設定回 0 下面,所以看不出時序,會不會是這個問題,建議改塊分配。

    不知道我理解對不對,我們來看看。

  2. 匿名使用者2024-02-10

    1 . idle_count[5:0] == 6'd50,標誌從 0 變為 1,並且不進入狀態 1;

    2 . idle_count[5:0] !

    6'd50,標誌仍為0,沒有變化,進入狀態1,然後判斷if(falg ==1)和falg=0不能滿足條件,所以卡在這一步;

    3.從下面新增的內容來看,狀態 0 進入狀態 1 的條件是 rxdata!== 1;當 rxdata == 1 時,標誌將從 0 變為 1;

  3. 匿名使用者2024-02-09

    空閒計數的初始值為 000000,狀態的初始值也是 0000

    所以你的狀態機卡在第一步。

    4'd0:begin if(idle_count[5:0] == 6'd50) flag = 1;

    如果出現,則需要為此新增狀態更改,否則狀態將無法操作。

  4. 匿名使用者2024-02-08

    從 4'd0 跳到 4'd1 具有空閒計數[5:0] = 6'd0;5:0] = 6'd0;這句話又回到了0,如果標誌改變,空閒計數可以達到6'D50,如果省略號中的內容無關緊要,則空閒計數不會更改,標誌也不會更改。

  5. 匿名使用者2024-02-07

    不要將 = 用於計時邏輯,使用 <= 應該沒問題。

  6. 匿名使用者2024-02-06

    有限狀態機是一種時序邏輯電路,其輸出取決於過去的輸入部分和電流輸入部分。 有限狀態機也可以被認為是組合邏輯和暫存器邏輯的組合。 狀態機特別適合於描述以順序或邏輯方式發生的事物,這實際上是狀態機的本質。

    狀態機是一種描述具有邏輯序列或時間序列的事件的方法。

    在實際應用中,狀態機根據狀態機的輸出是否與輸入條件相關,可以分為兩類,即摩爾狀態機和公尺利狀態機。

  7. 匿名使用者2024-02-05

    parameter s_idle = 0;

    parameter s_1 = 1;

    parameter s_2 = 2;

    reg [2:0] r_state = 0;

    reg [2:0] r_next_state = 0;

    狀態機初始化,注意 <=

    always @ posedge i_clk )begin

    r_state <= r_next_state;

    結束狀態轉移,注意敏感列表,注意使用=

    always @ i_en or r_cnt1 or r_cnt2 )

    begincase ( r_state ):

    s_ilde;

    if ( i_en )

    beginr_next_state = s_1;

    endelse

    beginr_next_state = s_idle;

    ends_1:

    if ( r_cnt1 = 100 )

    beginr_next_state = s_2;

    endelse

    beginr_next_state = s_1;

    ends_2:

    if ( r_cnt2= 100 )

    beginr_next_state = s_idle;

    endelse

    beginr_next_state = s_2;

    endend

    最後,根據不同的狀態為變數賦值。

相關回答
12個回答2024-05-21

我不知道你說的“平衡”到底是什麼意思,但根據你的問題,我們不知道我們所說的平衡是什麼意思。 >>>More

7個回答2024-05-21

根據我對 keil 的經驗,標頭檔案最適合用於描述某些函式,而不是定義變數或任何東西,變數最好在主函式上方或內部定義。 >>>More

25個回答2024-05-21

說明你很喜歡**,這是一件好事,別擔心,數學好,記憶力好,心裡你覺得感興趣會注意,對於一般的考試,想的不是很專注,可能會放鬆一點,可能有一點快速計算的習慣,對於任何事情都會很快解決,所以會有不小心的事情, 以後要用一顆平常的心去面對一切,不要太緊張,也不要太著急,對於非數學和**的事情也應該重視,然後慢慢去做,多檢查,慢慢來,習慣一下。

3個回答2024-05-21

對於人類來說,語言是......陷入困境的醫生

Mirands(古希臘語),著作片段 >>>More

9個回答2024-05-21

範圍。 你靜態字元 *chh;

static char *ch1;雖然兩個指標指向的位址沒有變化,但你有沒有想過它們指向的記憶體位址是否已經釋放,char chc[10]; 它是本地的,函式已經結束,生命週期已經結束,你正在嘗試使用 void times() 中的指標訪問它。 >>>More