首页 > 编程知识 正文

如何用计数器构成分频电路,数字电子技术分频器原理

时间:2023-05-06 17:35:45 阅读:152958 作者:887

1 .偶数分频器

我想很多朋友在学习FPGA的过程中接触到的第一个实验是偶数分频器。 偶数分频器的设计很简单,用简单的计数器就能实现。 例如,要实现n分频(n为偶数)的分频器,首先写入计数器,计数到) N/2-1后,反转输出状态,将计数器清零。 这样,输出的信号为输入时钟的n分频。 具体代码如下。

偶数分频器例如20分频即N=20,占空比为50%。

代码:

模块clk _ div (clk _ out,clk,rst_n ); input clk,rst_n; output clk_out; reg clk_out; reg [4:0] cnt; always @ (posedgeclkornegedgerst _ n ) if (! rst_n ) begin cnt=5'b0; clk_out=1'b0; endelseif(CNT==4'D9 ) begin cnt=5'b0; clk_out=~clk_out; endelse cnt=cnt 1'b1; 端模2 .奇分频器的设计比偶分频器复杂一些,尤其是占空比为50%的奇分频器。 占空比没有明确的要求时,直接计数上升沿,计数到[n-1]/2时反转输出,计数到[n-1]时再次反转输出状态,通过清除计数器,使占空比2330 要实现50%的占空比,可以通过“是否错开相位”的方法来实现。 具体方法是用刚才的方法为上升沿计数制作一个占空比不为50%的n分频器,用同样的方法为下降沿计数制作一个占空比不为50%的n分频器,最后对这两个分频器的输出进行或运算,得到占空比为50%的n分频器具体实现代码如下。

modulediv_odd(inputclk,input rst_n,output clk_out ); //----- counttheposedge-------- reg [ 233600 ] CNT _ p; reg clk_p; always @ (posedgeclkornegedgerst _ n ) if (! RST_n(CNT_p=3) D0; ELSEif(CNT_p==3'D4 ) cnt_p=3'd0; else cnt_p=cnt_p 1'b1; always @ (posedgeclkornegedgerst _ n ) if (! rst_n ) clk_p=1'b0; elseif((CNT_p==3'D2 )|) CNT_p==3'D4 ) ) clk_p=~ clk_p; ----------------------------------- - ----------------------------------- - always @ (negedgeclkornegedgerst _ n ) if (! RST_n(CNT_n=3) D0; ELSEif(CNT_n==3'D4 ) cnt_n=3'd0; else cnt_n=cnt_n 1'b1; always @ (negedgeclkornegedgerst _ n ) if (! rst_n ) clk_n=1'b0; elseif () CNT_n==3'D2 )|) CNT_n==3'D4 ) clk_n=~clk_n; //--------------assign clk _ out=clk _ p|end module

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。