DC Spike直流峰值

来源:互联网 发布:网络文学评论刊号 编辑:程序博客网 时间:2024/04/27 20:38

原文链接:http://www.ourlove520.com/Article/diannao/wangluo/114721.html


HackRF,BladeRF或其它一些RTL-SDR的使用者在使用一些频谱分析工具进行调频时会看到一个很大的尖峰(Spike)。这个尖峰就被称做DC Spike。(图1中心处的尖峰)


图1 DC Spike

当一些用户第一次看到这些Spike时可能会担心自己的设备是否存在缺陷,在这里可以告诉大家这和你选购的硬件或该硬件所使用的固件并没有任何的关系,只要你使用无线电DC Spike就会与你同在。关于DC Spike,在这https://github.com/mossmann/hackrf/wiki/FAQ你可以看到一些很好的解释。

正如HackRF FAQ当中所描绘的那样,在多数情况下我们是不需要考虑DCSpike的。但是,你如果想要成功地解调你所捕获的信号或捕捉被发射的信号你就需要尽力去保证这个信号是干净的。因此,为了避免受到DC Spike的干扰我们可以使用“DC Offset”来解决此类的问题。我们需要做的就是通过正确的GRC模块将接收频率调至无线电的传输带宽之外。唯一需要注意的是,我们需要选择一个合理的offset将DC Spike移动到传输的信号之外,但同时要保证不要将offset设置过大导致我们不得不使用我们本不需要的带宽。

通常确定如何去配置DC Offset的方法有两种。第一种方法,需要我们对产品手册中的数据进行分析来确定无线电设备的性能。在手册当中你通常可以找到关于信道间隔的标注。简单的来说,信道间隔就是从中心频率到两个不同传输区域之间的距离。借助这个信息我们就可以很好的调整我们的DC Spike。信道间隔和传输的大小没有必然的联系。例如,在观察wifi的信号传输时我们会发现,Wifi虽然有14条信道,但是在无线电适配器的传输当中会有6条信道被吞噬。除此之外,通过频谱分析工具对传输带宽进行观察可以帮助我们调节DCOffset,这也是我们之前提到的两种方法中的第二个。图2就是将信道间隔应用到无线网格网络中实现FHSS很好的一个例子。在GRC FFT当中使用“PeakHold”选项,就可以图中看到DC Spike会出现的位置。


图2

无线电设备会通过设置信道间隔来防止信道之间的相互干扰。默认的信道间隔也会因设备和制造商而异。但幸运的是,因为这些值都是预设的,所以通常我们可以在制造商所提供的文档中找到这些值。如果你无法从产品附属的手册或产品供应商那里获取这些值,你也许可以在,产品源代码或一些专利申请中找到你想了解的参数的值。


图3

如果你找到的文档不全或需要验证信道间隔的值,图形化分析可以帮助确定一个粗略的信道间隔。图3就是通过图形化界面来目测信道间隔很好的例子。其中的蓝色尖峰即为DC Spike,绿色波峰为传输的信号,而用红色标注出来的距离则为频道的大小。其中出现的个传输信号的边缘之间间隔就正好是信道间隔。

GRC当中通常会使用变量模块(variable blocks)来对一些值进行修改。在下面的例子当中我们将使用变量模块来定义信道间隔的值。一旦channel_spacing设定完毕我们就可以在其他模块当中使用我们所设定的值。为了使用信道间隔来控制DC Spike,我们将定义另外一个变量模块freq_offset并让其值等于(channel_spacing / 2) * (channel_spacing * .1)。借助这个公式我们就可以把DC Spike推移到信号的边缘部分。如果我们进一步将此处的1调整到10就可以将DC Spike推移到传输信号之外了(如图4所示)。图5中将告诉大家应该如何去设置相关的osmocom Source。


图4


图5

一旦我们完成了这些模块的配置后,我们将会所对应的区域中看到公式计算厚的结果呈现在其中。被计算后的的结果如图6所示。


图6GRC捕获配置图

最后在图7中可以看到我们已经成功地将DC Spike推移到了传输之外。

图7

一旦DC Spike的问题得到解决,我们就可以在不受它干扰的情况下对信号进行处理了。接下来需要我们去做的就是信号的分离。GRC当中存在两个模块可以帮助我们对信号进行分离。它们分别是Low Pass Filter(LPF)和FrequencyXlating FIR Filter(FXFF)模块。从功能上来将两者能为我们提供的几乎是相同的。但是相对于LPF,FXFF为我们提供了更多的选项可以让我们在分离或对传输的信号进行操作时有一个更好的开始。在这里我们先对LPF做一个简单的介绍。

在LPF的配置当中,第一个可调节选项是Decimation。通过对该值进行调节,我们可以修改即将输入进来的信号的采样率(Sampling Rate)。你会在众多FM解调的GRC例子当中看到Decimation。这个参数的取值通常会和图5中的freq_offset一样由计算公式来完成。虽然使用Decimation在有些信号解调中是需要使用到的,但是在我们这次的例子当中我们不会用到它。所以我们可以让它保持在默认的值“1”,这样就不会对我们的采样率(Sample Rate)有任何的影响。这种做法也能同时保证我们不会去打破采样定理中提到的每一个正弦周期需要进行两次采样的说法。

下一个需要我们去设置的是“Window”这个选项。这个选项的默认值是“Hamming”。但是在Balint Seeber的“Blind signal analysis with GNU Radio”演讲当中他曾经提到我们应该将Window的值设置成“BlackMan”,因为这相对于另外一个来说是更优秀的算法。

在设置完Decimation和Window参数之后,还需要我们设置SampleRate,Cutoff Frequency和Transition Width来完成我们的信号分离。Sample Rate的设置很简单,它是输入采样率并应当和前面所提到的一样被默认的设置成“samp_rate”。这里需要注意的是即使我们使用decimation修改了输出的采样率,Sample Rate应当依旧设置成我们的输入采样率。Cutoff Frequency为我们之前提到的图4中所显示的频道大小。然而频道间隔的设定也应当和我们在之前所提到的一样,应该有同名的变量模块进行设定。

其中最为麻烦的可能就属Transition Width的设定了。在设定这个值之前我们需要做一些测试来给它赋予一个正确的值。更多的经验和调查将会对于你在起初如何设定这个值有很大的帮助。当然这也会取决于中心频率,带宽,无线电设备类型等因素的影响。有些时候传输的信号不会恰好地集中在中心频率。它时常都有可能受到天气,Power,甚至是其它信号的干扰。总而言之,该值的不合理设定可能会导致多余信号的产生,又或者是信号的丢失。根据我们的经验,我们会将该值设定为频道间隔(Channel Spacing)的40%~50%之间的值。在后面我们也会看到这个设定可以为我们带来最好的结果。在图8中我们将使用下述的参数来对LPF进行配置。

Frequency Offset 120,000

Channel Spacing 200,000

Channel Transition 80,000

Window BlackMan


图8

当我们用上述的参数观察我们分离出来的信号时,我们发现我们的信号并没有位于FFT Plot的中心处。然而为了正确地解调信号我们需要把信号移动到FFT Plot的中心处。这里就需要我们使用Frequency Xlating FIRFilter(FXFF)来实现这个操作。

FXFF和我们前面所提到的那样,和LPF有着许多相似之处。所以在这里我们可以将Decimation和Sample Rate设置成与之前在LPF中同样的值。在FXFF当中还有一个叫Center Frequency的变量。这个变量和DC_Offset一样通常用来矫正信号并将其调整到中心处。如果在设置过程当中我们没有使用DC_Offset那么该值应当设置成0,如果不是它的值应当设置成freq_offset。最后一个需要我们去设置的是Taps变量。对于这个变量的设定,我们使用Dragorn在他的博客Playing with the HackRF – Keyfobs中所提到的公式:“ firdes.low_pass(1, samp_rate,channel_spacing, channel_trans, firdes.WIN_BLACKMAN, 6.76) ”。(详见图9)


图9

对于FXFF进行了上述的设定之后我们就可以在图10中看到我们所预期的结果。


图10

使用LPF和FXFF对信号进行分离可以帮助我们更有效的对信号进行解调。Michael Ossmann在他的无线电培训课程当中讲述了从这个点开始应当如何进行解调。在他的课程的当中他不但讲述了相关的概念和数学知识,也告诉了我们为了解调不同的ASK(amplitude-shift key)和FSK(frequency-shifykey)所需要的模块。解调ASK我们可以使用“Complex to Mag” 或“Complex to Mag ^ 2”。然而解调FSK(尤其是2FSK和GFSK)我们可以使用“Quadrature Demod”。



0 0
原创粉丝点击