当前位置: 首页 > news >正文

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

目录

  • 创建工程
  • 创建 HDL 代码
  • 仿真
  • 添加管脚约束
  • 添加时序约束
  • 生成 bit 文件
  • 下载
  • 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_cntalways@(posedge sys_clk) beginif(!rst) begintimer_cnt <= 32'b0;endelse if(timer_cnt >= CNT_MAX) begintimer_cnt <= 32'b0;endelse begintimer_cnt <= timer_cnt + 32'd1;endend// 赋值 ledalways@(posedge sys_clk) beginif(!rst) beginled <= 1'b1;endelse if(timer_cnt >= CNT_MAX) beginled <= ~led;endend
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 beginsys_clk_p = 0;forever #2.5 sys_clk_p = ~sys_clk_p;   end// 初始化rst信号initial beginrst = 0;#100;rst = 1;end
endmodule

仿真得到的时序波形图:

在这里插入图片描述

添加管脚约束

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

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

以 AXU9EG 开发板为例:

名称位置
ledAM13
rstAN12(对应 PL KEY)
sys_clk_pAL8

在这里插入图片描述

添加时序约束

  • 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 窗口
    在这里插入图片描述

  • 点击运行即可看到采集信号的波形,采集的个数为设置的采样深度

  • 可以添加采样触发条件
    在这里插入图片描述
    最终调试窗口结果
    在这里插入图片描述

  • 导出 csv 文件:

    • 右键后 export IDA data,导出 csv 格式的文件
    • MATLAB 读取代码:
clc;
clear;
close all;data_depth = 131072;   % 采集的数据个数%% 读取csv文件
csv_file_name = 'iladata.csv';
out_data = csvread(csv_file_name, 2, 3, [2,3,2 + data_depth - 1,3]);  % 从csv文件的第三行第四列开始读取读取到end行第四列

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【C语言】《回调函数》详细解析
  • 探索最佳海外代理服务商!你知道哪些?
  • Java面试题系列 - 第10天
  • Python编程实例-Python的隐藏特性
  • 数据建设实践之大数据平台(三)安装hadoop
  • Ubuntu 安装配置与调优 Docker 并支持 IPv6
  • system V共享内存【Linux】
  • 如何看待AI机器人取代人工拨打电话
  • 网络编程:基本概念udp
  • 嵌入式开发过程中,常见报错以及解决方法
  • 华为OD机试D卷 --跳格子3--24年OD统一考试(Java JS Python C C++)
  • ArduPilot开源飞控之AP_Mount_Topotek
  • viscode-插件
  • 外贸展示型网站设计
  • 微信小程序中的数据通信
  • JavaScript DOM 10 - 滚动
  • Java程序员幽默爆笑锦集
  • mysql中InnoDB引擎中页的概念
  • Spring Cloud中负载均衡器概览
  • Vue全家桶实现一个Web App
  • vue--为什么data属性必须是一个函数
  • 那些被忽略的 JavaScript 数组方法细节
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 收藏好这篇,别再只说“数据劫持”了
  • 数据可视化之 Sankey 桑基图的实现
  • 算法---两个栈实现一个队列
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 小程序 setData 学问多
  • 小程序button引导用户授权
  • 怎样选择前端框架
  • 主流的CSS水平和垂直居中技术大全
  • 阿里云ACE认证之理解CDN技术
  • 湖北分布式智能数据采集方法有哪些?
  • 容器镜像
  • ​Spring Boot 分片上传文件
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #《AI中文版》V3 第 1 章 概述
  • #define与typedef区别
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1)Hilt的基本概念和使用
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (六)DockerCompose安装与配置
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)visual stdio 书签功能介绍
  • (转)用.Net的File控件上传文件的解决方案
  • (转载)hibernate缓存
  • *2 echo、printf、mkdir命令的应用
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NetCore 如何动态路由