主要内容

采样率转换为LTE接收器

这个例子展示了如何设计和实现采样率转换为LTE接收机前端。模型是兼容无线HDL工具箱™接收机参考应用程序,并支持与高密度脂蛋白HDL代码生成编码器™。金宝app

介绍

LTE HDL细胞搜索,LTE HDL MIB复苏,LTE HDL SIB1复苏参考应用程序需要一个输入采样率30.72议员。在实践中,硬件提供的采样率可能有所不同,例如由于选择的组件或系统的设计决策。因此,采样率转换可能需要将这些引用的应用程序集成到一个更大的系统。这个示例中所示的模型转换从125年开始,140年或150年苏格兰议会议员的30.72使用两个冷杉大批杀害过滤器和一个可编程法罗率转换器。率的变化从125年开始,140年或150年议员30.72议员故意选择,因为它们还没有简单实现代表率变化的类型的一个例子经常需要在一个无线电接收器。

采样率转换器设计概述

在顶层,你可以使用FarrowSelect输入转换器。这允许您选择三个预定义的输入采样率- 125之间,140年或150年议员。你可以计划的产率转换器有率变化练习。违约率只是作为一个例子。30.72默认转换从150年议员议员对应速度变化因子为0.2048。这是所显示过滤器链的实现的。首先,法罗率转换器是用来做微调的采样率150/30.72 * 4 = 1.2207倍。接下来,信号是摧毁两个(即速度变化(1/2)使用halfband过滤器。最后,的冷杉滤波器实现最后decimate-by-two阶段。

选择的过滤器

使用这组过滤器的原因如下:

  1. 产率转换器被选为实现微调阶段由于高速率改变分辨率实现这种方法。这导致了一个灵活的设计,可以实现其他容易修改率变化。

  2. 而法罗过滤器实现高速率改变分辨率,别名可以是一个问题。一个好的设计实践是将法罗率转换器尽可能远离奈奎斯特带宽,和保持率变化接近1。这两个设计实践中遇到的设计。

  3. 中间过滤阶段halfband滤波器可以有效地完成。然后后续滤波器有两个周期每个输入样本可用来实现资源共享。

  4. 然后,最后一个阶段是一个的冷杉过滤器,可以使用资源共享的两倍。

时钟频率和有效信号

在这个例子中,默认时钟频率为150 MHz,默认输入采样率是150议员。采样率转达了工作周期的有效信号(时间,有效的百分比真正的在每个阶段)。例如,工作周期validIn是100%的责任周期farrowValidOut是81.92%,有不规则,周期模式。它遵循了真正的,,真正的,…模式的大部分时间,但是它会偶尔想念真正的周期来表示正确。冷杉杀害多人者半采样率,然而它也有一个不规则的、非周期有效输出模式,因为它是由产率转换器。validOut有责任周期的20.48%。

在这个示例中所示的仿真使用validIn责任周期的100%,采样率转换器可以接受任何有效的输入模式与任何责任周期。这是有用的在场景的硬件时钟频率大于输入采样率。

顶级的参数

顶级配置参数的采样率转换器。FsADC是输入率,而FsLTERx是输出率;也就是说,LTE接收机的输入。您可以修改FsADC100 e6, 125 e6,或150 e6,只要你开车FarrowSelect开关使用正确的值。成就是通带截止频率设置为10 MHz容纳的最大可能的LTE带宽20 MHz。Fstop设置为奈奎斯特率,但是可以调整如果需要更多带外信号抑制。Ast是星展银行的阻带衰减,美联社是所需的通带波纹的数量。

FsADC = 150 e6;FsLTERx = 30.72 e6;成就= 10 e6;Fstop = FsLTERx / 2;Ast = 60;美联社= 0.1;

产率转换器

在这个例子中,产率转换器使用默认三阶拉格朗日系数。这些都是源自一个封闭形式的解决方案和一般为任何工作率变化。法罗滤波器结构中使用的相同dsp.VariableIntegerDelaydsp.FarrowRateConverter系统对象。

定义法罗率转换器的关键参数。傅氏国际FsOut分别为输入和输出率。

法罗。傅氏国际= FsADC; farrow.FsOut = 4*FsLTERx;

现在,我们可以评估法罗率转换器。

%生成一个脉冲输入的长度Lx样本。Lx = 10;x = 0 (Lx, 1);x (1) = 1;%的采样过量脉冲响应进行评估% Farrow-based变量部分延迟。%变量实例化一个分数延迟对象。在N %脉冲穿过不同的分数%的延迟从0到1 - (1 / N) 1 / N和存储的步骤%采样过量响应向量p中的结果。= dsp.VariableFractionalDelay(变频“InterpolationMethod”,“法罗”);N = 4;Lp = N * Lx;p = 0 (Lp, 1);n = 1: n p (n: n:结束)=变频(x, 4 + (n n) / n);结束%画出脉冲响应图(1);clf;t =(0:长度(p) 1) / N;情节(t, p,“o”);标题(“脉冲响应”);包含(“时间指数k”+换行符+“(在原始样本率)”);ylabel (" p (k) ");打印ImpulseResponse.png-dpng%绘制级响应图(2);clf;Lfft = 1024;Pmag = 20 *日志(abs (fft (p / N, 1024)));f = (0: Lfft-1) * N / Lfft;情节(f-N / 2, fftshift (Pmag));持有;ax =轴;情节([1/2 1/2]、[ax ax (3) (4)],“——”);情节((1/4 1/4),(ax ax (3) (4)),“——”);情节([1/8]1/8,(ax ax (3) (4)),“——”);轴([ax ax (1) (2) -100 20]);网格;标题(“级”);包含(“频率”+换行符+“(由原始采样率归一化)”);ylabel (“增益(dBs)”);传奇(“过滤反应”,“Fs / 2”,“Fs / 4”,“Fs / 8”);打印MagnitudeResponse.png-dpng

的FIR滤波器

设计的中间和最终冷杉过滤阶段。这两个过滤器使用16位系数。为了方便起见,这些系数定义数据类型。

FIRCoeffsDT = numerictype(15) 1, 16日;

Halfband杀害多人者

设计一个halfband滤波器有效地毁掉输入2。

hbParams。傅氏国际= farrow.FsOut; hbParams.FsOut = farrow.FsOut/2; hbParams.TransitionWidth = hbParams.FsOut - 2*Fpass; hbParams.StopbandAttenuation = Ast + 10; hbSpec = fdesign.decimator(2,“halfband”,“Tw, Ast”,hbParams.TransitionWidth,hbParams.StopbandAttenuation,hbParams.FsIn);halfband =设计(hbSpec,“SystemObject”,真正的);halfband。FullPrecisionOverride = false;halfband。CoefficientsDataType =“自定义”;halfband。CustomCoefficientsDataType = numerictype ([],FIRCoeffsDT.WordLength FIRCoeffsDT.FractionLength);

画出滤波器的频率响应,包括量化的反应。

srcPlots。halfband = fvtool (halfband,“算术”,“固定”);SRCTestUtils.setPlotNameAndTitle (“Halfband冷杉”);传奇(量化滤波器的,“参考滤波器”,“设计约束”);

最后冷杉杀害多人者

设计最后decimate-by-2冷杉过滤阶段。

finalSpec = fdesign.decimator (2低通滤波器的,“Fp,置,美联社,Ast”成就,Fstop,美联社,Ast, hbParams.FsOut);finalFilt =设计(finalSpec,“equiripple”,“SystemObject”,真正的);finalFilt。FullPrecisionOverride = false;finalFilt。CoefficientsDataType =“自定义”;finalFilt。CustomCoefficientsDataType = numerictype ([],FIRCoeffsDT.WordLength FIRCoeffsDT.FractionLength);

画出滤波器的频率响应,包括量化的反应。

srcPlots。finalFilt = fvtool (finalFilt,“算术”,“固定”);SRCTestUtils.setPlotNameAndTitle (“最后的冷杉”);传奇(量化滤波器的,“参考滤波器”,“设计约束”);

金宝app仿真软件实现高密度脂蛋白

打开模型和更新图。模型的顶层。HDL代码可以生成的采样率转换器子系统。

stopTime = 0;dataIn = 0;validIn = false;modelName =“SampleRateConversionHDL”;open_system (modelName);set_param (modelName“SimulationCommand”,“更新”);set_param (modelName“开放”,“上”);

如前所述,采样率转换器包含产率转换器,halfband过滤器,最后冷杉大批杀害阶段。法罗已经准备好信号,不是用于大量毁灭,因此终止。总体率变化对应插值时,准备进行分步输入。两个冷杉杀害多人者块配置为使用系数之前设计和存储在冷杉系统对象。如前所述,最后冷杉杀害多人者可以使用资源共享,看到作为输入只一个有效每2周期。这是配置通过设置“有效输入之间的最小数量的周期”2。

set_param ([modelName“/采样率转换器”),“开放”,“上”);

确认和验证

LTE测试信号生成速度150议员,通过转换器。一个错误矢量大小(维生素)然后进行测量,确认重新取样适用于一个LTE接收器。供参考,三种不同的方法被用来重新取样信号30.72议员和他们的维生素与结果比较。这三个方法是:

  1. MATLAB函数重新取样。

  2. 的MATLAB模型转换器。

  3. 率的仿真金宝app软件HDL模型转换器。

此外,确认正确的HDL实现的操作,输出之间的均方根误差的MATLAB和Simulink率转换器模型计算。金宝app

生成一个20 MHz LTE测试信号采样150议员。

rng (0);enb = lteRMCDL (“R.9”);enb。TotSubframes = 2;[tx, ~, sigInfo] = lteRMCDLTool (enb,兰迪([0,1],1000,1));dataIn =重新取样(tx FsADC sigInfo.SamplingRate);dataIn = 0.95 * dataIn / max (abs (dataIn));validIn = true(大小(dataIn));

使用重新取样函数来重新取样接收信号从ADC速度30.72议员。这提供了一个良好的质量参考比较的转换器。

resampleOut =重新取样(dataIn FsLTERx FsADC);

传递的信号通过MATLAB模型转换器。

farrowFilt = dsp.FarrowRateConverter (farrow.FsIn farrow.FsOut);farrowOut =步骤(farrowFilt dataIn);halfbandOut = halfband (farrowOut);floatResamplerOut = finalFilt (halfbandOut);

信号通过定点仿真软件HDL实现模型。金宝app

stopTime =(长度(dataIn) + 1000) / FsADC;simOut = sim (modelName);fiResamplerOut = simOut.dataOut (simOut.validOut);fiResamplerOut = fiResamplerOut(1:长度(floatResamplerOut));

情节validInvalidOut显示的总体率改变采样率转换器。validIn总是很高,而validOut高约四分之一(0.24576%)的时间。

srcPlots。validSignals =图;Ns = 300;validInSlice = validIn (1: Ns);validOutSlice = simOut.validOut (1: Ns);次要情节(2,1,1);情节((0:Ns-1) / FsADC validInSlice);轴([0 (Ns-1) / FsADC -0.1 - 1.2]);ylabel (“validIn”);包含(“时间”);次要情节(2,1,2);情节((0:Ns-1) / FsADC validOutSlice);轴([0 (Ns-1) / FsADC -0.1 - 1.2]);ylabel (“validOut”);包含(“时间”);

计算输出之间的均方根误差的MATLAB和Simulink模型转换器金宝app

e = floatResamplerOut-fiResamplerOut;rootMeanSquareError =√(e * e) /长度(e));disp ([的均方根误差:num2str (rootMeanSquareError)]);
均方根误差:0.26432

测量所有的维生素与三个重采样方法。

结果。resampleEVM = SRCTestUtils.MeasureEVM (sigInfo resampleOut FsLTERx);结果。floatPointSRCEVM = SRCTestUtils.MeasureEVM (sigInfo floatResamplerOut FsLTERx);[结果。fixedPointSRCEVM fiEqSymbols] = SRCTestUtils.MeasureEVM (sigInfo、fiResamplerOut FsLTERx);disp (LTE误差向量幅度(维生素)测量的);disp ([“重新取样函数RMS维生素:”num2str (results.resampleEVM.RMS * 100, 3)“%”]);disp ([挣值管理的重新取样函数峰值都:“num2str (results.resampleEVM.Peak * 100, 3)“%”]);disp ([“浮点SRC RMS维生素:”num2str (results.floatPointSRCEVM.RMS * 100, 3)“%”]);disp ([挣值管理的浮点SRC峰值都:“num2str (results.floatPointSRCEVM.Peak * 100, 3)“%”]);disp ([“定点HDL SRC RMS维生素:num2str (results.fixedPointSRCEVM.RMS * 100, 3)“%”]);disp ([挣值管理的定点HDL SRC峰值都:“num2str (results.fixedPointSRCEVM.Peak * 100, 3)“%”]);
LTE误差向量幅度RMS维生素(维生素)重新取样测量功能:0.0138%重新取样函数峰值维生素:0.0243%浮点SRC RMS维生素:0.0265%浮点SRC峰值维生素:0.0645%定点HDL SRC RMS维生素:0.0518%定点HDL SRC维生素:峰值0.246%

确认信号质量高通过绘制平衡的飞行员符号的维生素与测量HDL实现。请注意,几乎没有模糊的星座点是可见的。

srcPlots。散点图=散点图(fiEqSymbols);SRCTestUtils.setPlotNameAndTitle (“平衡的细胞RS”);

HDL代码生成和FPGA实现

生成这个例子中你必须有一个高密度脂蛋白HDL代码编码器™许可证。使用makehdlmakehdltb命令来生成和一个高密度脂蛋白testbench HDL代码采样率转换器子系统。结果合成了HDL代码在Xilinx®Zynq®-7000 ZC706评估板。这个职位地点和路线资源利用率结果如表所示。设计了计时的时钟频率170 MHz。关键路径是蓄电池的产率转换器。这是在织物中实现,有一个很大的32位的字,以达到高精度的速度转换。改善时间,减少蓄电池字,或蓄电池映射到FPGA的DSP片。

disp(表(分类({附近地区的;“LUTRAM”;“FF”;“布莱姆。”;“DSP”}),分类({“1489”;“139”;“7165”;' 0 ';“64”}),“VariableNames”,{“资源”,“使用”}));
资源使用________ _____附近地区1489 LUTRAM 139 FF 7165 BRAM 0 DSP 64