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

量化是将连续的无穷值映射到较小的离散有限值集的过程。在模拟和嵌入式计算的环境中,它是关于用数字表示来近似真实世界的值,这引入了值的精度和范围的限制。量化在算法中引入了各种各样的误差来源,如舍入误差、底流或溢出、计算噪声和极限环。这导致了理想系统行为和计算数值行为之间的数值差异。

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


为什么量化问题

在转换嵌入式硬件设计的过程中,需要考虑量化误差。量化误差影响信号处理、无线、控制系统、FPGA、ASIC、SoC、深度学习等应用。

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

在信号处理应用中,量化误差会产生噪声并降低性能信噪比(信噪比)。信噪比以分贝为单位测量,通常描述为每增加一位就减少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的电机控制设计金宝app基于MATLAB和Simulink的硬件设计金宝app