[求助] CPLD刚入门新手。。。还请高手指教

heeh_only   2012-9-3 17:15 楼主
程序功能描述:当检测到overcurrent_in上升沿来后,overcurrent_out输出高电平并保持5秒。
我的程序如下:
library ieee;
use ieee.std_logic_1164.all;

entity test is
port(
     overcurrent_in:in std_logic;
     overcurrent_out:out std_logic;
     clk:in std_logic
    );
end test;

architecture over of test is
  signal count:integer;
  signal a:std_logic;
begin
process(overcurrent_in,clk)
   begin
   if clk'event and clk='1' then
      if overcurrent_in='1' then                                      检测到为1时,overcurrent_out输出‘1’
         overcurrent_out<='1';
         count<=count+1;                                                 计算器开始加1,

           elsif count/=0 then                                              只有当上升沿来了后count才不为零,所以只有当上升沿来后才能执行以前语句
                  if count>=10 then                                         让其产生10的CLK周期的延时,为了仿真用,所以我只用了10个CLK周期的延时
                 count<=0;
                 overcurrent_out<='0';                                   时间到后让其输出‘0’
          else count<=count+1;                                         时间没到继续加
          end if;
      end if;
    end if;  
   end process;
   end over;      

  仿真波形如下图:

overurrent_out输出一直为‘1’了。为什么不对啊  ??求高手帮帮我   谢谢了 。

另,我想要的输出波形应该如下:

[ 本帖最后由 heeh_only 于 2012-9-3 17:19 编辑 ]
  • 仿真波形图
  • 想要的波形输出.png

回复评论 (1)

怎么没人回复啊~ 那位大侠帮帮我啊
点赞  2012-9-3 20:04
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复