完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是FPGA的新手我正在使用spartan-6设备planahead 14.7和VHDL
我有这个(我认为是微不足道的)问题: 我需要用20 Mhz时钟对一些输入信号进行采样,并在采样输入线后应用去抖滤波器。 我的实际代码是 如果clock_rising_edge 去抖输入 - 使用先前的读取值 读取下一个输入值; 万一 我试图以这种方式改进代码 如果clock_rising_edge 读取下一个输入值; elsif clock_falling_edge 去抖输入 - 使用最后读取值 万一 但实施失败 我还修改了我的时钟pll配置,我创建了两个时钟输出,180度相移 第一个时钟上升沿读取输入线,第二个时钟去抖动输入线。 但在这种情况下实现失败。 由于工作频率相当低,大约20MHz,我可以复制时钟频率,创建一个带时钟上升沿的状态机。 但问题是如何使用两个时钟边缘? 另一个qestion实现过程产生了这个严重的警告 https://forums.xilinx.com/t5/Adv ... ad-14-6/td-p/337003 好的,我可以安全地忽略它,但我怎么能压制这个危险的警告信息呢? ......我有阿尔茨海默氏症的原则,在一个月内我已经忘记了我可以忽略...... |
|
相关推荐
6个回答
|
|
嗨@ accacca,
请附上您收到的完整代码和错误消息。 谢谢,Arpan 谢谢,Arpan ----------------------------------------------- - - - - - - - - - - - - - - - - - - - - - - - -请注意- 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。感谢Kudos .-------------------- -------------------------------------------------- ------------------------ |
|
|
|
|
|
|
|
嗨@ accacca,
我没有收到此文件的任何实现错误。 谢谢,Arpan 谢谢,Arpan ----------------------------------------------- - - - - - - - - - - - - - - - - - - - - - - - -请注意- 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。感谢Kudos .-------------------- -------------------------------------------------- ------------------------ forum.zip 326 KB |
|
|
|
嗨@accacca
鉴于你的时钟速度太慢,我会创建另一个时钟,运行速度提高两倍,并有一个切换信号作为你的启用。 当切换为低电平时,对输入进行采样,然后在下一个时钟边沿为高电平时对其进行去抖动。 如果你对输入时钟的实际构成不感兴趣而不是它的速率,那么这应该有用。 不确定推断代码中的IDDR会起作用。 如果你真的需要IDDR,你必须实例化它。 -拍 http://tuxengineering.com |
|
|
|
不确定推断代码中的IDDR会起作用。
您实际上可以推断出IDDR,但您需要具有与IDDR相匹配的功能。 IDDR会对时钟的两个边沿进行采样,但会将结果输出到IDDR的两个不同输出(Q1和Q2) - 不是相同的输出。 所以在Verilog 永远@(posedge clk) Q1。 所以 永远@(posedge clk) 永远@(negedge clk) 可以做到。 不过,我的下一个问题是“你是什么意思去抖动”。 真正的“去抖动”需要数百甚至数千个时钟,具体取决于时钟速率和开关的特性。 当您打开或关闭开关时,触点的实际机械弹跳会产生/断开连接。 这种弹跳可以导致在合理的时间段内重复切换接触 - 通常以毫秒为单位测量。 要“去抖”这个,你必须确保在声明开关状态改变之前弹跳已经停止; 换句话说,您需要等待开关在这几毫秒内连续保持新状态(因此需要数千个时钟周期)。 所以,做得更快(比如在时钟的两个边缘,这是不可能的,或者在更快的时钟上)没有帮助 - 如果你在2倍时钟上做,你只需要计算两次 许多时钟边缘,因为这是你需要等待去抖动的时间...... Avrum |
|
|
|
@arpansur
确定[放置1136]不是错误,可以使用CLOCK_DEDICATED_ROUTE = FALSE更改为reccomandation警告; 但对我而言,这意味着:我让你这样做,但这不是一个好主意...... @patocarr 是的,这是一个公正的解决方案,但我想学会做正确的事,因为有一天我可能没有机会加倍时钟 @avrumw 我使用debounce这个词来表达“常见”术语中的问题。 我的目标是过滤方波编码器信号输入,显然没有机械接触反弹,但是 威廉希尔官方网站 板在高噪声环境(轧机)中工作,其中编码器与长电缆连接。想法是考虑最后三个读数过滤编码器信号,然后使用三个中的大多数两个来声明实际值(高/低)。 该代码提供了修改采样时间以使其适合编码器信号的可能性。显然,所有这些都是在连接场信号的硬件输入驱动器之后。 正如两个过程所建议的那样,实现是可以的! 过程(重置,时钟) if(clock_rising_edge) 输入 万一 ; 终结过程; 过程(重置,时钟) if(clock_falling_edge) filtered_input = debounce(输入) 万一; 结束过程; 对于我的20MHz时钟,这不是问题,但是我认为必须检查传播时间 我不知道iDDR,我必须研究它 谢谢,非常感谢大家的帮助。 |
|
|
|
只有小组成员才能发言,加入小组>>
2448 浏览 7 评论
2846 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2310 浏览 9 评论
3391 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2486 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1773浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
623浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
485浏览 1评论
2036浏览 0评论
762浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-13 07:21 , Processed in 1.381207 second(s), Total 86, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号