本文介绍了使用GNU Radio进行FSK解调的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用GNU Radio Companion解调信号.信号是FSK,标记频率和空间频率分别为1200和2200 Hz.
由称为 GeoStamp音频的设备生成的信号文本数据中的数据.该设备实时生成输入到其中的GPS数据的音频,并且还可以解码该音频.我有音频的解码文本版本供参考.

I'm trying to demodulate a signal using GNU Radio Companion. The signal is FSK, with mark and space frequencies at 1200 and 2200 Hz, respectively.
The data in the signal text data generated by a device called GeoStamp Audio. The device generates audio of GPS data fed into it in real time, and it can also decode that audio. I have the decoded text version of the audio for reference.

我已经在GNU Radio中设置了流程图(请参见下文),并且运行时没有错误,但是经过尝试的所有变化,我仍然无法获取数据.所以我有几个问题:
1)流程图的输出应为二进制(1s和0s),以后可以将其转换为普通文本,对吧?
2)以我的方式输入wav音频文件是否正确?
3)如何从解调后的信号中恢复数据-我的流程图中是否丢失了某些内容?

I have set up a flow graph in GNU Radio (see below), and it runs without error, but with all the variations I've tried, I still can't get the data. So I have a few questions:
1) The output of the flow graph should be binary (1s and 0s) that I can later convert to normal text, right?
2) Is it correct to feed in a wav audio file the way I am?
3) How can I recover the data from the demodulated signal -- am I missing something in my flow graph?

这是解调前 的wav音频文件的FFT图:

This is a FFT plot of the wav audio file before demodulation:

这是解调后示波器接收器的结果(可能看起来很有希望吗?):

This is the result of the scope sink after demodulation (maybe looks promising?):

更新(2016年8月2日):我仍在(偶尔)解决此问题,不幸的是仍无法检索数据.结果是一个看起来不错的字符串"1"和"0",但是没有什么可理解的.

UPDATE (August 2, 2016): I'm still working on this problem (occasionally), and unfortunately still cannot retrieve the data. The result is a promising-looking string of 1's and 0's, but nothing intelligible.

如果有人对弄清多相时钟同步"或时钟恢复" MM模块的设置或四路解调"模块的增益有任何建议,我将不胜感激.

If anyone has suggestions for figuring out the settings on the Polyphase Clock Sync or Clock Recovery MM blocks, or the gain on the Quad Demod block, I would greatly appreciate it.

这是基于Marcus的答案的更新流程图的一个版本(也尝试使用多相时钟恢复的其他版本):

Here is one version of an updated flow graph based on Marcus's answer (also trying other versions with polyphase clock recovery):

但是,我仍然无法恢复任何有意义的数据.结果是1和0的长字符串,但不是正确的字符串.我尝试调整所有块中的几乎所有设置.我以为时钟恢复可能已关闭,但是我尝试了很多值,但并没有改善.
还有什么我想念的还是应该改变的?

However, I'm still unable to recover data that makes any sense. The result is a long string of 1's and 0's, but not the right ones. I've tried tweaking nearly all the settings in all the blocks. I thought maybe the clock recovery was off, but I've tried a wide range of values with no improvement.
Is there anything else I'm missing or should change?

推荐答案

因此,乍一看,我的方法如下:

So, at first sight, my approach here would look something like:

这里发生的是,我们获取输入,在频域中对其进行移动,以使标记和空格处于+ -500 Hz,然后使用正交解调.然后,我们可以逻辑上"做出签署决定".我将在这里共享Xlating FIR的配置:

What happens here is that we take the input, shift it in frequency domain so that mark and space are at +-500 Hz, and then use quadrature demod."Logically", we can then just make a "sign decision". I'll share the configuration of the Xlating FIR here:

请注意,首先对信号进行偏移,以使中心频率(介于2200和1200 Hz之间)以0Hz结束,然后通过低通滤波(增益= 1.0,阻带从1 kHz开始,通带以1结尾) kHz-400 Hz = 600 Hz).在这一点上,信号中仍然存在的实际带宽远低于采样率,因此您也可以只进行降采样而不会造成损失(将抽取设置为更高的值,例如16),但是为了分析起见,我们将做到这一点.

Notice that the signal is first shifted so that the center frequency (middle between 2200 and 1200 Hz) ends up at 0Hz, and then filtered by a low pass (gain = 1.0, Stopband starts at 1 kHz, Passband ends at 1 kHz - 400 Hz = 600 Hz). At this point, the actual bandwidth that's still present in the signal is much lower than the sample rate, so you might also just downsample without losses (set decimation to something higher, e.g. 16), but for the sake of analysis, we won't do that.

现在,时间沉应该显示出更好的值.看一下边缘;他们可能不是非常陡峭.因此,对于时钟同步,我建议您只是尝试多相时钟恢复,而不要使用Müller&穆勒;选择任何有点圆"的脉冲形状都可以.

The time sink should now show better values. Have a look at the edges; they are probably not extremely steep. For clock sync I'd hence recommend to just go and try the polyphase clock recovery instead of Müller & Mueller; chosing about any "somewhat round" pulse shape could work.


出于乐趣和傻笑,我一起单击了一个快速演示演示(GRC ):


For fun and giggles, I clicked together a quick demo demod (GRC here):

其中显示:

这篇关于使用GNU Radio进行FSK解调的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!