Xilinx 产品设计与功能调试技巧

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Xilinx 产品设计与功能调试技巧

yolanda
Moderator
Moderator

BY Ben M. Fell

在 FPGA 设计进程中,时序收敛无疑是一项艰巨的任务。 低估这项任务的复杂性常常导致工作规划面临无休止的压力。赛灵思提供了诸多工具,用于帮助缩短时序收敛所需时间,从而加速产品上市。本篇博文描述了一种方法,能够有效减少时序路径问题分析所需工作量。

阅读更多内容...

更多
0 0 69
yolanda
Moderator
Moderator

BY Chao Zhang

 

本示例工程中我们会在TensorFlow2下使用Keras API创建一个自定义CNN网络,在Vitis-AI 1.3环境下编译成Xilinx DPU上运行的模型文件,并在Xilinx zynqMP上部署运行。

该示例工程应在Vitis-AI 1.3 Docker,vitis-ai-tensorflow2 conda环境中运行。

有关Mnist手写数字数据集,请参见http://yann.lecun.com/exdb/mnist/。

在该例程中我们会演示以下的步骤:

  • 使用TensorFlow2训练和评估小型自定义卷积神经网络
  • 对浮点模型进行量化(quantization)
  • 对量化模型进行评估
  • 使用校准数据集对训练后的模型进行微调(finetuning)
  • 编译量化和微调的模型,以创建.xmodel文件,准备在DPU加速器IP上执行
  • 在zynqMP评估板上下载并运行该模型
阅读更多内容...

更多
0 0 83
yolanda
Moderator
Moderator

BY Vivian Yin

时序约束中的set_input_delay/set_output_delay约束一直是一个难点,无论是概念、约束值的计算,还是最终的路径分析,每一次都要费一番脑子。

Vivado为方便用户创建输入输出接口的约束,整理出了一套非常实用的Input Delay/Output Delay Constraints Language Templates。只需根据接口信号的特征匹配到对应的template分类,就可以轻松套用模板中的公式创建约束。

本文将通过几个例子来展示,如何精确找到匹配的template。

阅读更多内容...

更多
2 0 113
yolanda
Moderator
Moderator

By Gary Pan

以太网IP核的1588功能是用来实现,在IP内部为TX侧发送包打上发送出去这个时间节点的时间戳,以及获得RX侧收回来的包在IP接口处的时间戳。然而10G/25G的IP例子工程没有提供演示,本文主要介绍了如何使用这个IP的1588功能。

阅读更多内容...

更多
0 0 114
yolanda
Moderator
Moderator

By Zhendong Wu

Alveo加速卡除了有我们ultrascale+系列的芯片以外,还有TI的MSP432,它的作用就是监控板子的状态,比如电流电压温度等信息。主控端可以通过FPGA,访问MPS432,然后获取这些信息。那么怎么样简单的获得这些信息呢,为此我们准备了CMS IP.

阅读更多内容...

更多
0 0 97
yolanda
Moderator
Moderator

By Chao Zhang

今天和大家分享下如何在Petalinux下定位decice-tree错误的一些技巧。 

首先我们来了解下Petalinux工程中device-tree的文件位置:

工具自动生成的device-tree文件位于components/plnx_workspace/device-tree/device-tree, 该文件夹下的文件请勿自行修改,供用户编辑的device-tree文件位于project-spec/meta-user/recipes-bsp/device-tree/files。

阅读更多内容...

更多
1 0 116
yolanda
Moderator
Moderator

BY Nathan Xu

有很多客户在比较FFT C-Model仿真和FFT IP前仿遇到问题.

总结下来, 原因大概有三种.

1)     C-Model的输入数据和IP仿真的输入不完全一致

2)     C-Model的参数设置和IP的参数设置不完全一致

3)     出现overflow

 

阅读更多内容...

更多
0 0 118
yolanda
Moderator
Moderator

BY Chao Zhang

在软件开发过程中我们经常遇到用patch来传递和更新代码的场景。今天我们以一个端到端的例子来演示在Petalinux使用过程中,如何给u-boot的源码生成patch并在Petalinux中编译。

阅读更多内容...

更多
1 0 164
yolanda
Moderator
Moderator

BY Yang Chen

自从Vitis的发布,Xilinx在Github上也开源了很多资源,方便开发者进行自己的设计,减少产品上市时间。所以我们来看一下如何获取和使用Github上的开放资源。

以Vitis_example为例,链接https://github.com/Xilinx/Vitis_Accel_Examples

阅读更多内容...

更多
0 0 206
yolanda
Moderator
Moderator

BY Terry Ni

引言

        通常Kernel一加载起来,大家能在/dev目录下可以看到一大堆的设备。这些设备都是Kernel加载初始化过程中,由内核和驱动创建出来的。那么哪个设备才是我真正要用的设备。下面就几个常用的外设来和大家一起梳理一下。

阅读更多内容...

更多
0 0 214
yolanda
Moderator
Moderator

BY Terry Ni

 设备树是Petalinux kernel的关键组件,接下来以2020.1版本为例,为大家介绍一下在Xilinx Petalinux 工程中的设备树是如何产生,配置以及修改的。

阅读更多内容...

更多
0 0 285
yolanda
Moderator
Moderator

BY Praveen Venugopal

在“IIC 协议与编程序列”一文中,我们为内部集成电路 (IIC) 协议的初学者们提供了有关该协议基础知识和编程序列的详细解释。在本篇博文中,我们将探讨有关 AXI IIC 和 PS IIC 的自调试技巧。

阅读更多内容...

更多
0 0 246
yolanda
Moderator
Moderator

BY WEN CHEN

提取实现任务级(task_level)的硬件并行算法是设计高效的HLS IP内核的关键。在本文中,我们将重点放在如何能够在不需要特殊的库或类的情况下修改代码风格以实现C代码实现并行性。 Xilinx HLS编译器的显着特征是能够将任务级别的并行性和流水线与可寻址的存储器PIPO或FIFO相结合。本文首先概述可以获取任务并行的前提条件,然后以DAG(directed acyclic graph) 代码为例,挖掘其中使用fork-join并行性,并结合使用ping- pong buffer启用了一种基于握手的任务级粗粒度的流水线形式。

阅读更多内容...

更多
0 0 216
yolanda
Moderator
Moderator

BY Wen Chen

HLS 优化设计的最关键指令有两个:一个是流水线(pipeline)指令,一个是数据流(dataflow)指令。正确地使用好这两个指令能够增强算法地并行性,提升吞吐量,降低延迟但是需要遵循一定的代码风格。展开(unroll)指令是只针对for循环的展开指令,和流水线指令关系密切。

阅读更多内容...

更多
0 0 230
yolanda
Moderator
Moderator

BY Wen Chen

说起高层次综合技术(High-level synthesis)的概念,现在有很多初学者简单地把它理解为可以自动把c/c++之类地高级语言直接转换成底层硬件描述语言(RTL)的技术。其实更准确的表述是:由更高抽象度的行为描述生产电路的技术。高层次的概念代表的是硬件描述语言里面较高的抽象层次,只是随着软件硬件语言的共同发展,这样的高抽象度的行为描述语言来到了C/C++/System C 这样的层次。

阅读更多内容...

更多
0 0 288
yolanda
Moderator
Moderator

BY Wen Chen 

本文给想直接使用Vitis HLS 工具在 Standalone 模式下调用Xilinx Vision Library L1 API 的小伙伴提供了一个非常容易上手的脚本文件。 

在论坛上遇到在高层次综合工具中调用视觉库遇到的大多数问题都和opencv库以及Xilinx Vision库的安装路径有关,如今Vitis HLS 2020.1之后的版本都不再提供OpenCV的预编译库,就更需要开发者们将各自工作环境中的库路径,环境变量都设置好。希望这篇博文能给大家调用Vitis Vision ibrary提供向导,提升效率。

阅读更多内容...

更多
0 0 398
yolanda
Moderator
Moderator

BSCANE2模块是FPGA中的一个特殊硬核模块,是联通外部JTAG管脚和FPGA内部用户逻辑的一个接口。

BSCANE2的定义和端口描述,可以在对应器件的Libraries Guide中找到。比如7系列的定义可以参考UG768,第4章。其基本功能介绍,请参考UG470, 第10章。

在FPGA中,JTAG管脚除了负责原始的芯片测试功能(IEEE1149.1),还主要用于下载和调试,比如ILA就是通过JTAG接口捕捉内部逻辑信号,送回ISE或Vivado,并在界面上直接显示和控制。BSCANE2其实就是实现这一内外沟通的关键核心模块,这部分实现对于用户来说是透明的。

那么如何利用BSCANE2模块,构建用户自己的专用内部扫描链/功能链呢?本文提供一个基于7系列的ISE版本的参考设计。通过FPGA的JTAG管脚,用户可以直接控制内部的逻辑实现自定义的功能。

UltraScale/UltraScale+的BSCANE2模块用法和7系列基本相同。

 

设计说明:

这是一个关于如何使用BSCANE2模块的简单实例。基于Xilinx的开发板KC705,该设计例化了一个BSCANE2模块,由USER1命令控制。通过JTAG接口发送标准和自定义的指令,可以实现:

1.      从运行的设计中读取32位的用户ID;

2.      从JTAG接口输入控制LED灯显示的字符串;

3.      从JTAG口向BRAM写入32位数据;

4.      从BRAM读出32位数据;

5.      向BRAM中一次写入1024 bits(可用于EDK设计中bootloader的修改,升级等)。

 

指令定义:

该设计的shift register定位为33位。其中第32位(从0开始计数)用于区分JTAG发送的是指令还是数据。Bit[32]为1,则送入的为指令;Bit[32]为0,则送入的为指令对应的数据。其他的JTAG寄存器均为32位。

33'h100000241 用户ID读取;

33'h100000242 LED灯显示控制;

33'h100000243 向BRAM写入32位数据;

33'h100000244 从BRAM读取32位数据;

33'h100000245 向BRAM写入1024位数据。

 

设计运行实现:

SVF文件可以以可读形式清楚的描述、记录JTAG链的动作,并可以在ISE/iMPACT或Vivado/HW Manager中直接执行。本设计使用SVF来实现以下功能:

1.  发送USER1指令‘02’,来选择和使能用户自定义的JTAG链;

2.  发送指令‘100000241’读取用户定义ID;

3.  发送指令‘100000242’获取一个二进制码,并送入7位LED灯显示;

4.  使用指令‘100000243’向BRAM中每次写入一个32位数据;然后使用指令‘100000244’将写入的数据逐个读出来。

5.  使用指令‘100000245’向BRAM写入1024位数据;如果需要写入的数据大于1024,则多次执行该指令即可。

 

 

更多
0 0 228
yolanda
Moderator
Moderator

BY Chao Zhang

如果你是一个嵌入式工程师,那么入门的第一个例子很可能就是 - 呼吸灯。在本次视频中,Xilinx的嵌入式工程师张超将和大家一起,用最简单的例子展示如何使用Xilinx Zynq UltraScale+ MPSoc器件,在搭载Linux操作系统的环境下进行的LED灯控制。

阅读更多内容...

更多
0 0 224
yolanda
Moderator
Moderator

By  Grace Sun

用户在用第三方仿真器对Vivado设计做仿真的时候,面临的第一个任务就是做仿真库的编译。事实上,后续相当一部分碰到的问题都与仿真库编译相关。今天,我们就来梳理一下关于仿真库编译的方方面面。

阅读更多内容...

更多
0 0 283
yolanda
Moderator
Moderator

BY Deepesh Man Shakya

lspci 命令和 setpci 命令均为 Linux 发行版中原生可用的命令。 这 2 条命令均可提供多级输出,适合在不同时间点用于查看 PCI 总线上训练的不同组件的功能和状态。

其中大部分功能均可反映《PCI Express 基本规范》中所需的配置空间寄存器。 与大部分命令一样,在 Linux 中可通过运行“lspci --help”或“man lspci”来获取实用的指示信息。

阅读更多内容...

更多
0 0 490
yolanda
Moderator
Moderator

Stephen MacMahon

在本篇博文中,我们将探讨如何在 Vitis™ 中使用 UIO 驱动框架创建简单的 Linux 用户应用。

阅读更多内容...

更多
1 0 329
yolanda
Moderator
Moderator

BY Xu Dong

RoE (Radio Over Ethernet) IP 可提供 2 个仿真流程示例:Block Automation 流程和 Open IP Example 流程。本文旨在为这 2 个流程提供一篇教程,以便向用户展示如何使用测试激励文件演示文件来控制 IP 配置。

 

阅读更多内容...

更多
0 0 324
yolanda
Moderator
Moderator

BY Stephen MacMahon

在本系列博客的前几篇博文中,我们讲解了如何创建硬件和软件工程。下一步,我们将讲解如何在 Vitis™ 中封装此工程。
随后,我们将在 Vitis 中通过创建简单应用并对其进行加速,以便对该工程进行测试。

阅读更多内容...

更多
0 0 328
yolanda
Moderator
Moderator

BY Stephen MacMahon

 

这是《创建 Vitis 加速平台》系列的第 3 篇博文。在前文中,我们讲解了如何创建硬件和软件工程。在本文中,我们将讲解如何在 Vitis™ 中将所有这些工程封装在一起。

 

阅读更多内容...

更多
0 0 545
yolanda
Moderator
Moderator

BY Hong Han

有时我们需要在设计网表的基础上微调一下逻辑,这样可以无需修改代码,也无需重新做综合,在设计调试中可以节省时间同时维持其他逻辑无任何改动.

这里带大家一起体验一下Vivado 的ECO流程,以vivado自带的Example Design为例, 直接用TCL命令修改网表,在正常的寄存器路径之间加一级LUT.

阅读更多内容...

更多
0 1 385
yolanda
Moderator
Moderator

BY Stephen MacMahon

这是《创建 Vitis 加速平台》系列的第 2 篇博文。

在前文中,我们讲解了如何创建硬件以及如何通过 XSA 将元数据 (metadata) 传递给 Vitis™。

在本文中,我们将讲解如何使用此 XSA 以及如何创建在目标平台上实现设计加速所需的软件镜像。

阅读更多内容...

更多
0 0 578
yolanda
Moderator
Moderator

BY Sam Hendrix

赛灵思为 FPGA 和 MPSoC 器件中所有受支持的 I/O 标准提供了 I/O 缓存信息规范 (I/O Buffer Information Specification, IBIS) 模型。

本篇博文旨在提供有关如何为可编程逻辑 (PL) 和处理器系统 (PS) 多用途 I/O (MIO) 进行 IBIS 模型名称解码的指导信息。  本文主要分 3 个部分。  

  1. PL I/O 标准
  2. PS MIO 标准
  3. PS DDR I/O 标准
阅读更多内容...

更多
1 0 346
yolanda
Moderator
Moderator

BY Stephen MacMahon

本篇博文系《创建 Vitis™ 加速平台的简单指南》的第 1 部分。在本文中,我们将讲解如何在 Vivado® Design Suite 中完成平台准备工作,以便将其用作为 Vitis 中的加速平台。

您既可以采用已确认的成熟设计作为平台,这样只需稍作改进便可灵活运用于加速软件功能,或者也可以采用仅含加速所需拓扑结构的简单基础平台。重点在于,此平台设计不是一次性的。平台也是可以更改的,这样即可随您的设计需求而变。

 

阅读更多内容...

更多
0 0 762
yolanda
Moderator
Moderator

BY Aoife Marsh

您是否想创建自己带有 AXI4-Lite 接口的 IP 却感觉无从着手?本文将为您讲解有关如何在 Vitis HLS 中使用 C 语言代码创建 AXI4-Lite 接口的基础知识。 

 

阅读更多内容...

更多
0 0 614
yolanda
Moderator
Moderator

BY Ivy Guo

一、什么是SEU现象

由于高能粒子的撞击,器件的存储单元内容有可能受到干扰,甚至出现翻转。这种单个存储单元的翻转现象(原有内容为0的变成1;或者原有为1的变成了0)就称为SEU (Single Event Upset)。

正常情况下,SEU现象不会导致器件的永久性损坏,并且通过重新配置器件即可纠正。但是如果错误位置位于设计的核心区域,或者错误随逻辑构建的功能模块逐级传递出去,均会导致设计异常。

阅读更多内容...

更多
0 0 352