
- UID
- 104398
- 性别
- 男
|

输入脉冲是4ms高电平,20ms低电平的脉冲信号;要在上升沿产生脉宽为5us的双脉冲,在下降沿产生5us的单脉冲,请问程序该加怎样的终止调用子程序的命令呢?
Library IEEE ;
use IEEE.std_logic_1164.all ;
ENTITY dianlu IS
PORT(
clk,RST,EN : IN STD_LOGIC;
COUNT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
output : OUT STD_LOGIC);
END dianlu;
ARCHITECTURE a OF dianlu IS
BEGIN
COM1: PROCESS (clk,RST,EN)
VARIABLE COUNTI : STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGIN
IF RST = '1' THEN COUNTI := ( others =>'0'); --计数器复位
ELSIF (clk'EVENT AND clk = '1') THEN --CLK上升沿
output <= '1'; -- 输出高电平
IF EN = '1' THEN --检测是否允许计数
IF COUNTI < "101" THEN COUNTI := COUNTI + 1; --允许计数
ELSE COUNTI := (OTHERS => '0'); --大于5,计数器清零
OUTPUT <= '0'; --输出低电平
IF COUNTI < "101" THEN COUNTI := COUNTI + 1; --允许计数
ELSE COUNTI := (OTHERS => '0'); --大于5,计数器清零
output <= '1'; --输出高电平
IF COUNTI < "101" THEN COUNTI := COUNTI + 1; --允许计数
ELSE COUNTI := (OTHERS => '0'); --大于5,计数器清零
output <= '0'; --输出低电平
end if;
end if;
end if;
end if;
end if;
COUNT <= COUNTI;
END PROCESS COM1;
COM2: PROCESS (clk,RST,EN)
VARIABLE COUNTI : STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGIN
IF RST = '1' THEN COUNTI:= ( others =>'0'); --计数器复位
ELSIF (clk'EVENT AND clk = '0') THEN --CLK上升沿
output <= '1';
IF EN = '1' THEN --检测是否允许计数
IF COUNTI < "101" THEN COUNTI := COUNTI + 1; --允许计数
ELSE COUNTI := (OTHERS => '0'); --大于5,计数器清零
OUTPUT <= '0';
END IF;
END IF;
END IF;
END PROCESS COM2;
COUNT <= COUNTI;
END a;
以上是我写的,大家给看看吧 |
|