process(clk,rst )
begin
if rst ='0' then
count <= n-1;
elsif rising_edge(clk) then
count<=count-1;
if count>=n/2 then
q<='0';
else
q<='1';
end if;
if count<=0 then
count<=n-1;
end if;
end if;
end process;
请问这几句是如何实现分频的???
求大神解答!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
举个例子,如果N=10,那么复位信号(rst_n)有效时,count=9,然后,每个时钟周期上升沿时,count值自动减1,一次为8,7,6,5,4,3,2,1,0,当count<=0(其实只能等于零,因为等于零时,下一个时钟周期count重新变为9),依次循环,即count的值在9~0之间周期变化,那么Q的值在count>5(5~9)时为0,反之,在0~4时为1,即生成一个占空比为1:1的10分频时钟,这下理解了吧?另外你代码写的太乱了,分开用两个process来写,一个是count,一个是Q,这样就清晰明白多了
一周热门 更多>