GNU Radio Companion - 生成 4-QAM 星座 - 怎么做?

信息处理 格努拉迪奥
2022-02-19 13:09:52

我现在正在逐步了解 GNU Radio Companion。我目前正在使用 3.7.13.5。

我只是专注于将一个简单的二进制流放在一起,例如'110100'(重复)......所以它只是'110100110100110100.......'然后看看我是否可以生成一个简单的QAM星座图。

我还不明白为了得到那个 QAM 星座图该怎么做。但我已经采取措施将一些块串在一起——至少只是为了尝试一些东西。

我所做的是使用向量源块,该块设置为值“110100”(并且该块设置为连续“重复”模式)。

然后我有一个 Chunks To Symbol 块,在其中我任意为 Symbol Table [(-0.707 -0.707j), (0.707 -0.707j), (0.707 + 0.707j), (-0.707 + 0.707j) 设置以下值]。

然后我有用于查看星座的 QT GUI Constellation Sink 块。

我知道我想做什么-----但还不知道该做什么。但星座图上至少有四个点(如附图所示)。

请问我需要做什么才能让 Chunks To Symbols 块一次接收两个位,以便将每对位映射到这四个星座点之一?

目前,我只有三个独特的位组合 .... 即 11 和 01 和 00 .... 可以在模式“110100”中看到。所以我只是想让这三个模式出现在星座图上——这应该是星座图上的三个点(而第四点还没有遇到)。

有人可以通过指出 Chunks To Symbols 块的实际工作原理来帮助我吗?目前,如果我有意将位对“11”映射到特定星座点 - 例如 0.707 + j*0.707,那么有没有办法在“块到符号”块设置中创建该定义?

现在,我实际上并不知道 Chunks To Symbols 块如何解释输入数据,以及它如何将各种“块”(我假设是位模式)分配给符号图中的每个星座点。也就是说,这个块是否寻找各种独特的输入模式,并以某种方式将每个独特的输入模式链接到符号映射中的这些值之一?

块到符号

首先十分感谢!我对 GNU Radio Companion 和 GNU Radio 印象深刻!

===============================

更新- 我找到了另一种获取星座图的途径。但是还没有弄清楚如何正确使用它。另一条路径是使用星座对象,在线教程中有此星座的符号图:[0, 1, 3, 2],并且在星座对象块中定义的相应星座点是:[-1-1j, - 1+1j, 1+1j, 1-1j]

但是 - 正如我们所看到的,当我为重复矢量源输入一个值 '3' 时,我在星座图中得到多个点,分布在一条线上,而不是点1+1j周围的点集中关于我需要做些什么才能走上正确的轨道有什么好的建议吗?谢谢!

第二张图片

=====================================

在得到 Marcus 的帮助和他的善意解释后的另一个更新。我对 Chunks To Symbols 块如何工作的理解是这样的。例如,如果符号表的复数顺序为 [-1-1j, -1+1j, 1+1j, 1-1j],则向量源值为“0”、“1”、“2”和“3”(即四个值)将对应于“-1-1j”、“-1+1j”、“1+1j”和“1-1j”(以相同的顺序)。例如,向量值“3”将链接到“1-1j”,而“0”将链接到“-1-1j”。

如果我们希望这些值“0”、“1”、“2”和“3”与不同的复数相关联,那么我们只需在块的符号表部分中更改复数的顺序到符号块(在设置内)。

在 Marcus 的帮助下,并升级到 GNU Radio Companion 3.8 ---- 我现在的星座图与 Chunks To Symbols 块一起正常工作。在这里,我创建了一个包含四个“3”的向量,然后是四个“1”。所以星座图绘制了四次1-1j,然后绘制了四次-1-1j。我们只看到两个点,因为 1-1j 和 -1-1j 都被绘制了四次。

好好工作

此外,将主题更改为另一种方法 - 涉及'星座对象' 用于生成星座图的块----我现在知道为什么我会在一条线上分布点。我注意到,如果我有一个重复输出值“3”的向量源,这意味着输出一个 3,然后是另一个 3,然后是另一个 3 等等......然后关联的复数值(分配给Constellation's Symbol Map 中的 3')——比如 1+1j(这是预期的),但下一个绘制点不会是 1+1j(与下一个 '3' 相关联)。相反,星座绘图仪似乎跳回了相同的初始起点。因此,星座绘图仪不会绘制多个 1+1j 的点,而是不断跳回到初始起点(始终是相同的起点 - 在本例中为 -1-1j - 这是星座中的第一个值)s Symbol Map) 在绘制下一个“预期”复数值之前。我还不知道它为什么会那样做。这也是我需要更多帮助的地方!再次感谢!

1个回答

然后我有一个 Chunks To Symbol 块,在其中我任意为 Symbol Table [(-0.707 -0.707j), (0.707 -0.707j), (0.707 + 0.707j), (-0.707 + 0.707j) 设置以下值]。

对我来说听起来很明智

请问我需要做什么才能让 Chunks To Symbols 块一次接收两个位,以便将每对位映射到这四个星座点之一?

块到符号一次接受一个项目您需要在该项目中添加适合您的用例的尽可能多的位。

您可以通过将 {0,1,2,3} 中的值放入向量源中来做到这一点,例如 [0, 2, 3, 1, 0]。

或者,您可以使用Unpacked to Packed将“每项一位”流转换为“每项两位” 。

有人可以通过指出 Chunks To Symbols 块的实际工作原理来帮助我吗?目前,如果我有意将位对“11”映射到特定星座点 - 例如 0.707 + j*0.707,那么有没有办法在“块到符号”块设置中创建该定义?

如前所述,您需要将这两个位放入您提供给该块的单个项目中。

该块实际上只是一个查找表——它接受一个输入项,并将其用作您输入的符号向量的索引。


我在评论中说过,但让我重复一遍:

GNU Radio 有教程和一个活跃的社区。但是:到目前为止,这两件事都已转移到 GNU Radio 3.8 或 3.9 上。如果您有一个仍然在 3.7 上运行的大型旧版 GNU Radio 系统,那很好,这就是我们仍然拥有旧版 3.7 维护范围的原因。但是,学习 GNU Radio,你真的不应该坚持这样的传统——这真的是有问题的。依靠 Python2 之类的东西,GNU Radio 3.7 根本不可能合理地移植到现代系统。这就是我们必须发布 3.8 的原因;请不要从现在开始使用 GNU Radio 3.7 将自己置于死胡同。

你说你有 GNU Radio 3.7.13.5,它比 debian stable 中的更新。所以,你不在那个。如果您可以将您的 Linux Distro(或 BSD)更新到较新的版本,您可能会获得 GNU Radio 3.8 或 3.9 开箱即用。在 Windows 或 OS X 上,我推荐使用 anaconda 作为安装方法,也非常流畅且无需手动构建。