NI P2P Streaming技术使用PCI Express接口在多个设备之间直接,点对点传输,而不必通过主处理器或存储器。这可使同一个系统中的设备共享信息而不必占用其它的系统资源。NI P2P技术被以下设备支持:NI FlexRIO现场可编程门阵列(FPGA)模块,数字化仪和矢量信号分析仪,信号发生器等,具体型号可以参考AE KB 5M5F1FA9。P2P Data Streaming的架构有以下几种常见拓扑结构:
由此可见,对于问题中的描述,用数字化仪采集波形P2P到FlexRIO上再将数据通过P2P传到信号发生器上生成波形是P2P Data Streaming的一种常见应用。另外需要说明的是:对于单个FPGA模块(FlexRIO)最多可实现16个streams。
下面通过一个实例来具体说明这种应用以及需要注意的地方。
实现功能:5122以10MHz的采样率连续采集波形,将采集到的数据P2P stream到FlexRIO 7962R上,在7962R上进行PID运算后将数据通过P2P stream到5451上以10MHz的更新率生成波形。
所用设备:
1、PXIe 8133(可用其他控制器替代)
2、PXIe 1062Q机箱(可用其他支持P2P streaming的机箱替代)
3、PXIe 5122(采集5421生成的信号并P2P到7962R上,可替换为PXIe-5622)
4、PXIe 7962R(接收5122采集的数据并进行PID运算,将结果P2P到5451上,可替换为其他FlexRIO板卡)
5、PXIe 5451(将7962R上P2P过来的数据生成波形并输出,可替换为PXIe-5450)
硬件架构:
软件架构:
具体程序请参考附件。
实物与运行结果:
设置PID运算的Setpoint=0;P=1;I=D=0,输入±1V、100kHz的正弦波,输出波形与输入波形成反向关系。
需要说明的是:
2、信号发生器P2P Streaming时只能使用脚本(script)输出模式。
3、5122采样率最高可达100MHz,5451的更新率最高达400MHz,FlexRIO P2P Stream的速率也不止10MHz,实际应用时的速率主要是受FlexRIO上的信号处理部分限制。在本例中,为了保证信号发生器的每一个时钟上升沿都有数据生成,FlexRIO上数据处理部分(PID运算)也必须以10MHz或更快的速率完成,才能使信号发生器端有源源不断的数据可以生产,才能使数据的采集、处理、生成都能以恒定的速率进行。另外,为了保证数据生成的确定性,最好使用单周期定时循环,避免使用While 循环。LabVIEW自带的PID算法不能运行在定时循环中,运算速度不能满足要求,这里通过调用IP核来实现。
4、虽然数字化仪和信号发生器都以10MHz的速率采集或生成,但如果用各自的板上时钟,由于各自时钟的精度、稳定性都不一样,很容易导致信号发生器发生Data underflow的错误。为此,通过数字化仪和信号发生器都使用PXI机箱背板时钟作为参考时钟来解决这个问题。
5、P2P Streaming以原始的二进制数据进行传输,不包括缩放和校准。对于数字化仪,归一化的系数可以被NI-SCOPE查询并用来校准二进制数据而不必缩放成伏特。最大的正二进制值对应垂直幅度的最大正向电压。最大的负二进制值对应垂直幅度的最大反向电压。垂直幅度被均匀划分以对应可能的二进制值。需要指出的是,实际的最大正负电压会比设定的量程稍大。例如,设定量程是±10V,则实际的最大正负电压是±11V(可参阅参考链接③中的第5部分calibration)。对于信号发生器,传递的也是原始二进制数据,因此,需要考虑数字化仪和信号发生器的位数、量程、增益等因素,确保数字化仪采集的信号和信号发生器生成的信号一致。