作者andy433268 (andy)
看板Electronics
標題[問題] verilog waveform問題
時間Wed Dec 17 14:17:40 2014
有一些waveform問題想請教一下各位大大
module test (
input clk, reset,
output reg Zero, Max_1023, Even, Odd,
output reg [9:0] Out
);
always@(posedge clk or posedge reset)
begin
if(reset)
Out <= 0;
else
Out <= Out + 1;
Zero <= !(|Out);
Max_1023 <= &Out;
Even <= ^Out;
Odd <= !(Even);
end
endmodule
當我在測試上述程式時,發現Even跟Odd的波形在同一個時間點是剛好相反的,
我疑問的點是Odd的波形不是應該比Even的波形晚一個clk後才呈現
麻煩各位大大指導我一下
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.25.212.18
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Electronics/M.1418797062.A.30C.html
1F:推 tkhan: ??????? 12/17 14:21
2F:→ andy433268: 可能說的不太清楚,我想表達的是Odd波形跟Even的波形 12/17 14:56
3F:→ andy433268: 應該不會在同一個時間點上剛好只差not,而是Even取not 12/17 15:00
4F:→ andy433268: 後,比Even的波形晚一個clk才傳給Odd 12/17 15:02
5F:推 tkhan: 觀念問題,先搞懂吧.. 12/17 15:25
6F:→ tkhan: 先學會畫波形,再來coding.. 12/17 15:25
7F:→ s940556: nonblocking assignment 和sequential logic先弄清楚吧 12/17 16:37
8F:→ s940556: ~ 12/17 16:37
9F:→ andy433268: 如果將訊號Odd改成Odd <= !(^Out),波形會一樣嗎? 12/17 16:54
10F:→ andy433268: 我的認知是Odd <= !(Even)比Odd <= !(^Out)慢一個clk 12/17 17:00
11F:推 tkhan: 認知錯誤,明明就是反向.. 12/17 17:12
12F:→ andy433268: 所以你認為Odd <= !(Even)跟Odd <= !(^Out)的波形不一 12/17 17:29
13F:→ andy433268: 樣? 12/17 17:29
14F:推 bakerly: 我覺得你的認知是對的,奇怪的是模擬結果,我跑結果是反 12/17 18:05
15F:→ bakerly: 向慢1T。 12/17 18:05
16F:→ andy433268: 我跑出來的模擬結果是一模一樣,思考不出來哪有問題 12/17 18:30
17F:推 bakerly: 你test bench怎麼寫,我照你寫的module key,加上我自己 12/17 18:52
18F:→ bakerly: 的bench跑出來是反向慢1t沒錯。 12/17 18:52
19F:→ andy433268: 請問你是用哪套軟體? 我是用Quartus跑的 12/17 20:33
20F:推 dasala: 回原po,它不是一行做完再做下一行的…是同步進行,建議你 12/17 21:47
21F:→ dasala: 去讀一些基本verilog的書,你的觀念錯很嚴重 12/17 21:47
22F:推 bakerly: ncverilog 12/17 22:23
23F:→ andy433268: 我當然知道同步進行...你哪一點看出我是覺得他是一行 12/17 22:57
24F:→ andy433268: 行做完再做一行 12/17 22:58
25F:推 Baneling: 理解應該沒錯 換個simulation tool試試看吧~ 12/18 01:13
26F:推 kameng: 用ModelSim跑是慢一個cycle的 12/18 03:33
27F:推 appendixisu: 我覺得是演算法你想錯了!!如果上1T是EVEN 12/18 11:12
28F:→ appendixisu: 下1T必然是ODD 那就不應該寫成 ODD <= !EVEN ; 12/18 11:12
29F:推 appendixisu: 阿~~我好像誤解你的問題了 12/18 11:22
30F:→ appendixisu: 那我想要問一下 是用新版Quartus+modelsim去跑 12/18 11:24
31F:→ appendixisu: 還是用舊版的Quartus 12/18 11:24
32F:→ andy433268: 這程式不是我寫的 我只覺得Odd波型畢然會晚Even 1T, 12/18 15:50
33F:→ andy433268: 我是用Quartus 9.0 12/18 15:50
34F:→ appendixisu: 以下是我的猜測啦!!因為你是用Quartus 9!! 12/18 17:59
35F:→ appendixisu: 所以你跑的simulation 應是Post-simulation!!! 12/18 18:02
36F:→ appendixisu: 所以有可能是timing issue 12/18 18:02
37F:推 dasala: 你在else後面在用begin end包起來試看看 12/18 19:41
38F:推 dasala: 你應該是用windows平台吧,用modelsim模擬就可以了,不要 12/18 19:45
39F:→ dasala: 用quartuz 12/18 19:45
40F:→ dasala: 也可以在所有non-blocking後加#1,或合進FPGA用示波器量 12/18 21:22