0. 简介
有时在基本模块的设计中常常会使用到时钟分频,时钟的偶分频相对与奇分频比较简单,但是奇分频的理念想透彻后也是十分简单的,这里就把奇分频做一个记录。
1. 奇分频
其实现很简单,主要为使用两个计数模块分别计数,得到两个波形进行基本与或操作完成。直接贴出代码部分如下。
module div_freq( iCLK, iRST_n, oCLK ); input wire iCLK; input wire iRST_n; output oCLK; 'd5; reg clk_p; :] cnt_p; always @ (posedge iCLK or negedge iRST_n) begin if (!iRST_n) cnt_p <= 'd0; ) cnt_p <= 'd0; else cnt_p <= cnt_p + 'b1; end always @ (posedge iCLK or negedge iRST_n) begin if (!iRST_n) clk_p <= 'b0; ) / ) clk_p <= ~clk_p; ) clk_p <= ~clk_p; else clk_p <= clk_p; end reg clk_n; :] cnt_n; always @ (negedge iCLK or negedge iRST_n) begin if (!iRST_n) cnt_n <= 'd0; ) cnt_n <= 'd0; else cnt_n <= cnt_n + 'b1; end always @ (negedge iCLK or negedge iRST_n) begin if (!iRST_n) clk_n <= 'b0; ) / ) clk_n <= ~clk_n; ) clk_n <= ~clk_n; else clk_n <= clk_n; end assign oCLK = clk_p | clk_n; endmodule
modelsim仿真结果如下图