程序功能描述:当检测到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 编辑 ]
此帖出自
小平头技术问答
一周热门 更多>