Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

Extract Bits

输出从输入信号选择的连续位

  • 库:
  • Simulink / Logic and Bit Operations

    HDL Coder / Logic and Bit Operations

  • Extract Bits block

说明

Extract Bits 模块允许您从输入信号的存储整数值中输出选择的连续位。使用 Bits to extract 参数定义选择输出位的方法。

  • 选择 Upper half 输出一半的输入位,其中包含最高有效位。如果输入信号中有奇数数量的位,则按以下方程计算输出位数

    number of output bits = ceil(number of input bits/2)
  • 选择 Lower half 输出一半的输入位,其中包含最低有效位。如果输入信号中有奇数数量的位,则按以下方程计算输出位数

    number of output bits = ceil(number of input bits/2)
  • 选择 Range starting with most significant bit 以输出一定数量的输入信号最高有效位。在 Number of bits 参数中指定要输出的最高有效位数。

  • 选择 Range ending with least significant bit 以输出一定数量的输入信号最低有效位。在 Number of bits 参数中指定要输出的最低有效位数。

  • 选择 Range of bits 以在 Bit indices 参数中指定要输出的输入信号的一系列连续位。您需要以 [start end] 格式指明范围,而输入位的索引将从 0(最低有效位)开始连续标记。

仿真期间,此模块不会报告溢出绕回警告。要报告这些警告,请参阅 Simulink.restoreDiagnostic 参考页。但此模块会报告由于溢出绕回而导致的错误。

端口

输入

全部展开

输入信号,指定为标量、向量、矩阵或 N 维数组。浮点输入通过模块时保持不变。boolean 输入被视为 uint8 信号。

注意

对有符号整数执行位运算非常困难。要解决这个难题,您可以将输入的数据类型转换为无符号整数类型。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

输出

全部展开

提取的连续选择的位,指定为标量、向量、矩阵或 N 维数组。浮点输入通过模块时保持不变。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

参数

全部展开

选择用于从输入信号中提取位的方法。

假定有一个输入信号以二进制格式表示为 110111001

  • 如果您为 Bits to extract 参数选择 Upper half,则输出为二进制 11011

  • 如果您为 Bits to extract 参数选择 Lower half,则输出为二进制 11001

  • 如果您为 Bits to extract 参数选择 Range starting with most significant bit,并为 Number of bits 参数指定 3,则输出为二进制 110

  • 如果您为 Bits to extract 参数选择 Range ending with least significant bit,并为 Number of bits 参数指定 8,则输出为二进制 10111001

  • 如果您为 Bits to extract 参数选择 Range of bits,并为 Bit indices 参数指定 [4 7],则输出为二进制 1011

编程用法

模块参数:bitsToExtract
类型:字符向量
值:'Upper half' | 'Lower half' | 'Range starting with most significant bit' | 'Range ending with least significant bit' | 'Range of bits'
默认值:'Upper half'

选择要从输入信号中输出的位数。有符号整数数据类型必须至少有两位。无符号数据整数类型可以短到只有一个位。

依存关系

要启用此参数,请将 Bits to extract 设置为 Range starting with most significant bitRange ending with least significant bit

编程用法

模块参数:numBits
类型:字符向量
值:正整数
默认值:'8'

指定要输出的输入信号位的连续范围。以 [start end] 格式指定范围。索引从 0(最低有效位)开始分配给输入位。

依存关系

要启用此参数,请将 Bits to extract 设置为 Range of bits

编程用法

模块参数:bitIdxRange
类型:字符向量
值:连续范围
默认值:'[0 7]'

选择要对输出位选项使用的定标模式:

  • 如果您选择 Preserve fixed-point scaling,则在数据类型转换过程中,将使用输入的定点定标来确定输出定标。

  • 如果您选择 Treat bit field as an integer,将忽略输入的定点定标,只使用存储的整数来计算输出数据类型。

编程用法

模块参数:outScalingMode
类型:字符向量
值:'Preserve fixed-point scaling' | 'Treat bit field as an integer'
默认值:'Preserve fixed-point scaling'

模块特性

数据类型

Boolean | double | fixed point | integer | single

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。

PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。

定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。

在 R2006a 之前推出