主要内容

家庭无线电服务的数字上下转换

本实例展示了如何使用数字上变频器(DUC)和数字下变频器(DDC)系统对象来设计一个家庭无线电业务(FRS)发射机和接收机。这些对象提供了设计插值/抽取滤波器的工具,并简化了实现上/下转换过程所需的步骤。这个例子说明了MATLAB®和Simulink®的实现。金宝appMATLAB版本使用System对象用于DUC和DDC,而Simulink版本使用block用于DUC和DDC。金宝app在这两个版本中,语音信号被用作输入,传输后的信号被回放。

FRS是一种改进的对讲机调频无线电系统,自1996年在美国授权。这种个人无线电业务使用超高频(UHF)波段的信道化频率。在FRS波段运行的设备必须根据FCC规则第95部分B部分“家庭无线电服务”(章节95.191至95.194)授权。FRS信道的授权带宽为12.5 KHz,信道间的中心频距为25 KHz。

介绍

这个例子讨论了通过FRS信道传输的信号的数字上转换,以及来自FRS无线电发射机的信号的下转换。

8千赫的语音首先被重新采样到50千赫。发射机的DUC向上转换信号从50 KHz到2 MHz,并将信号转换到中频455 KHz。

接收器有一个模拟前端,将接收到的信号带到中频455 KHz。然后以2mhz的频率采样信号。接收机的DDC将信号带回基带,采样率为50 KHz。这又回到了8千赫的语音范围。

数字上变频器设计

通过创建DUC System对象来设计数字上变频器。DUC对象由三个插值滤波器的级联和一个将插值信号向上转换为指定的通频带频率的振荡器组成。下面将显示DUC对象的框图。

DUC对象提供了定义插值滤波器的选项。例如,您可以使用正弦波发生器或数字控制振荡器来设计振荡器。下面的部分展示了为FRS发射机设计插值滤波器的不同选项。

插值滤波器的设计

DUC对象采用三个滤波阶段实现插值滤波器。当DUC对象在内部设计滤波器时,第一级由半带或低通滤波器组成,第二级由CIC补偿器组成,第三级由CIC插补滤波器组成。DUC对象允许您指定几个定义三个滤波器级联响应的特性,包括通带和阻带频率、通带纹波和阻带衰减。

最小阶滤波器设计

默认情况下(当MinimumOrderDesign属性设置为true) DUC对象使用您提供的通带和阻带规格获得最小阶插值滤波器设计。

对于这个FRS示例,您必须将传输信号从50 KHz采样到2 MHz。这就产生了一个插值因子40。DUC对象自动分解插值值,使第一滤波级插值2,第二滤波级插值2,CIC滤波器插值10。

FRS通道双面带宽为12.5 KHz。设置带宽特性的DUC对象为12.5 KHz,从而插值滤波器级联响应的通频带频率为12.5e3/2 = 6.25 KHz。

将通带纹波设置为0.05 dB,以避免FRS信号失真。将阻带衰减设置为60db。

默认情况下(当StopbandFrequencySource属性设置为“Auto”)DUC对象将级联响应的截止频率设置为大约25khz的输入奈奎斯特速率。该对象还将阻带频率设置为2Fc-Fpass = 2*25e3 - 12.5e3/2 = 43.75 KHz,其中Fc是截止频率,Fpass是通频带频率。在这种情况下,DUC对象尽可能地放松阻带频率,以允许级联响应过渡带内的一些插值副本能量为代价获得最低的滤波器阶数。当您的优先级是最小化过滤顺序时,这种设计折衷很方便。

DUC = dsp。DigitalUpConverter (...“SampleRate”, 50 e3,...“InterpolationFactor”现年40岁的...“带宽”, 12.5 e3,...“PassbandRipple”, 0.05,...“StopbandAttenuation”、60);

可视化抽取滤波器的级联响应使用fvtoolvisualizeFilterStages方法。指定算术为“双”使滤波系数和运算具有双重精度。

fvt = fvtool (DUC,“算术”“双”);

fvt = visualizeFilterStages(DUC,“算术”“双”);

的方法获得设计的过滤器的顺序getFilterOrders方法。

s = getFilterOrders (DUC);s.FirstFilterOrder
ans = 10
s.SecondFilterOrder
ans = 12

FRS信道分离为25khz。大多数商用FRS无线电提供50分贝或更高的相邻信道抑制(ACR)。显然,上面设计的抽取滤波器的级联响应在25 KHz时不能达到50 dB的衰减。解决这个问题的一个可能的方法是,在信号通过DUC对象之前,使用具有所需过渡宽度和阻带衰减的低通滤波器对基带FRS信号进行滤波。另一种解决方案是设置DUC对象,使其设计的级联响应具有较窄的过渡带宽,以满足所需的光谱掩模。要设计一个具有较窄过渡带宽的整体滤波器响应,设置StopbandFrequencySource财产“属性”StopbandFrequency属性设置为所需的值。

设计滤波器使级联响应在相邻FRS信道的通带边缘有一个阻带频率,即在25e3-12.5e3/2 = 18.75 KHz。设置StopbandAttenuation属性为60db,以实现60db ACR。

DUC。StopbandFrequencySource =“属性”;DUC。StopbandFrequency = 18.75 e3;DUC。StopbandAttenuation = 60;close(fvt) fvt = fvtool(DUC,“算术”“双”);

获取过滤命令

s = getFilterOrders (DUC);s.FirstFilterOrder
ans = 23
s.SecondFilterOrder
ans = 7

新的级联响应在25 KHz时达到60 dB衰减,即在相邻FRS通道的中心。第一级滤波器(低通插值器)的阶数从10增加到23。但是要注意,第二级滤波器(CIC补偿器)的阶数从12降到7。由于第一级响应具有较窄的带宽,第二级阻带可以放宽到第一级滤波器的第一个副本的左阻带的边缘。由于第二过滤阶段以较高的速率运行,这是一个非常方便的降阶。

控制过滤命令

在某些情况下,过滤顺序是主要的设计约束。设置MinimumOrderDesign属性为false以设计具有特定顺序的插值滤波器。在此配置中,您仍然可以指定所需的通频带和阻频带频率。滤波器的阶数控制级联响应的阻带衰减和纹波。

为满足第一过滤阶段最大20个系数的约束,设置FirstFilterOrder属性到20。设置SecondFilterOrder房产数量为7,CIC section数量为4。

保留一份最低订购量的设计图,以便我们以后使用%这个例子。DUCMinOrder =克隆(DUC);%指定过滤顺序并可视化级联响应。DUC。MinimumOrderDesign = false;DUC。FirstFilterOrder = 20;DUC。SecondFilterOrder = 7;DUC。NumCICSections = 4;close(fvt) fvt = fvtool(DUC,“算术”“双”);

新设计降低了一阶滤波器的阻带衰减和通带纹波。

振荡器的设计

使用振荡器属性以选择对象用于执行频率上转换的振荡器类型。将属性设置为“正弦波”利用三角函数的样本从正弦曲线中得到一个振荡器信号。或者,将属性设置为“甲”因此,该对象设计了一个数控振荡器。将振荡器的中心频率设置为中频455 KHz。

DUC。振荡器=“正弦波”;DUC。CenterFrequency = 455年e3;

数字下变频设计

你可以通过创建DDC System对象来设计一个数字下变频(DDC)。DDC System对象由一个振荡器组成,该振荡器将输入信号从特定的通频带频率向下转换为0hz。目标向下采样下转换信号使用一个级联的三个抽取滤波器。下面的框图显示了DDC对象。

在DUC的情况下,DDC对象为定义抽取滤波器提供了不同的选项。例如,您可以使用正弦波发生器或数字控制振荡器来设计振荡器。或者,您可以提供一个振荡器信号作为输入。

设计大量毁灭过滤器

DDC对象使用三个滤波阶段来实现抽取。当该对象在内部设计滤波器时,第一级由CIC抽取器组成,第二级由CIC补偿器组成,第三级由半带或低通抽取滤波器组成。在DUC的情况下,DDC对象允许您指定定义三个滤波器级联响应的特性,包括通带和阻带频率、通带纹波和阻带衰减。

设计最小阶抽取滤波器以接收以中频455 KHz为中心的FRS信号。抽取信号40向下采样它从2 MHz到50 KHz。设置StopbandFrequencySource财产“属性”和阻带衰减到60db,设计一个级联响应,达到60db的ACR。

DDCMinOrder = dsp。DigitalDownConverter (...“SampleRate”2 e6,...“DecimationFactor”现年40岁的...“带宽”, 12.5 e3,...“PassbandRipple”, 0.05,...“StopbandAttenuation”现年60岁的...“StopbandFrequencySource”“属性”...“StopbandFrequency”, 18.75 e3,...“CenterFrequency”455年e3);

分析小数滤波器的响应,验证级联响应在25 KHz达到60 dB的衰减。注意DDC是如何将第二级(CIC补偿器)的响应放松到第三级(低通小数部分)的第一个别名的左阻带的边缘以最小化顺序的。

fvt = visualizeFilterStages(DDCMinOrder,“算术”“双”);

类似于DUC的情况,您可以通过设置MinimumOrderDesign属性为false。

MATLAB处理循环

FCC Part 95规定FM调制的最大频率偏差为2.5 KHz,最大音频频率为3.125 KHz。对音频信号进行频率调制以获得FRS基带信号(该信号不包括消音音)。上转换和下转换基带FRS信号使用DUC和DDC对象,使用最小阶滤波器在前几节中设计。解调信号并使用音频播放器播放。

初始化模拟参数close(fvt) Fs = 50e3;frameLength = 1000;maxAudioFrequency = 3.125 e3;% FRS无线电允许的最大音频频率deltaF = 2.5 e3;% FRS无线电允许的最大频率偏差freqSensitivityGain = deltaF * 2 *π/ Fs;% K = FD / *(2 *π* Ts)ModulationFilter = dsp。IIRFilter (“分子”, 1“分母”[1]);DemodulationDelay = dsp.Delay (1);audioReader = dsp。AudioFileReader (“speech_dft_8kHz.wav”...“PlayCount”3,“SamplesPerFrame”, frameLength);SRCTx = dsp。SampleRateConverter (“InputSampleRate”, audioReader。SampleRate,...“OutputSampleRate”Fs,“带宽”6.25 e3);SRCRx = dsp。SampleRateConverter (“InputSampleRate”Fs,...“OutputSampleRate”, audioReader。SampleRate,“带宽”6.25 e3);audioWriter = audioDeviceWriter (“SampleRate”8 e3);DUCMinOrder。CenterFrequency = 455年e3;basebandSignalSpectrum = dsp。简介(...“SampleRate”Fs,“ShowLegend”,真的,...“ChannelNames”, {“基带输入”下转换输出的},...“SpectralAverages”10“标题”“基带信号的功率谱”);upConvertedSignalSpectrum = dsp。简介(...“SampleRate”, Fs * DUCMinOrder。InterpolationFactor,...“SpectralAverages”10“标题”“DUC后信号的功率谱”);

流数据

~结束(audioReader)%输入语音信号audioIn = audioReader ();%重新取样audioIn_200kHz = SRCTx (audioIn);%调频调制xFMBaseband = exp(1j * freqsensiitygain * ModulationFilter(audioIn_200kHz));%了转换xUp = DUCMinOrder (xFMBaseband);upConvertedSignalSpectrum (xUp);%下转换xDown = DDCMinOrder (xUp);basebandSignalSpectrum ([xFMBaseband xDown]);% FM解调audioOut_200kHz = angle(解调延迟(xDown) .* conj(xDown));%重新取样audioOut = SRCRx (audioOut_200kHz);%播放音频audioWriter (audioOut);结束%的清理释放(audioReader);释放(SRCTx);释放(ModulationFilter);释放(DUCMinOrder);释放(DDCMinOrder);释放(DemodulationDelay);释放(SRCRx);释放(basebandSignalSpectrum);释放(upConvertedSignalSpectrum);

金宝app仿真软件版本

可以在Simulink中使用金宝app数字变频技术数字上升变换器块。这在模型中实现familyRadioServiceExample.slx.当模拟运行时,您可以收听输入语音信号或使用模型中的开关处理后的信号。

open_system (“familyRadioServiceExample”);open_system (“familyRadioServiceExample /数据流子系统”);

在Simulink中使用数据流金宝app

通过将dataflow子系统的Domain参数设置为dataflow,可以将此示例配置为使用数据驱动执行。使用数据流,域内的块根据数据的可用性执行,而不是Simulink的示例时间。金宝app金宝appSimulink自动地将系统划分为并发线程。这种自动划分加速了模拟并增加了数据吞吐量。要了解关于数据流的更多信息以及如何使用多个线程运行此示例,请参见使用数据流域的多核执行

结论

在本例中,您使用DUC/DDC系统对象为FRS发射机和接收机设计了一个数字上下转换器。该示例探索了DUC/DDC对象为设计插值和抽取滤波器提供的不同选项。该示例还探索了DDC/DUC对象中可用的筛选器分析工具,如visualizeFilterStagesfvtool,getFilterOrders方法。还对金宝app配置的Simulink实现进行了建模。

本例中设计的DUC/DDC对象使用双精度滤波系数和双精度算法操作。看到数字下变频的设计与分析例如,如果您对设计一个使用定点输入操作的DUC或DDC感兴趣。

close_system (“familyRadioServiceExample”, 0);