簡介
本文從電氣工程師的觀點 (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]
等式中的 A、B、C 均為常數。為測得阻抗變化,可考慮圖 1 所示的系統。在此圖中,VT?為熱敏電阻兩端的電壓,Vref?為恒定參考電壓。ADC 的輸出是 VT?點模擬電壓的數字形式。固件根據 ADC 測得的值,采用各種實施方案計算出相應的溫度值。
.
圖?1:采用熱敏電阻的溫度感應系統方框圖
圖中文字:thermistor:熱敏電阻
????????????????? firmware data processing:固件數據處理
????????????????? temperature value?溫度值
公式法:
在公式法中,熱敏電阻的阻值使用標準的分壓方程式計算,如等式 2 所示。
[2]
這里的 VGND?和 Vref?可在程序中定義為常數,也可測量得出。將測量得出的值代入等式 2,可以消除因參考電壓變化、ADC 增益和偏置變化引起的誤差。在本文中,假定參考電壓、ADC 是理想的,且Vref?和 VGND均為常數。在計算出阻值后,就可以使用等式 1 計算出溫度值。
因為等式 1 不是簡單線性等式,在采用公式法的情況下,有效的存儲器利用和執行的速度都很重要。這個等式必須加入較大的數學庫。是否因為精度而接受較大的存儲器占用和較慢的反應速度,取決于應用的需要。在醫療或太空設備中,精度非常重要,而在家用電器中,精度并不是最重要的因素,比如我們在安保系統、爐具或者轎車中所見到的溫度測量。在這些應用中,如果外部溫度是 70 度,而感應系統顯示 71 度,并不會導致致命的結果。消費者也不愿意化更多的錢購買功能更強大的芯片來獲得這種精度。
針對熱敏電阻的 LUT
熱敏電阻的電壓會一直對應一個唯一的阻值,也就是唯一的溫度值。例如,如果 NTC 熱敏電阻在 25 攝氏度的阻值為?RT=10 KΩ,參考電阻為?Rref=10 KΩ 時,則意味著 25 攝氏度時的電壓?VT=Vref/2。在溫度為 50 攝氏度時,RT=5 KΩ,不過?Rref?和?Vref?保持不變,故VT=Vref/3。因此,VT=Vref/3 就意味著?T=50 °C,而VT=Vref/2 意味著?T=25 °C。這樣就可以根據測得電壓對應的溫度值使用等式編制一張表格,存儲在存儲器中作為 LUT。然后使用測得的電壓值作為索引來解析LUT,進而獲得對應的溫度值。決定溫度步長的LUT 的大小會影響測量的精度。如果要求的溫度范圍為?–40 ~ 125 °C,則在步長為?1 °C?的情況下需要有 166 條目的 LUT,如果是?0.5 °C,就需要 332 條目的 LUT。因此在精度、測量范圍和存儲器使用方面存在大量的權衡空間。在公式法下,不管要求的精度和測量范圍如何,存儲器使用都是固定的。
比較
包含 LUT 法和公式法的項目都在賽普拉斯軟件 PSoC Designer 中借助 CY8C27x43 芯片得到了實施。LUT 的大小如前所述,為 166 條樣本。LUT 法使用的 ROM 為1,000 字節,而在公式法中為 3,780 字節。如果項目在帶有 4K 存儲器的芯片上實施,則剩下的閃存對任何復雜系統均不敷使用。
為比較執行速度,分別運行了兩種方法。如圖 2 所示,每種方法運行完畢后,都會觸發一個引腳。
圖?2:熱敏電阻感應系統的執行時間
對應執行公式法耗用時間的信號電平較低,對應執行 LUT 法耗用時間的信號電平較高。如圖所示,LUT 法耗用的時間為 8μs,公式法耗用的時間為?468 μs。雖然速度方面的比較取決于處理器時鐘速率和用于實施的 CPU 時鐘周期,但本案例大致說明了兩者之間的差異。顯而易見,在本應用中,LUT 法可以將執行時間降低 50 倍。
案例研究2:PID 系統
比例-積分-微分 (PID) 系統是最常見的反饋控制系統(如穩壓器等)。采用專門的硬件,可以獲得最快的控制環路響應時間。不過,如果采用微處理器來實施 PID 系統,可以支持更多調試和調整 (adaptation) 功能。本案例研究的兩種實施方法均采用 SoC。圖 3 所示的是 PID 系統的實施方框圖。
圖?3:PID?系統方框圖
圖中文字:plant:設備
????????????????? error:誤差
????????????????? firmware data processing:固件數據處理
????????????????? output:輸出
PID 穩壓器系統具有需要的置位點?Vset?和實際輸出電壓?Vout。需要的信號和輸出信號之間的差就是誤差值e。控制環路然后運用等式 3 所示的閉合環路系統等式來讓誤差值為 0:[3]這里的?Kp、Ki和Kd?均為常數。
公式法
在 PID 系統的軟件實施方案中,積分/差分是通過對上一誤差值和新的誤差值進行累加/累減來實現的。這些值然后與等式 4 所示的相應常數相乘。
[4]
這里的?ErrorI?是添加到現有誤差值中的上一累加誤差值,ErrorD?是從現有誤差值中減去的上一累減誤差值。得出的新值存儲為上一誤差值并用于下一個執行周期。由于等式中有乘法運算,因此執行速度較慢。
LUT 法
在 LUT 法中,程序不使用乘法,其使用的是存儲在表中的預先生成的誤差值與常數相乘的積。測得的誤差值被用作在對應的表中獲得輸出的索引。因此,誤差值僅限于整數值而非浮點數,因此也就限制了精度。采用這種方法的指令如等式 5 所示:
[5]
這里?TableP、TableI和?TableD分別為包含?KP*Error、Ki*ErrorI和?Kd*ErrorD值的 LUT。
比較
PID 系統的實施是采用賽普拉斯軟件 PSoC Designer 在 CY8C27x43 芯片中進行的。為實施 LUT 法,使用了各存有 60 個值的三張表,使用的 ROM 為 1,150 字節。對同一應用,公式法需使用 1,800 字節的 RAM。兩種方法的執行時間如圖 4 所示。
圖?4:PID?系統的執行時間
上圖波形與圖 2 相似,高電平信號對應的是 LUT 法的執行速度,低電平信號對應的是公式法的執行速度。顯而易見,執行速度提升了 4 倍。
結論:
本次探討及案例研究顯示,LUT 法確實能夠加快程序執行的速度。對于具體的應用,程序執行中還有其他需要在選擇實施方法之前加以權衡的問題。最終選擇哪種方法則取決于應用的規范。不過,如果旨在加快執行速度并減少存儲器占用,則化費時間構建 LUT 也是在所不惜的。
評論
查看更多