自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 Vitis HLS 学习笔记--抽象并行编程模型-控制驱动与数据驱动

任务级并行度(TLP)通过同时执行多个任务提升应用效率和性能。Vitis HLS 提供了数据驱动和控制驱动两种 TLP 模型。数据驱动模型像自动化流水线,适用于无外部存储器交互且函数间无数据依赖的应用;控制驱动模型则更像一个指挥官,适合不同部分需相互通信的应用。数据驱动模型中,任务通过 hls::task 声明,通道通过 hls::stream 模拟,注意避免死锁。控制驱动模型使用 C++ 顺序语义创建并行处理流水线,任务级并行执行函数,需使用 DATAFLOW 编译指示。两者结合,实现高效并行计算。

2024-05-20 23:30:51 864

原创 Vitis HLS 学习笔记--抽象并行编程模型-不良示例

本文讨论了数据流水线中常见的三种绕过问题:输入绕过、中间绕过和输出绕过,导致性能下降。通过优化,绕过问题得以解决,提升了流水线性能。分别优化了三个示例:输入绕过:将两个独立的函数调用合并,使数据流更紧凑。中间绕过:重新组织数据流,减少不必要的传递,简化路径。输出绕过:改进输出处理,确保每个数据都被正确处理和传递。这些优化措施有助于减少延迟,提高数据处理效率,增强整体性能。

2024-05-19 23:50:11 510

原创 Vitis HLS 学习笔记--抽象并行编程模型-概述

HLS工具通过识别代码中可并行执行部分来加速硬件性能,但软件常见技巧如动态内存分配在硬件中难以应用,增加了转换难度。高效FPGA软件开发需掌握并行处理原则,包括任务集合与通道机制。任务通过控制或数据驱动,在本地存储器和I/O端口支持下执行。通道提供阻塞和非阻塞语义以保证数据传输的可靠性,但需注意阻塞可能导致死锁,非阻塞可能导致数据丢失。这些原理是编写高效FPGA代码的关键。

2024-05-18 22:53:31 716

原创 Vitis HLS 学习笔记--避免使用多重访问指针

虽然 Vitis HLS 在指针上支持多重访问指针,但强烈建议使用 hls::stream 类替代多重访问指针来实现所需的行为,以避免陷入困难。如果设计使用接口上的顶层函数的实参列表中的指针,那么在使用指针执行多重访问时需考量一些特殊注意事项。当任一指针以相同方式多次执行读取或写入时,就会发生多重访问。

2024-05-17 16:36:44 786

原创 Vitis HLS 学习笔记--基本指针和算术指针

在Vitis HLS中,指针的使用与传统的C/C++环境存在显著差异,尤其是在涉及硬件综合时。基本指针可以直接指向数据,并且通常不会对硬件综合产生负面影响,但在顶层函数的接口中使用时需要注意指针的实现方式。另一方面,算术指针的灵活性在软件编程中很有用,但在硬件设计中可能引入问题,因为硬件需要按照固定顺序访问数据。为了克服这些问题,可以通过使用数组和RAM接口来替代指针,以更好地满足硬件设计的需求。总之,在进行Vitis HLS设计时,需要仔细考虑指针的使用方式,以确保最终的硬件实现符合设计要求。

2024-05-16 23:48:02 974

原创 Vitis HLS 学习笔记--优化本地存储器访问瓶颈

通过对原始代码进行优化,成功地改善了内存访问模式,提高了循环执行效率。优化后的代码减少了存储器访问次数,优化了数据重用,以及改进了迭代间隔,使得每个时钟周期都可以开始一个新的迭代。这些优化措施有效地减少了存储器访问延迟,提高了硬件执行效率。优化后的代码在性能和效率上都有了显著的提升,更适用于高性能处理应用场景。

2024-05-16 15:00:30 822

原创 Vitis HLS 学习笔记--资源绑定-使用URAM(1)

通过本文深入探讨了在Vitis HLS环境下设计的存储器模型的内部机制。通过分析生成的RTL代码和IMPL报告,我们了解到该存储器模型利用URAM实现,具有读写功能,并且限制了级联深度为1。特别地,我们注意到存储器的初始化操作在Vitis HLS中被转化为硬件实现的一部分,这为预加载存储器内容提供了便利。总的来说,本文为使用Vitis HLS设计存储器提供了实用的指导,加深了对存储器设计原理的理解。

2024-05-15 23:53:21 1126

原创 Vitis HLS 学习笔记--资源绑定-使用URAM

本文提供了对使用 URAM 进行高性能内存解决方案设计的全面理解,详细介绍了在 Vivado IP 流程中使用 AP_Memory 进行与存储器资源通信的方法,并介绍了使用 UltraRAM(URAM)的优势和意义。通过代码解析,展示了在 Vitis HLS 环境中设计的一个简单存储器模型。

2024-05-14 23:33:28 801

原创 电子硬件设计-LTC3839学习笔记

LTC3839是一款功能强大的DC/DC控制器,具备差分输出检测功能,可实现快速、准确的降压调节。其设计精密,内部电路优化,提供灵活的电源供电方案,为电源管理提供可靠高效的解决方案。

2024-05-13 23:46:02 898

原创 Zynq开发-使用PYNQ快速入门摄像头MIPI驱动(OV5640)-overlay设计

本文分享了如何利用PYNQ快速入门摄像头MIPI驱动(OV5640)的过程。通过Vivado设计的overlay,演示了MIPI驱动的完整链路。文章着重介绍了MIPI子系统的构建,包括MIPI PHY、MIPI CSI-2 Rx Controller和Video Format Bridge的设置。另外,还介绍了去马赛克模块的驱动和AXI_IIC的配置。文章指出了一些注意事项,如IIC接口速度的设置、传感器地址的解释以及中断控制器的连接方式。

2024-05-12 23:24:59 869

原创 Zynq开发-使用PYNQ快速入门摄像头MIPI驱动(OV5640)

探索PYNQ的应用领域,特别是在摄像头MIPI驱动方面。MIPI接口是一种高速串行接口标准,广泛用于连接图像传感器和图像处理器。本文将以OV5640摄像头为例,介绍如何利用PYNQ快速入门MIPI驱动开发。通过本文的学习,读者将能够掌握如何利用PYNQ快速搭建基于Zynq平台的图像处理系统,为后续的项目开发打下坚实的基础。

2024-05-11 23:52:07 792

原创 Vitis HLS 学习笔记--理解串流Stream(3)

针对《Vitis HLS 学习笔记--理解串流Stream(2)-CSDN博客》博文的内容,做进一步说明。

2024-05-10 23:52:20 842

原创 Vitis HLS 学习笔记--理解串流Stream(2)

在硬件中可以被设计为连续处理数据的模块,尽管其代码表面上看只处理一次数据。重要的是要理解硬件设计和软件逻辑之间的差异:硬件模块可以被设计为重复触发,以连续处理数据流,而不仅仅是单个数据项。

2024-05-09 23:37:49 1143

原创 电子硬件设计-Xilinx FPGA/SoC前期功耗评估方法(1)

Xilinx Power Estimator (XPE) 是一款功耗估算工具,用于项目预设计阶段。提供器件总功耗评估,包括静态和动态功耗。输入要求详细,包括器件和设计参数。 XPE 在提供功耗优化方面有着重要作用,但其准确性受到设计输入质量和默认设置的影响。本文对其中部分参数做了阐述,后续会结合实际项目加以运用。

2024-05-08 23:14:14 771

原创 Vitis HLS 学习笔记--理解串流Stream(1)

在Vitis HLS中,hls::stream是一个关键的数据结构,用于处理数据流。它类似于C++标准库中的std::stream,但专门设计用于硬件描述语言。hls::stream具有类似无限深度的FIFO的行为,支持顺序读写操作,并可灵活定义数据类型和FIFO深度。通过示例代码和综合报告,我们了解到hls::stream在硬件设计中的重要作用,以及如何根据需求配置不同的接口实现。这使得在设计硬件加速器时更加灵活、可控。

2024-05-07 23:49:57 602

原创 Vitis HLS 学习笔记--AXI_STREAM_TO_MASTER

本文详细介绍了如何利用 Vitis HLS 工具将 AXI Stream 格式的数据流转换为并行存储数据,并通过 AXI Master 接口写入到存储器中。通过示例代码和编译器指令的解释,读者可以了解到 AXI Stream 接口和 AXI Master 接口的特点以及在 FPGA 设计中的应用。同时,本文还分析了示例中各个函数的功能和参数,以及综合报告中的重要信息。

2024-05-06 23:47:59 854

原创 电磁仿真--基本操作-CST-(5)

在进行EMC仿真时,经常需要满足一些特定的需求,比如在一个完整的GND平面上方布置金属走线,并在金属走线和GND之间施加Discrete Port端口。

2024-05-05 23:54:09 479

原创 Vitis HLS 学习笔记--HLS流水线基本用法

本文介绍了使用pipeline进行硬件优化的基本方法,并通过示例展示了不同优化方式的性能影响。针对累加计算函数,我们通过内外层循环的pipeline优化和数组访问优化,显著提高了时序性能,从405个周期降至3个周期。这些优化方法可有效应用于其他硬件设计中,提高性能和效率。

2024-05-04 23:55:56 563

原创 Vitis HLS 学习笔记--HLS眼中的完美循环嵌套

本文介绍了在处理嵌套循环时的重要性以及创建完美嵌套循环的关键原则。优化循环结构对于硬件描述和高级综合中的性能至关重要,其中完美循环嵌套的设计能够最大程度地利用硬件资源和并行计算能力,提高性能并降低时延。通过确保最内层循环包含所有计算、循环边界为常量以及没有循环间的逻辑依赖,可以实现这一目标。在HLS工具中,利用指令如#pragma HLS UNROLL和#pragma HLS PIPELINE可以进一步优化循环结构。

2024-05-03 23:41:50 1334

原创 Vitis HLS 学习笔记--MAXI手动控制突发传输

这篇文章探讨了在《Vitis HLS 学习笔记--AXI4 主接口-CSDN博客》中介绍的AXI4主接口的突发传输。虽然适用于HLS工具能够自动推断突发传输的情况,但并非所有情况工具都能自动推断。文章提供了详细的操作方法和示例,帮助读者在各种情况下优化存储器访问。本文分享了在Vitis HLS中使用AXI4主接口进行手动突发传输的方法。首先,解释了突发传输的前置条件,包括请求类型、顺序、连续性等。接着,介绍了通过hls::burst_maxi对象实现手动突发传输的方法,包括构造函数、读取和写入方法的使用。

2024-05-02 23:44:35 1462

原创 口袋实验室--使用AD2高效调试IIC、UART、SPI等低速接口

使用Digilent Analog Discovery 2进行调试不仅提升了工作效率,而且极大地简化了常见低速接口的分析过程。在众多低速接口中,I2C接口因其简洁的连接方式和广泛的应用场景而受到特别关注。本文将以I2C接口为例,深入探讨如何利用AD2高效地调试Si5338芯片,一个多用途、任意频率时钟发生器芯片。

2024-05-01 23:05:36 1686

原创 口袋实验室--使用AD2学习频谱参数测试

本文介绍了通过AD2记录频谱相关知识的过程,并深入探讨了频谱相关参数、窗函数以及频谱参数。频谱相关参数包括采样时间间隔、采样频率、采样点数等,而窗函数则在傅里叶变换前对信号进行修改,以改善频谱分析结果。频谱参数包括幅值单位解释、常量解释以及动态指标,这些参数对于正确理解频谱图和进行精确的频谱分析很有必要。

2024-04-30 23:32:02 821

原创 Vitis HLS 学习笔记--Schedule Viewer 调度查看器

Vitis HLS中的schedule viewer是设计和优化硬件加速器过程中的一个关键工具,它通过提供算法执行的详细视图,帮助设计者理解、分析和优化他们的设计。

2024-04-29 20:18:31 1341

原创 Vitis HLS 学习笔记--AXI4 主接口

本文介绍了在使用 Vitis HLS 进行高层次综合时,利用 AXI4 存储器映射 (m_axi) 接口进行数据传输的方法和优势。首先,对于 MAXI 接口的认识和概述进行了阐述,MAXI 接口作为主动、全局、存储器级别的接口,提供了在 FPGA 内部和外部存储器之间高效传输数据的能力。接着,通过代码示例详细展示了如何在函数接口中使用 MAXI 接口进行数据传输,以及如何利用突发模式提高数据传输效率。

2024-04-28 19:21:24 1260

原创 Vitis HLS 学习笔记--S_AXILITE 寄存器及驱动

使用 Vitis HLS 工具进行硬件设计带来了额外的“隐式”优势,即在驱动程序的自动生成方面。本文详解 S_AXILITE Registers 寄存器及其驱动过程。通过对 s_axilite 协议下生成的寄存器进行解释,我们了解了这些寄存器的作用和每个寄存器位的含义。

2024-04-28 13:26:18 952

原创 Vitis HLS 学习笔记--IDE软件高效操作指引

本文持续更新,分享一些实用操作指引,为提高使用Vitis HLS IDE效率。

2024-04-27 23:41:53 1398

原创 电磁仿真--基本操作-CST-(4)

本文分享了一个更为复杂空心螺旋电感的建模过程,CST软件工具提供 Loft 工具非常有用,通过对比仿真与实测结果的差异,我分析了影响仿真结果的几个可能的因素,并分析了空心螺旋线电感的感值随着频率的变化而改变的原因。

2024-04-27 23:02:51 537

原创 Vitis HLS 学习笔记--Syn Report解读(1)

综合报告是Vitis HLS工具链中一个关键的输出,它为开发者提供了关于其HLS设计的重要信息,包括时序估计、性能和资源使用情况、硬件接口细节以及软件到硬件的映射信息。本文通过三个简单的示例,详细解读这些报告,以便更好地理解 Vitis HLS 工具的输出,并利用这些信息来优化和调试硬件设计。

2024-04-26 23:39:18 1436

原创 Vitis HLS 学习笔记--C/C++ static 关键字的作用

在Vitis HLS中,偶尔会用到 static 关键字。考虑到Vitis HLS同时兼容C和C++语言,有必要理解这两种语言中static关键字细微差异。本文旨在梳理和总结C与C++中static关键字的具体差别,以便于开发者更加精确地应用于Vitis HLS环境中。

2024-04-26 15:43:55 1243

原创 Vitis HLS 学习笔记--HLS入门示例集合-目录

本示例集对如下内容做记录:Interface(接口):展示各种模式和接口协议使用的常见示例Pipelining(流水线):展示循环和函数的流水线pragma使用的常见示例Task_Level_Parallelism(任务级并行):展示任务级并行编程模型和拓扑结构示例Modeling(建模):数学和DSP示例以及其他常见使用模型/算法Misc(其他):例如C++中的RTL黑盒等其他示例

2024-04-25 22:38:05 1080

原创 口袋实验室--电子学霸神器-Digilent AD2/3-电感测量

本文分享了使用AD2工具对空心螺旋电感进行实测的过程,展示了从准备到执行,再到结果分析的一系列步骤。首先,直接使用默认配置得到的电感值与仿真结果相差甚远。重新考虑设置,包括串联电阻的选择、信号幅度的调整以及扫频范围的设定。

2024-04-25 17:57:18 946

原创 电磁仿真--基本操作-CST-(3)

通过一个实际的例子(空心电感器),回顾CST软件在创建和仿真三维的螺旋结构方面的基本操作,并借助RLC求解器进行电感量的计算。

2024-04-24 23:28:13 1023

原创 Vitis HLS 学习笔记--对于启动时间间隔(II)的理解

启动时间间隔(II,Iteration Interval)是一个非常关键的概念,对于实现高性能的硬件加速器设计至关重要。II时间间隔可以影响设计的性能和吞吐量。如果任务之间的启动时间间隔太短,FPGA设备可能无法处理任务并引起冲突。而如果任务之间的启动时间间隔太长,则可能会浪费FPGA设备的资源,从而导致性能低下。

2024-04-23 23:15:54 297

原创 电磁仿真--基本操作-CST-(2)

通过一个实际的例子,回顾CST软件在创建和仿真PCB叠层结构方面的基本操作。

2024-04-23 22:26:23 756

原创 Vitis HLS 学习笔记--优化指令-BIND_OP_STORAGE

这些指令指导了高级综合(HLS)工具在优化指定数组的存储和操作实现时的行为。它们有助于在 FPGA 设计中实现更好的性能和资源利用率。存储类型的选择(BRAM、LUTRAM 或 URAM)以及专用 DSP 资源的使用会影响设计的整体效率。指定的延迟控制了这些操作的时序特性。

2024-04-22 22:43:22 961

原创 Vitis HLS 学习笔记--优化指令-ARRAY_PARTITION

ARRAY_PARTITION 指令中非常重要,它用于优化数组的存储和访问。该指令可以将一个大数组分割成多个小数组,以提高并行处理能力和减少访问延迟。

2024-04-22 17:01:34 1451

原创 Vitis HLS 学习笔记--HLS优化指令示例-目录

这个 Xilinx Vitis 加速示例集合提供了一系列的 Vitis HLS 教程和示例,如果您是新手,这些示例将帮助您快速上手并理解 Vitis HLS 开发环境和编程模型。对于有经验的开发者来说,这些示例可以作为性能优化和高级功能实现的参考。

2024-04-21 22:54:36 811

原创 电磁仿真--S参数测试中的参考阻抗

S参数表达了在特定参考阻抗下,入射波与反射波或透射波之间的比例关系。为了计算S参数,需要一个参考阻抗作为基准。离开阻抗谈S参数没有意义。可以通过数学方法,将“S参数1-阻抗1”转化为“S参数2-阻抗2”。这种转化的目的,只是为了对比方便,因为S参数被指定为同一个参考阻抗值。

2024-04-21 22:13:34 1176

原创 电磁仿真--基本操作-CST快捷方式

CST快捷键分类及汇总

2024-04-20 23:28:47 415

原创 Vitis AI 环境搭建 & KV260 PYNQ 安装 & 要点总结

Vitis AI 环境搭建 & KV260 PYNQ 安装 & 要点总结

2024-04-20 22:25:36 928 2

Zynq开发-使用PYNQ快速入门摄像头MIPI驱动(OV5640)-overlay设计

Zynq开发-使用PYNQ快速入门摄像头MIPI驱动(OV5640)-overlay设计

2024-05-12

Zynq开发-使用PYNQ快速入门摄像头MIPI驱动(OV5640)

Zynq开发-使用PYNQ快速入门摄像头MIPI驱动(OV5640)

2024-05-11

电子工程+Xilinx-FPGA-SoC-功耗估算+电源分析+助力设计师在产品设计初期,确定功耗和散热规格

内容摘要:这个工具是为了帮助设计师在产品设计的早期阶段,甚至在 SoC 或 FPGA 的内部逻辑设计之前,准确估算功耗和冷却需求。 适用人群:主要包括电子工程师和系统设计师,特别是那些专注于 FPGA 和 SoC 设计的专业人士。这些用户通常需要在设计流程的早期阶段评估不同架构的功耗,以便选择合适的设备和电源组件。 使用场景及目标:该工具被广泛应用于预设计和预实施阶段,帮助用户进行架构评估、设备选择、电源组件和热管理组件的选择。它通过提供一个直观的电子表格界面,使用户能够输入设计参数并获得即时的功耗估算结果。 其他说明:该工具可与 XPower Analyzer 交换功耗信息,可从 Vivado Power Analysis 导入结果,可以自动化 XPE 的使用。这些功能进一步增强了 XPE 的实用性,使其成为设计师在进行复杂电子设计时不可或缺的资源。

2024-05-08

Digilent AD2+电感测量+线性螺旋电感4uH+WaveForm程序配置+测量结果的曲线

使用AD2工具对空心螺旋电感进行实测的过程+电感值4uH+需要使用Diglent AD2工具进行阻抗测试的人群+串联电阻的选择、信号幅度的调整以及扫频范围+扫频结果分析+具体方法请参加本人博文《口袋实验室--电子学霸神器-Digilent AD2/3-电感测量》

2024-04-28

Digilent AD2+电感测量+线性螺旋电感+WaveForm程序配置

使用AD2工具对空心螺旋电感进行实测的过程+需要使用Diglent AD2工具进行阻抗测试的人群+串联电阻的选择、信号幅度的调整以及扫频范围+扫频结果分析+具体方法请参加本人博文《口袋实验室--电子学霸神器-Digilent AD2/3-电感测量》

2024-04-25

CST电磁场仿真+线性螺旋电感+建模步骤细节和RLC端口配置+CST高级建模操作

通过一个实际的例子(空心电感器),回顾CST软件在创建和仿真三维的螺旋结构方面的基本操作,并借助RLC求解器进行电感量的计算。 首先,在CST中建模线性螺旋电感需要精确定义其几何形状和物理属性。这包括电感的线径、螺旋的半径、匝数以及使用的材料属性。 在构建了电感的几何模型后,接下来是配置RLC端口。CST允许用户在模型的特定位置定义端口,以模拟电感与电路其他部分的连接。 通过利用CST电磁场仿真软件的高级建模功能和细致的RLC端口配置,可以有效地设计和分析线性螺旋电感,为高性能电磁组件的开发提供强大支持。这一过程不仅要求对电磁理论和仿真技术有深入的理解,还需要对CST软件的操作有熟练的掌握,以确保仿真结果的准确性和可靠性。

2024-04-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除