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行第四列

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/45374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文带你入门机器学习降维算法

专栏介绍 1.专栏面向零基础或基础较差的机器学习入门的读者朋友,旨在利用实际代码案例和通俗化文字说明,使读者朋友快速上手机器学习及其相关知识体系。 2.专栏内容上包括数据采集、数据读写、数据预处理、分类\回归\聚类算法、可视化等技术。 3.需要强调的是,专栏仅介绍主…

2024年高职云计算实验室建设及云计算实训平台整体解决方案

随着云计算技术的飞速发展&#xff0c;高职院校亟需构建一个与行业需求紧密结合的云计算实验室和实训平台。以下是针对2024年高职院校云计算实验室建设的全面解决方案。 1、在高职云计算实验室的建设与规划中&#xff0c;首要任务是立足于云计算学科的精准定位&#xff0c;紧密…

4.SpringBoot自定义封装Starter实践

目录 概述旧版2.7之后自定义Starter 概述 SpringBoot自定义封装Starter实践 旧版 在SpringBoot2.7之前&#xff0c;META-INF 下 spring.factories 加 org.springframework.boot.autoconfigure.EnableAutoConfigurationXXAutoConfiguration 2.7之后 SpringBoot2.7推出新的自动配…

LeetCode 2974.最小数字游戏:排序+交换奇偶位

【LetMeFly】2974.最小数字游戏&#xff1a;排序交换奇偶位 力扣题目链接&#xff1a;https://leetcode.cn/problems/minimum-number-game/ 你有一个下标从 0 开始、长度为 偶数 的整数数组 nums &#xff0c;同时还有一个空数组 arr 。Alice 和 Bob 决定玩一个游戏&#xff…

爬虫-浏览器自动化

什么是selenium selenium是浏览器自动化测试框架&#xff0c;原本用于网页测试。但到了爬虫领域&#xff0c;它又成为了爬虫的好帮手。有了 selenium&#xff0c;我们便不再需要判断网页数据加载的方式&#xff0c;只要让 selenium 自动控制浏览器&#xff0c;就像有双无形的手…

字体反爬之自动化通过字体文件生成映射字典

1、首先找到以.ttf结尾的字体文件,下载下来,以我的字体文件sfont.ttf为例 sont.ttf下载地址https://download.csdn.net/download/lingyingdon/89534953 目前只测试了.ttf文件。如果想使用woff字体文件,请自行测试 2、下载分割字体文件的软件fontforge, 安装后将安装路径添加…

【以史为镜、以史明志,知史爱党、知史爱国】中华上下五千年之-元朝

元朝是中国历史上第一个由蒙古族族建立的大统一封建王朝。完整的元王朝历史进程分为四个阶段&#xff1a; 元朝的历史让我们一笔带过&#xff0c;相信大家也不怎么喜欢看。同意的点赞&#xff01; 元朝的前身——蒙古汗国&#xff08;1206年—1271年&#xff09; 建立王朝统治—…

快速体验 Llama3 的 4 种方式,本地部署,800 tokens/s 的推理速度真的太快了!

北京时间4月19日凌晨&#xff0c;Meta在官网上官宣了Llama-3&#xff0c;作为继Llama1、Llama2和CodeLlama之后的第三代模型&#xff0c;Llama3在多个基准测试中实现了全面领先&#xff0c;性能优于业界同类最先进的模型&#xff0c;你有没有第一时间体验上呢&#xff0c;这篇文…

加入这些使用,代码变得简单即优雅!

加入这些使用&#xff0c;代码变得简单即优雅&#xff01;在Spring Boot应用中&#xff0c;拦截请求通常可以通过两种方式实现&#xff1a;使用HandlerInterceptor&#xff08;处https://mp.weixin.qq.com/s?__bizMzkzMTY0Mjc0Ng&mid2247484482&idx1&sn063cea7cda…

Apache AGE 运算符

运算符 字符串特定比较运算符 测试数据 SELECT * FROM cypher(graph_name, $$ CREATE (:Person {name: John}),(:Person {name: Jeff}),(:Person {name: Joan}),(:Person {name: Bill}) $$) AS (result agtype);Starts With 对字符串执行区分大小写的前缀搜索。 SELECT * …

String的常用方法

目录 复习与回顾数组抽象类和接口的区别 StringString常量池String常用方法 复习与回顾 数组 数组&#xff08;array&#xff09;是一种数据结构 &#xff0c;用于存储同一类型元素的容器。 数组的特点&#xff1a; 不可变性&#xff1a;数组的长度是固定的&#xff0c;一旦…

【源码开源】C#桌面应用开发:串口调试助手

c#桌面应用开发 1、环境搭建和工程创建&#xff1a;参照番茄定时器项目 工程创建参照 2、界面布局设计 3、具体功能函数 &#xff08;1&#xff09;端口扫描&#xff1a; private void btn_com_scan_Click(object sender, EventArgs e){//端口号扫描ReflashPortToComboBox(…

安装失败,已为系统安装 Microsoft Edge Webview2 Runtime

在使用微软的webview2的时候&#xff0c;有时候会出现如下错误提示&#xff1a; 解决方案&#xff1a; 1、打开电脑“控制面板”&#xff0c;找到Microsoft Edge Webview2 Runtime 2、鼠标右键点击&#xff0c;“更改”&#xff0c;按电脑指示操作执行。 3、再次安装Microsoft…

CV每日论文--2024.7.12

1、LLaVA-NeXT-Interleave: Tackling Multi-image, Video, and 3D in Large Multimodal Models 中文标题&#xff1a;LLaVA-NeXT-Interleave&#xff1a;处理大型多模态模型中的多图像、视频和 3D 简介&#xff1a;视觉指令调整在增强大型多模态模型(LMMs)的能力方面取得了显著…

事务码 BP DYNPRO_NOT_FOUND

事务码 BP DYNPRO_NOT_FOUND 使用事务 BP 时&#xff0c;模块 PBO_START_SUBSCREEN 中 SAPLBUSS 中的转储 DYNPRO_NOT_FOUND 目录 问题 双击查看详细信息时发生错误DYNPRO_NOT_FOUND 解决方案 执行事务码BUSP 重新生成屏幕 参考链接: 1621119

2w才学到的交易策略,Anzo Capital今天免费分享

花费了2w学费才学到的外汇交易策略&#xff0c;Anzo Capital今天免费分享&#xff01;那就是使用交易价格行动和利润区策略&#xff0c;在实施价格行动利润区策略时&#xff0c;关键步骤一定要严格执行&#xff0c;下面是操作的关键步骤&#xff1a; 1. 定义趋势&#xff1a;首…

获取网页logo图标

怎么获取网页logo图标的URL链接 第一种方法&#xff1a; 最常用的方法&#xff08;适用于90%的站点&#xff09;是&#xff0c;直接在访问网址首页链接后加上上/favicon.ico&#xff0c;例如&#xff1a; https://www.baidu.com/favicon.ico 第二种方法&#xff1a; 按F12&…

【逆向基础】十二、工具分享之Process Explorer

一、简介 Process Explorer是一款出色的进程资源管理器。在调试运行window系统中的程序软件时&#xff0c;使用Process Explorer可以通过工整的UI界面&#xff0c;让我们快速了解软件的进程信息&#xff0c;挂载的动态库等&#xff1b;可以帮助我们快速定位分析的方向&#xf…

2024.07.04校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、校招 | DJI 大疆 2025 “拓疆者” 秋季校园招聘正式开启&#xff08;内推&#xff09; 校招 | DJI 大疆 2025 “拓疆者” 秋季校园招聘正式开启&#xff08;内推&#xff09; 2、提前批…

python如何结束程序运行

方法1&#xff1a;采用sys.exit(0)&#xff0c;正常终止程序&#xff0c;从图中可以看到&#xff0c;程序终止后shell运行不受影响。 方法2&#xff1a;采用os._exit(0)关闭整个shell&#xff0c;从图中看到&#xff0c;调用sys._exit(0)后整个shell都重启了&#xff08;RESTAR…