日本无码免费高清在线|成人日本在线观看高清|A级片免费视频操逼欧美|全裸美女搞黄色大片网站|免费成人a片视频|久久无码福利成人激情久久|国产视频一二国产在线v|av女主播在线观看|五月激情影音先锋|亚洲一区天堂av

  • 手機(jī)站
  • 小程序

    汽車(chē)測(cè)試網(wǎng)

  • 公眾號(hào)
    • 汽車(chē)測(cè)試網(wǎng)

    • 在線(xiàn)課堂

    • 電車(chē)測(cè)試

ECU中的定點(diǎn)與縮放

2019-08-28 23:29:52·  來(lái)源:汽車(chē)ECU設(shè)計(jì)  
 
小數(shù)在計(jì)算機(jī)中通常有兩種表示方法,一種是約定所有數(shù)據(jù)的小數(shù)點(diǎn)隱含在某一個(gè)固定的位置上,稱(chēng)為定點(diǎn)數(shù),另一種是小數(shù)點(diǎn)位置可以浮動(dòng)的稱(chēng)為浮點(diǎn)數(shù)。一般來(lái)說(shuō),定
小數(shù)在計(jì)算機(jī)中通常有兩種表示方法,一種是約定所有數(shù)據(jù)的小數(shù)點(diǎn)隱含在某一個(gè)固定的位置上,稱(chēng)為定點(diǎn)數(shù),另一種是小數(shù)點(diǎn)位置可以浮動(dòng)的稱(chēng)為浮點(diǎn)數(shù)。一般來(lái)說(shuō),定點(diǎn)格式可表示的數(shù)值的范圍有限,對(duì)處理硬件的要求比較簡(jiǎn)單。而浮點(diǎn)格式可表示的數(shù)值的范圍很大,但對(duì)處理硬件的要求也更高。
浮點(diǎn)數(shù) VS 定點(diǎn)數(shù)

浮點(diǎn)數(shù)

與科學(xué)計(jì)數(shù)法相似,任意一個(gè) J 進(jìn)制數(shù) N ,總可以寫(xiě)成:

N = J^E × M

式中 M 稱(chēng)為 N 的尾數(shù)(mantissa),是一個(gè)純小數(shù)。E 為 N 的階碼(exponent),是一個(gè)整數(shù), J 稱(chēng)為比例因子 J^(E) 的底數(shù)。這種表示方法相當(dāng)于數(shù)的小數(shù)點(diǎn)位置隨比例因子的不同而在一定范圍內(nèi)可以自由浮動(dòng),所以稱(chēng)為浮點(diǎn)表示法,C語(yǔ)言中的以float和double就屬于這種類(lèi)型。



float 0.15625

定點(diǎn)數(shù)

定點(diǎn)數(shù)是小數(shù)點(diǎn)固定的數(shù),在計(jì)算機(jī)中沒(méi)有專(zhuān)門(mén)表示小數(shù)點(diǎn)的位,所以小數(shù)點(diǎn)的位置是約定默認(rèn)的。一般固定在機(jī)器數(shù)的最低位之后,或者固定在符號(hào)位后。前者稱(chēng)為稱(chēng)為定點(diǎn)整數(shù)(下圖Q0),后者稱(chēng)為定點(diǎn)純小數(shù)(下圖Q15)。
 

假設(shè)用一個(gè) n 位字來(lái)表示一個(gè)定點(diǎn)數(shù):

X = X0 X1 X2 … Xn-1

其中一位 X0 用來(lái)表示數(shù)的符號(hào)位,其余位數(shù)代表它的量值。為了對(duì)所有 n 位進(jìn)行統(tǒng)一處理,符號(hào)位 X0 通常放在最左位置,并用數(shù)值0和1分別代表正號(hào)和負(fù)號(hào)。對(duì)于任意定點(diǎn)數(shù),如果 x 表示的是純小數(shù),那么小數(shù)點(diǎn)位于 X0 和 X1 之間,數(shù)的表示范圍為:

0 ≤ |X| ≤ (1 - 2 -n)

如果 X 表示的是純整數(shù),則小數(shù)點(diǎn)位于最低位 Xn-1 的右邊,數(shù)的表示范圍為:

0 ≤ |X| ≤ (2n-1 - 1)

目前計(jì)算機(jī)中大多采用定點(diǎn)純整數(shù)表示,因此將定點(diǎn)數(shù)表示的運(yùn)算簡(jiǎn)稱(chēng)為整數(shù)運(yùn)算。

定點(diǎn)計(jì)算在ECU中的使用

定點(diǎn)數(shù)表示法的缺點(diǎn)在于其形式過(guò)于僵硬,固定的小數(shù)點(diǎn)位置決定了固定位數(shù)的整數(shù)部分和小數(shù)部分,不利于同時(shí)表達(dá)特別大或特別小的數(shù),最終絕大多數(shù)現(xiàn)代的計(jì)算機(jī)系統(tǒng)采納了浮點(diǎn)數(shù)表達(dá)方式。但在汽車(chē)ECU中卻是定點(diǎn)整數(shù)運(yùn)算占了上風(fēng),這是因?yàn)樵贓CU中:

(1)計(jì)算量大

對(duì)于汽車(chē)控制器ECU而言,其內(nèi)部擁有大量的數(shù)值計(jì)算,里面包括著大量數(shù)學(xué)模型,相比于浮點(diǎn)運(yùn)算,定點(diǎn)運(yùn)算的速度要快上一個(gè)數(shù)量級(jí)。而且隨著計(jì)算量增多,定點(diǎn)的優(yōu)勢(shì)會(huì)越發(fā)明顯。

(2)內(nèi)存與速度

通常執(zhí)行定點(diǎn)計(jì)算需要更少的內(nèi)存和更少的處理器時(shí)間。對(duì)于底盤(pán)以及傳動(dòng)系統(tǒng)中的ECU對(duì)于計(jì)算的實(shí)時(shí)性要求很高,包含著許多1ms,5ms,10ms,20ms的周期process,這就意味著需要著需要在更少的時(shí)間內(nèi),完成更多的計(jì)算任務(wù)。

(3)價(jià)格低廉

相比于浮點(diǎn)MCU而言,定點(diǎn)MCU的結(jié)構(gòu)更為簡(jiǎn)單,功耗更低,造價(jià)更為低廉。在汽車(chē)零配件這種對(duì)成本錙銖必較的行業(yè),這對(duì)于各個(gè)Tier1的誘惑就更不必多說(shuō)了。

Scaling 縮放

既然ECU中依靠的是定點(diǎn)整型計(jì)算,那其中的小數(shù)已經(jīng)是如何實(shí)現(xiàn)的?Scaling(縮放)。就好比,在ADC的10位采樣中,5V就使用0x3FF 來(lái)表示,即1個(gè)hex代表了4.886mV(5000mV/1023),也可以說(shuō)這個(gè)物理量的精度為4.886mV。

我們舉個(gè)例子,下面這個(gè)圖是一個(gè)簡(jiǎn)單的計(jì)算車(chē)輛加速度的數(shù)學(xué)模型,包括驅(qū)動(dòng)力F,阻力f,車(chē)身質(zhì)量m,以及最后期望得到的加速度a。我們用PHY()表示該變量的物理值,HEx()來(lái)表示該變量在MCU內(nèi)存中的數(shù)值。
 


驅(qū)動(dòng)力F,精度0.25N:

phy(F)= 0.25 hex(F)

阻力f,精度0.5N:

phy(f)= 0.5 hex(f)

質(zhì)量m,精度0.1kg:

phy(m)= 0.1 hex(m)

加速度a,精度0.2m/s2:

phy(a)= 0.2 hex(a)

物理公式:

phy(a) = [phy(F) - phy(f)] / phy(m)

將其轉(zhuǎn)化為定點(diǎn)整數(shù)運(yùn)算的同時(shí),也就是將hex值帶回到上述公式的過(guò)程:

0.2 hex(a) = [0.25 hex(F) - 0.5 hex(f)] / [0.1hex(m)]

遵循著先乘后除的原則,最終在ECU中運(yùn)行的代碼可能是這樣的:

hex(a) = [25 hex(F) - 50 hex(f)] / hex(m) / 2

使用Simulink等自動(dòng)代碼生成工具,還會(huì)基于此進(jìn)行進(jìn)一步優(yōu)化,比如使用底層庫(kù)函數(shù)來(lái)進(jìn)行算符運(yùn)算,或者把(÷2)改成右移(>>1)等等。

通過(guò)縮放方法,使得在滿(mǎn)足MCU定點(diǎn)整數(shù)運(yùn)算的前提下,還高效的實(shí)現(xiàn)了小數(shù)計(jì)算,同時(shí)自動(dòng)代碼生成工具又防止了數(shù)值溢出的風(fēng)險(xiǎn),進(jìn)一步增強(qiáng)了系統(tǒng)的穩(wěn)定性。至于Scaling到最后標(biāo)定工具的實(shí)現(xiàn),依靠的是A2L文件,具體可以看之前的這一期(A2L文件介紹),這里就不再贅述了。
 
 
分享到:
 
反對(duì) 0 舉報(bào) 0 收藏 0 評(píng)論 0
滬ICP備11026917號(hào)-25