LabVIEW FPGA PCIe开发详解:Memory Socket CLIP操作指南
LabVIEW FPGA PCIe开发讲解 7.6节:PCIe Memory Socket CLIP详解
引言
在先前的章节中,我们探讨了基于PCIe下的FIFO DMA高速数据通道的运作机制,它在数据传输中的高效特征,尤其是适用于数据采集、图像处理等场景。随着对不同类型应用场景的需求日益增多,本章节将转向介绍一种在确保数据连续性及存储稳定性的背景下,用于存储真实信号本体或网络控制指令的备选通道——PCIe Memory。
PCIe Memory体系概述
相比于FIFO,PCie Memory提供了一种在不断电的情况下持续保存数据的机制,这种“Cache”性质的存储模块,不仅能够存储数据,还有能力在上位机和下位机之间实现灵活的数据读写操作,适用于包含地址和数据信息的传输场景。
LabVIEW FPGA下的PCIe Memory CLIP组件
在编写本章节之时,我们的目标是进一步增强LabVIEW FPGA开发环境对PCie Memory的支持,为此,我们深入研究了Xillybus官方的PCie IP核,成功地将PCie Memory通道进行了适配和封装,形成易于使用的CLIP组件(英文全称为“Control and Programming Interface”,简称CLIP)。这一组件将底层的PCie Memory IP核心功能通过四个简单的握手信号接口对外暴露出来,使用户与PCIe Memory间的交互更为便捷。
FPGA内存Socket接口设计
在后续实验69中,我们将详细解析如何在LabVIEW FPGA环境中实现PCie Memory Socket CLIP组件的编程。首先,这是一个基于Nightly版本的解决方案,为了兼顾不同型号的FPGA,我们设计了一款适用于多种速度等级和位宽配置的CLIP终端组件,以确保系统资源的有效利用。
PCie Memory终端组件特点与锁存机制
设备配置与组件添加
在LabVIEW的项目环境中,通过“我的电脑”下进行按钮右击,选择“添加终端和设备”操作,快速定向至PCie Memory Socket CLIP组件。此组件覆盖了从8通道DMA FIFO到包含两通道Memory的组合配置。
细解EIO节点划分
展开CLIP组件后,用户将发现这67个EIO节点被划分为两大部分:50个用于DMA FIFO双数据通道的管理,以及剩余17个用于Memory读写操作的处理。在Memory通道部分,每个通道利用4路握手信号(2地址线、2数据线)进行数据的读写交互。
完善内存通道信号设计
Memory通道包括速率较高的125MHz时钟信号,以及用于与上位机PC执行地址更新与数据读取/写入交互的信号端口。通过分别为16位和32位位宽设计的四线握手信号,为用户提供了灵活的数据传输路径。
信号端口含义详解
时钟源:`Clock PCIE_LV_MEM_Clock_125M`,确保了Memory通道与FPGA间的读写操作同步性。
读取通道路由:`pcie_lv_clip_from_host__rdaddr_` 和 `pcie_lv_clip_to_host__rddata_`,分别代表了地址更新与数据读取的过程。
写入通道路由:端口如 `pcie_lv_clip_from_host__wraddr_` 和 `pcie_lv_clip_from_host__wrdata_`,用于数据写入逻辑的建立。