我想实现的是,通过对40MHZ的晶振40分频,输出一个1MHZ的信号5秒,然后等待200us后,继续输出5秒,如此循环
下面是自己写的一段程序,下载后,用示波器测出来是连续的1MHZ信号,没有200us的等待,不知道问题出在哪里,请各位老师指点,谢谢了
p3:process(f_grst,fosc)
begin
if f_grst='0' then
f_cnt3<=0;
elsif fosc'event and fosc='1' then
if f_cnt3=200007999 then
f_cnt3<=0;
else
f_cnt3<=f_cnt3+1;
end if;
end if;
end process p3;
p4:process(f_grst,f_cnt3)
begin
if f_grst='0' then
sig_kz<=0;
elsif f_cnt3 < 200000000 then
sig_kz<=1;
else
sig_kz<=0;
end if;
end process p4;
p5:process(sig_kz,fosc)
begin
if sig_kz=0 then
f_cnt2<=0;
elsif fosc'event and fosc='1' then
if f_cnt2=39 then ---1M Hz
f_cnt2<=0;
else
f_cnt2<=f_cnt2+1;
end if;
end if;
end process p5;
p6:process(sig_kz,fosc)
begin
if sig_kz=0 then
sig<='0';
elsif fosc'event and fosc='1' then
if f_cnt2 < 20 then
sig<='1';
else
sig<='0';
end if;
end if;
end process p6;
end Behavioral;
|