首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

verilog 语言实现任意分频

verilog 语言实现任意分频

分频器是指使输出信号频率为输入信号频率整数分之一的电子电路。在许多电子设备中如电子钟、频率合成器等,需要各种不同频率的信号协同工作,常用的方法是以稳定度高的晶体振荡器为主振源,通过变换得到所需要的各种频率成分,分频器是一种主要变换手段。早期的分频器多为正弦分频器,随着数字集成电路的发展,脉冲分频器(又称数字分频器)逐渐取代了正弦分频器。下面以Verilog HDL 语言为基础介绍占空比为50%的分频器。
1 偶分频
偶分频比较简单,假设为N分频,只需计数到N/2-1,然后时钟翻转、计数清零,如此循环就可以得到N(偶)分频。代码如下。
module fp_even(clk_out,clk_in,rst);
output clk_out;
input clk_in;
input rst;
reg [1:0] cnt;
reg clk_out;
parameter N=6;

always @ (posedge clk_in or negedge rst)
begin
if(!rst)
       begin
              cnt <= 0;
              clk_out <= 0;
       end
else begin
        if(cnt==N/2-1)
              begin clk_out <= !clk_out; cnt<=0; end
        else
              cnt <= cnt + 1;
        end
end
endmodule
可以通过改变参量N的值和计数变量cnt的位宽实现任意偶分频。
偶分频(N=6)的RTL原理图:

偶分频(N=6)的行为仿真结果:
继承事业,薪火相传
返回列表