作者di7101483 (d)
看板Electronics
标题[问题] 请问数位逻辑的问题
时间Sun Nov 23 00:39:20 2014
大家好,前几天熬夜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://webptt.com/cn.aspx?n=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
1F:→ TripleC: 你自己都说了A, B是1M?? @@ 11/23 01:33
2F:→ 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
3F:→ TripleC: 你拍一张你画的waveform来看吧 11/23 02:35
4F:→ TripleC: 触发了但qualifier没变也不会改变状态啊 11/23 02:38
5F:推 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