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书写技巧