主要内容

高通量对FPGA信道器

这个例子展示了如何实现一个高通量,gigasamples-per-second (gsp),信道器硬件利用多相滤波器组。

高速信号处理是一种要求应用程序,如雷达、无线宽带,回程沟通。现代adc采样信号采样率几个gsp时,但最快的FPGA的时钟速度达不到这个采样率。fpga通常运行在数百兆赫。处理在一个FPGA执行gsp时,你可以从标量处理向量处理和并行处理多个样本时钟频率要低得多。许多现代fpga支持JESD204B金宝app标准接口,接受标量输入GHz时钟频率和产生的样本向量时钟频率较低。

这个例子展示了如何设计一个支持gsp时信号处理应用程序吞吐量。金宝app这些模型®模金宝app型假设输入数据矢量化是通过使用一个JESD204B接口,并可以在FPGA时钟频率较低。算法流程四个样品。两种模型的多相滤波器组由一个过滤器和一个FFT。多相滤波器组技术最小化泄漏和扇形边FFT的损失。关于多相滤波器的更多信息,请参阅高分辨率光谱分析在MATLAB(DSP系统工具箱)

的第一部分的例子使用了信道器(DSP HDL工具箱)块DSP的HDL工具箱™库,配置为12-tap过滤器。信道器块使用多相滤波器组技术和自动选择数据类型,适用于流水线,并使用其他优化硬件性能和资源使用。块,你可以很容易地探索变化设计。

第二部分的示例实现了多相滤波器组4-tap过滤器。这个第二部分使用基本模型块。金宝app它显示了多相滤波器组的架构,和硬件滤波器设计的挑战,如选择数据类型和插入管道阶段。

实现信道器与12-Tap过滤器

这个模型使用信道器块,配置了一个12-tap过滤器,导致光谱性能好。使用的信道器块DSP HDL工具箱库很容易改变系数等设计参数向量大小和FFT长度。块也自动股乘数,计算定点数据类型,和管道过滤器。

模型使用这些工作空间变量配置FFT和过滤器。该模型的输入向量的大小是4个样品。该模型使用一个512点FFT为每个乐队和一个12-tap过滤器。信道器系数的数量是512频段乘以12水龙头每频带。生成所有的系数通过使用特遣部队(h)函数。

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

输入数据包含两个正弦波,200 kHz和206.5 kHz。频率接近彼此说明信道器的光谱分辨率。

信道器HDL优化子系统包含信道器块和一个同步的国家控制块生成hardware-optimized代码启用逻辑信道器内。

块实现管道阶段在乘数适合FPGA逻辑DSP模块,并实现了系数银行内的信道器与罗块。这些hardware-friendly选项的默认行为DSP HDL工具箱块。

modelname =“PolyphaseFilterBankHDLExample_HDLChannelizer”;open_system (modelname);set_param (modelname“SimulationCommand”,“更新”);

这个模型图显示子系统内的信道器块。

open_system ([modelname,' /信道器HDL优化”])

块参数配置滤波器系数,FFT长度和其他设置,使您的探索不同的硬件实现的算法。

查看仿真结果

光谱结果形象化、开放频谱查看器和运行模式。

open_system ([modelname,' /频谱查看器查看器/功率谱(Channelizer_12tap) ']);sim (modelname);

光谱查看器显示12-tap过滤分离两个信号的频谱。放大100千赫到300千赫至看到信道器检测到两座山峰。两座山峰是预期的结果,因为输入信号有两个频率成分。

生成HDL代码

你必须有HDL编码器™产品生成这个例子的HDL代码模型。使用此命令可生成HDL代码。

makehdl ([modelname,' /信道器HDL优化”]);

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

makehdltb ([modelname,' /信道器HDL优化”]);

设计合成了Xilinx Virtex 7 (xc7vx550t-ffg1158、速度等级2)。设计实现时钟频率为361 MHz。4样品每个时钟,这个频率结果在1.4 gsp时吞吐量。

减少时钟使在这个模型中HDL代码生成选项。时钟使信号是一个全球性的信号,这对高速设计不推荐。在模型中配置参数,选择HDL代码生成,全局设置,港口,然后选择减少时钟使。支持这个选项,当模型是单一税率金宝app。

FFT 56块使用DSP模块在FPGA上,和过滤器使用48块DSP。

T =表(分类({附近地区的;“附近地区RAM”;“FF”;“布莱姆。”;“DSP”}),(26641;14585;24816;2;104年),“VariableNames”,{“资源”,“使用”});disp (T);
资源使用________ _____附近地区26641附近地区RAM 14585 FF 24816 BRAM 2 DSP 104

实现4-Tap多相滤波器组

显示一个多相滤波器组的内部实现,第二个例子模型实现了一个512点FFT利用DSP HDL工具箱FFT块和一个4-tap过滤器使用基本模型块为每一个乐队。金宝app4-tap滤波器有较低的频率分辨率比12-tap过滤器在第一个模型中,但它更容易看到滤波器的结构。这些MATLAB变量在模型中配置块。使用dsp.Channelizer(DSP系统工具箱)系统对象™生成系数。的多相信道器对象的方法生成一个512 -,- 4矩阵。每一行代表一个频带的系数。把系数定点类型有相同的单词长度作为输入信号。

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

该算法需要512过滤器(一个过滤器为每个乐队)。对于一个向量输入4样本,该模型实现了四个平行4-tap过滤器。每个过滤器适用于128套系数。

ReuseFactor = FFTLength / InVect;

这些变量配置模型管道乘数和系数银行适合DSP模块在FPGA的逻辑。使用DSP模块使合成到一个更高的时钟频率。

Multiplication_PipeLine = 2;CoefBank_PipeLine = 1;

输入数据包含两个正弦波,200 kHz和250千赫。这两个频率的距离比之前的模式,因为较小的滤波器有较低的光谱性能。的输入和输出PolyPhaseFilterBank子系统是4-by-1向量。

modelname =“PolyphaseFilterBankHDLExample_4tap”;open_system (modelname);set_param (modelname“SimulationCommand”,“更新”);

PolyphaseFilterBank子系统包含系数银行子系统,旋转系数集。的滤波器组子系统接受系数向量和过滤数据的数据,并返回一个矢量。FFT块还接受4样本,并返回一个向量,并实现了一个hardware-optimized架构。

open_system ([modelname,' / PolyPhaseFilterBank '])

这个模型图显示了管线式4-tap滤波器实现。

open_system ([modelname,“PolyPhaseFilterBank /过滤器银行”])

查看仿真结果

可视化仿真的结果,打开谱观众和运行模式。

open_system ([modelname,' / FFT频谱查看器查看器/功率谱(FFT) ']);open_system ([modelname,' / PFB频谱查看器查看器/功率谱(PFB) ']);sim (modelname);

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

考虑优化硬件

数据类型

数据字长度会影响结果的准确性和资源使用的硬件。这个4-tap过滤器使用完整的精度。输入数据的类型fixdt(1, 15日,13),输出是fixdt(1, 18岁,17)。滤波器系数的绝对值均小于1,所以每个乘法操作后的数据不生长。每添加一个比特的数据类型。在FFT保持精度,数据类型为每个阶段长一点。这种增长的捻系数大乘法在每个阶段。对于许多fpga,乘法大小小于18-by-18是可取的。因为512点FFT 9阶段,FFT的输入不能超过11位。第一个8二进制数字的最大系数在本例中为零。因此,这个示例的系数fixdt (1、7、14)而不是fixdt(1, 15日14)。此外,数据类型的块输出的最大值在多相滤波器组有7前导零二进制点后,模型将滤波器的输出fixdt (1、11、17)。这些调整保持内部乘数的大小小于18-by-18 FFT和节省硬件资源。

设计速度

模型使用这些设置使HDL代码生成合成一个更快的时钟频率。

  1. 同步状态控制块——实现hardware-friendly启用逻辑延迟块。

  2. 减少时钟使——避免实现全球时钟启动信号,可以降低时钟频率合成。

  3. 使用DSP块FPGA -地图乘数为DSP模块在FPGA包括2延误每个乘数和前2后延迟。这些管道寄存器不能复位信号。设置重置类型为每个管道没有延迟块单击右键并选择HDL代码>高密度脂蛋白块属性,然后设置重置类型没有一个

  4. 使用FPGA芯片——映射系数MATLAB中的组合逻辑功能块(内系数银行子系统)罗通过添加注册之后。延迟的长度设置CoefBank_PipeLine。为这些延误没有设置重置类型。

生成HDL代码

你必须有HDL编码器™产品生成这个例子的HDL代码模型。使用此命令可生成HDL代码。

makehdl ([modelname,“PolyPhaseFilterBank”]);

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

makehdltb ([modelname,“PolyPhaseFilterBank”]);

当设计合成Xilinx®Virtex 7 (xc7vx550t-ffg1158、速度等级2),设计实现了时钟频率为324 MHz(地点和路线之前)。4样品每个时钟,这个频率结果在1.3 gsp时吞吐量。

FFT 56块使用DSP模块在FPGA和过滤器使用16块DSP。

T =表(分类({附近地区的;“附近地区RAM”;“FF”;“布莱姆。”;“DSP”}),(14713;3570;21514;2;72年),“VariableNames”,{“资源”,“使用”});disp (T);
资源使用________ _____附近地区14713附近地区RAM 3570 FF 21514 BRAM 2 DSP 72

结论

第一部分的示例显示了如何信道器块DSP HDL工具箱图书馆很容易实现一个算法硬件,并提供快速勘探设计选项。

第二部分的例子展示了硬件实现过滤器时设计考虑不使用hardware-optimized库块,如选择数据类型和插入管道阶段。当你从DSP使用图书馆块HDL工具箱,你自己不需要考虑这些因素。块实现hardware-optimized算法准备HDL代码生成和部署fpga和asic。