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仿真结果如下图

[原创][FPGA]时钟分频之奇分频(5分频)-LMLPHP

05-19 09:45