主要内容

使用IQmath库

关于IQmath图书馆

介绍

C28x IQmath Library块执行处理器优化的定点数学运算。这些块对应于Texas Instruments™C28x IQmath Library中的函数,TI C28x系列数字信号处理器的汇编代码库。

请注意

TI C28x处理器的这个库的实现产生了与该库的TI版本相同的模拟和代码生成输出,但是它不像TI版本那样使用全局Q值。Q格式是根据输入数据的Q格式动态调整的。

IQmath Library通常阻止定点数据类型的输入和输出,并使用Q格式的数字。C28x IQmath Library块参考页讨论了库中每个块接受和产生的数据类型。欲了解更多信息,请查阅定点数Q格式符号主题,以及fixed point Designer™产品文档,其中包括关于定点数据类型、缩放和精度问题的更多信息。

你可以使用IQmath库块与一些核心的Simulink万博1manbetx®块和定点设计器块在生成代码之前在Simulink模型中运行模拟。万博1manbetx一旦你开发了你的模型,你可以生成等价的代码,这些代码经过优化后可以在TI C28x DSP上运行。在代码生成期间,将为模型中的每个IQmath Library块调用IQmath Library,以创建目标优化的代码。要了解关于创建包含IQmath库块和来自其他块集的块的模型的更多信息,请参阅建筑模型

共同特征

以下特征是常见的IQmath库块:

  • 样本时间是从驱动块继承的。

  • 块是单速率的。

  • 参数不可调优。

  • 块支持离散的采万博1manbetx样时间。

要了解更多关于库中每个块的特性,请参阅单个块参考页。

参考文献

关于IQmath库的详细信息,请参见《用户指南》C28x IQmath Library - A Virtual浮点引擎,文献号SPRC087,可在德州仪器网站上获得。用户指南包含在下载的zip文件中,还包含IQmath库(需要注册)。

定点数

符号

在数字硬件中,数字是以二进制字存储的。二进制字是由定长二进制数字(1和0)组成的序列。硬件组件或软件功能如何解释这个1和0的序列是由数据类型定义的。

二进制数用于表示定点或浮点数据类型。定点数据类型的特征是以位为单位的字大小、二进制点以及它是有符号的还是无符号的。二进制点的位置是对定点值进行缩放和解释的方法。

例如,一个定点小数(有符号或无符号)的二进制表示如下所示:

在哪里

  • b二进制数字。

  • ws为以比特为单位的单词大小。

  • bws1是最高有效位(MSB)的位置。

  • b0是最低有效位(最低)位(LSB)的位置。

  • 二进制点显示在LSB左边4个位置。因此,在这个例子中,这个数字被称为有四个小数位,或者一个小数长度为4。

    请注意

    对于嵌入式编码器®,在MATLAB/Simulink中定点和整数运算的结果与硬件目标上的结果匹配到最低有效位(位真)。万博1manbetx在MATLAB/Simulink中浮点运算的结果与硬件目标上的结果不匹配,因为第三方编译器使用的库可能万博1manbetx与MATLAB/Simulink使用的库不同。

签署了定点数

有符号二进制定点数通常用三种方式之一表示:

  • 签署/级

  • 一个人的补充

  • 二进制补码

二的补数是最常用的符号定点数的表示,TI数字信号处理器也使用二的补数。

用有符号2的补数表示的否定包括一个位倒转(转换为1的补数表示),然后是一个1的二进制加法。例如000101的2的补码为111011,如下所示:

>111011 (LSB的二进制加1)

Q格式符号

二进制点在定点数中的位置决定了你如何解释这个数字的缩放。在执行加法或减法等基本运算时,硬件使用相同的逻辑电路,而不管比例因子的值是多少。从本质上讲,逻辑电路不具备二进制点的知识。它们执行有符号或无符号整数运算——就好像二进制点在的右边一样b0.因此,你确定了二进制点。

在IQmath库中,二进制点在有符号的定点数据类型中的位置用Q格式表示法表示并指定。这种定点表示法采用这种形式

Qm.n

在哪里

  • 表示该数字为Q格式表示法-德州仪器符号定点数字的表示法。

  • 是用于指定该数的两个补数部分的比特数。

  • n是用来表示二进制数的两个补数的小数部分的位数,或二进制点右侧的位数。

在Q格式中,最高有效位被指定为符号位。用Q格式表示有符号的定点数据类型需要m+n+1位来表示符号。

请注意

范围和分辨率因不同的Q格式而异。具体请参见本章3.2节德州仪器C28x基础软件,IQmath库模块用户指南。

从Q格式转换为浮点格式时,转换的准确性取决于数字的值和格式。例如,对于使用24位的单精度浮点数,无法实现相应的32位数的解析。24位数字通过截断下端来近似其值。例如:

32位整数11110000 11001100 10101010 00001111
单精度浮点+1.1110000 11001100 10101010 x 231
对应值11110000 11001100 10101010 00000000

表达Q格式- Q.15。例如,二进制位右边n = 15位的有符号16位数表示为

Q0.15
在这个符号。这是(1符号位)+ (m = 0整数位)+ (n = 15小数位)=数据类型中总共16位。在Q格式表示法中,m = 0通常是隐含的,如
Q.15

在定点设计器软件中,此数据类型表示为

sfrac16
sfix16_En15

在DSP System Toolbox™软件中,该数据类型表示为

15 [16]

表达Q格式:Q1.30。将两个Q0.15数相乘得到的乘积是一个有符号的32位数据类型,在二进制点右侧n = 30位。一位是指定的符号位,因此m为1:

M +n+1 = 1+30+1 = 32位

因此,这个数字表示为

Q1.30

在定点设计器软件中,此数据类型表示为

sfix32_En30

在DSP System Toolbox软件中,该数据类型表示为

30 [32]

Q格式- Q-2.17。考虑一个有符号的16位数字,其比例为2(-17).这需要在二进制位右边n = 17位,这意味着最高有效位是a符号扩展一些。

符号扩展用MSB的值填充额外的位。例如,考虑一个4位的2的补数1011。当这个数字用符号扩展扩展到7位时,这个数字变成1111101,这个数字的值保持不变。

一位是指定符号位,强制m为-2:

M +n+1 = -2+17+1 = 16位

因此,这个数字表示为

q - 2.17

在定点设计器软件中,此数据类型表示为

sfix16_En17

在DSP System Toolbox软件中,该数据类型表示为

(16 17)

表达Q格式- q17 . 2。考虑一个有符号的16位数字,其比例为2^(2)或4。这意味着这个二进制点隐含在16位右边的2位,或者在这个二进制点右边有n = -2位。其中一位必须是符号位,因此m必须是17:

M +n+1 = 17+(-2)+1 = 16

因此,这个数字表示为

Q17.-2

在定点设计器软件中,此数据类型表示为

sfix16_E2

在DSP System Toolbox软件中,该数据类型表示为

[16 2]

建筑模型

概述

你可以在模型中使用IQmath库块以及特定的核心Simulink, Fixed-Point Designer和其他块集块。万博1manbetx本节讨论使用来自这些不同库的块构建模型时应该考虑的问题。

转换数据类型

确保模型中连接的块具有兼容的输入和输出数据类型至关重要。在大多数情况下,IQmath Library块只处理有限数量的特定数据类型。您可以参考块引用页来讨论块接受和生成的数据类型。

在连接IQmath Library块和Fixed-Point Designer块时,通常需要设置Fixed-Point Designer块参数的数据类型和缩放,以匹配IQmath Library块的数据类型。许多Fixed-Point Designer块允许您设置它们的数据类型,并通过从驱动块继承或从下一个块反向传播来进行伸缩。这是设置定点设计器块的数据类型以匹配连接的IQmath Library块的好方法。

一些DSP系统工具箱块和核心Simulink块也接受定点数据类型。万博1manbetx当您将这些块连接到IQmath Library块时,请在这些块的参数中选择正确的设置。

使用源和汇

IQmath库不包括源块或sink块。在你的模型中使用IQmath库块的核心Simulink库或定点设计器中的源或si万博1manbetxnk块。

选择块优化代码

在某些情况下,执行类似功能的块出现在多个块集中。例如,IQmath Library和Fixed-Point Designer软件有一个Multiply块。当您构建要在C2000™DSP上运行的模型时,从IQmath库中选择块将产生更好的优化代码。您可以使用来自其他库的类似块,如果它提供了IQmath库块不支持的功能,但您将生成不那么优化的代码。万博1manbetx

双精度和单精度参数值

当您在IQ Math块中为参数输入双精度浮点值时,软件将它们转换为与c28x处理器上的行为兼容的单精度值。例如,与斜坡发生器块时,软件转换的值最大角步参数设置为单精度值。