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_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 开发板为例:

名称位置
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行第四列

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python】已解决:ModuleNotFoundError: No module named ‘nltk’

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;ModuleNotFoundError: No module named ‘nltk’ 一、分析问题背景 在使用Python进行自然语言处理或文本分析时&#xff0c;我们经常会用到各种库来辅助我们的工…

【ACM 独立出版,高录用EI稳检索】2024年大数据与数字化管理国际学术会议 (ICBDDM 2024,8月16-18)

2024年大数据与数字化管理国际学术会议 (ICBDDM 2024)&#xff0c;将于2024年8月16-18日在中国上海召开。 “大数据与数字化管理”作为会议主题&#xff0c;旨在聚焦这一跨学科领域中最新的理论研究、技术进展、实践案例和未来趋势。本主题探讨的研究方向涵盖了大数据的收集、…

GD32F303RET6读取SGM58031电压值

1、SGM58031芯片详解 &#xff08;1&#xff09;SGM58031是一款低功耗&#xff0c;16位精度&#xff0c;delta-sigma (ΔΣ)模数转换器(ADC)。它从3V到5.5V供电。 &#xff08;2&#xff09;SGM58031包含一个片上参考和振荡器。它有一个I2C兼容接口&#xff0c;可以选择四个I2…

15、电科院FTU检测标准学习笔记-基本性能

作者简介&#xff1a; 本人从事电力系统多年&#xff0c;岗位包含研发&#xff0c;测试&#xff0c;工程等&#xff0c;具有丰富的经验 在配电自动化验收测试以及电科院测试中&#xff0c;本人全程参与&#xff0c;积累了不少现场的经验 ———————————————————…

Nginx七层(应用层)反向代理:SCGI代理scgi_pass篇

Nginx七层&#xff08;应用层&#xff09;反向代理 SCGI代理scgi_pass篇 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this art…

利用Altair One 云平台,轻松实现全球企业产品研发创新与优化

在过去的几十年里&#xff0c;工程师和数据科学家引入了大量改变世界的技术&#xff0c;但他们的工作方式却出人意料地停滞不前。技术的革新也带来了效率的不断提升。 面对众多企业的同样难题&#xff0c;Altair整合产品&#xff0c;创造出了用于协作工程、数据工程和分析应用程…

数列分块<2>

本期是数列分块入门<2>。该系列的所有题目来自hzwer在LOJ上提供的数列分块入门系列。 Blog:http://hzwer.com/8053.html sto hzwer orz %%% [转载] 好像上面的链接↑打不开&#xff0c;放一个转载:https://www.cnblogs.…

【C++】C++-机房收费管理系统(源码+注释)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

RK3568平台开发系列讲解(内存篇)Linux进程内存的消耗统计

🚀返回专栏总目录 文章目录 一、VSS(Virtual Set Size)二、RSS(Resident Set Size)三、PSS(Proportional Set Size)四、USS(Unique Set Size)五、其他工具Linux 提供了多种进程内存占用的度量指标, 它们反映了不同的内存使用特征: VSS 反映进程虚拟内存总需求, 包括未…

Oracle基础以及一些‘方言’(一)

1、什么是Oracle ORACLE数据库系统是美国ORACLE公司&#xff08;甲骨文&#xff09;提供的以分布式数据库为核心的一组软件产品&#xff0c;是最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。 ORACLE 通常应用于大型系统的数据库产品。 ORACLE 数据库是目前世界…

企业内多个系统如何实现单点登录/SSO统一认证

背景 在现代化企业中&#xff0c;随着业务的不断扩展和技术的不断进步&#xff0c;企业通常会使用多个系统来支持其日常运营&#xff0c;如OA、HR、CRM、研发应用&#xff08;Git、Jira等&#xff09;、财务系统、档案管理系统等。然而&#xff0c;这些系统往往各自为政&#…

基于Spring Boot的高校后勤餐饮管理系统

1 项目介绍 1.1 研究背景 “互联网”时代的到来&#xff0c;既给高校后勤管理发展带来了机遇&#xff0c;也带来了更大的挑战。信息化应用已经开始普及&#xff0c;传统的高校后勤餐饮管理模式往往存在着效率低下、信息不透明、资源浪费等问题&#xff0c;已经难以满足现代高…

Chromium源码阅读(7):了解WTF的静态字符串机制

在浏览器的实现中&#xff0c;处理HTML和CSS涉及大量的字符串操作&#xff0c;这些操作通常包括字符串的比较、查找和匹配。如果使用普通的字符串对这些进行操作&#xff0c;在面临大量DOM元素和CSS规则时会导致效率低下。 例如&#xff0c;当解析CSS时&#xff0c;属性名如col…

人工智能算法工程师(中级)课程9-PyTorch神经网络之全连接神经网络实战与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程9-PyTorch神经网络之全连接神经网络实战与代码详解。本文将给大家展示全连接神经网络与代码详解&#xff0c;包括全连接模型的设计、数学原理介绍&#xff0c;并从手写数字识别到猫狗识…

Neo4j安装

下载地址&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 1.安装jdk&#xff0c;Neo4j 3.0需要jdk8&#xff0c;2.3.0之前的版本建议jdk7。Neo4j最新版本5.21.2&#xff0c;对应jdk版本17 2.将下载的zip文件解压到合适路径。 3.设置环境变量NEO4J_H…

历年HW已公开漏洞合集!(目前漏洞库更新至84个,Goby持续更新...)

截至2024年7月11日&#xff0c;Goby红队版已扩充以下历年HW已公开漏洞库&#xff0c;本次更新84个&#xff1a; &#xff08;后续将持续更新…) 华天动力OA 华天动力 OA getHtmlContent 文件读取漏洞华天动力OA办公系统 /OAapp/bfapp/buffalo/TemplateService 文件读取漏洞华…

在亚马逊云科技AWS利用IaC(基础设施即代码)设计和搭建云原生架构(附免费学习教程和证书)

今天小李哥为大家介绍的是利用IaC(基础设施即代码)设计和搭建亚马逊云科技AWS云原生架构。本篇文章将会介绍如何在亚马逊云科技上搭建云原生Serverless服务&#xff0c;所使用的开发服务介绍&#xff0c;并展示搭建云原生架构的cdk代码。小李哥同时会给大家分享快速学习亚马逊云…

python:sympy 求解一元五次方程式

pip install sympy 或者 本人用的 anaconda 3 自带 sympy 在北大数学训练营&#xff0c;韦东奕 用卡丹公式 巧妙 求解一元五次方程式&#xff1a; \latex $x^510*x^320*x-4 0$ from sympy import *x symbols(x) expr x**5 10*x**3 20*x -4# 用卡丹公式 尝试化简 a sym…

冒泡排序与其C语言通用连续类型排序代码

冒泡排序与其C语言通用连续类型排序代码 冒泡排序冒泡排序为交换排序的一种&#xff1a;动图展示&#xff1a;冒泡排序的特性总结&#xff1a;冒泡排序排整型数据参考代码&#xff08;VS2022C语言环境&#xff09;&#xff1a; 冒泡排序C语言通用连续类型排序代码对比较的方式更…

MVC 控制器 中Action 不能同名,参数不一样,路由器寻找不到对应的,要加特性

//1 方法不可能完全相同&#xff0c;参数不同//2 那还需要特性吗&#xff1f;需要的&#xff0c;因为MVC选择方法时&#xff0c;不是按参数选择&#xff1a;http请求发送很多数据&#xff0c;其实没法识别&#xff0c;//因为mvc找方法是通过反射来的&#xff0c;GetMethods(nam…