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)
二进制点在定点数中的位置决定了你如何解释这个数字的缩放。在执行加法或减法等基本运算时,硬件使用相同的逻辑电路,而不管比例因子的值是多少。从本质上讲,逻辑电路不具备二进制点的知识。它们执行有符号或无符号整数运算——就好像二进制点在的右边一样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
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处理器上的行为兼容的单精度值。例如,与斜坡发生器块时,软件转换的值最大角步参数设置为单精度值。