优化您的设计以管理量化错误

量化是将连续无限值映射到较小的离散有限值的过程。在模拟和嵌入式计算的上下文中,它是近似与数字表示的真实界限,该数字表示引入了值的精度和范围的限制。量化在算法中引入了各种错误源,例如舍入错误,下溢或溢出,计算噪声和限制周期。这导致理想的系统行为与计算的数值行为之间的数值差异。

要管理量化的影响,您需要选择正确的数据类型来表示真实信号。您需要考虑用于编码信号的数据类型的精度,范围和缩放,并且还考虑量化对算法数值行为的非线性累积效应。当您具有诸如反馈循环的构造时,这种累积效果进一步加剧。


为什么量化很重要

转换设计用于嵌入式硬件的过程需要考虑量化错误。量化误差会影响信号处理,无线,控制系统,FPGA,ASIC,SOC,深度学习和其他应用。

信号处理和无线应用中的量化

在信号处理应用中,量化误差有助于噪音并降低信噪比(SNR)。SNR在DB中测量,并且通常被描述为每个附加位的x分贝。为了管理量化噪声并将其保持在可接受的级别,您需要选择正确的设置,例如数据类型和舍入模式。

优化量化的FIR滤波器。

控制系统中的量化

在设计控制系统时,特别是对于低功耗微控制器,您可以使用整数或定点算法来使用低功耗约束平衡实时性能要求。在这样的设计中,您需要选择要在满足输出信号的精度要求的同时选择要容纳来自输入传感器的信号的动态范围和精度的数据类型,而不是由于量化而不耗尽数值差异。

see example).

" data-toggle="lightbox">

用于现场对照的永磁同步电动机量化模型(看例)。

FPGA,ASIC和SoC开发中的量化

将设计从浮点转换为固定点可以通过降低FPGA资源利用率,降低功耗,延迟要求等来帮助最小化电力和资源消耗。但是,此转换介绍了量化错误,因此您必须适当预算量化噪音转换设计时。

see example).

" data-toggle="lightbox">

LTE数字下变频器的量化模型(看例)。

深度学习量化

量化对于优化深度学习模型,对优化深度学习模型变得重要,因为它有助于在部署到嵌入式系统时加速推理。您可以使用8位整数使用混合精度推断,并且正在进行的学术研究探索4位和6位整数进行量化。

read article).

" data-toggle="lightbox">

缩放Mnist的分类率的混淆矩阵(阅读文章)。

在此视频中,我们展示了Matlab中的深度学习量化工作流程。使用模型量化库支持包,我们说明了如何校准,量化和验证resnet50等深度金宝app学习网络。

量化如何工作

量化误差是非线性操作的累积效果,如信号的分数部分的舍入或信号的动态范围的溢出。当通过观察设计中的关键信号或变量并预算量化误差来转换嵌入式硬件时,您可以考虑到量化错误并考虑到嵌入式硬件的设计,以便数值差异在可接受的公差范围内。

控制系统中各个点的量化误差,显示量化的累积非线性性质。


用Matlab和Simulink量化量化金宝app

使用Matlab和Simulin金宝appk,您可以:

  • 探索并分析量化误差传播
  • 自动量化您的设计以限制精度
  • 调试量化导致的数值差异

探索和分析量化错误

您可以通过自动模型范围的仪器收集仿真数据和统计信息。此数据的MATLAB可视化使您能够探索和分析您的设计,以了解您的数据类型选择如何影响底层信号。

可视化信号的仿真范围和精度。

自动量化您的设计

您可以通过选择特定数据类型来量化您的设计,或者您可以迭代探索不同的定点数据类型。使用引导工作流程,您可以看到量化对系统数值行为的整体效果。

或者,您可以解决优化问题,为您的设计选择最佳的异构数据类型配置,以满足系统的数值行为的公差约束。

使用固定点工具转换工作流程。

了解有关固定点转换的更多信息:

由于量化而调试数值差异

使用MATLAB,您可以识别,跟踪和调试数值问题的源,例如溢出,精度损耗,浪费的范围或精度在您的设计中。

跟踪MATLAB代码中的相应行的溢出。

也可以看看:过滤器设计带Simulink的电机控制设计金宝appMatlab和Simulink的硬件设计金宝app