-
偶数倍分频
偶数倍的分频实现还是比较容易的,可以通过计数器的方法来实现。
比如进行N倍偶数分频时,那么可以通过由待分频时钟来触发计数器进行计数,当计数器从0计数到N/2-1时,输出时钟进行翻转,同时计数器清零,依次循环。
这种方法可以实现任意的偶数分频,电路也不复杂。
其偶数分频verilog如下,这里分频倍数为8:
module Odd_Div(
input clk_i,
input rst_n,
output reg clk_o
);
reg [2:0] cnt ;
parameter N = 8 ; //N为分频倍数 偶数分频
always @(posedge clk_i or negedge rst_n)
begin
if(~rst_n)
begin
cnt <= 1'b0;
clk_o <= 1'b0;
end
else
begin
if(cnt==N/2-1)
begin
clk_o <= ~clk_o;
cnt <= 1'b0;
end
else
cnt <= cnt + 1'b1;
end
end
endmodule
testbeach文件如下:
`timescale 1ns/1ps
module Odd_Div_tb;
reg rst_n ;
reg clk ;
Odd_Div U_CLK_DIV8(
.clk_i(clk),
.rst_n(rst_n),