打印
[Verilog HDL]

verilog去除毛刺的方法

[复制链接]
2338|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaochy1126|  楼主 | 2023-2-18 15:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
去除毛刺的方法除了用纯硬件的方法(串电阻并电容),还常用软硬件的方式,数字电路的方式
input ain; //输入信号
reg[3:0] ainr; //输入信号缓存
//输入信号打4拍
always @(posedge clk or negedge rst_n)
if(!rst_n) ainr <= 4'd0;
else ainr <= {ainr[2:0],ain};
//输入信号上升沿检测,高电平有效
wire pos_ain = ~ainr[3] & ~ainr[2] & ainr[1] & ainr[0];
//通常只要两个信号就行,即wire pos_ain = ~ainr[2] & ainr[1] ;。
//这里用了4个信号就是多次采样滤波的效果
//输入信号下降沿检测,高电平有效
wire neg_ain = ainr[3] & ainr[2] & ~ainr[1] & ~ainr[0];
//通常只要两个信号就行,即wire neg_ain = ainr[2] & ~ainr[1] ;。
//这里用了4个信号就是多次采样滤波的效果
//若该输入信号主要关注其高脉冲,那么可以做以下滤波
wire high_ain = ainr[1] & ainr[0];
//两个信号相与通常可以滤除1个clk的毛刺,相应的,3个信号相与可以滤除2个clk的毛刺
//若该输入信号主要关注其低脉冲,那么可以做以下滤波
wire low_ain = ainr[1] | ainr[0];

使用特权

评论回复

相关帖子

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

本版积分规则

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

1050

主题

11299

帖子

26

粉丝