请教问题几行代码如何实现分频的

2019-07-15 22:42发布

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;
请问这几句是如何实现分频的???
求大神解答!!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
alasga
2019-07-16 22:35
本帖最后由 alasga 于 2016-5-23 21:09 编辑

举个例子,如果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,这样就清晰明白多了

一周热门 更多>