共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 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |