看板 Electronics 關於我們 聯絡資訊
大家好,前幾天熬夜debug、研究數位邏輯、quartus、verilog、fpga(都熬出病了@@) 終於把code寫出來了,但魯蛇我問題很多 請原諒 我用verilog寫了一個邏輯 truth table如下 clk | c | F ____|____|__ | | ↑ | 1 | A | | ↑ | 0 | B 頻率都是用altpll產生的 其中我給clk的頻率是 4M Hz ~~phase位移125ns(90度) c 是 2M Hz A和B 都是 1M Hz 我預期 F(output)接示波器出來的頻率應該要是2M 但實際上卻是1M(但是把 F<=A 改為 F<=1'b1 之後卻變成2M) 我想請問這個邏輯有問題嗎? 還是code有問題? code如下~~ module block ( A, B, clk, c, F ); input clk, c, A, B; output F; reg F; always @ (posedge c0 ) begin if (c) F <= A; //F <=1'b1; 就是這邊 else F <= B; //F <=1'b0; 就是這邊 end endmodule -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.118.240.42 ※ 文章網址: http://www.ptt.cc/bbs/Electronics/M.1416674363.A.3B9.html ※ 編輯: di7101483 (140.118.240.42), 11/23/2014 00:40:21 ※ 編輯: di7101483 (140.118.240.42), 11/23/2014 00:41:33
TripleC: 你自己都說了A, B是1M?? @@ 11/23 01:33
TripleC: 這你自己用手畫個waveform, 只花一分鐘 11/23 01:35
我有把waveform畫出來了 但是F頻率不應該是跟著CLK的上緣處發嗎? 我用下面的方法這樣寫輸出還是1M耶....好奇怪喔 if (c) begin if(A) F <= 1'b1; else if(!A) F <= 1'b0; end else begin if(B) F <= 1'b1; else if(!B) F <= 1'b0; end truth table 如下 clk | c | A | B | F ____|____|___|___|___ | | 1 | x | 1 ↑ | 1 | 0 | x | 0 | | | | | | x | 1 | 1 ↑ | 0 | x | 0 | 0 ※ 編輯: di7101483 (140.118.240.42), 11/23/2014 01:50:37 ※ 編輯: di7101483 (140.118.240.42), 11/23/2014 01:58:37
TripleC: 你拍一張你畫的waveform來看吧 11/23 02:35
TripleC: 觸發了但qualifier沒變也不會改變狀態啊 11/23 02:38
tkhan: AB 1MHz clk 4MHz, 都跨clock domain了.. 11/23 08:48
下面是我畫的waveform https://www.dropbox.com/s/ezkkkxyp1hy61y8/IMAG0001.jpg?dl=0 A、B這兩個CLOCK因為頻率和相位都一樣,然後A = ~B 所以我只畫A來代表 我的目的只是想抓取A和B這兩個1M的CLOCK 然後輸出變成2M 所以程式方面就是只有clk上緣處發的時候動作 --> always@(posedge clk) ※ 編輯: di7101483 (140.118.181.41), 11/23/2014 13:04:33 ※ 編輯: di7101483 (140.118.181.41), 11/23/2014 13:04:58