主要内容

高吞吐量信道器FPGA

这个例子展示了如何实现高吞吐量(每秒Gigasamples, gsp)信道器硬件利用多相滤波器组。

高速信号处理是一种要求应用程序,如雷达、无线宽带和回程。

现代adc的采样信号在采样率几个Gigasamples每秒。但时钟速度最快的FPGA达不到这个采样率。fpga通常运行在数百兆赫。一种方法处理在一个FPGA执行gsp时从标量处理向量处理和处理多个样本同时时钟频率要低得多。许多现代fpga支持JESD204B金宝app标准接口,接受标量输入GHz时钟频率和产生的样本向量时钟频率较低。

在这个例子中,我们展示了如何设计一个信号处理的应用程序对gsp时吞吐量仿真软件。金宝app通过JESD204B接口输入数据矢量化和可用在FPGA时钟频率较低。模型是一个多相滤波器组由一个过滤器和一个FFT处理16个样本。多相滤波器组技术用于最小化FFT的错误由于泄漏和扇形边损失。看到高分辨率光谱分析(DSP系统工具箱)更多关于多相滤波器组的信息。

的第一部分例子实现了多相滤波器组4-tap过滤器。

的第二部分的例子使用了信道器HDL 12-tap滤波器优化配置块。信道器HDL优化块使用多相滤波器组技术。

多相滤波器组

modelname =“PolyphaseFilterBankHDLExample_4tap”;open_system (modelname);

InitFcn回调(模型属性> > InitFcn回调)设置模式。这个模型使用一个512点FFT为每个乐队四抽头滤波器。使用dsp.Channelizer(DSP系统工具箱)系统对象™生成系数。多相信道器对象的方法生成一个512 -,- 4矩阵。每一行代表每个频带的系数。系数转换为定点,同一个词长度作为输入信号。

FFTLength = 512;h = dsp.Channelizer;h。NumTapsPerBand = 4;h。NumFrequencyBands = FFTLength;h。StopbandAttenuation = 60;系数= fi(多相(h), 1, 15日,14日“RoundingMethod”,“收敛”);

该算法需要512过滤器(一个过滤器为每个乐队)。对于一个向量输入16个样品我们可以重用16过滤器,32倍。

InVect = 16;ReuseFactor = FFTLength / InVect;

合成滤波器更高的时钟频率,我们管道乘数系数银行。这些值中解释“优化硬件因素”部分。

Multiplication_PipeLine = 2;CoefBank_PipeLine = 1;

数据源

输入数据包含两个正弦波,200 KHz和250千赫。

仿真结果

光谱结果形象化,打开谱观众和运行模式。

open_system (“PolyphaseFilterBankHDLExample_4tap / FFT频谱查看器查看器/功率谱(FFT) ');open_system (“PolyphaseFilterBankHDLExample_4tap / PFB频谱查看器查看器/功率谱(PFB) ');sim (modelname);

多相滤波器组功率谱查看器显示了改善功率谱和频率最小化泄漏和扇形边与只使用一个FFT。通过比较两个光谱,放大100千赫到300 KHz,观察到多相滤波器组少比经典的FFT山峰超过-40 dB。

优化硬件方面的考虑

  • 数据类型:数据字长度影响结果的准确性和资源使用的硬件。在这个例子中,我们设计的过滤精度。输入数据的类型fixdt(1, 15日,13),输出是fixdt(1, 18岁,17)。滤波器系数的绝对值均小于1,所以数据不生长增殖后,我们需要添加每增加一点。保持FFT的准确性,我们需要为每个阶段成长一点。这使得抚弄乘法因子更大的在每个阶段。对于许多fpga是希望使乘法大小小于18 x18。自512点FFT 9阶段,FFT的输入不能超过11位。通过探索滤波器系数,我们观察到的第一个8个二进制数字最大系数为零,因此我们可以把系数fixdt (1、7、14)而不是fixdt(1, 15日14)。我们也观察到数据类型的块输出的最大值在多相滤波器组有7前导零二进制后点,因此我们把滤波器的输出fixdt (1、11、17)代替。这使乘数的大小在FFT比18-by-18小,节省了硬件资源。

  • 设计速度:

  1. 国家控制块:国家控制块中使用同步模式生成硬件延迟友好的代码块与启用端口。

  2. 减少时钟使:模型组与减少时钟生成HDL代码启用选项打开(在配置参数选择> HDL代码生成>全局设置>端口>减少时钟支持)。支持这个选项,当模型是单一税率金宝app。时钟使是一个全球性的信号不建议高速设计。

  3. 使用FPGA的DSP块:为了乘数映射到一块DSP在FPGA中,乘数应该安排。在这个例子中我们管道乘数(2之前和2延迟之后延迟)通过设置Multiplication_PipeLine = 2;这些管道寄存器应该没有重置。设置重置类型为每个管道没有(右键单击延迟块并选择>高密度脂蛋白HDL代码块属性>重置类型= none)。

  4. 使用FPGA的ROM:银行内部的系数块系数是一个组合块。为了这段映射到ROM,之后添加一个寄存器。延迟的长度设置CoefBank_PipeLine。这些延迟没有设置重置类型(右键单击延迟块并选择>高密度脂蛋白HDL代码块属性>重置类型= none)。

生成HDL代码和试验台

你必须有一个高密度脂蛋白编码器™许可生成这个例子的HDL代码模型。使用此命令可生成HDL代码。systemname = ' PolyphaseFilterBankHDLExample_4tap / PolyPhaseFilterBank ';makehdl (systemname);

使用此命令来生成一个试验台相比,高密度脂蛋白模拟对模型模拟结果的行为。金宝appmakehdltb (systemname);

合成的结果

设计合成了Xilinx Virtex 7 (xc7vx550t-ffg1158、速度等级3)使用伊势。设计实现了时钟频率为499.525 MHz(地点和路线之前)。在16个样品每个时钟,这相当于8 gsp时吞吐量。注意,这个子系统具有大量的I / O端口,它是不适合作为一个独立的设计针对FPGA。

高密度脂蛋白优化信道器

为了提高频率响应,使用一个过滤器更轻。下面的模型使用信道器HDL优化块,配置了一个12-tap滤波器改善频谱。使用一个内置的信道器HDL优化块更容易改变设计参数。

modelname =“PolyphaseFilterBankHDLExample_HDLChannelizer”;open_system (modelname);

模型使用工作空间变量配置FFT和过滤器。在这种情况下,模型使用512点FFT为每个乐队和一个12-tap过滤器。信道器系数的数量是512频段乘以12利用频带。的特遣部队(h)方法生成所有的系数。

InVect = 16;FFTLength = 512;h = dsp.Channelizer;h。NumTapsPerBand = 12;h。NumFrequencyBands = FFTLength;h。StopbandAttenuation = 60;coef12Tap =特遣部队(h);

数据源

输入数据包含两个正弦波,200 KHz和206.5 KHz。的频率更接近彼此的区别比第一个例子来说明信道器和光谱分辨率4-tap过滤器。

仿真结果

光谱结果形象化,打开谱观众和运行模式。

open_system (“PolyphaseFilterBankHDLExample_HDLChannelizer / PFB_4tap频谱查看器查看器/功率谱(PFB_4tap) ');open_system (' PolyphaseFilterBankHDLExample_HDLChannelizer /光谱信道器查看器查看器/功率谱(Channelizer_12tap) ');sim (modelname);

Channelizer_12tap模型的功率谱查看器显示了改善多相滤波器组的功率谱与12-tap过滤器相比4-tap过滤器在前面的模型。比较信道器的光谱结果和4-tap多相滤波器。放大100千赫到300千赫至观察到信道器检测到只有两个山峰而4-tap多相滤波器组检测超过2峰值。两座山峰是预期的结果,因为只有两个输入信号频率成分。