|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
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被移位了多少次
了。想请问一下各位这种情况应该怎么解决? |
|