集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1442|回复: 12

【数电基础】分频器

[复制链接]
zxopenluyutong 发表于 2021-2-1 18:24:45 | 显示全部楼层 |阅读模式
1.偶数分频器

相信大多数朋友在学习FPGA过程中接触到的第一个实验应该就是偶数分频器了,偶数分频器的设计较为简单,用一个简单的计数器就可以实现。比如要实现一个N分频(N为偶数)的分频器,可以先写一个计数器,当计数到(N/2-1)时,让输出状态翻转,并将计数器清零,这样输出的信号就是输入时钟的N分频了。具体代码如下:

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

代码:
module clk_div(clk_out, clk, rst_n);

input clk, rst_n;
output clk_out;

reg clk_out;
reg [4:0] cnt;

always @(posedge clk or negedge rst_n)
if(!rst_n)
    begin
    cnt <= 5'b0;
    clk_out <= 1'b0;
    end
else if(cnt == 4'd9)
    begin
    cnt <= 5'b0;
    clk_out <= ~clk_out;
    end
else cnt <= cnt + 1'b1;

endmodule
2.奇数分频


奇数分频器的设计比偶数分频器复杂一些,特别是占空比为50%的奇数分频器。如果对占空比没有明确的要求,则可以直接对上升沿计数,计数到(N-1)/2 时让输出翻转,计数到(N-1)时让输出状态再次翻转,并将计数器清零,这样就可以得到一个占空比为2:3的N分频(N为奇数)的分频器。而如果要实现50%的占空比,可以通过“错位相或”的方法实现。具体方法是用刚才的方法先通过对上升沿计数产生一个占空比为不是50%的N分频器,再用同样的方法对下降沿计数产生一个占空比也不是50%的N分频器,最后将这两个分频器的输出进行“或”运算,就可以得到占空比为50%的奇数N分频器,具体实现代码如下:
module div_odd
(
    input clk,
    input rst_n,
    output clk_out
);

//----------count the posedge---------------------
reg [2:0] cnt_p;
reg clk_p;

always @ (posedge clk or negedge rst_n)
if(!rst_n)
    cnt_p <= 3'd0;
else if(cnt_p == 3'd4)
    cnt_p <= 3'd0;
else
    cnt_p <= cnt_p + 1'b1;

always @ (posedge clk or negedge rst_n)
if(!rst_n)     
    clk_p <= 1'b0;
else if((cnt_p == 3'd2) || (cnt_p == 3'd4))
    clk_p <= ~ clk_p;
//---------------------------------------------

//----------count the negedge------------------
reg [2:0] cnt_n;
reg clk_n;

always @ (negedge clk or negedge rst_n)
if(!rst_n)
    cnt_n <= 3'd0;
else if(cnt_n == 3'd4)
    cnt_n <= 3'd0;
else
    cnt_n <= cnt_n + 1'b1;
   
always @ (negedge clk or negedge rst_n)
if(!rst_n)
    clk_n <= 1'b0;
else if((cnt_n == 3'd2) || (cnt_n == 3'd4))
    clk_n <= ~clk_n;
//----------------------------------------------

assign clk_out = clk_p | clk_n;

   
endmodule
afei6969 发表于 2021-2-2 16:55:37 | 显示全部楼层
66666666666666
hellokity 发表于 2021-2-3 14:35:57 | 显示全部楼层
【数电基础】分频器
zxopenljx 发表于 2024-8-7 17:41:11 | 显示全部楼层
【数电基础】分频器
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-23 18:32 , Processed in 0.062416 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表