加快程序执行:电气工程师的观点
简介
本文从电气工程师的观点 (POV) 出发,重点研究了给定处理器的实施和如何在各种实施方式下进行权衡。软件工程师关于程序执行中的多线程、并行处理或者再配置的观点不在本文的考虑范围之列。程序执行的主要方面包括速度、精度、面市时间 (TM) 和存储器利用等。另外,编码标准、IP 维护、便携性和文档等其他因素仅影响将来项目的 TM,对目前的程序没有影响。因此,在本文的案例研究中只考虑主要的方面。在理想的情况下,我们希望能够把程序执行的每个方面都是最优秀的,但实际的系统并非完美,需要有所取舍。本文将探讨在程序实施中权衡使用公式法和 LUT 的情况,并探讨各方面下表现最佳的方法。实施方法的选择将取决于应用的具体要求。
LUT 是存储在系统存储器中的预期结果范围列表或者阵列。使用测得的输入值作为索引,就可以在执行中得到输出值,从而节约处理时间。LUT 可以通过多种方式建立。大多数工程师除了需要具备工程领域内的各项技术技能,也同时还需要具备"Excel 工程设计"技能,因此,本文将采用 Microsoft Excel 表格创建 LUT。将预期的输入范围输入公式,即可在 LUT在得到对应的输出值。与执行传统的数学公式相比,使用 LUT 系统具有多种优势。
执行速度
Accuracy
在完整的系统中,输入和预期输出之间的延迟来自硬件、软件、中断和逻辑驱动延迟。数据处理和分析也会影响程序中的软件延迟。数据处理取决于实施指令所需要的时钟周期数量。简单来说,与 LUT 方法访问存储器中的值相比,公式法使用的乘、除或者其他复杂的数学函数耗用的 CPU 周期更多。尽管可以采用移位法和加减法算法来完成乘除运算,提高公式法的速度,但在大多数情况下对简化等式及提升效率和精度的作用微乎其微。因此,LUT 法一般都会快于公式法。
精度
在精度方面,公式法一直优于 LUT 法。由于我们采用的是电气工程师的视角,我们不妨在执行方法和电气信号之间进行一下类比。公式法类似于连续时间模拟信号,而 LUT 则类似于量化的离散信号。无限样本的 LUT 可以达到公式法的精度。LUT 的精度取决于考虑的范围和范围中的样本数量。因此,根据要求的精度和范围,LUT 的存储器利用是可扩展的。
存储器利用
公式法中的存储器使用主要取决于用于等式执行的代码空间大小和支持这些等式的数学库的大小。如果采用单浮点函数则需要添加整个库,存储器耗用会显著增长。在 LUT 法下,存储器耗用取决于用来解析 LUT 获得输出值的代码大小和LUT 的大小。一般而言,实施公式和解析 LUT 的代码空间差别不大,但库对存储器的占用显著高于 LUT 的大小。LUT 的大小是由要求的精度决定的,并可通过插值法进行优化。因此,在应用要求的公式比较复杂,输入范围又较小的情况下,LUT 对存储器的利用效率更高。
面市时间
由于早已开发完毕,并在大多数系统上得到过验证,因而在直接采用公式的情况下,面市时间会更快。这样既能达到要求的精度,又能节省设计、调试和测试系统的时间。在某些项目中,存储器可能不足以满足公式法使用的数学库的要求。在这种情况下,则需要采用分段线性或 LUT 法。LUT 法的 TM 取决于多种因素,如应用复杂性、工程师技能、可用于构建 LUT 的软件工具等。因此,这项参数无法以量化的方式进行比较。不过,由于与具体的系统/平台无关,公式法的实施速度可能会快一些。
本文就应在什么地方使用 LUT 取代公式的两个示例及其涉及的权衡进行了探讨。所探讨的案例中包含程序执行的不同重点方面。第一个例子是含有复杂的数学等式的温度感应应用。因为采用公式法来获得温度值耗用了大量的存储器,留给根据测得的温度值增添其他功能的存储空间则变得更少了。通常,温度感应是完整的感应器系统的一部分,因此存储器优化在该应用中非常重要。第二个例子是控制系统算法。在该例中,为避免系统不稳定情况的出现,执行速度是最需要考虑的。
案例研究1:温度测量
因其阻值随温度而发生变化,热敏电阻通常被用来测量温度。采用负温度系数(NTC) 的热敏电阻测得的温度 (Tk) 与测得的阻抗 (RT) 呈反比关系,可表达为等式1 中的 Steinhart-Hart 公式。
图 1:采用热敏电阻的温度感应系统方框图
图中文字:thermistor:热敏电阻
firmware data processing:固件数据处理
temperature value 温度值
公式法:
在公式法中,热敏电阻的阻值使用标准的分压方程式计算,如等式 2 所示。
[2]
这里的 VGND 和 Vref 可在程序中定义为常数,也可测量得出。将测量得出的值代入等式 2,可以消除因参考电压变化、ADC 增益和偏置变化引起的误差。在本文中,假定参考电压、ADC 是理想的,且Vref 和 VGND 均为常数。在计算出阻值后,就可以使用等式 1 计算出温度值。
- Whirlpool 选择赛普拉斯PSoC CapSense界面为其新型洗衣机产品实施触摸感应操控(03-24)
- 如何设计可靠的电力线通信(06-29)
- 自由支配!不要让MCU、内核或编程语言干扰你的设计(03-06)
- MCU做不到,而PSoC可以——赛普拉斯PSoC 4可编程片上系统架构(07-03)
- PSoC Creator简化可编程器件上的软硬件协同设计(12-04)
- 串行和并行接口SRAM对比(10-26)