本博客内容同步微信公众号《FPGA的故事》,大家可以关注此公众号!
基于FPGA的分频器学习
分频器介绍
在数电系统设计中,分频器的应用非常的广泛,它的功能就是对高频率的信号进行分频。分频器的本质上是加法器的演变,其计数值由分频系N=fin/fout决定,分频器输出的不是普通的计数值,而是根据分频系数对输出信号高低电平进行控制。分频器常用于数字电路中的时钟分频,用以得到较低的时钟信号、选通信号、中断信号等。分频器在公司的笔试题是必考题,这里我们主要介绍几种分频器,偶数分频、奇数分频。
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如
偶数分频器
偶数分频器是指分频系数为偶数,分频系数为N=2n(n=1,2,3....)。例如,输入的时钟信号为f,那么偶数分频器输出的时钟信号为F=f/2n(n=1,2,3....)。
####分频系数为2的整数次幂的分频器
对于分频系数是2的整数次幂的分频器,我们可以把计数器的对应指数位输出即可。例如,对输入时钟信号进行4分频,计数器记录4个数据只需2bit,只要把计数器的最高输出就是4分频。
名称 | 方向 | 位宽 | 说明 |
---|---|---|---|
clk | input | 1 | 工作时钟 |
reste | input | 1 | 复位信号 |
div | output | 1 | 输出分频信号 |
module clk_even_div(
input clk,
input reset,
output reg clk_div=0
);
reg [2:0]cnt_div=0;
//实现计数器计数功能
always @(posedge clk)
begin
if(reset)begin
cnt_div<=3'd0;
clk_div<=1'b0;
end
else if(cnt_div==3'd6)begin
cnt_div<=3'd0;
clk_div<=~clk_div;
end
else begin
cnt_div<=