tag 标签: fpga分频

相关博文
  • 热度 10
    2015-3-2 09:11
    1654 次阅读|
    0 个评论
    FPGA学习之分频 在FPGA学习过程中会遇到许多不同的时钟信号,要实现这些所需的时钟一般要经过时钟的分频与倍频,本文所实现的是时钟的分频,其中最常见的是奇数分频与偶数分频。程序中通过输入要实现的分频数N便可实现对应时钟的奇偶数分频,以下两图分别是N=6与N=7时的Modelsim仿真波形: N=6时 N=7时 Verilog程序如下: module Divider(                clk,                                rst_n,                                clk1,                                clk2,                                clk_out                               ); input clk; input rst_n; output clk_out; output clk1; output clk2; wire clk_out; reg clk1; reg clk2; reg k1; reg k2; parameter N=7; //要现实的N分频 always @(posedge clk,negedge rst_n) begin   if(!rst_n)     begin             k1=3'b0;                    clk1=1'b0;           end   else             if(k1(N-1))                      begin                        k1=k1+3'b1;                              if(k1(N-1)/2)                                 clk1=1'b0;                        else if (k1=(N-1)/2)                 clk1=1'b1;                              end                     else                        begin                          clk1=1'b0;                           k1=3'b0;                 end end   always @(negedge clk,negedge rst_n) begin   if(!rst_n)     begin             k2=3'b0;                    clk2=1'b0;           end   else             if(k2(N-1))                      begin                        k2=k2+3'b1;                              if(k2(N-1)/2)                                 clk2=1'b0;                        else if (k2=(N-1)/2)                 clk2=1'b1;                              end                     else                        begin                          clk2=1'b0;                           k2=3'b0;                 end end   assign clk_out=(N%2)? (clk1|clk2):clk1; endmodule