verilog 上下边沿同时触发 可综合代码实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog 上下边沿同时触发 可综合代码实现相关的知识,希望对你有一定的参考价值。

always@(posedge active_row_en)
active_row[cnt1]<=1'd1;
always@(negedge active_row_en)
active_row[cnt1]<=1'd0;
这样的代码为什么不可以综合,求解决办法。就是想在active_row_en 的上下边沿都触发,acitve_row_en的频率是1M

从语法上看,一个触发器在两个process 里面赋值是不可综合的
其次,在FPGA里面,有双沿触发的触发器吗?没有吧,所以即使可以综合,最后map的时候也会报错。
要么用沿检测实现,但是这时就不能叫“上下沿都触发了”。
参考技术A 这个active_row_en很有问题它可能会有很多的毛刺,并非是真正的上沿和下降沿,再一个如此设计会导致触发器所用时钟彼此不一致,应该用系统的时钟做一个上升沿检测和一个下降沿检测! 参考技术B active_row[cnt1]不可以在两个always块中都赋值,会报错的。
你可以试试不加posedge和nededge ,就是 always @(active_row_en),这样只要active_row_en值变化就触发。

以上是关于verilog 上下边沿同时触发 可综合代码实现的主要内容,如果未能解决你的问题,请参考以下文章

 FPGA边沿检测Verilog代码

verilog中为啥锁存器要在电平触发方式下生成

如何写好Verilog状态机

时钟边沿上的 verilog 多路复用器

verilog hdl中有了posedge和negedge为啥还要用脉冲边沿检测?。

reg和wire的区别