在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7294|回复: 11

[求助] VHDL脉冲边沿检测问题求助!急急急

[复制链接]
发表于 2011-7-2 22:25:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我做的一个按键控制的小程序,想实现按下up键发光二极管左移一位,down键发

光二极管右移一位。刚开始进程代码如下
    process(up,down)
    begin
        if  rising_edge(up)  then
                mode0 <= mode0(14 downto 0) & mode0(15) ;
            end if;
            if rising_edge(down) then
                mode0 <= mode0(0) & mode0(15 downto 1) ;
            end if ;
        end if ;
    end process;
经过综合,发现提示mode0不能被综合,后来用了一个快速始终来检测,代码变

成了下面的形式
    process(up,down)
    begin
        if (rising_edge(sysclk)) then
            if (up = '1') then
                mode0 <= mode0(14 downto 0) & mode0(15) ;
            end if;
            if (down = '1') then
                mode0 <= mode0(0) & mode0(15 downto 1) ;
            end if ;
        end if ;
    end process;
这样虽然能够综合通过,但是由于sysclk非常快,按键的过程up或者down高电平

持续时间远远大于sysclk的周期,这样按一次键,不知道mode0被移位了多少次

了。想请问一下各位这种情况应该怎么解决?
发表于 2011-7-2 23:06:38 | 显示全部楼层
可以做一个分频模块,加大系统时钟周期,这样读取的数据应该是稳定的!
 楼主| 发表于 2011-7-3 08:45:21 | 显示全部楼层
回复 2# Guanming1234


    是,这种方法是最容易想到的,但是每次按键有效的时间都不是固定的,没法保证在按键有效的时间内系统时钟就只出现了一个上升沿啊!
发表于 2011-7-3 09:21:35 | 显示全部楼层
检测到一次变化 做一个延时?
 楼主| 发表于 2011-7-3 10:24:37 | 显示全部楼层
回复 4# chengda637


    能不能说的详细一点?
发表于 2011-7-3 15:58:36 | 显示全部楼层
做一个边沿检测电路就可以了。可以参考:
http://fpgaw.com/home/space.php?uid=2634
里面有一个边沿检测的Verilog的代码,可以实现你想要的功能。
发表于 2011-7-3 23:37:59 | 显示全部楼层
4楼的意思是在系统时钟一定的条件下,利用检测电路,检测到一个上升沿时,延时一个周期再获取下一个上升沿1
发表于 2011-7-4 09:28:33 | 显示全部楼层



在检测到上升沿之后,对高电平维持的时间进行计数,低电平会将该计数值复位,当计数值达到某个预定值的时候,也就是高电平维持时间超过一段时间之后(比如1ms)才认为是一次有效的按键操作,不知道说清楚没有。
 楼主| 发表于 2011-7-4 12:13:21 | 显示全部楼层
本帖最后由 562023030 于 2011-7-5 10:53 编辑

感谢大家了,问题已经解决了,把原来的信号延时一个时钟周期,然后用延时后信号的非去与原来的信号,就得到一个持续一个时钟的脉冲,然后检测这个脉冲就搞定了。非常感谢大家的热心帮助。
发表于 2011-7-4 16:15:16 | 显示全部楼层
关注ing~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 20:35 , Processed in 0.027786 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表