首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请高手帮忙指点下,谢谢。

请高手帮忙指点下,谢谢。

输入脉冲是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; 以上是我写的,大家给看看吧
多多帮助
返回列表