初级教程(2)流程图基础6-打包位 (Packing Bits)

6.打包位 (Packing Bits)

本教程介绍如何使用Pack K Bits模块将位打包为字节,以及如何使用Unpack K Bits模块将字节解包为位。

之前的教程, 转换数据类型,描述了charbyte数据类型以及如何在数据类型之间进行转换。下一个教程Streams and Vectors描述了流和向量之间的区别以及如何在流程图中使用它们。

目录

启动Packing Bits流程图

将位打包成一个字节对于表示二进制数据(与数字化 RF 样本相反)以及使用调制器块时很有用:Constellation ModulatorGFSK ModOFDM Transmitter。创建一个新的流程图并将Random Source块添加到工作区:

AddRandomSourceToWorkspace.png


单击随机源当以浅蓝色勾勒出轮廓时,它被选中:

选择随机源块.png


UPDOWN键循环选择不同的数据类型,直到选择字节数据类型,用紫色输出端口颜色表示:

ChangeRandomSourceToByte.png


随机源生成最小值为Minimum到最大值为Maximum-1的字节。在这种情况下,Minimum = 0Maximum = 2,因此它将创建二进制01。Pack K Bits块用于将多个位并行化或打包为单个字节以表示更大的二进制值。

ThrottlePack K BitsChar to FloatQT GUI Histogram Sink块添加到流程图并连接它们:

PackBitsStartingFlowgraph.png

解释Packing k Bits块

Pack K Bits块获取K位并通过首先填充最低有效位 (LSB) 将它们放入一个字节中。

对于这个例子K=4随机源将首先生成位0这将由Pack K Bits接收,然后存储在 LSB 中:[0 0 0 0 0 0 0 B 0 ]

Pack K Bits生成的第二个比特是1,然后由Pack K Bits根据:[0 0 0 0 0 0 B 1 B 0 ]

按照这种趋势,接下来的位23将存储为:[0 0 0 0 B 3 B 2 B 1 B 0 ]

下图演示了该块的工作原理:

PackingBitsExample.png


由于已打包K=4位,字节0000B 3 B 2 B 1 B 0将作为输出产生,并开始一个新字节。字节的十进制输出值(基数为 10)为:= (B 3 *2 3 ) + (B 2 *2 2 ) + (B 1 *2 1 ) + (B 0 *2 0 )= (B 3 *8) + (B 2 *4) + (B 1 *2) + (B 0 )

例如,如果:

  • 0 = 0
  • 1 = 1
  • 2 =0
  • 3 = 1

该字节将由00001010表示,十进制值为:

8 + 0 + 2 + 0 = 10

完成Pack K Bits 流程图

编辑Pack K Bits的属性:

  • 克:4
Pack4Bits.png


四位产生从0 =14 -1=15 的数字。编辑顶部QT GUI 直方图接收器属性并更改以下内容:

  • 标题:4位
  • 箱数:1024
  • 最大 x 轴:16
HistogramSink4Bits.png

四位产生从0 =14 -1=15 的数字。编辑底部QT GUI Histogram Sink属性并更改以下内容:

  • 标题:1位
  • 箱数:1024
  • 最大 x 轴:16
HistogramSink1Bit.png

流程图应如下所示:

PackBitsFinalFlowgraph.png


运行流程图。1位直方图显示01的值,而4 位直方图显示015的值:

直方图4Bits1Bit.png

Unpacking Bits

解包将一个字节序列化为一串位将Unpack K Bits模块添加到工作区并将其连接在Pack K Bits模块和Char to Float模块之间。编辑Unpack K Bits块属性并输入K: 4

UnpackBitsFlowgraph.png


运行流程图。1 位直方图显示打包的 4 位被解包(序列化)回值01

直方图UnpackBits.png


解包首先从LSB开始,然后进行到最高有效位 (MSB)。从前面的示例中,Pack K Bits产生了一个字节,其位为0000B 3 B 2 B 1 B 0。Unpack K Bits块首先产生一个带有位0的输出,然后是123,字节中剩下的 4 个 4 个零被忽略。

Unpack K Bits块完美地反转了Pack K Bits输入流的操作。这可以通过添加带有两个输入的QT GUI Time Sink块来验证:

TwoInputsTimeSink.png


连接块:

PackUnpackFlowgraph.png


QT QUI Time Sink显示输出:

PackUnpackTimeSink.png


鼠标左键单击并拖动较小的部分以放大:

ClickAndDragTimeSink.png


这两个图完全重叠。Pack K Bits块的输入与Unpack K Bits块的输出完全相同。这演示了Pack K BitsUnpack Bits如何执行完美的逆运算。

PackUnpackTimeSinkZoom.png

下一个教程Streams and Vectors描述了流和向量之间的区别以及如何在流程图中使用它们。

发表回复 0

Your email address will not be published. Required fields are marked *