欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > FPGA学习知识(汇总)

FPGA学习知识(汇总)

2025/5/20 1:22:11 来源:https://blog.csdn.net/mvpkuku/article/details/147962868  浏览:    关键词:FPGA学习知识(汇总)

1. wire与reg理解,阻塞与非阻塞

2. 时序取值,时钟触发沿向左看 

3. ip核/setup debug 添加 ila

一、ila使用小技巧 

 二、同步复位、异步复位和异步复位同步释放

设计复位设计,尽量使用 异步复位同步释放;尽管该方法仍然对毛刺敏感,但原本的毛刺复位信号也是一个不定态,无法得知该毛刺是否对工程产生负面影响,那么针对该毛刺,放大了之后更好便于处理问题。

  

1.项目工程复位时钟产生:

外部晶振时钟经过pll的ip核,通过locked信号,引入计数器cnt对复位信号进行展宽,以便后续的多时钟域进行打拍寄存。例如在后续的ddr设计中,在mig核使用同步复位时,现将复位进行展宽,在进行打两拍寄存,实现对ui_clk的同步 

 2.多时钟域下同步复位设计

三、呼吸灯实验(PWM调制) 

`timescale 1ns / 1ps
//
// Description:呼吸灯
//
module top(input   clk_50M ,    output  led     
);reg [15:0] cnt_T;reg [15:0] cnt_duty ;reg        flag ;wire  clk_sys_50M  ;wire  clk_sys_100M ;wire  rst_sys      ;assign led = (cnt_duty > cnt_T) ? 'd1 : 'd0;
//时钟和复位
clock_and_reset u0(.clk_50M        (clk_50M     ),.clk_sys_50M    (clk_sys_50M ),.clk_sys_100M   (clk_sys_100M),.rst_sys        (rst_sys     )
);always @(posedge clk_sys_50M or posedge rst_sys) beginif(rst_sys)cnt_T <= 'd0;else if(cnt_T >= 'd50_000)cnt_T <= 'd0;elsecnt_T <= cnt_T + 'd1;
end//默认上电复位从暗到亮
always @(posedge clk_sys_50M or posedge rst_sys) beginif(rst_sys)begincnt_duty <= 'd0;flag <= 'd1;endelse if(cnt_T >= 'd50_000)begin//flag = 1,亮度递增;佛增递减  if(flag)beginif(cnt_duty == 'd50_000)flag <= ~flag;elsecnt_duty <= cnt_duty + 'd25;endelse beginif(cnt_duty == 'd0)flag <= ~flag;else               cnt_duty <= cnt_duty - 'd25;  endendelseflag <= flag;
endendmodule

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词