电源设计技术实用资料点击免费获取>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » CPLD 请教按键抖动问题(vhdl延时问题 )

共1条 1/1 1 跳转至

CPLD 请教按键抖动问题(vhdl延时问题 )

菜鸟
2005-09-13 07:11:00    评分
普通的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 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]