使能时钟设计 FPGA边练边学
简介


/
//EDA工具平台:Vivado 2019.1 + ModelSim SE-64 10.5
//开发套件型号: STAR 入门FPGA开发套件
//版 权 申 明: 本例程由《深入浅出玩转FPGA》作者“特权同学”原创,
// 仅供特权同学相关FPGA开发套件学习使用,谢谢支持
//官方淘宝店铺: http://myfpga.taobao.com/
//微 信 公 众 号:“FPGA快乐学习”
// 欢迎关注,获取更多更新的FPGA学习资料
/
`timescale 1ns/1ps
module vlg_design(input clk, //100MHzinput rst_n,output reg[3:0] syscnt);localparam DIVCNT_MAX = 5'd19;
reg[4:0] divcnt;
reg clk_en; /
//对输入时钟clk 100MHz做20分频的计数always @(posedge clk)if(!rst_n) divcnt <= 'b0;else if(divcnt < DIVCNT_MAX) divcnt <= divcnt+1'b1;else divcnt <= 'b0;/
//产生时钟使能信号,这个时钟使能信号每隔20个时钟周期有一个高脉冲always @(posedge clk)if(!rst_n) clk_en <= 1'b0;else if(divcnt == DIVCNT_MAX) clk_en <= 1'b1;else clk_en <= 1'b0;/
//使用时钟使能信号进行计数always @(posedge clk)if(!rst_n) syscnt <= 'b0;else if(clk_en) syscnt <= syscnt+1'b1;else syscnt <= syscnt;endmodule
testbench:
/
//EDA工具平台:Vivado 2019.1 + ModelSim SE-64 10.5
//开发套件型号: STAR 入门FPGA开发套件
//版 权 申 明: 本例程由《深入浅出玩转FPGA》作者“特权同学”原创,
// 仅供特权同学相关FPGA开发套件学习使用,谢谢支持
//官方淘宝店铺: http://myfpga.taobao.com/
//微 信 公 众 号:“FPGA快乐学习”
// 欢迎关注,获取更多更新的FPGA学习资料
/
`timescale 1ns/1ps
module testbench_top();
//参数定义`define CLK_PERIORD 10 //时钟周期设置为10ns(100MHz)
//接口申明reg clk;
reg rst_n;
wire[3:0] syscnt;
//对被测试的设计进行例化vlg_design uut_vlg_design(.clk(clk),.rst_n(rst_n),.syscnt(syscnt));
//复位和时钟产生//时钟和复位初始化、复位产生
initial beginclk <= 0;rst_n <= 0;#1000;rst_n <= 1;
end//时钟产生
always #(`CLK_PERIORD/2) clk = ~clk;
//测试激励产生initial begin@(posedge rst_n); //等待复位完成@(posedge clk);repeat(20*16*2) begin@(posedge clk);end$stop;
endendmodule
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
