FPGA项目开发之AXIStreamFIFOIP

FPGA技术江湖 2022-11-12 09:07

FPGA项目开发之AXI Stream FIFO IP

Xilinx Vivado中提供了AXI FIFO和AXI virtual FIFO类似IP,这篇文章主要通过实例来讲解这两个IP的使用方法。

AXI Virtual FIFO Controller

FIFO 是我们设计中常用的工具,因为它们使我们能够在进行信号和图像处理时缓冲数据。我们还使用异步FIFO来处理数据总线的时钟域交叉问题。

FIFO 的挑战之一是存储大量数据需要 FPGA 内的大量资源。当然,这在较小的 FPGA 中可能是一个问题,因为 BRAM 资源是有限的。但在许多情况下,较小的 FPGA 可能会连接外部存储器,如 DDR3 或 DDR3L。开发人员可以使用此存储器通过直接存储器访问 (DMA) 在 DDR 存储器存储外部缓冲数据。

AMD-Xilinx 提供了一个称为 AXI Virtual FIFO Controller 的 IP 内核,以简化开发人员希望使用 DDR 存储器将信号或数据样本存储在外部 DDR 中作为 FIFO 的情况。

AXI Virtual FIFO Controller为开发人员提供可连接到信号处理路径的主从 AXI 流端口。与 DDR 存储器的接口由完整的 AXI 接口提供。

使用这些接口,AXI Virtual FIFO Controller能够在 DDR 中创建一个 FIFO,并且能够存储比使用内部 BRAM 更大数量的数据。

AXI Virtual FIFO Controller能够将多个通道数据存储在外部 DDR 中。需要注意的一件事是内存位置与其他内存使用(例如,MicroBlaze 应用程序)可能会发生冲突。在 IP 定制时,我们能够分配的空间需要注意。

接下来创建一个以 Xilinx FPGA(S7-50 )为目标的小项目,项目主要演示AXI Virtual FIFO Controller的工作原理。在本设计中,XADC 是要写入 DDR 的 AXI Stream 数据的来源,DDR 可以通过 AXI Stream 输出其样本。

AXI Virtual FIFO Controller 的输出(读取通道)连接到 AXI Stream FIFO ,最后处理器通过 AXI4-Lite 接口读取数据。

下面显示了设计中的输入路径,其中包含由 XADC 生成的信号和一个subset convertor,用于将 TLast 信号添加到 AXI 流。AXI ILA 使 XADC 生成的数据能够与我们稍后在 DDR 存储器中看到的数据进行对比。然后,信号通过 AXI Virtual FIFO Controller进入 DDR。

输出路径类似。它从 DDR 通过 SMC 进入 AXI Virtual FIFO Controller,然后输出到 AXI Stream FIFO,MicroBlaze 就可以访问它。

将此下载到 FPGA 后,我们可以运行一个简单的 hello world 应用程序,暂停程序,并观察 AXI Virtual FIFO Controller缓冲数据的 DDR 内存位置。

该数据可以通过观察 Vivado  ILA 来对比。

输出路径需要 AXI Stream FIFO 断言 Tready 信号。为此,我们需要使用 MicroBlaze 上运行的软件配置 AXI Stream FIFO。

AXI Stream FIFO

在本节中,我们将继续检查输出路径,了解如何使用AXI Stream FIFO 从 DDR 中的 AXI Virtual FIFO Controller读取样本。

AXI Stream FIFO 允许开发人员能够从 AXI 内存映射外设访问 AXI 流,而无需实施完整的 DMA 解决方案。为了实现这一点,AXI Stream FIFO 提供了从 AXI MM 到 AXI 流的读写能力。就像此示例一样,这可用于与AXI Virtual FIFO Controller或 IP 进行交互,例如快速傅里叶变换,它具有通过 AXIS 的配置数据。

为了与我们的设计交互,AXI Stream FIFO 提供了以下接口:

  • RX Stream Data – 这是要由 AXI Stream FIFO 接收的数据

  • TX Stream Data — 这是由 AXI Stream FIFO  传输的数据

  • TX Stream Control Data – 此接口支持 AXI 以太网 IP 内核的传输协议

  • AXI Lite – 用于访问配置寄存器和数据 Tx 和 Rx 数据的内存映射接口

  • AXI MM – 用于数据 Tx/Rx 的可选 AXI MM 接口

AXI Stream FIFO 提供了一个简单的寄存器接口,使用户能够定义以下内容:

  • Transmission Length——要传输的数据的长度

  • Transmission Vacancy – FIFO 中当前空的位置

  • Receive Length – 接收到的数据包的长度

  • Receive Occupancy – FIFO 中占用的插槽数

  • Receive / Transmission Destination – 边带 AXIS 信号 TIDest

  • Receive / Transmission ID – Side band AXIS 信号 TId

  • Receive / Transmission User – Side band AXIS 信号 TUser

  • 系统/传输和接收中断

  • 系统/传输和接收复位

通过写入 FIFO 或从 FIFO 读取的内存地址从 AXI Stream FIFO 写入或读取数据。

在此应用程序中,我们仅使用接收路径使用 MicroBlaze 从 AXI Virtual FIFO Controller读取样本。

在软件中设置非常简单。我们需要在软件中执行以下操作:

  • 配置 AXI Stream FIFO

  • 读取FIFO的占用情况

  • 从 FIFO 中读出指定的字数

  • 在应用软件中根据需要处理样品

#include 

#include "platform.h"

#include "xil_printf.h"

#include "xstreamer.h"

#include "xllfifo.h"


#define FIFO_DEV_ID     XPAR_AXI_FIFO_0_DEVICE_ID

#define WORD_SIZE 4


XLlFifo_Config *Config;

XLlFifo FifoInstance;


int main()

{

 int Status,i;

 u32 RxWord;

 static u32 ReceiveLength;

    init_platform();


    Config = XLlFfio_LookupConfig(FIFO_DEV_ID);

    XLlFifo_CfgInitialize(&FifoInstance, Config, Config->BaseAddress);


    print("Hello World\n\r");

    print("Successfully ran Hello World application");


 /* Check for the Reset value */

 Status = XLlFifo_Status(&FifoInstance);

 XLlFifo_IntClear(&FifoInstance,0xffffffff);

 Status = XLlFifo_Status(&FifoInstance);

 if(Status != 0x0) {

  xil_printf("\n ERROR : Reset value of ISR0 : 0x%x\t"

       "Expected : 0x0\n\r",

       XLlFifo_Status(&FifoInstance));

  return XST_FAILURE;

 }


while(1){

 while(XLlFifo_iRxOccupancy(&FifoInstance)) {

  /* Read Receive Length */

  ReceiveLength = (XLlFifo_iRxGetLen(&FifoInstance))/WORD_SIZE;

  for (i=0; i < ReceiveLength; i++) {

   RxWord = XLlFifo_RxGetWord(&FifoInstance);

   printf("%x \n\r",RxWord);

  }

 }

}

    cleanup_platform();

    return 0;

}

源程序如下:

https://github.com/ATaylorCEngFIET/MZ_439

查看 AXI Virtual FIFO Controlle和 AXI Stream FIFO 后,这些 IP 内核在我们希望缓冲大量数据并与 AXI 流交互而无需 DMA 开销的应用中都非常有用。

END


往期精选 

 
 

【免费】FPGA工程师招聘平台

简谈FPGA设计中系统运行频率计算方法与组合逻辑的层级

SANXIN-B01开发板verilog教程V3电子版

学员笔记连载 | FPGA Zynq 千兆以太网回环

求职面试 | FPGA或IC面试题最新汇总篇

FPGA项目开发:204B实战应用-LMK04821代码详解(二)

项目合作 | 承接FPGA项目公告

资料汇总|FPGA软件安装包、书籍、源码、技术文档…(2022.09.24更新)

FPGA就业班,11月28日开班,课程内容丰富,系统性学习FPGA,高薪就业,线上线下同步!


FPGA技术江湖广发江湖帖

无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。


FPGA技术江湖微信交流群

加群主微信,备注姓名+公司/学校+岗位/专业进群


FPGA技术江湖QQ交流群

备注姓名+公司/学校+岗位/专业进群

FPGA技术江湖 任何技术的学习就好比一个江湖,对于每一位侠客都需要不断的历练,从初入江湖的小白到归隐山林的隐世高人,需要不断的自我感悟自己修炼,让我们一起仗剑闯FPGA乃至更大的江湖。
评论 (0)
  • 在智能硬件设备趋向微型化的背景下,语音芯片方案厂商针对小体积设备开发了多款超小型语音芯片方案,其中WTV系列和WT2003H系列凭借其QFN封装设计、高性能与高集成度,成为微型设备语音方案的理想选择。以下从封装特性、功能优势及典型应用场景三个方面进行详细介绍。一、超小体积封装:QFN技术的核心优势WTV系列与WT2003H系列均提供QFN封装(如QFN32,尺寸为4×4mm),这种封装形式具有以下特点:体积紧凑:QFN封装通过减少引脚间距和优化内部结构,显著缩小芯片体积,适用于智能门铃、穿戴设备
    广州唯创电子 2025-04-30 09:02 311浏览
  • 你是不是也有在公共场合被偷看手机或笔电的经验呢?科技时代下,不少现代人的各式机密数据都在手机、平板或是笔电等可携式的3C产品上处理,若是经常性地需要在公共场合使用,不管是工作上的机密文件,或是重要的个人信息等,民众都有防窃防盗意识,为了避免他人窥探内容,都会选择使用「防窥保护贴片」,以防止数据外泄。现今市面上「防窥保护贴」、「防窥片」、「屏幕防窥膜」等产品就是这种目的下产物 (以下简称防窥片)!防窥片功能与常见问题解析首先,防窥片最主要的功能就是用来防止他人窥视屏幕上的隐私信息,它是利用百叶窗的
    百佳泰测试实验室 2025-04-30 13:28 445浏览
  • 文/Leon编辑/cc孙聪颖‍2023年,厨电行业在相对平稳的市场环境中迎来温和复苏,看似为行业增长积蓄势能。带着对市场向好的预期,2024 年初,老板电器副董事长兼总经理任富佳为企业定下双位数增长目标。然而现实与预期相悖,过去一年,这家老牌厨电企业不仅未能达成业绩目标,曾提出的“三年再造一个老板电器”愿景,也因市场下行压力面临落空风险。作为“企二代”管理者,任富佳在掌舵企业穿越市场周期的过程中,正面临着前所未有的挑战。4月29日,老板电器(002508.SZ)发布了2024年年度报告及2025
    华尔街科技眼 2025-04-30 12:40 253浏览
  • 浪潮之上:智能时代的觉醒    近日参加了一场课题的答辩,这是医疗人工智能揭榜挂帅的国家项目的地区考场,参与者众多,围绕着医疗健康的主题,八仙过海各显神通,百花齐放。   中国大地正在发生着激动人心的场景:深圳前海深港人工智能算力中心高速运转的液冷服务器,武汉马路上自动驾驶出租车穿行的智慧道路,机器人参与北京的马拉松竞赛。从中央到地方,人工智能相关政策和消息如雨后春笋般不断出台,数字中国的建设图景正在智能浪潮中徐徐展开,战略布局如同围棋
    广州铁金刚 2025-04-30 15:24 248浏览
  • 一、智能家居的痛点与创新机遇随着城市化进程加速,现代家庭正面临两大核心挑战:情感陪伴缺失:超60%的双职工家庭存在“亲子陪伴真空期”,儿童独自居家场景增加;操作复杂度攀升:智能设备功能迭代导致用户学习成本陡增,超40%用户因操作困难放弃高阶功能。而WTR096-16S录音语音芯片方案,通过“语音交互+智能录音”双核驱动,不仅解决设备易用性问题,更构建起家庭成员间的全天候情感纽带。二、WTR096-16S方案的核心技术突破1. 高保真语音交互系统动态情绪语音库:支持8种语气模板(温柔提醒/紧急告警
    广州唯创电子 2025-04-28 09:24 193浏览
  • 晶振在使用过程中可能会受到污染,导致性能下降。可是污染物是怎么进入晶振内部的?如何检测晶振内部污染物?我可不可以使用超声波清洗?今天KOAN凯擎小妹将逐一解答。1. 污染物来源a. 制造过程:生产环境不洁净或封装密封不严,可能导致灰尘和杂质进入晶振。b. 使用环境:高湿度、温度变化、化学物质和机械应力可能导致污染物渗入。c. 储存不当:不良的储存环境和不合适的包装材料可能引发化学物质迁移。建议储存湿度维持相对湿度在30%至75%的范围内,有助于避免湿度对晶振的不利影响。避免雨淋或阳光直射。d.
    koan-xtal 2025-04-28 06:11 160浏览
  • 在CAN总线分析软件领域,当CANoe不再是唯一选择时,虹科PCAN-Explorer 6软件成为了一个有竞争力的解决方案。在现代工业控制和汽车领域,CAN总线分析软件的重要性不言而喻。随着技术的进步和市场需求的多样化,单一的解决方案已无法满足所有用户的需求。正是在这样的背景下,虹科PCAN-Explorer 6软件以其独特的模块化设计和灵活的功能扩展,为CAN总线分析领域带来了新的选择和可能性。本文将深入探讨虹科PCAN-Explorer 6软件如何以其创新的模块化插件策略,提供定制化的功能选
    虹科汽车智能互联 2025-04-28 16:00 219浏览
  • 随着电子元器件的快速发展,导致各种常见的贴片电阻元器件也越来越小,给我们分辨也就变得越来越难,下面就由smt贴片加工厂_安徽英特丽就来告诉大家如何分辨的SMT贴片元器件。先来看看贴片电感和贴片电容的区分:(1)看颜色(黑色)——一般黑色都是贴片电感。贴片电容只有勇于精密设备中的贴片钽电容才是黑色的,其他普通贴片电容基本都不是黑色的。(2)看型号标码——贴片电感以L开头,贴片电容以C开头。从外形是圆形初步判断应为电感,测量两端电阻为零点几欧,则为电感。(3)检测——贴片电感一般阻值小,更没有“充放
    贴片加工小安 2025-04-29 14:59 278浏览
  • 一、gao效冷却与控温机制‌1、‌冷媒流动设计‌采用低压液氮(或液氦)通过毛细管路导入蒸发器,蒸汽喷射至样品腔实现快速冷却,冷却效率高(室温至80K约20分钟,至4.2K约30分钟)。通过控温仪动态调节蒸发器加热功率,结合温度传感器(如PT100铂电阻或Cernox磁场不敏感传感器),实现±0.01K的高精度温度稳定性。2、‌宽温区覆盖与扩展性‌标准温区为80K-325K,通过降压选件可将下限延伸至65K(液氮模式)或4K(液氦模式)。可选配475K高温模块,满足材料在ji端温度下的性能测试需求
    锦正茂科技 2025-04-30 13:08 346浏览
  • 贞光科技代理品牌紫光国芯的车规级LPDDR4内存正成为智能驾驶舱的核心选择。在汽车电子国产化浪潮中,其产品以宽温域稳定工作能力、优异电磁兼容性和超长使用寿命赢得市场认可。紫光国芯不仅确保供应链安全可控,还提供专业本地技术支持。面向未来,紫光国芯正研发LPDDR5车规级产品,将以更高带宽、更低功耗支持汽车智能化发展。随着智能网联汽车的迅猛发展,智能驾驶舱作为人机交互的核心载体,对处理器和存储器的性能与可靠性提出了更高要求。在汽车电子国产化浪潮中,贞光科技代理品牌紫光国芯的车规级LPDDR4内存凭借
    贞光科技 2025-04-28 16:52 305浏览
  • 文/郭楚妤编辑/cc孙聪颖‍越来越多的企业开始蚕食动力电池市场,行业“去宁王化”态势逐渐明显。随着这种趋势的加强,打开新的市场对于宁德时代而言至关重要。“我们不希望被定义为电池的制造者,而是希望把自己称作新能源产业的开拓者。”4月21日,在宁德时代举行的“超级科技日”发布会上,宁德时代掌门人曾毓群如是说。随着宁德时代核心新品骁遥双核电池的发布,其搭载的“电电增程”技术也走进业界视野。除此之外,经过近3年试水,宁德时代在换电业务上重资加码。曾毓群认为换电是一个重资产、高投入、长周期的产业,涉及的利
    华尔街科技眼 2025-04-28 21:55 187浏览
  •  探针台的维护直接影响其测试精度与使用寿命,需结合日常清洁、环境控制、定期校准等多维度操作,具体方法如下:一、日常清洁与保养1.‌表面清洁‌l 使用无尘布或软布擦拭探针台表面,避免残留清洁剂或硬物划伤精密部件。l 探针头清洁需用非腐蚀性溶剂(如异丙醇)擦拭,检查是否弯曲或损坏。2.‌光部件维护‌l 镜头、观察窗等光学部件用镜头纸蘸取wu水jiu精从中心向外轻擦,操作时远离火源并保持通风。3.‌内部防尘‌l 使用后及时吹扫灰尘,防止污染物进入机械滑
    锦正茂科技 2025-04-28 11:45 121浏览
  • 4月22日下午,备受瞩目的飞凌嵌入式「2025嵌入式及边缘AI技术论坛」在深圳深铁皇冠假日酒店盛大举行,此次活动邀请到了200余位嵌入式技术领域的技术专家、企业代表和工程师用户,共享嵌入式及边缘AI技术的盛宴!1、精彩纷呈的展区产品及方案展区是本场活动的第一场重头戏,从硬件产品到软件系统,从企业级应用到高校教学应用,都吸引了现场来宾的驻足观看和交流讨论。全产品矩阵展区展示了飞凌嵌入式丰富的产品线,从嵌入式板卡到工控机,从进口芯片平台到全国产平台,无不体现出飞凌嵌入式在嵌入式主控设备研发设计方面的
    飞凌嵌入式 2025-04-28 14:43 174浏览
  • 网约车,真的“饱和”了?近日,网约车市场的 “饱和” 话题再度引发热议。多地陆续发布网约车风险预警,提醒从业者谨慎入局,这背后究竟隐藏着怎样的市场现状呢?从数据来看,网约车市场的“过剩”现象已愈发明显。以东莞为例,截至2024年12月底,全市网约车数量超过5.77万辆,考取网约车驾驶员证的人数更是超过13.48万人。随着司机数量的不断攀升,订单量却未能同步增长,导致单车日均接单量和营收双双下降。2024年下半年,东莞网约出租车单车日均订单量约10.5单,而单车日均营收也不容乐
    用户1742991715177 2025-04-29 18:28 262浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦