本人最近研究FPGA,结合网上经验和自己领悟,重新编写的分频器,首先是偶数分频器,对于N(偶数)分频器,其原理就是利用计数器,当计数器(从0开始计数)计到N/2-1时,时钟反转一次,计数器清零,否则继续计数,以此类推,程序代码如下:
- 偶数分频器
/*偶数分频器的设计
Designer : he chunjuan
Data : 2018/08/20
Change : original
Description : 对于N(偶数)分频器来说比较简单,主要思路是,当计数器计到N/2-1时,时钟反转,计数器清零,否则计数器继续计数。
*/
module even_division
(
clk,rst_n,clkout
);
input clk,rst_n;
output clkout;
parameter N=4; //分频系数
parameter WIDTH=3; // 计数器的位宽,确保N<2**WIDTH-1,否则计数会溢出,2的WIDTH次幂-1
reg [WIDTH-1:0] cnt;
reg out_clk;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
cnt<=0;
out_clk<=0;
end
else
begin
if(cnt==N/2-1)
begin
out_clk<=~out_clk;
cnt<=0;
end
else
begin
cnt<=cnt+1'b1;
end
end
end
assign clkout=out_clk;
endmodule
testbench 测试文件如下:
/*******************************************************************************
Author : He chunjuan
Data : 2018/08/20
Description : The excitation file of driving 8-bit led
Modification History :
24/08/20 He chunjuan 1.0 original
**********