FPGA开发——奇数分频器的设计

一、概论

在我们进行FPGA分频器的学习当中,我们通常会学习怎样完成任意分频器的设计,其中就包括偶数分频最为常见。在实现的分频器的同时我们也会不定时的要求同时设置对应的占空比。今天我们就来看看怎样同时设置奇数分频器和其对应50%的占空比。

二、实现原理

我们在进行偶数分频时可以很轻松的就可以实现对应的分频器和其占空比,因为就是简单实现高低电平反转就行。而在奇数分频中要实现50占空比就需要一种特定的思想。

1、设计源码

这里我使用的是先进行n分频器的设计,然后利用两个n分频的相位延迟一个周期的方法对于实现n分频的50%占空比。特别需要注意的是两个子分频逻辑只能用组合逻辑,否则使用时序逻辑的话会自动忽略低电平。在下面的代码中n=3。

module divider(
  input  clk,
  input  rst_n,
  output reg clk_out
);
parameter TIME = 3;
reg [2:0]cnt;
reg [2:0] cnt1;
reg [2:0] cnt2;
reg  clk_out1;
reg  clk_out2;


//子分频器1
always @(posedge clk or negedge rst_n)begin
    if(!rst_n)
      cnt1<=0;
    else if(cnt1==(TIME-1))
      cnt1<=0;
    else 
      cnt1<=cnt1+1;
end 

//子分频器2
always @(negedge clk or negedge rst_n)begin
    if(!rst_n)
      cnt2<=0;
    else if(cnt2==(TIME-1))
      cnt2<=0;
    else
      cnt2<=cnt2+1;
end 

//子分频器1频率分布
always @(posedge clk or negedge rst_n)begin 
    if(!rst_n)
      clk_out1<=0;
    else if(cnt1<(TIME>>1))
      clk_out1<=0;
    else 
      clk_out1<=1;
end 

//子分频器2频率分布
always @(negedge clk or negedge rst_n)begin 
    if(!rst_n)
      clk_out2<=0;
    else if(cnt0<(TIME>>1))
      clk_out2<=0;
    else 
      clk_out2<=1;
end 

assign clk_out=clk_out1 &&clk_out2;

2、仿真文件

//定义时间尺度
`timescale 1ns/1ns
module divider_tb ;

//输入信号定义
reg  clk;
reg rst_n;

wire  clk_out;
//模块例化
divider div (
    /*input */  .clk       (clk    ),
    /*input */  .rst_n     (rst_n  ),
    /*output*/  .clk_out   (clk_out      )
);
//激励信号产生
parameter CLK_CYC = 20;
//时钟
initial clk=1;
always #(CLK_CYC/2)clk=~clk;

//复位
initial begin
    rst_n= 1'b0;
    #(CLK_CYC*3);
    #5;//复位结束避开时钟上升沿
    rst_n= 1'b1;
end

//激励

endmodule

这里的测试文件和上一篇偶数分频器的测试文件一样,可以拿来直接用。

四、仿真波形图

通过仿真波形图我们可以看到:计数器1和计数器2的两个子分频的相位是相差一个周期的,而且通过观察clk_out我们可以看到实现了3分频的50%占空比。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电子小芯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值