FPGA上板项目(一)——点灯熟悉完整开发流程、ILA在线调试


创建工程

  • 型号选择:以 AXU9EG 开发板为例,芯片选择 xczu9eg-ffvb1156-2-i

创建 HDL 代码

  • 注意:由于输入时钟为 200MHz 的差分时钟,因此需要添加 IBUFDS 原语连接差分信号
`timescale 1ns / 1ps
module led
#(
    parameter CNT_MAX = 'd199_999_999
)(
    input wire sys_clk_p,
    input wire sys_clk_n,
    input wire rst,        //同步低复位
    
    output reg led
);

    reg [31:0] timer_cnt;
    wire sys_clk;

/**********************************************
*********** IBUFDS 原语
**********************************************/    
    IBUFDS IBUFDS_inst(
        .O(sys_clk),
        .I(sys_clk_p),
        .IB(sys_clk_n)
    );
    
/**********************************************
*********** 信号赋值
**********************************************/ 
    // 赋值 timer_cnt
    always@(posedge sys_clk) begin
        if(!rst) begin
            timer_cnt <= 32'b0;
        end
        else if(timer_cnt >= CNT_MAX) begin
            timer_cnt <= 32'b0;
        end
        else begin
            timer_cnt <= timer_cnt + 32'd1;
        end
    end
    
    // 赋值 led
    always@(posedge sys_clk) begin
        if(!rst) begin
            led <= 1'b1;
        end
        else if(timer_cnt >= CNT_MAX) begin
            led <= ~led;
        end
    end
endmodule

仿真

  • 此步骤的目的是进行功能验证,不需要时可以忽略。仿真前需要编写激励文件 testbench
`timescale 1ns / 1ps
module tb_led(
);
    parameter CNT_MAX = 32'd10;
    reg sys_clk_p;
    wire sys_clk_n;
    reg rst;
    
    wire led;
    
    led #(
        .CNT_MAX(CNT_MAX)
    )tb_led(
        .sys_clk_p(sys_clk_p),
        .sys_clk_n(sys_clk_n),
        .rst(rst),
        .led(led) 
    );  
    
    // 初始化clk信号
    assign sys_clk_n = ~sys_clk_p;
    initial begin
        sys_clk_p = 0;
        forever #2.5 sys_clk_p = ~sys_clk_p;   
    end
    
    // 初始化rst信号
    initial begin
        rst = 0;
        #100;
        rst = 1;
    end
endmodule

仿真得到的时序波形图:

在这里插入图片描述

添加管脚约束

综合是将HDL代码转换为门级网表的过程,实现是将门级网表映射到目标FPGA设备的过程。

  • 执行综合 run synthesis
  • 等待综合完毕,open synthesized design
  • 选择 I/O Planning,根据原理图和手册来定义引脚
  • ctrl+s 保存

以 AXU9EG 开发板为例:

名称 位置
led AM13
rst AN12(对应 PL KEY)
sys_clk_p AL8

在这里插入图片描述

添加时序约束

  • constraints wizard
  • 设置时钟频率
  • 重新综合一遍,因为综合是将RTL代码转换为门级网表,并根据时序和其他约束进行逻辑优化。如果在综合之后添加或修改了时序和管脚约束,综合工具不会自动知道这些约束的变化,所以最好重新 run synthesis

综合后的原理图:
在这里插入图片描述

生成 bit 文件

  • generate bitstream

下载

  • 拨码开关调整到 JTAG 模式,连接 JTAG 接口后,上电

  • open hardware manager -> open target -> auto connect 后,成功扫描到硬件

在这里插入图片描述

  • 选择芯片,右键 program device

在这里插入图片描述

  • 点击 program 等待下载完成

ILA 在线调试

  • IP Catalog -> 搜索 ILA
  • Number of Probes:需要采样的信号数量
  • Sample Data Depth:采样深度
  • Probe Width:信号的位宽
  • 在 HDL 代码中例化 ILA
/**********************************************
*********** ILA 例化
**********************************************/ 
    ila_0 inst_ila (
        .clk(sys_clk), // input wire clk
        .probe0(timer_cnt) // input wire [31:0] probe0
    );
  • 重新生成比特流,并连接
    在这里插入图片描述
  • 选择 ILA 窗口
    在这里插入图片描述
  • 点击运行即可看到采集信号的波形,采集的个数为设置的采样深度
  • 可以添加采样触发条件
    在这里插入图片描述
    最终调试窗口结果
    在这里插入图片描述

相关推荐

  1. Vue+Koa项目完整线流程中遇到的问题

    2024-07-11 21:12:04       40 阅读
  2. DE2-115 开发使用 Chisel 编写流水灯程序

    2024-07-11 21:12:04       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 21:12:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 21:12:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 21:12:04       58 阅读
  4. Python语言-面向对象

    2024-07-11 21:12:04       69 阅读

热门阅读

  1. Windows 32 汇编笔记(一):基础知识

    2024-07-11 21:12:04       18 阅读
  2. HarmonyOS学习之ArkTS语法补充学习

    2024-07-11 21:12:04       24 阅读
  3. Linux基础: 三. 相对路径和绝对路径

    2024-07-11 21:12:04       25 阅读
  4. Lemo 的 AGI 应用实战博文导航

    2024-07-11 21:12:04       19 阅读
  5. 音视频开发——FFmpeg 实现MP4转FLV文件 C语言实现

    2024-07-11 21:12:04       20 阅读
  6. 【C#】遍历文件夹及其子文件夹指定后缀文件

    2024-07-11 21:12:04       20 阅读
  7. C语言从头学33——内存管理(一)

    2024-07-11 21:12:04       23 阅读
  8. Qt 的Q_PROPERTY关键字

    2024-07-11 21:12:04       20 阅读
  9. C++ 入门08:运算符重载

    2024-07-11 21:12:04       24 阅读
  10. [AI 大模型] 百度 文心一言

    2024-07-11 21:12:04       21 阅读
  11. 架构面试-场景题-单点登录(SSO)怎么实现的

    2024-07-11 21:12:04       24 阅读