FPGA的学习:5分频的实现

Posted 石小舟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FPGA的学习:5分频的实现相关的知识,希望对你有一定的参考价值。

首先先把偶分频的系统框图和时序图画出来。

此次采用降频的原理,了解了原理之后,开始代码的编写。

`timescale  1ns/1ns

module  divider_five
(
    input   wire    sys_clk     ,   //系统时钟50Mhz
    input   wire    sys_rst_n   ,   //全局复位

    output  reg     clk_flag        //指示系统时钟5分频后的脉冲标志信号
);

reg [2:0] cnt;  //用于计数的寄存器

//cnt:计数器从0到4循环计数
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        cnt <= 3'b0;
    else    if(cnt == 3'd4)
        cnt <= 3'b0;
    else
        cnt <= cnt + 1'b1;

//clk_flag:脉冲信号指示5分频
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        clk_flag <= 1'b0;
    else    if(cnt == 3'd3)
        clk_flag <= 1'b1;
    else
        clk_flag <= 1'b0;

endmodule

实现5分频之后,开始仿真代码的编写。

`timescale  1ns/1ns

module  tb_divider_five();

wire    clk_out;

reg     sys_clk;
reg     sys_rst_n;

//初始化系统时钟、全局复位
initial begin
    sys_clk    = 1'b1;
    sys_rst_n <= 1'b0;
    #20
    sys_rst_n <= 1'b1;
 end

//sys_clk:模拟系统时钟,每10ns电平翻转一次,周期为20ns,频率为50Mhz
always  #10 sys_clk = ~sys_clk;

//实例化

divider_five    divider_five_inst
(
    .sys_clk    (sys_clk    ),  //input     sys_clk
    .sys_rst_n  (sys_rst_n  ),  //input     sys_rst_n

    .clk_out    (clk_out    )   //output    clk_out
);

endmodule

 

以上是关于FPGA的学习:5分频的实现的主要内容,如果未能解决你的问题,请参考以下文章

FPGA培训专家 V3学院 FPGA专家 带你学习Verilog语言top_down书写技巧

FPGA 开发基础------------奇数分频,占空比50%

Verilog实现奇分频电路

FPGA的学习:无源蜂鸣器的实现

FPGA教程案例9基于vivado核的时钟管理器设计与实现

基于FPGA的高速数据采集系统实现