|
网上几乎都流传着,要在always的敏感量写该always包含的全所有有值,否则,你会发现综合器会帮你写.
那么,假如我要在clk边沿对多个输入采样,那岂不是搞成异步的咯? 那要实现我原本的逻辑该怎么搞呢?
目前只放了clk进去
always @ (negedge rst_n or posedge clk) begin
....blabla....
else begin
sig <= ~sig;
cnt <= cnt + 9'd1;
if (puls_p) begin
if (!last_p) begin
num_puls = num_puls + 8'sd1;
shift_out = shift_out + 16'sd1;
end
end
...
仿真(门级)显示仅仅当clk的时候才进入该always, 和理论吻合,但和网上流传的经验不吻合. 实际和门级仿真吻合.
使用always* 后仿真显示快速反复进入always,而不像传说的自动添加敏感量.
======看起来Quartus并没有偷偷为我添加敏感量.========
流传还说,== != 不可以综合, 那么要做一个计数器分频该怎么搞呢?
可是我使用了==比如 计数器溢出到0的时候: if (xxx == x'd0) blablabla
看起来也工作得很好呢?!
到底哪些不可以综合?
我知道多过程对同一个变量赋值不可以, 对敏感量做非边沿的(比如敏感量上升沿,但在内部判断下降沿会出错) 判断不可以
分支对非敏感量做if的时候,如果让该if为true的敏感量有多个(走到if分支前没有限定死),似乎就会出错。 感觉综合器实现了一个触发器,如果该锁存器需要不止一个个时钟,就会报错。
等高手解答, 感觉Verilog语法不难,综合不简单啊。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|