Board logo

标题: 请高手帮忙指点下,谢谢。 [打印本页]

作者: xuningbo1    时间: 2005-2-28 17:07     标题: 请高手帮忙指点下,谢谢。

输入脉冲是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; 以上是我写的,大家给看看吧




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0