VHDL实现双信号边沿判断的一种方法

今天在使用quartus编写VHDL程序的时候,需要写一个使能信号子模块,具体的效果是当检测到输入信号的边沿时(按下按键),输出一个持续0.5秒的高电平使能信号。编写的过程中需要在一个进程中检测两个信号的边沿,由于编译器不支持双信号的边沿检测,所以需要一些技巧来达到我们的目的,另外,经过我的推测,此方法也适用于单信号的双边沿检测,这就很厉害了!话不多说,直接上代码:

其实原理很简单,就是多写一个process进程,通过if语句生成一个触发器,把输入信号延后一个时钟,在另一个进程中用   if(refresh_deley='0' and refresh='1'),就能实现判断上升沿的效果,如下图:


但显然,此技巧有一定局限性,由上图我们可以看出,我们判断出的上升沿和下降沿有一定的延时性,但不会超过一个时钟周期,且原信号持续信号必须大于一个时钟周期才能被检测到,所以要求我们输入的时钟信号应该要尽量大一些,这样才能保证结果的正确性。最后上一个仿真结果图:



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 教程一:视频截图(Tutorial 01: Making Screencaps) 首先我们需要了解视频文件的一些基...
    90后的思维阅读 4,819评论 0 3
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,765评论 25 709
  • 沙盒是用来存入缓冲区的,APP关掉,缓存被自动清理。 可以写入沙盒的有字符串 数组(最简单的数组,复杂的写入不了(...
    小小东阅读 643评论 0 1
  • 幸福的人,才会早早休息。
    没刃余阅读 217评论 0 0