FPGA的学习:6分频的实现

Posted 石小舟

tags:

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

首先画出系统框图和时序图。

`timescale  1ns/1ns

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

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

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

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

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

endmodule

接着进行仿真文件的编写。

`timescale  1ns/1ns

module  tb_divider_six();

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_six divider_six_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的学习:6分频的实现的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

Verilog实现奇分频电路

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