共1条
1/1 1 跳转至页
CPLD 请教按键抖动问题(vhdl延时问题 )
普通的cpu中,直接利用sleep之类的语句就可以直接延时去抖动
但是在cpld中,我却碰到了问题,想请教一下各位
问题如下(使用的芯片是altera公司的max7000s系列芯片,芯片型号为7128slc84):
我的程序中,clk3是按键的输入信号
clk2是一个标准的200赫兹输入信号,希望利用这个来计20ms的延时时间
我希望的判断方法:
当接受到第一个clk3=1时,延时20ms,延时以后,再判断此时clk3是否仍为1
如果此时clk3为1,则说明这个脉冲是真脉冲,加counter9
如果此时clk3不为1,则说明这个脉冲只是按键的毛刺,此时延时用的计数器清零,等待下一个clk3=1,再触发延时用的计数器。
关于这部分的程序如下:
……
architecture rtl of clk_div728 is
signal read_key:integer :=0;
signal timer_en:integer :=0 ;
signal counter4:integer:=0;
……
p2: process(clk2)
variable counter25:integer range 0 to 63;
begin
if (clk2'event and clk2='1' and timer_en=1) then
counter4<=counter4+1;
elsif (clk2'event and clk2='1' and timer_en=0) then
counter4<=0;
else
counter4<=counter4;
end if;
end process p2;
-----------------------------------------------------------------
read_key<=1 when counter4=4 else 0;
---------------------------------------------------------------
p3:process(clk3)
begin
if (counter4=4) then
timer_en<=0;
elsif (counter4/=4 and clk3'event and clk3='1') then
timer_en<=1;
else timer_en<=timer_en;
end if;
end process p3;
---------------------------------------------------------------------
p4: process(read_key)
variable counter9:integer range 0 to 16;
begin
if (read_key'event and read_key=1 and clk3='1')then
if (counter9=8)then
counter9:=1;
else
counter9:=counter9+1;
end if;
end if;
case counter9 is
……
end case;
end process p4;
-----------------------------------------------------------------
程序编译的时候通不过,报的错是“unknown problem”
请假一下各位能否指点一二,不甚感激。
另外想特别问一下
这句:
-----------------------------------------------------------------
read_key<=1 when counter4=4 else 0;
---------------------------------------------------------------
单独在进程外执行可以吗,是不是和别的进程是并行的关系?
如果不能这样使用,应该用什么方法?
关键词: 请教 按键 抖动 问题 延时
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
【有奖活动】震撼来袭!这场直播将直击工程师的心灵! | |
“我想要一部加热台”活动,不花钱赢取开发好工具!活动开始了哦 | |
【有奖活动】伙伴们:您的“需求”解决了吗? | |
抽奖了,抽奖了,金升阳医疗电源 |
打赏帖 | |
---|---|
【换取手持数字示波器】+与同事对定时器输出相位可调PWM移相全桥控制分享被打赏50分 | |
【换取手持数字示波器】+LP-MSPM0L1306开发板试用体验+串口被打赏40分 | |
CC-RL编译器相关问题求助被打赏10分 | |
【换取手持数字示波器】+与同事对ESP-12开发调试经验分享被打赏50分 | |
【换取手持数字示波器】+同事tek示波器调试spi解析被打赏50分 | |
【换取手持数字示波器】+2.6寸墨水屏调试经验被打赏50分 | |
换取手持数字示波器+个人开关电源的设计经验被打赏50分 | |
【换取手持数字示波器】+【APT32F173测评】+URAT被打赏20分 | |
【换取手持数字示波器】CH32X035的定时器以及外部中断体验被打赏50分 | |
【换取手持数字示波器】CH32X035搭建开发环境(RISC-V)被打赏50分 |