主要内容

FRS / gmr步话机接收机与USRP®硬件

这个例子展示了如何使用通用软件无线电外围®(USRP®)设备与MATLAB®实现步话机接收器。特定的无线电标准,这个例子遵循FRS / gmr(家庭广播服务/通用移动无线电服务)与CTCSS(连续Tone-Coded压制系统)。你可以传递一个信号接收器使用商用对讲机设备来实现。

为了运行这个例子,您需要一个USRP®板和一个适当的接收子板支持462 - 467 MHz频带超高频(例如,WBX)。万博1manbetx请参考的设置和配置部分文档USRP®收音机有关配置主机与SDRu接收机系统对象™。

这个例子的目的是与美国FRS / gmr操作标准。可以找到这些标准的技术规格(1]和[2]。运行在其他国家可能会或可能不会工作。

概述

请参考FRS / gmr步话机发射机与USRP®硬件一般信息的示例和详细概述。注意所有的信息,部分适用于这个例子中,除了这个例子是用来接收信号,而不是发送它们。

同时,请参考模型®的模型万博1manbetxFRS / gmr步话机接收机与USRP®硬件系统的框图视图的例子。

发现收音机

发现电台(s)连接到你的电脑。这个示例使用第一个USRP®电台发现使用findsdru函数。检查收音机是否可用和记录收音机类型。如果没有发现可用的无线电系统的示例使用一个默认的配置,但不主循环运行。

connectedRadios = findsdru;如果strncmp (connectedRadios .Status (1),“成功”7)radioFound = true;平台= connectedRadios (1) .Platform;开关connectedRadios (1) .Platform情况下{“B200”,“B210”}地址= connectedRadios (1) .SerialNum;情况下{“N200 / N210 / USRP2”,“×”,“X310”,“N300”,“N310”,“N320 / N321”}地址= connectedRadios (1) .IPAddress;结束其他的radioFound = false;地址=“192.168.10.2”;平台=“N200 / N210 / USRP2”;结束
检查无线连接…

初始化

getParamsSdruFRSGMRSRxDemo.m函数初始化一些模拟参数和生成一个结构,frsRx。这种结构的字段是FRS / gmr接收机系统的参数。

%配置示例接收12 CTCSS代码5频道%检测阈值为0.1。频道= 12;CTCSSCode = 5;detectionThreshold = 0.1;frsRxParams = getParamsSdruFRSGMRSRxDemo(平台、通道、CTCSSCodedetectionThreshold)
frsRxParams =结构体字段:RadioMasterClockRate: 20000000 RadioSampleRate: 200000 RadioGain: 5 RadioDecimationFactor: 100 RadioFrameLength: 4000 ChannelFilter: [1×1 dsp。FIRFilter] ChannelFilterNumerator:[1×33双]FrequencyDeviation: 2500 DecimationFactor: 25 DecimationNumerator:[1×600双]AudioSampleRate: 8000 AudioFrameLength: 160频道:12 CTCSSCode: 5 DetectionThreshold: 0.1000 CTCSSDecodeBlockLength: 4000 CTCSSToneFrequencies:[38×1双]GoertzelCoefficients:[38×1双)AudioFilter:(1×1 dsp。FIRFilter] StopTime: 10 RadioFrameTime: 0.0200

FRS / gmr接收机

FRS / gmr接收机例子曲调USRP®董事会接受指定的中心频率通道选择。脚本适用于自动增益控制(AGC)和FM解调接收到的信号。CTCSS音调译码器将解调信号传递到一个音频设备如果收到代码匹配选中的代码。

AGC和通道的选择性过滤器

自动增益控制一个变量获得适用于接收到的信号以确保接收到的信号幅度是在一个已知水平。在这个例子中,步话机发射机可能附近USRP®,这意味着接收信号不应遭受衰落,和接收的信噪比(信噪比)应该很高。在实践中,接收到的信号可能会遭受衰落和低信噪比。

agc = comm.AGC;

这个脚本使用一个低通通道分离滤波器来减少相邻信道的信号。相邻通道是25千赫之间的差距,这意味着基带带宽是最多12.5 kHz。因此,我们选择的截止频率10 kHz。创建一个实现了冷杉的数字滤波器系统对象传递函数和分子属性设置为指定的值在frsRx结构。

channelFilter = frsRxParams.ChannelFilter;

接下来,一个通道选择器计算过滤信号的平均功率。如果它是大于一个阈值(默认设置为10%),频道选择器确定收到正确的信号通道和它允许信号通过。在一个带外信号的情况下,尽管通道分离滤波器可以减少它的大小,它仍然是调频调制和调制信号调频解调后将出现。完全拒绝这样一个信号,该频道选择器输出为零。

调频解调和大量毁灭

下面的例子使用了调频解调器基带系统对象的采样率和最大频率偏差将200 kHz和2.5 kHz,分别。

fmDemod = comm.FMDemodulator (“SampleRate”frsRxParams.RadioSampleRate,“FrequencyDeviation”,frsRxParams.FrequencyDeviation);

大量毁灭滤波器转换8 kHz的采样率。这个速度是本地主机的抽样率输出音频设备。使用一个冷杉杀害多人者系统对象将200 kHz信号转换成一个8 kHz信号。25日,设置大量毁灭因素和分子frsRx结构中指定的值。

杀害多人者= dsp.FIRDecimator (frsRxParams.DecimationFactor,frsRxParams.DecimationNumerator);

连续Tone-Coded压制系统(CTCSS)

CTCSS [3)译码器计算每个CTCSS单音频率的电力使用Goertzel写到算法(4)和输出代码最大的力量。Goertzel写到算法提供了一种有效的方法来计算频率成分按预定频率,即。,语气代码所使用的频率FRS / gmr。

脚本比较估计收到的代码与预选的代码,然后将信号发送到音频设备如果两个编码匹配。当预选的代码为零,它表明你没有压制系统使用和决定阻止通过信号通道的音频设备无论使用哪个代码。

解码器= FRSGMRSDemoCTCSSDecoder (“MinimumBlockLength”frsRxParams.CTCSSDecodeBlockLength,“SampleRate”,frsRxParams.AudioSampleRate);

音频输出

高通滤波器的截止频率260赫兹,过滤掉CTCSS音调,最多250赫兹的频率。使用音频设备作家系统对象接收到的信号通过玩你电脑的扬声器。如果你没有听到任何声音,请选择另一个设备使用音频设备的设备属性作家对象,audioPlayer。

audioFilter = frsRxParams.AudioFilter;audioPlayer = audioDeviceWriter (frsRxParams.AudioSampleRate);

接收器的配置对象

脚本与USRP®董事会使用SDRu接收机系统对象。B200 B210系列USRP®使用序列号而USRP2收音机得到解决,N200) N210,×和X310无线电解决使用IP地址。

%设置广播对象使用发现收音机开关平台情况下{“B200”,“B210”}= comm.SDRuReceiver(电台“平台”、平台“SerialNum”、地址、“MasterClockRate”,frsRxParams.RadioMasterClockRate);情况下{“×”,“X310”}= comm.SDRuReceiver(电台“平台”、平台“IPAddress”、地址、“MasterClockRate”,frsRxParams.RadioMasterClockRate);情况下{“N200 / N210 / USRP2”}= comm.SDRuReceiver(电台“平台”、平台“IPAddress”、地址);情况下{“N300”,“N310”}= comm.SDRuReceiver(电台“平台”、平台“IPAddress”、地址、“MasterClockRate”,frsRxParams.RadioMasterClockRate);情况下{“N320 / N321”}= comm.SDRuReceiver(电台“平台”、平台“IPAddress”、地址、“MasterClockRate”,frsRxParams.RadioMasterClockRate);结束

设置主时钟频率和大量毁灭因素获得200 kHz的采样率SDRu接收机的输出对象。例如,对于一套B210广播,MasterClockRate 20 MHz, DecimationRate 100。N200灯、N210和USRP2收音机主在100 MHz时钟频率是固定的。200 kHz的采样率使我们能够使用一个简单的大批杀害过滤器将200千赫至8 kHz的采样率。帧长度控制样本的数量在SDRu接收机的输出,自动增益控制的输入。帧的长度必须是一个整数倍数的大量毁灭的因素,这是25。设定帧长度为4000个样本。选择输出数据类型单一,减少所需的内存,加快执行。设置中心频率源输入端口和5 dB的增益。注意,X3xx系列收音机,这些数字可能会有所不同,与有效的无线电硬件值相匹配。

收音机。CenterFrequencySource =输入端口的;收音机。获得= frsRxParams.RadioGain;收音机。DecimationFactor = frsRxParams.RadioDecimationFactor;收音机。SamplesPerFrame = frsRxParams.RadioFrameLength;收音机。OutputDataType =“单一”;%显示SDRu接收器对象广播
无线电= comm.SDRuReceiver属性:平台:“B210”SerialNum:“30 f59a1”ChannelMapping: 1 LocalOscillatorOffset: 0获得:5 PPSSource:“内部”ClockSource:“内部”MasterClockRate: 20000000 DecimationFactor: 100 TransportDataType:“int16”OutputDataType:“单一”SamplesPerFrame: 4000 EnableBurstMode:假的

运行这个例子

打开你的步话机,设置通道5到12和私人代码。中心频率选择的频道数的函数。

%的载波频率选择的通道fc = convertChan2FreqFRSGMRSDemo (frsRxParams.Channel);

流处理循环

捕捉FRS / gmr信号和解调10秒,这是由frsRx.StopTime规定。SDRu对象返回一个列向量,x。,因为MATLAB脚本可以运行速度比硬件,实际大小的对象也返回x的有效数据使用第二个输出参数,莱恩。如果len是零,那么就没有新数据的解调处理代码。

检查的状态USRP®收音机

如果radioFound%循环直到到达目标停止时间的例子。timeCounter = 0;timeCounter < frsRxParams。StopTime[数据,len] =步骤(广播、fc);如果len > 0% AGC和通道选择性outAGC =步骤(agc、数据);outChanFilt =步骤(channelFilter outAGC);rxAmp =意味着(abs (outChanFilt));如果rxAmp > frsRxParams。DetectionThreshold x = outChanFilt;其他的复杂(单(x = 0 (frsRxParams。RadioFrameLength, 1)));结束%调频解调器和大量毁灭y =步骤(fmDemod x);outRC =步骤(杀害多人者,y);% CTCSS译码器rcvdCode =步骤(解码器,outRC);如果(rcvdCode = = frsRxParams.CTCSSCode) | | (frsRxParams。CTCSSCode = = 0) rcvdSig = outRC;其他的rcvdSig =单(0 (frsRxParams。AudioFrameLength, 1));结束%输出音频设备audioSig =步骤(audioFilter rcvdSig);步骤(audioPlayer audioSig);timeCounter = timeCounter + frsRxParams.RadioFrameTime;结束结束其他的警告(消息(“sdru: sysobjdemos: MainLoop”))结束

释放音频、调频解调器基带和USRP®资源。

释放(fmDemod);释放(audioPlayer);释放(电台);

结论

在本例中,您使用通信工具箱™系统对象建立一个FRS / gmr接收机利用USRP®设备。这个例子表明,MATLAB脚本可以处理的信号被USRP®设备实时。

进一步的探索

CTCSS解码计算DFT(离散傅里叶变换)的输入信号使用Goertzel写到音调频率算法和计算能力。自从音调频率非常接近对方(相距3 - 4赫兹)DFT的块长度应足以提供足够的分辨率进行频率分析。然而,长块长度导致解码延迟。例如,一个块长度16000会造成2秒的延迟,因为亚音频解码器操作在一个8 kHz的采样率。这将创建一个检测性能和处理延迟之间的权衡。最优块长度可能取决于质量的发射机和接收机、发射机和接收机之间的距离,和其他因素。你鼓励改变块长度在初始化函数中通过导航到getParamsSdruFRSGMRSRxDemo功能和改变CTCSSDecodeBlockLength字段的值。这将使您能够遵守权衡,找到你的发射机/接收机对最优值。

附录

本例中使用以下函数。

引用

版权声明

通用软件无线电周边®和USRP®是国家仪器公司的商标。