[問題] 如何在沒有reset下去計數clock

看板Electronics作者 (東西要出清啦)時間18年前 (2008/03/12 18:25), 編輯推噓2(207)
留言9則, 3人參與, 最新討論串1/1
如果只有一個input,且是一個clock,而要輸出reset跟一些其他訊號,目前卡在如何去 計數clock,我的寫法如下: input clock; reg state; reg [8:0] count; always @(posedge clock) begin state <= 1'b0; end always @(posedge clock ) begin if (~state) count <= 8'd0; // initial count=0 end always @(posedge clock) if (~count) count <= count + 1; modelsim模擬結果,這樣是可以計數clock,可是要合成電路會有錯誤,"Only one always block may assign a given variable count[8:0]" 現在想不通如何把下面兩個 always合成一個always呢? 謝謝了! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.185.203

03/12 21:42, , 1F
count這變數不能在兩個不同的always block同時access
03/12 21:42, 1F

03/13 09:35, , 2F
那請教該如何做才能達到呢?
03/13 09:35, 2F

03/13 10:53, , 3F
我覺得你用FSM比較好控制,只需定義好每個狀態該做什麼
03/13 10:53, 3F

03/13 10:57, , 4F
ex. 初始狀態 => count=0, 計數狀態 => count=count+1
03/13 10:57, 4F

03/13 10:59, , 5F
這樣只需要一個seq. block (用來控制狀態轉換),
03/13 10:59, 5F

03/13 11:01, , 6F
跟一個comb. block (用來描述各狀態的動作)
03/13 11:01, 6F

03/13 11:13, , 7F
請問定義初始狀態COUNT=0,合成時不是無效嗎?
03/13 11:13, 7F

03/13 11:38, , 8F
只要count=0包在always block內,是確定可合成的~
03/13 11:38, 8F

03/13 11:44, , 9F
原來如此,立刻試看看,謝謝您^^
03/13 11:44, 9F
文章代碼(AID): #17rw-YV4 (Electronics)