看板 Electronics 關於我們 聯絡資訊
各位大大好 我最近在寫碼錶上一個reset的功能 遇到了一個問題 下面是部分CODE input reset;//按鈕reset 每按一次重設 input i_clk; input i_rts;//原本的東西 reg r_reset=1'b0; reg cnt=1'b0; <版本一> always @(reset) begin cnt<=0; else always @(posedge i_clk , negedge i_rts) begin if(i_rts==0 ) cnt<=0; else cnt<=cnt+1b'1; end 我在ModelSim compile沒問題 但在Quartus 說cnt不能設定2次 後來改了一下 <版本二> always @(reset) begin if(cnt==0) r_reset<=1'b0; else r_reset<=1'b1; else always @(posedge i_clk , negedge i_rts) begin if(i_rts==0 || r_reset==1'b1) cnt<=0; else cnt<=cnt+1b'1; end 我在ModelSim compile沒問題 但在Quartus 說 Error: Can't elaborate top-level user hierarchy 應該是不能讓r_reset和cnt放在兩個always上?? 所以 請教各位大大要如何實做reset按鈕呢>< -- 推 steven0529: 小學時會有人說要烙國中生打人 05/20 12:19 → steven0529: 國中時會有人說要烙高中生打人... 05/20 12:19 → imanikki: 可是高中沒人說要烙大學生打人 05/20 12:20 → egg9: 因為大學生都在打魔獸吃泡麵   要烙的話也只會烙賽 05/20 12:22 推 youaten0112:因為大學生認為打人不會增加經驗值也不會掉寶..... 05/20 12:26 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.147.127 ※ 文章網址: http://www.ptt.cc/bbs/Electronics/M.1401474948.A.4E0.html
Leadgen:第一個問題是,有兩個不同的東西,在推同一個reg。 05/31 12:45
Leadgen:你只能用一個always去描述。 05/31 12:46
Leadgen:第二個問題,一個是非同步的reset,一個是同步的。 05/31 12:49
Leadgen:你把非同步的放在第一層,同步的放在第二層就行了。 05/31 12:50
appendixisu:always @(posedge i_clk or negedge i_rts) begin 05/31 16:02
appendixisu:if (i_rts==0) cnt <= 0 ; 05/31 16:02
appendixisu:else if (reset==0) cnt <= 0 ; 05/31 16:03
appendixisu:else cnt <= cnt + 1'b1 ; 05/31 16:03
appendixisu:end 05/31 16:03
light0617:to a大 reset按一次變成1 這樣不就無法歸零了嗎?? 06/01 00:44
light0617:若reset 真的為0 可是這樣不就直接結束的嗎 06/01 00:45
light0617:可能我沒說清楚 我是希望 按一次reset 可以歸零重新計時 06/01 00:46
light0617:感覺好難做出來QQ 06/01 00:46
light0617:L大的同步的放在第一層,同步的放在第二層 是指哪個地方 06/01 00:47
haworz:你把a大的code當中的reset==0改為reset==1 應該就能達成你 06/08 23:05
haworz:要的功能 06/08 23:05