[問題] 請大家幫我看一個verilog小程式

看板Electronics作者 (d)時間9年前 (2014/11/16 23:07), 9年前編輯推噓8(8014)
留言22則, 10人參與, 最新討論串1/1
小弟又來問問題了= = 下面是我自己寫用verilog寫的小程式,在Quartus ii 中 compilation一直沒過 找了老半天都看不出哪裡錯了,可以幫我看一下哪裡出錯嗎? module parallel_2_to_2(c0,A,B,F); input c0; input A; input B; output F; reg F; always @ (posedge c0 or negedge c0 ); begin if (posedge c0) F <= A; else F <= B; end endmodule -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.118.240.42 ※ 文章網址: http://www.ptt.cc/bbs/Electronics/M.1416150448.A.D39.html

11/16 23:19, , 1F
reset clock same source
11/16 23:19, 1F
請問是要加上什麼東西嗎? 不太懂耶@@ 我是這幾天剛才學的新手.... ※ 編輯: di7101483 (140.118.240.42), 11/16/2014 23:25:09

11/16 23:46, , 2F
如果哪裏錯都看不出來,建議千萬別進這行..
11/16 23:46, 2F

11/17 00:05, , 3F
always那行 最後為何要加;
11/17 00:05, 3F

11/17 00:22, , 4F
對吼 不用加;
11/17 00:22, 4F
我把code改成這樣 還是不會過耶 module parallel_2_to_2(c0,A,B,F,reset); input c0; input A; input B; input reset; output F; reg F; always @ (posedge c0 or negedge reset) begin if (!reset) F <= A; end always @ (negedge c0 or negedge reset) begin if (!reset) F <= B; end endmodule ※ 編輯: di7101483 (140.118.240.42), 11/17/2014 00:24:24 ※ 編輯: di7101483 (140.118.240.42), 11/17/2014 00:25:18 ※ 編輯: di7101483 (140.118.240.42), 11/17/2014 00:25:53

11/17 00:36, , 5F
你的reset是negative 1 還是 positive 1?
11/17 00:36, 5F
reset是我剛剛去看範例模仿別人寫的程式 我這幾天看了老半天,其實我不太了解reset的意義和怎麼寫 請問reset是negative 1 或 positive 1 跑出來的結果會不一樣嗎? 請問reset是一定要有的嗎? ※ 編輯: di7101483 (140.118.240.42), 11/17/2014 00:43:00 我不懂e大說的 reset clock same source耶 嘗試一些寫法都失敗... ※ 編輯: di7101483 (140.118.240.42), 11/17/2014 00:47:41

11/17 01:26, , 6F
你先把你的waveform畫出來, 想一下你寫的code和waveform
11/17 01:26, 6F
我一開始是先畫waveform才開始寫的 我已經用altpll把c0,A,B這幾個訊號畫出來了 但是主要執行的這個程式沒辦法跑,翻了幾本書也找不到出個所以然... ※ 編輯: di7101483 (140.118.240.42), 11/17/2014 01:35:28

11/17 01:49, , 7F
針對你改過的code,一個輸出只能在一個always區塊出現
11/17 01:49, 7F

11/17 01:50, , 8F
了解 感謝你
11/17 01:50, 8F

11/17 02:07, , 9F
但是一開始PO的程式的問題我還沒找出來...好奇怪
11/17 02:07, 9F

11/17 02:18, , 10F
不能用同一個訊號源做正負緣觸發
11/17 02:18, 10F

11/17 02:18, , 11F
,你有看過可以這樣的正反器嗎?
11/17 02:18, 11F
我剛剛也有想過是不是這個問題 但是我把code改成下面這樣後還是不行耶@@ module parallel_2_to_2(c0,c1,A,B,F); input c0; input c1; input A; input B; output F; reg F; always @ (posedge c0 or negedge c1 ) begin if (posedge c0) F <= A; else F <= B; end endmodule ※ 編輯: di7101483 (140.118.240.42), 11/17/2014 02:34:02

11/17 02:36, , 12F
if的概念是多工器,你要他做邊緣觸發?
11/17 02:36, 12F
我把程式改成這樣 就可以了.... module parallel(c0,c1,A,B,F); input c0; input c1; input A; input B; output F; reg F; always @ (posedge c0 or negedge c1 ) begin if (!c1) F <= A; else F <= B; end endmodule 但是我想問 always裡面的!c1 是讓c1做負緣觸發(negedge c1)嗎? ※ 編輯: di7101483 (140.118.240.42), 11/17/2014 03:32:12

11/17 04:50, , 13F
建議先把combination跟sequential搞清楚...
11/17 04:50, 13F

11/17 09:57, , 14F
建議你要了解async. reset的原理,當然新手先看書範例先
11/17 09:57, 14F

11/17 09:57, , 15F
。目前你的問題(syntax)應該是可以自己解決的。還是學生
11/17 09:57, 15F

11/17 09:57, , 16F
的話去旁聽或選修相關的課程是一個不錯的開始,祝你學習
11/17 09:57, 16F

11/17 09:57, , 17F
順利。
11/17 09:57, 17F

11/17 19:27, , 18F
你有修過邏輯設計!?
11/17 19:27, 18F

11/18 15:46, , 19F
基本上verilog當C寫',這樣入門怎樣都不會進步
11/18 15:46, 19F

11/18 15:47, , 20F
你應該知道你要描述的邏輯電路長怎麼樣
11/18 15:47, 20F

11/18 15:47, , 21F
再來討論你要怎麼描述那樣的電路 連電路長怎樣都不知道
11/18 15:47, 21F

11/18 15:48, , 22F
你還是先去修數位邏輯吧 台科 很多老師都有上
11/18 15:48, 22F
文章代碼(AID): #1KQBsmqv (Electronics)