大家好!向大家请教个问题,希望在这能得到大家的帮助!谢谢!
我在做设计师遇到这样的一个问题,需要产生这样的信号,如图所示:clk是时钟,a信号是输入,b是输出,我的要求是这样的:a信号低态时要经历2个时钟上升沿,而b要经历一个时钟上升沿,在a经历的第一个时钟上升沿之前输出b和a是一样的,在第一个上升沿后的第一个下降沿后b和a不一样,输出b为1。象图形这样所示。
我的设计代码是这样的:
signal RE1_cnt : integer range 0 to 9;
signal RE2_cnt : integer range 0 to 9;
b_Counter1_Proc: process(MCLK,MR)
begin
if (MR='0') then
RE1_cnt<=0;
elsif rising_edge(MCLK) then
if (a='0') then
RE1_cnt<=RE1_cnt+1;
else
RE1_cnt<=0;
end if;
end if;
end process b_Counter1_Proc;
b_Counter2_Proc: process(MCLK,MR)
begin
if (MR='0') then
RE2_cnt<=0;
elsif falling_edge(MCLK) then
if (RE1_cnt>=1) then
RE2_cnt<=RE2_cnt+1;
else
RE2_cnt<=0;
end if;
end if;
end processb_Counter2_Proc;
b<=a when (RE2_cnt<=0)else'1';