完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 cxFPGA 于 2013-9-26 14:02 编辑
正在做一个增量式编码器相关的项目,需要对外部输入的脉冲进行计数,为了滤除干扰,做了如下的滤波处理,fpga时钟为40M,经过pll倍频到160M,滤波的原理是每当io的滤波值不等于io时开始计数,当计数值达到预设值120时更新滤波值并清零计数,若计数未达到预设值期间滤波值与io值相等了则清零计数,等待下次的不同。这样一个滤波理论上能够滤除周期为1.5us以上的脉冲实现,仿真也没有问题,可是实际下板子时发现并不能很好的滤除干扰,在输入脉冲的结尾人为的加入一个75ns的干扰信号,结果是偶尔会多数一个脉冲。代码如下,忘各位能帮忙分析一下。 reg[7:0] io_filter_cnt; always@(posedge clk or negedge rst_n)begin if(!rst_n)begin io_filter_cnt<=0; io_filter<=0; end else begin if(io_filter != io)begin if(io_filter_cnt>8‘d120) begin io_filter_cnt<=0; io_filter<=io; end else io_filter_cnt<=io_filter_cnt+8'd1; end else io_filter_cnt<=0; |
|
相关推荐
1个回答
|
|
本帖最后由 cxfpga 于 2013-9-26 16:54 编辑
问题出在最后一句,else io_filter_cnt<=0,这个清零操作偶尔会使得下一次计数器加1时计数值变成127,把最后一句的清零改为赋值8‘d1就没问题了,或者把计数器换成调用ip核计数器也没问题,但是新的问题又出现了,就是为什么计数器值为0时进行加1操作会得到127呢? |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1693 浏览 1 评论
1447 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1661 浏览 0 评论
943 浏览 0 评论
2451 浏览 0 评论
1507 浏览 38 评论
5706 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 16:22 , Processed in 0.553785 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号