CPLD的LED的设置IO口输出不行?
CPLD的LED的设置IO口输出不行?我的目的是用一个按键接到CPLD的一个IO(定义为key)口上,另一个IO口(定义为LED)接了一个LED灯,当按键按下时,LED灯亮,再次按下按键时,LED灯灭,如此循环(也就是说一个按键来控制2个状态)
...............
SIGNAL flag: STD_LOGIC:='0';---一个标志位
PROCESS (key)
IF key='0' THEN --按键被按下
IF flag='0' THEN
flag<='1';
ELSE
flag<='0';
END IF;
IF flag='1' THEN
LED<='0'; --标志为为 1 时,LED灯亮
ELSE
LED<='1'; --标志为为 0 时,LED灯灭
END IF;
END IF;
END PROCESS;
我下载到板子上结果很奇怪,接LED的在这个IO口输出的电平有时候只能1.7V,有时候是3.3V,这样就导致,有时候我要按好几下按键,才会变到另一个状态(原意是按一下按键,LED的这个IO口输出3.3V,再按一下就输出0V)。我用示波器看了接按键的IO口,应该没有抖动。
麻烦大家帮我分析一下会是什么原因导致的。
谢谢!!! 你这样写程序肯定不行,建议找本讲vhdl的书来看看再说。 why? I THINK THE PROCEDURE IS RIGHT......... wice17 <br>
你能告诉我为什么这么写不行呢?我觉得这样写逻辑没有问题啊 第一:应该会生成一个锁存器。<br>
第二:既然是按键,又生成一个锁存器,检测按键没有消抖电路吗? 消抖有的,而且我其他按键功能只是按一下,灯就亮,<br>
只有这个功能要求是按一下灯亮,再按一下灯灭,而且我拿示波器看了,也没有抖动<br>
<br>
生成锁存器倒是有可能,怎么可以解决呢?希望能给点提示<br>
<br>
[ 本帖最后由 FerrariTim 于 2007-1-22 12:41 编辑 ] 我认为应定义为变量类型如果是信号可能有延迟的。 在这个程序中,key为敏感变量,flag也为敏感变量,把flag加入敏感变量列表试一下. 首先感谢楼上两位<br>
我把flag加入敏感变量列表,结果也是一样的<br>
另外,我在进程中把flag定义成变量,变量的赋值应该是立刻的,但是结果还是那样 不知楼主有没有做过仿真?