首页 > 编程知识 正文

使能时钟设计 FPGA边练边学,边学边兼职的设计

时间:2023-05-06 17:41:28 阅读:230304 作者:1367

简介


///EDA工具平台:Vivado 2019.1 + ModelSim SE-64 10.5 //开发套件型号: STAR 入门FPGA开发套件//版 mhddm: 本例程由《深入浅出玩转FPGA》作者“特权同学”原创,//仅供特权同学相关FPGA开发套件学习使用,谢谢支持//官方淘宝店铺: http://myfpga.taobao.com///微 信 公 众 号:“FPGA快乐学习”//欢迎关注,获取更多更新的FPGA学习资料 /`timescale 1ns/1psmodule 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开发套件//版 mhddm: 本例程由《深入浅出玩转FPGA》作者“特权同学”原创,//仅供特权同学相关FPGA开发套件学习使用,谢谢支持//官方淘宝店铺: http://myfpga.taobao.com///微 信 公 众 号:“FPGA快乐学习”//欢迎关注,获取更多更新的FPGA学习资料 /`timescale 1ns/1psmodule testbench_top();//参数定义`define CLK_PERIORD10//时钟周期设置为10ns(100MHz)//接口申明reg clk;reg rst_n;wire[3:0] syscnt;//对被测试的设计进行例化vlg_designuut_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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。