量化是将连续无穷值映射到较小的离散有限值集的过程。在模拟和嵌入式计算的背景下,它是关于接近真实世界的值与数字表示引入限制的精度和范围的值。量化会在算法中引入各种误差来源,例如舍入误差、下溢或溢出、计算噪声和极限环。这导致了理想系统行为和计算数值行为之间的数值差异。
要管理量化的效果,您需要选择正确的数据类型来表示真实世界的信号。您需要考虑用于编码信号的数据类型的精度、范围和比例,还需要考虑量化对算法数值行为的非线性累积效应。当你有诸如反馈循环之类的结构时,这种累积效应会进一步加剧。
为什么量化问题
在转换嵌入式硬件设计的过程中,需要考虑量化误差。量化误差影响信号处理、无线、控制系统、FPGA、ASIC、SoC、深度学习等应用。
量化在信号处理和无线应用中的应用
在信号处理应用中,量化误差有助于噪音并降低信噪比(信噪比)。信噪比以dB为单位测量,一般描述为每增加一个比特的x分贝降低。为了管理量化噪声并将其保持在可接受的水平,您需要选择正确的设置,例如数据类型和舍入模式。
控制系统中的量化
在设计控制系统时,特别是对于低功耗微控制器,您可以使用整数或定点算法来使用低功耗约束平衡实时性能要求。在这样的设计中,您需要选择要在满足输出信号的精度要求的同时选择要容纳来自输入传感器的信号的动态范围和精度的数据类型,而不是由于量化而不耗尽数值差异。
FPGA,ASIC和SoC开发中的量化
将浮点设计转换为定点设计可以降低FPGA的资源利用率、降低功耗、满足延迟要求等,从而使功耗和资源消耗最小化。但是,这种转换会引入量化错误,因此在转换设计时必须适当地调整量化噪声。
深度学习中的量化
量化对于优化深度学习模型,对优化深度学习模型变得重要,因为它有助于在部署到嵌入式系统时加速推理。您可以使用8位整数使用混合精度推断,并且正在进行的学术研究探索4位和6位整数进行量化。
自动量化您的设计
您可以通过选择特定的数据类型来量化设计,也可以迭代地探索不同的定点数据类型。使用一个有指导的工作流,您可以看到量化对系统数值行为的总体影响。
或者,您可以解决优化问题,并为您的设计选择最优的异构数据类型配置,以满足系统数值行为的公差约束。
了解更多关于定点转换的信息:
调试由于量化而产生的数值差异
使用MATLAB,您可以识别、跟踪和调试由于量化(如溢出、精度损失和设计中浪费的范围或精度)而产生的数字问题的来源。