打印
[Verilog HDL]

verilog中的毛刺产生

[复制链接]
2387|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaochy1126|  楼主 | 2023-2-18 14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
verilog中,产生毛刺是一个常见的现象。目前发现的一种毛刺产生的原因,是由于上升沿与下降沿的与操作,使得系统产生了毛刺,如下:

reg [3:0]acount

reg sclk;

always(posedge clk)

if(!rst_n )

begin

        acount <= 4'b0;

        sclk <= 1'b0;

end

if(acount == 4'd10)

begin

        sclk <= ~sclk;

        acount <= 4'b0;

end

else

        acount <= acount + 1'b1;

reg flag;

reg [3:0]acount1;

always(posege sclk or negedfe rst)

if(!rst)

        begin

                flag <= 1'b0;

                acount1 <= 4'b0;

        end

else if(acount1 < 6)

begin

        flag <= 1'b1;

        acount1 <= acount1 + 1'b1;

end

else

        flag <= 1'b0;

wire Aclk;

assign Aclk = flag & SCLK;

此代码中 SCLK的上升沿与flag的下降沿想与会出现毛刺现象;

解决此问题的办法就是根据情况,将两个信号中的一个向后打一个节拍,具体的实现方法就是就是定义一个中间寄存器。

如下

reg flag1;

always@(posedge clk or negedge rst)

if(..)

else

flag1 <= flag

assign Aclk <= flag1 & SCLK;
————————————————
原文链接:https://blog.csdn.net/ZZ2588/article/details/119751479

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1050

主题

11299

帖子

26

粉丝