- 主题:粗大,发现一个隆重的问题,关于fpga
一个循环计数器,复位值不为0的时候,
计数器乱计数,只有复位值为0,
计数器才能正常工作。
各位大拿,怎么回事?
代码如下
always@(posedge clk or negedge reset )
begin
if(!reset)
counter<=4'd9;
else begin
if(counter==4'd9)
counter<=4'd0;
else
counter<=counter+1'd1;
end
end
--
FROM 125.121.33.*
编译环境是quartus ii 12.0,
用signaltap 来观测。
【 在 rliw 的大作中提到: 】
: 一个循环计数器,复位值不为0的时候,
: 计数器乱计数,只有复位值为0,
: 计数器才能正常工作。
: ...................
--
FROM 125.121.33.*
根本没用到锁相环。
【 在 whotwho 的大作中提到: 】
: 查查复位信号是不是在锁相环给出稳定时钟信号后
: 发自「今日水木 on iOS」
--
FROM 125.121.33.*
嗯,我也是用了一个类似load的信号来处理。
但对于有代码洁癖的人来说,
始终觉得不爽,代码不精炼
【 在 Qlala 的大作中提到: 】
: 这种带初值的计数器
: 应该用独立的load信号 不要用复位
--
FROM 125.121.33.*
这个可以试试
【 在 zyfhie 的大作中提到: 】
: 你试试把==改成>=
:
: - 来自「最水木 for iPhone13,4」
--
FROM 39.183.37.*
必然。
我用signaltap观察的
【 在 Rome888 的大作中提到: 】
: 确实挺奇怪,这个条件下乱计数问题必现吗?还是偶尔
:
--
FROM 39.183.36.*
定义了,没写出来而已
【 在 liu7894 的大作中提到: 】
: 没有定义宽度
--
FROM 39.183.36.*
。。。用的代码时钟,
而且是顶层的通用时钟。
甚至专门为此建了个空白工程来验证,
还是一样的
这个问题反复验证,没解。
【 在 cly2888 的大作中提到: 】
: 代码本身是没有问题的。通常像楼主这种菜鸡,常见的问题是: signaltap使用的时钟不是代码中的时钟 :D
--
FROM 39.183.36.*