[問題] 請問數位邏輯的問題
大家好,前幾天熬夜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
→
11/23 01:33, , 1F
11/23 01:33, 1F
→
11/23 01:35, , 2F
11/23 01:35, 2F
我有把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
→
11/23 02:35, , 3F
11/23 02:35, 3F
→
11/23 02:38, , 4F
11/23 02:38, 4F
推
11/23 08:48, , 5F
11/23 08:48, 5F
下面是我畫的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
討論串 (同標題文章)