VHDL 编译一过程出现了一个bug,不知道什么原因

2019-07-16 01:26发布

是基于计数器的 按键消抖进程.
仿效http://www.eefocus.com/fpga/279313这篇文章中的第一个.

process(sw1,clk)
begin
        if clk='1' and clk'event then
                if sw1='0' then --当按键时开始执行
                        if count=1000  then
                                count=count; --当数到最后一个数(这里设置为1000即1000个时钟周期)
                        else
                                count<=count+1;--当没有数到头时继续数
                        end  if;
                        if count=999 then --数到999时 给出实际在组合逻辑部分要使用的输入信号sw1_pro.设置第999个时钟周期时才给出 实际输入信号("消抖"信号 )旨在筛选出宽脉冲而去除窄脉冲。并且给定了sw1_pro的下降沿,即count=999时是上升沿,count=1000时为下降沿,可知sw1_pro的脉冲宽度同步为一个时钟周期。
                                sw1_pro<='0';
                        else
                                sw1_pro<='1';
                        end if;
                else
                        count<=0; --按键松开或者抖动干扰中相当于按键松开的无效(高电平)时间里计数置零。
end process ;


在编译中提示错误好像是针对 count.说it does not hold value outside the clock edge.求问 哪里错了

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
xiewenbin520
1楼-- · 2019-07-16 03:53
                        if count=1000  then
                                count=count--当数到最后一个数(这里设置为1000即1000个时钟周期)
                        else
应该是这里有问题
Brahmagupta
2楼-- · 2019-07-16 05:37
xiewenbin520 发表于 2013-8-3 23:38
if count=1000  then
                                count=count--当数到最后 ...

好吧。这里我改过来还是那个问题。 count does not hold the value outside the clock edge。

eeyang
3楼-- · 2019-07-16 07:50
不能用等号,信号赋值用<=,变量用;=来自: Android客户端
妖精的尾巴bkb
4楼-- · 2019-07-16 13:01
count=count 这一句是判断是否相等!
菩提wei
5楼-- · 2019-07-16 14:41
 精彩回答 2  元偷偷看……

一周热门 更多>