📄 clk_div.v
字号:
//////////////////////////////////
// Clock Divider by Odd Number //
//////////////////////////////////
module clk_div (
clk ,
rstn ,
clk_o
);
input clk ;
input rstn ;
output clk_o ;
parameter N = 9 ; // 3, 5, 7
// Posedge Domain
reg clkn_pos ;
reg[7:0] count_pos ;
wire clear_pos = (count_pos == (N - 1));
wire updat_pos = (count_pos == (N-1)/2);
always @(posedge clk or negedge rstn )
if (!rstn )
count_pos <= #3 8'h00 ;
else if(clear_pos )
count_pos <= #3 8'h00 ;
else
count_pos <= #3 count_pos + 1'b1 ;
always @(posedge clk or negedge rstn )
if (!rstn )
clkn_pos <= #3 1'b0 ;
else if(updat_pos )
clkn_pos <= #3 1'b1 ;
else if(clear_pos )
clkn_pos <= #3 1'b0 ;
// Negedge Domain
reg clkn_neg ;
reg[7:0] count_neg ;
wire clear_neg = (count_neg == (N - 1));
wire updat_neg = (count_neg == (N-1)/2);
always @(negedge clk or negedge rstn )
if (!rstn )
count_neg <= #3 8'h00 ;
else if(clear_neg )
count_neg <= #3 8'h00 ;
else
count_neg <= #3 count_neg + 1'b1 ;
always @(negedge clk or negedge rstn )
if (!rstn )
clkn_neg <= #3 1'b0 ;
else if(updat_neg )
clkn_neg <= #3 1'b1 ;
else if(clear_neg )
clkn_neg <= #3 1'b0 ;
wire clk_o = clkn_pos | clkn_neg ;
/////////////////////////////////////////////
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -