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) begin
    if(rst_sys)
        cnt_T <= 'd0;
    else if(cnt_T >= 'd50_000)
        cnt_T <= 'd0;
    else
        cnt_T <= cnt_T + 'd1;
end

//默认上电复位从暗到亮
always @(posedge clk_sys_50M or posedge rst_sys) begin
    if(rst_sys)begin
        cnt_duty <= 'd0;
        flag <= 'd1;
    end
    else if(cnt_T >= 'd50_000)begin
        //flag = 1,亮度递增;佛增递减  
        if(flag)begin
            if(cnt_duty == 'd50_000)
                flag <= ~flag;
            else
               cnt_duty <= cnt_duty + 'd25;
        end
        else begin
            if(cnt_duty == 'd0)
                flag <= ~flag;
            else               
                cnt_duty <= cnt_duty - 'd25;  
        end
    end
    else
        flag <= flag;
end

endmodule

相关推荐
千寻xun2 小时前
三、实战篇-NVME SSD控制之FPGA实现(一)
fpga开发·nvme ssd·nvme协议
a1117763 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao3 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
你想知道什么?5 小时前
线性回归-学习笔记
笔记·学习·线性回归
鱼毓屿御5 小时前
从「只会聊」到「边想边做」的跃迁
前端·学习·react.js
XMAIPC_Robot6 小时前
软硬协同实时控制|RK3588业务调度+FPGA硬件时序,ethercat实现半导体设备微秒级响应(125us)
linux·arm开发·人工智能·fpga开发
AOwhisky6 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
upper20206 小时前
从零开始设计riscv cpu记录之七
fpga开发·riscv·riscv设计·btb·分支预测
minglie18 小时前
zynq中linux系统的自动登录和免密登录
学习
茯苓gao8 小时前
嵌入式开发笔记:Qt信号槽机制深度解析——从原理到实战的全方位指南
开发语言·笔记·嵌入式硬件·qt·学习