重新缩放定点模型
此示例向您展示如何使用定点工具来细化与反馈控制器模型相关的定点数据类型的缩放。虽然该工具支持将理想双精度数字描述的数字控制器转换为用定点数字实现的数字控制器的多个工作流,但本示例使用以下方法:
范围收集-使用范围收集工作流来探索模型的数值行为。
使用双精度数执行定点数据类型的全局重写。的仿真软件®软件记录模拟结果,定点工具显示它们。
使用对定点单词大小和缩放的合理猜测运行初始模拟,然后将模拟结果与双精度运行进行比较。这个任务说明了猜测最佳伸缩是多么困难。
使用模拟范围数据提出分数长度-使用迭代定点转换工作流来自动缩放模型。
定点工具使用双精度模拟结果,为适当配置的块提出定点缩放。定点工具允许您有选择地接受和应用伸缩建议。然后,通过检查模型模拟工厂的输入和输出来确定结果的质量。
关于反馈控制器示例模型
在MATLAB中打开本教程的Simulink反馈设计模型®命令行,键入fxpdemo_feedback
.
该模型由以下块和子系统组成:
参考
这信号发生器块生成一个连续时间的参考信号。它被配置成输出方波。
总和
这添加块从参考信号中减去设备输出。
ZOH
的零级举行块采样并保存连续信号。该块被配置为将信号在时间上量化0.01秒。
模数转换接口
模拟到数字(A/D)接口由一个数据类型转换块,将
双
到定点数据类型。它表示将模拟输入信号的振幅数字化的任何硬件。在现实世界中;它的特征是固定的。控制器
数字控制器是一个子系统,代表运行在硬件目标上的软件。指数字控制器的实现.
数模接口
数字到模拟(D/A)接口由一个数据类型转换块,它将定点数据类型转换为
双
.它表示将数字信号转换为模拟信号的任何硬件。在现实世界中,它的特征是固定的。模拟植物
模拟装置由传递函数描述,并由数字控制器控制。在现实世界中,它的特征是固定的。
范围
该模型包括范围块,显示工厂输出信号。
仿真设置
建立这种定点反馈控制器仿真:
识别所有设计组件。
在现实世界中,存在具有固定特征的设计组件(硬件)和具有可以更改特征的设计组件(软件)。在该反馈设计中,主要的硬件组成是A/D硬件、D/A硬件和模拟装置。软件部分主要是数字控制器。
建立了装置和控制器的理论模型。
对于本教程中的反馈设计,该设备以传递函数为特征。
本教程中的数字控制器模型由z-域传递函数,并使用直接形式实现。
评估设备和控制者的行为。
你用波德图来评估植物和控制者的行为。这种评估是理想化的,因为所有的数字、操作和状态都是双精度的。
模拟系统。
使用Simulink和Fixed-Point Designer™软件模拟反馈控制器设计。在模拟环境中,您可以处理所有组件(软件)而且硬件),就好像它们的特性不是固定的一样。
理想反馈设计
“缩放定点控制设计”模型的开环(控制器和工厂)和仅工厂的博德图如下图所示。开环波德图的结果来自一个数字控制器描述的理想世界连续时间,双精度系数,状态存储和数学操作。
Bode图是使用一个名为preload_feedback.m
.
数字控制器的实现
在这个仿真中,数字控制器是使用下图所示的定点直接形式实现的。硬件目标是一个16位处理器。变量和系数通常使用16位表示,特别是如果这些量存储在ROM或全局RAM中。32位数字的使用仅限于在CPU寄存器或堆栈中短暂存在的临时变量。
数字控制器实现由以下几个模块组成:
了把
Up Cast是一个数据类型转换连接A/D硬件和数字控制器的块。它垫A/D硬件的输出字大小,后面有0到16位数字(基本数据类型)。
分子方面而且分母项
每一个离散FIR滤波器blocks表示在CPU目标中执行的加权和。计算中的字数和精度反映了累加器的字数和精度。分子项将最近的输入与FIR分子系数相乘并累加。分母用FIR分母系数表示最近延迟输出的倍数和累加。系数使用基本数据类型存储在ROM中。最近的输入使用基本数据类型存储在全局RAM中。
结合条件
Combine Terms是一个添加块,表示CPU中的累加器。它的字大小和精度是RAM的两倍(双比特)。
下投
下投是数据类型转换块,表示从CPU获取数字并将其存储在RAM中。当转换回基本数据类型时,单词大小和精度减少到累加器的一半。
Prev出来
Prev Out是一个单位延迟将反馈信号在内存中延迟一个采样周期的块。信号使用基本数据类型存储在全局RAM中。
直接表单实现。控制器直接实现了这个方程:
地点:
u(k- 1)表示上一个时间步长的输入。
y(k)表示当前输出,和y(k- 1)表示上一个时间步骤的输出。
b我为FIR分子系数。
一个我为FIR分母系数。
第一个求和y(k)表示累加器中最近输入和分子系数的乘法和累加。第二次求和y(k)表示累加器中最近输出和分母系数的乘法和累加。因为FIR系数、输入和输出都由16位数字表示(基本数据类型),涉及这些数字的任何乘法都会产生一个32位输出(累加器数据类型).
探讨模型的数值行为
每个块缩放的初始猜测已经在模型中的每个块掩码中指定。这个任务说明了猜测最佳定点缩放的难度。在本例中,您使用定点工具中的范围收集工作流,将模型的行为与理想的浮点版本进行比较。
打开
fxpdemo_feedback
模型。打开定点工具。在应用程序画廊,选择定点的工具.
在“定点工具”中,单击新,并选择
收集范围
.您可以使用范围收集工作流来探索模型的数值行为,并将其与理想的浮点版本进行比较。
下设计中的系统(SUD),选择需要分析的子系统。在本例中,选择
控制器
.下范围采集模式中,选择模拟范围如范围收集方法。
下模拟输入,使用默认模型输入进行仿真。
单击收集范围按钮箭头并选择
双精度
.单击收集范围按钮,开始模拟。Simulink软件用于模拟
fxpdemo_feedback
在数据类型覆盖模式中建模,并将结果存储在BaselineRun
.数据类型覆盖使您能够使用双精度数据类型对定点数据类型执行全局覆盖,从而避免量化影响。在结果电子表格,定点工具显示运行结果。编译后的数据类型(CompiledDT)列BaselineRun
显示模型中的块使用了双
模拟期间的数据类型。接下来,使用模型中指定的定点数据类型模拟系统。单击设置按钮箭头并选择指定的数据类型.点击使用嵌入式类型进行模拟.
定点工具使用当前指定的定点数据类型模拟模型,并将范围信息存储在
EmbeddedRun
.可以在SimMin而且SimMax电子表格的列。属性的行突出显示
了把
块来指示此结果存在问题。的结果细节窗格显示块饱和了23次,这表明对其缩放的猜测很差。提示
您可以使用探索选项卡来浏览和过滤结果。
点击比较结果打开模拟数据检查器。
在“模拟数据检查器”中,选择
PlantOutput
作为信号进行比较。仿真数据检查器绘制与设备输出相关的信号
BaselineRun
和EmbeddedRun
.该图为植物输出信号
EmbeddedRun
反映了对缩放的最初猜测。博德图设计试图为闭环系统产生良好的线性响应,用理想表示BaselineRun
.然而,对此的回应EmbeddedRun
是非线性的。显著的量化效应导致了非线性特征。定点设计的一个重要部分是找到一个将量化效应降低到可接受水平的缩放。
使用模拟范围数据提出分数长度
使用自动数据类型,您可以最大限度地提高输出数据类型的精度,同时跨越整个模拟范围。定点工具中的迭代定点转换工作流允许您在跨越整个模拟范围的同时最大限度地提高输出数据类型的精度。这个过程被称为自动缩放。
由于本例中没有提供设计范围信息,因此定点工具使用模拟范围数据来提出数据类型。的模拟最小/最大安全裕度(%)参数值将“原始”模拟值相乘。将此参数设置为大于1的值可降低使用定点数据类型时发生溢出的可能性。有关定点工具如何计算数据类型建议的详细信息,请参见定点工具如何提出数据类型.
由于量化的非线性效应,定点仿真产生的结果与理想的双基仿真不同。与基于双元的仿真相比,定点仿真中的信号可以覆盖更大或更小的范围。如果范围增加到一定程度,就可能发生溢流或饱和。安全裕度降低了这种可能性,但它也可能降低模拟的精度。
请注意
当最大和最小模拟值覆盖设计的全部预期工作范围时,定点工具将产生有意义的自动数据类型化结果。
自动定量的控制器
子系统。这个子系统表示在目标上运行的软件,需要进行优化。
在“定点工具”中,单击新,并选择
迭代定点转换
.提示
在Fixed-Point工具中切换工作流将清除活动工作流期间收集的设置和任何数据。模型保持在当前状态。
下设计中的系统(SUD),选择
控制器
子系统作为系统进行分析和转换。下范围采集模式中,选择模拟范围.
下模拟输入,使用默认模型输入进行仿真。
点击准备创建一个还原点,并自动准备设计中的系统进行转换。
单击收集范围按钮箭头并选择
双精度
.点击收集范围开始模拟。Simulink软件用于模拟
fxpdemo_feedback
在数据类型覆盖模式中建模,并将结果存储在BaselineRun_2
.在转换部分,单击设置按钮。设置模拟最小/最大安全裕度(%)参数
20.
.其他参数均采用默认设置。点击建议数据类型.
定点工具分析所有定点块的缩放锁定输出数据类型设置,防止由定点工具更改参数被清除。
定点工具使用存储在中的最小值和最大值
BaselineRun_2
提出每个块的数据类型,以便在跨越整个模拟值范围的同时使精度最大化。方法中显示建议的数据类型结果电子表格。回顾定点工具建议的缩放。您可以选择接受每个块的伸缩建议。在结果电子表格,选择相应的接受复选框。默认情况下,定点工具接受与当前伸缩不同的所有伸缩建议。对于本例,请确保接受复选框为Controller子系统的每个块选中。
单击应用数据类型按钮。
中的块应用上一步中接受的伸缩建议
控制器
子系统。在验证部分,单击使用嵌入式类型进行模拟按钮。
Simulink模拟
fxpdemo_feedback
使用您应用的新缩放进行建模。关于此模拟的信息存储在名为EmbeddedRun_2
.然后,定点工具显示记录定点数据的块的信息。编译后的数据类型(CompiledDT)列EmbeddedRun_2
显示控制器子系统的块使用了新的缩放定点数据类型。点击比较结果打开模拟数据检查器。
在“模拟数据检查器”中,选择
PlantOutput
作为信号进行比较。模拟数据检查器绘制与工厂输出相关联的信号
BaselineRun_2
而且EmbeddedRun_2
,以及它们之间的差异。由定点运行所代表的工厂输出信号达到稳态,但由于非优化a /D设计,出现了一个小的极限环。