inter 发表于 2010-6-26 00:34:44

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口,应该没有抖动。
麻烦大家帮我分析一下会是什么原因导致的。
谢谢!!!

AAT 发表于 2010-6-26 01:33:40

你这样写程序肯定不行,建议找本讲vhdl的书来看看再说。

usd 发表于 2010-6-26 02:30:53

why? I THINK THE PROCEDURE IS RIGHT.........

longt 发表于 2010-6-26 03:34:20

wice17 <br>
你能告诉我为什么这么写不行呢?我觉得这样写逻辑没有问题啊

FFT 发表于 2010-6-26 03:58:52

第一:应该会生成一个锁存器。<br>
第二:既然是按键,又生成一个锁存器,检测按键没有消抖电路吗?

VVC 发表于 2010-6-26 05:43:14

消抖有的,而且我其他按键功能只是按一下,灯就亮,<br>
只有这个功能要求是按一下灯亮,再按一下灯灭,而且我拿示波器看了,也没有抖动<br>
<br>
生成锁存器倒是有可能,怎么可以解决呢?希望能给点提示<br>
<br>
[ 本帖最后由 FerrariTim 于 2007-1-22 12:41 编辑 ]

CTT 发表于 2010-6-26 06:50:52

我认为应定义为变量类型如果是信号可能有延迟的。

usd 发表于 2010-6-26 07:19:38

在这个程序中,key为敏感变量,flag也为敏感变量,把flag加入敏感变量列表试一下.

tim 发表于 2010-6-26 08:57:37

首先感谢楼上两位<br>
我把flag加入敏感变量列表,结果也是一样的<br>
另外,我在进程中把flag定义成变量,变量的赋值应该是立刻的,但是结果还是那样

usd 发表于 2010-6-26 10:33:20

不知楼主有没有做过仿真?
页: [1] 2 3
查看完整版本: CPLD的LED的设置IO口输出不行?