作者di7101483 (d)
看板Electronics
標題[問題] 請大家幫我看一個verilog小程式
時間Sun Nov 16 23:07:25 2014
小弟又來問問題了= =
下面是我自己寫用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://webptt.com/m.aspx?n=bbs/Electronics/M.1416150448.A.D39.html
1F:推 evoker1984: reset clock same source 11/16 23:19
請問是要加上什麼東西嗎? 不太懂耶@@ 我是這幾天剛才學的新手....
※ 編輯: di7101483 (140.118.240.42), 11/16/2014 23:25:09
2F:推 tkhan: 如果哪裏錯都看不出來,建議千萬別進這行.. 11/16 23:46
3F:推 ptta: always那行 最後為何要加; 11/17 00:05
4F:→ di7101483: 對吼 不用加; 11/17 00:22
我把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
5F:→ TripleC: 你的reset是negative 1 還是 positive 1? 11/17 00:36
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
6F:→ TripleC: 你先把你的waveform畫出來, 想一下你寫的code和waveform 11/17 01:26
我一開始是先畫waveform才開始寫的
我已經用altpll把c0,A,B這幾個訊號畫出來了
但是主要執行的這個程式沒辦法跑,翻了幾本書也找不到出個所以然...
※ 編輯: di7101483 (140.118.240.42), 11/17/2014 01:35:28
7F:推 pbzw: 針對你改過的code,一個輸出只能在一個always區塊出現 11/17 01:49
8F:→ di7101483: 了解 感謝你 11/17 01:50
9F:→ di7101483: 但是一開始PO的程式的問題我還沒找出來...好奇怪 11/17 02:07
10F:推 pbzw: 不能用同一個訊號源做正負緣觸發 11/17 02:18
11F:→ pbzw: ,你有看過可以這樣的正反器嗎? 11/17 02:18
我剛剛也有想過是不是這個問題
但是我把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
12F:推 pbzw: if的概念是多工器,你要他做邊緣觸發? 11/17 02:36
我把程式改成這樣
就可以了....
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
13F:推 Baneling: 建議先把combination跟sequential搞清楚... 11/17 04:50
14F:→ s940556: 建議你要了解async. reset的原理,當然新手先看書範例先 11/17 09:57
15F:→ s940556: 。目前你的問題(syntax)應該是可以自己解決的。還是學生 11/17 09:57
16F:→ s940556: 的話去旁聽或選修相關的課程是一個不錯的開始,祝你學習 11/17 09:57
17F:→ s940556: 順利。 11/17 09:57
18F:→ xanter: 你有修過邏輯設計!? 11/17 19:27
19F:推 guilt666: 基本上verilog當C寫',這樣入門怎樣都不會進步 11/18 15:46
20F:→ guilt666: 你應該知道你要描述的邏輯電路長怎麼樣 11/18 15:47
21F:→ guilt666: 再來討論你要怎麼描述那樣的電路 連電路長怎樣都不知道 11/18 15:47
22F:→ guilt666: 你還是先去修數位邏輯吧 台科 很多老師都有上 11/18 15:48