主要内容

实现数字变频技术在高密度脂蛋白的过滤器链

这个例子展示了如何使用DSP系统工具箱™和定点设计师™设计三级,多重速率的,定点滤波器实现数字变频技术的过滤器链(DDC)旨在满足全球移动通信系统(GSM)规范。

使用过滤器设计高密度脂蛋白编码器™我们将生成synthesizable HDL代码同样的三级,多重速率的定点滤波器。最后,利用仿真软件®和HDL校金宝app验™女士,我们将co-simulate定点过滤器来验证所生成的HDL代码产生相同的结果作为等效仿真软件行为模型。

数字变频技术

数字变频技术(DDC)是数字收音机的一个关键组成部分。必要的监护系统执行频率翻译转换的输入样本率高数字广播,进一步降低样本率和更容易处理。在这个例子中,监护系统运作大约在70 MHz,必须降低利率降至270千赫。

进一步限制我们的问题我们将在Graychip的模型之一,DDC GC4016多重标准四监护系统芯片。的GC4016等功能,提供了以下过滤器:五级CIC滤波器与可编程(8 - 4096)大量毁灭因素;21-tap冷杉过滤器会毁坏的2和可编程的16位系数;和63 - 2和冷杉过滤器也会毁坏的可编程的16位系数。

监护系统由数字控制振荡器(NCO)和混合器将输入信号转换成基带正交下来。基带信号由一个级联低通滤波Integrator-Comb后跟两个冷杉(CIC)过滤器的过滤器来实现低采样率约为270千赫准备进一步处理。最后阶段通常包括一个重新取样,篡改或会毁坏信号来实现所需的采样率取决于应用程序。也可以实现进一步过滤重新取样。典型的监护系统的框图如下所示。

这个例子着重于三级、多重速率的大批杀害过滤器,由中投公司和两个的FIR滤波器。

GSM规范

感兴趣的GSM带宽是160千赫。因此,DDC的三级,多重速率的滤波器响应必须平在这个带宽在通带波纹内,必须小于0.1 dB峰间。看着GSM的乐队拒绝面具所示,我们可以看到,过滤器也必须达到18分贝衰减在100千赫。

此外,GSM需要一个符号率270.833过度增殖。自从Graychip输入采样率是相同的时钟频率为69.333 MHz,我们必须downsample输入降至270.833千赫。这就要求三级,多重速率的过滤器在256年毁掉。

级联Integrator-Comb (CIC)过滤器

中投过滤器是多重速率的过滤器是非常有用的,因为他们可以实现高大量毁灭(或插值)利率和实现没有乘数。CICs只是货车车厢递归实现级联upsampler或downsampler过滤器。这些特点使得CICs在高数字系统的操作非常有用,尤其是当这些系统实现asic或fpga。

尽管CICs可取的特点也有一些缺点,最明显的是他们产生衰减在通频带地区由于其sinc-like响应。因此CICs通常必须补偿滤波器紧随其后。补偿滤波器必须有一个inverse-sinc响应在通频带地区解除造成的下垂中投。

设计和级联的三个过滤器可以通过图形用户界面执行过滤设计师,

但我们会使用命令行功能。

我们定义了中投公司如下:

R = 64;%大量毁灭的因素D = 1;%微分延迟Nsecs = 5;%的部分猫头鹰= 20;%输出字长中投= dsp.CICDecimator (“DecimationFactor”R“NumSections”Nsecs,“FixedPointDataType”,“最低部分单词长度”,“OutputWordLength”OWL);

我们可以通过调用视图中投的细节信息的方法。

信息(cic)
ans = 9 x56 char数组的离散时间冷杉多重速率的过滤器(真正的)“- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -“滤波器结构:级联Integrator-Comb杀害多人者“大量毁灭因素:64“微分延迟:1“的部分:5“稳定:是的“线性相位:是的(2型)' ' '

让我们绘制和分析的理论级响应CIC滤波器将运行在69.333 MHz的输入速度。

Fs_in = 69.333 e6;fvt = fvtool(中投,“Fs”,Fs_in);fvt。颜色=“白色”;

首先要注意的是,中投过滤器有一个巨大的通带增益,这是由于结构内的补充和反馈。我们可以正常化中投的大小反应在FVTool通过使用相应的设置。正常化CIC滤波器响应在直流0分贝增益,就能很容易地分析覆盖的滤波器响应下一阶段过滤器。

fvt。NormalizeMagnitudeto1 =“上”;

需要注意的另一件事是,缩放通频带地区我们可以看到,中投约-0.4 dB的衰减(下垂)80 KHz,带宽内的利益。CIC滤波器实质上是一连串的货车车厢过滤器,因此sinc-like反应导致下垂。这种下垂需要补偿数字滤波器的下一阶段。

轴(-0.8 0][0。1);

补偿冷杉杀害多人者

第二阶段我们的监护系统过滤器链需要弥补造成的通频带下垂中投和毁掉除以2。自从中投sinc-like回应,我们可以弥补下垂的低通滤波器具有inverse-sinc响应在通频带。这个过滤器将操作1/64th输入采样率69.333 MHz,因此速度是1.0833 MHz。而不是设计一个低通滤波器和一个inverse-sinc通带响应从头开始,我们将使用一个函数让我们设计一个罐头杀害多人者与中投公司补偿(inverse-sinc)直接反应。

%过滤器规格Fs = 1.0833 e6;%采样频率69.333 mhz / 64apas = 0.01;% dBAstop = 70;% dB成就= 80年e3;%赫兹passband-edge频率Fstop = 293年e3;%赫兹stopband-edge频率%设计大量毁灭过滤器。D和Nsecs上面定义的%微分延迟和数量的部分,分别。补偿器= dsp.CICCompensationDecimator (“SampleRate”Fs,“CICRateChangeFactor”R“CICNumSections”Nsecs,“CICDifferentialDelay”D“PassbandFrequency”成就,“StopbandFrequency”Fstop,“PassbandRipple”apas,“StopbandAttenuation”,Astop);%现在我们的定点属性定义多重速率的过滤器。%在默认情况下,蓄电池的定点属性和乘数%设置,以确保完整的使用精度运算,即没有%量子化。默认情况下,使用16位来表示%滤波器系数。因为这是我们想要在这种情况下,没有变化%从默认值是必需的。

使用info命令我们可以得到一个全面的报告冷杉补偿滤波器,包括蓄电池和产品的单词长度,自动确定。

信息(补偿器)
ans = 10 x56 char数组的离散时间冷杉多重速率的过滤器(真正的)“- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -“滤波器结构:直接形式冷杉多相杀害多人者“大量毁灭因素:2“多相长度:11“滤波器长度:21“稳定:是的“线性相位:是的(1型)' ' ' '算术:双

级联的中投逆sinc过滤器我们可以看到如果我们消除造成的通频带下垂中投。

cicCompCascade =级联(中投,补偿器);fvt = fvtool (cicCompCascade中投,补偿器,“Fs”(Fs_in Fs_in / 64, Fs_in]);fvt。颜色=“白色”;fvt。NormalizeMagnitudeto1 =“上”;轴([0。1 -0.8 - 0.8]);传奇(fvt“中投”,“补偿”,“级联”);

我们可以看到在级联滤波器响应的两个过滤器,这是中投公司响应和补偿冷杉反应,通频带下垂已经消除。

第三阶段冷杉杀害多人者

正如前面指出的GSM光谱面具需要一个衰减后的18 100千赫。因此,对于我们的第三个和最后一个阶段,我们可以尝试一个简单的equiripple低通滤波器。再次,我们需要数字转换系数16位(默认)。这个过滤器还需要毁掉除以2。

N = 62;% 63水龙头Fs = 541666;% 541.666千赫成就= 80年e3;Fstop = 100年e3;规范= fdesign.decimator (2低通滤波器的,“N, Fp,置”、N、成就、Fstop, Fs);%给通带更多的重量杀害多人者=设计规范,“equiripple”,“Wpass”2,“SystemObject”,真正的);

当定义一个多重速率的过滤器自动默认情况下蓄电池字大小决定保持完整的精度。然而,由于我们只有20位为输出设置输出格式的字长20位和一小部分长度为-12。首先,我们必须改变FullPrecisionOverride从真实属性的默认值为false。

杀害多人者。FullPrecisionOverride = false;杀害多人者。OutputDataType =“自定义”;杀害多人者。RoundingMethod =“最近的”;杀害多人者。OverflowAction =“饱和”;杀害多人者。CustomOutputDataType = numerictype ([], -12);

我们可以用信息的方法来查看过滤器的细节。

信息(杀害多人者)
ans = 10 x56 char数组的离散时间冷杉多重速率的过滤器(真正的)“- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -“滤波器结构:直接形式冷杉多相杀害多人者“大量毁灭因素:2“多相长度:32 ' '滤波器长度:63“稳定:是的“线性相位:是的(1型)' ' ' '算术:双

多级过滤器链多频监护系统

现在我们已经设计和量化三个过滤器,我们可以得到整个级联滤波器响应的规范化中投和两个FIR滤波器。再一次,我们使用规范化的大小,以确保反应级联滤波器归一化到0分贝。

如ddc =级联(中投、补偿器、杀害多人者);fvt = fvtool(监护系统“Fs”,Fs_in);fvt。颜色=“白色”;fvt。NormalizeMagnitudeto1 =“上”;fvt。NumberofPoints = 8192 * 3;轴([0 1 -200年10]);%的放大

看看整个滤波器响应满足GSM规范,我们可以覆盖GSM光谱滤波器响应面具。

drawgsmmask;

我们可以看到,我们的整体滤波器响应的约束之内GSM光谱面具。我们还需要确保通带波纹满足要求小于0.1 dB峰。我们可以使用axis命令放大来证明这一点。

轴([0 .09点-0.08 - 0.08]);

事实上,通带波纹是远低于0.1 dB峰GSM要求。

生成硬件描述语言(VHDL)代码

滤波器设计还支持高密度脂蛋白的生成代码如下金宝app所示的对话框。

从滤波器设计以及命令行可以生成硬件描述语言(VHDL)或Verilog代码以及测试长椅硬件描述语言(VHDL)或Verilog文件。同时,你有能力来定制生成的HDL代码通过指定许多选项来满足您的编码标准和指导方针。

然而,这里我们将使用命令行功能生成HDL代码。

现在,我们有了自己的定点、三级多频滤波器会议规格我们准备生成HDL代码。

级联的中投和两个FIR滤波器和生成硬件描述语言(VHDL)。

以避免定点量化数据来自混合器,20位字长,18位的长度,一小部分(S20(18),我们将设置输入单词长度和分数中投长度相同的价值观,S20, 18岁。

%杂环胺=级联(hcic、hcfir hpfir);workingdir = tempname;inT = numerictype (1、20、18);generatehdl(监护系统“InputDataType”inT,“名字”,“过滤”,“开发”,硬件描述语言(VHDL)的,“TargetDirectory”fullfile (workingdir“hdlsrc”));
# # #开始硬件描述语言(VHDL)代码生成过程过滤器:过滤器# # # # 1 # # #级联阶段开始硬件描述语言(VHDL)过滤器的代码生成过程:filter_stage1 # # #生成:< a href = " matlab:编辑(“/ tmp / Bdoc21b_1757077_58267 / tp92e56bd5_0d38_4cf1_9288_99fd51978240 hdlsrc / filter_stage1.vhd ') " > / tmp / Bdoc21b_1757077_58267 / tp92e56bd5_0d38_4cf1_9288_99fd51978240 hdlsrc / filter_stage1。vhd < / > # # # # # #开始代filter_stage1 VHDL的实体开始代filter_stage1硬件描述语言(VHDL)架构# # # # 1:部分积分器# # # # 2:部分积分器# # # # 3:部分积分器# # # # 4:部分积分器# # # # 5:部分积分器# # # # 6节:梳子# # # # 7节:梳子# # # # 8节:梳子# # # # 9节:梳子# # # # 10节:梳子# # #成功完成硬件描述语言(VHDL)过滤器的代码生成过程:filter_stage1 # 2 # # # # # #级联阶段开始硬件描述语言(VHDL)过滤器的代码生成过程:filter_stage2 # # #生成:< a href = " matlab:编辑(“/ tmp / Bdoc21b_1757077_58267 / tp92e56bd5_0d38_4cf1_9288_99fd51978240 hdlsrc / filter_stage2.vhd ') " > / tmp / Bdoc21b_1757077_58267 tp92e56bd5_0d38_4cf1_9288_99fd51978240 / hdlsrc / filter_stage2。vhd < / > # # # # # #开始代filter_stage2 VHDL的实体开始代filter_stage2硬件描述语言(VHDL)架构# # #成功完成硬件描述语言(VHDL)过滤器的代码生成过程:filter_stage2 # # # # 3 # # #级联阶段开始硬件描述语言(VHDL)过滤器的代码生成过程:filter_stage3 # # #生成:< a href = " matlab:编辑(“/ tmp / Bdoc21b_1757077_58267 / tp92e56bd5_0d38_4cf1_9288_99fd51978240 hdlsrc / filter_stage3.vhd ') " > / tmp / Bdoc21b_1757077_58267 tp92e56bd5_0d38_4cf1_9288_99fd51978240 / hdlsrc / filter_stage3。vhd < / > # # # # # #开始代filter_stage3 VHDL的实体开始代filter_stage3硬件描述语言(VHDL)架构# # #成功完成硬件描述语言(VHDL)过滤器的代码生成过程:filter_stage3 # # #生成:< a href = " matlab:编辑(“/ tmp / Bdoc21b_1757077_58267 / tp92e56bd5_0d38_4cf1_9288_99fd51978240 hdlsrc / filter.vhd ') " > / tmp / Bdoc21b_1757077_58267 / tp92e56bd5_0d38_4cf1_9288_99fd51978240 / hdlsrc /过滤器。vhd < / > # # #开始代滤波器硬件描述语言(VHDL)实体# # #开始代滤波器硬件描述语言(VHDL)架构# # #的VHDL代码生成过程成功完成过滤器:过滤器# # # HDL延迟是2样本

高密度脂蛋白在ModelSim仿真软件联合仿真金宝app

验证生成的HDL代码产生相同的结果作为我们的仿真软件模型,我们将使用HDL验证人女士co-simulate HDL代码模型。金宝app我们有一个预构建的仿真软件模型,该模型包金宝app括两个信号路径。一个信号通路产生仿真软件行为模型结果的三级,多重速金宝app率的过滤器。其他路径产生模拟的结果,与ModelSim®,我们生成的硬件描述语言(VHDL)的代码。

open_system (“ddcfilterchaindemo_cosim”);

开始ModelSim仿真软件模型中通过双击按钮。金宝app注意,ModelSim必须安装和系统上的路径。ModelSim会自动编译HDL代码,初始化模拟和波查看器打开。

当ModelSim准备运行仿真软件模型。金宝app这将执行ModelSim和联合仿真自动打开查看结果的时间范围。

使用逻辑分析仪来查看结果。

验证结果

跟踪顶部是激励线性调频信号。下一个信号标记“ref”是参考信号产生的仿真软件行为模型的三级多重速率的过滤器。金宝app跟踪底部贴上“cosim”的范围是ModelSim仿真结果生成的HDL代码的三级多重速率的过滤器。最后跟踪展示了仿真软件的行为模型结果之间的误差和ModelSim仿真的HDL代金宝app码。

总结

我们用几个MathWorks™产品设计和分析一个三级,下载188bet金宝搏多重速率的定点过滤器链的监护系统GSM应用程序。然后我们生成的HDL代码来实现过滤和验证生成的代码通过比较仿真软件行为模型的匹配通过高密度脂蛋白HDL代码模拟在ModelSim女士。金宝app