一、FPGA实现奇数倍分频,以5分频为例,代码如下:
module div(MCLK,DIV5_CLK,DIV0,DIV1,COUNT0);
input MCLK; //时钟输入
output DIV5_CLK; //5分频输出
output DIV0,DIV1; //(N-1)/2分频输出
reg DIV0;
reg DIV1;
parameter N = 5; // 设置分频数N(奇数)
parameter M = 2; // (N-1)/2
output [2:0]COUNT0; //计数器计数寄存器
reg[2:0] COUNT0 = 0;
reg[2:0] COUNT1 = 0;
always@(posedge MCLK) //MCLK上升沿分频
begin
if(COUNT0==2)begin
DIV0=0;
end else if(COUNT0==5)begin
COUNT0=0;
DIV0=1;
end
COUNT0=COUNT0+1;
end
always@(negedge MCLK) //MCLK下降沿分频
begin
if(COUNT1==2)begin
DIV1=0;
end else if(COUNT1==5)begin
DIV1=1;
COUNT1=0;
end
COUNT1=COUNT1+1;
end
assign DIV5_CLK=DIV0|DIV1; //两路(N-1)/2分频输出相或
endmodule
仿真图如下所示: