Andes D1088 在汽車ADAS之應(yīng)用
高級駕駛輔助系統(tǒng)(Advanced Driver Assistance Systems;ADAS)為現(xiàn)今IT產(chǎn)業(yè)發(fā)展的重要方向,是將來可以達到無人駕駛智能車輛的技術(shù)高級過程。ADAS的主要功能并不是控制汽車,而是為駕駛?cè)颂峁┸噧?nèi)的工作情況與車外環(huán)境變化等相關(guān)信息進行分析,預先警告可能的危險狀況,讓駕駛?cè)颂嵩绮扇?yīng)對措施,避免交通意外發(fā)生。晶心科技的產(chǎn)品 D1088具備數(shù)字信號處理器(digital signal processor,DSP)指令,除了一般CPU指令外還多了SIMD instructions來加速ADAS算法的計算,增加ADAS產(chǎn)品的性能,也因此獲得客戶的認同使用晶心科技D1088開發(fā)ADAS產(chǎn)品。使用D1088開發(fā)的ADAS產(chǎn)品包括盲點偵測(Blind-Spot Detection, BSD),前車碰撞警示(Forward-Collision Warning, FCW),車道偏移警示(Lane-Departure Warning, LDW),運動目標偵測(Motion-Object Detection, MOD),倒車碰撞警示(Rear-Collision Warning, RCW),行人碰撞警示(Pedestrian-Collision Warning, PCW)及行車紀錄器。
本文引用地址:http://butianyuan.cn/article/201612/341776.htm車用電子須通過AEC-Q100(Automotive Electronics Council - Failure Mechanism Based Stress Test Qualification For Integrated Circuits)的認證,要求有別于一般消費性電子產(chǎn)品,本文的目的除了告訴我們的客戶(IC設(shè)計業(yè)者)D1088的優(yōu)勢,也與我們的客戶一起探討車用電子與消費性電子產(chǎn)品間的差異。希望在車用電子領(lǐng)域,晶心科技與我們的客戶攜手同行從今日開發(fā)ADAS芯片到未來的無人車自動駕駛。
1. D1088應(yīng)用于ADAS的優(yōu)勢
生活環(huán)境中都是模擬信號,聲音是模擬信號,圖像是模擬新號,汽車碰撞的壓力值還是模擬信號,汽車在行進中,傳感器將量測數(shù)值傳送進ADAS控制器,經(jīng)過ADC轉(zhuǎn)換后得到數(shù)字訊號﹐車內(nèi)外環(huán)境中充滿了干擾與噪聲,濾波器可以濾掉噪聲與干擾,大大提升訊號正確性與可靠度,還原事物的原貌。文中以數(shù)字濾波器 FIR (Finite Impulse Response)為例,比較使用一般CPU指令與D1088提供的DSP指令在運算FIR時的差異,說明D1088的優(yōu)勢與特性。
1.1 使用Fir_q15 函數(shù)驗證
以ADAS 中車道偏移警示系統(tǒng)會用到的FIR 數(shù)字濾波器,使用Fir_q15[1] 函數(shù)C語言實作如下所示:
void nds32_fir_q15(const nds32_fir_q15_t *instance,q15_t *src, q15_t *dst, uint32_t size)
此FIR 數(shù)字濾波器函數(shù),其中函數(shù)的輸入?yún)?shù):*instance此是指向FIR 結(jié)構(gòu)體的指針,數(shù)字濾波器參數(shù)特性定義在此。輸入*src 與輸出*dst是以Q15的數(shù)據(jù)格式來表征,size 是此函數(shù)一次處理的抽樣個數(shù),本實驗的抽樣個數(shù)是1024。
在使用此函數(shù)時,設(shè)計兩種定義,一種是全部使用Andes baseline 指令,另一種使用DSP指令,D1088除了具備一般CPU功能外,增加超過130 條DSP 相關(guān)指令。在此函數(shù)中除了運用DSP 矩陣指令外也使用了DSP中的saturation 運算,當數(shù)字信號運算后產(chǎn)生overflow或underflow時,沒有使用saturation 運算會產(chǎn)生錯誤且離譜的結(jié)果,Andes saturation指令可以大大提升效能。
在Fir_q15函數(shù)在D1088上做驗證函數(shù)的抽樣個數(shù)為1024,在全部使用baseline 指令運算所得的cycle數(shù)除以取樣數(shù)目1024得到每一個DSP信號所需要的cycle數(shù)是210,如果使用DSP指令,處理每一筆DSP信號只需要的是41 cycles。從Fir_q15 函數(shù)運算結(jié)果得知DSP 指令對比 baseline指令運算性能提升5.12倍。
1.2 DSP Benchmark 數(shù)值
下圖[2]是依各類測試基準得到D1088與 Baseline CPU的benchmark 數(shù)據(jù),總體benchmark的平均值D1088/N1068有64%的性能提升:
圖1. DSP Library 性能圖
2. 車用電子產(chǎn)品需要通過的認證
近幾年隨著汽車市場逐步走向車聯(lián)網(wǎng)、電動汽車領(lǐng)域,需要更多駕駛信息輔助整合系統(tǒng),也讓IC設(shè)計業(yè)者找到一個好的發(fā)展方向與新的產(chǎn)品市場。很明顯,車用電子要求有別于一般消費性產(chǎn)品,分別在產(chǎn)品的壽命,溫度的范圍,可靠度等級與安全性的要求等皆遠高于消費性電子產(chǎn)品,車用電子需要經(jīng)過ISO 26262與AEC-Q100認證。晶心科技是CPU IP 的供貨商,提供CPU IP給IC設(shè)計業(yè)者。從AEC-Q100的驗證流程中,了解IC設(shè)計業(yè)在車用電子所在的角色,也可以得知CPU與IC設(shè)計業(yè)者在車用電子中的位置與關(guān)系。
2.1 車用IC規(guī)范AEC-Q100驗證流程
圖2為AEC-Q100規(guī)范中的驗證流程[3],此圖是以Die Design→Wafer Fab.→PKG Assembly→Testing的制造流程來繪制,各模塊的關(guān)聯(lián)性須要參考圖中的箭頭符號,本文重點著重在IC設(shè)計業(yè)者(Design House),所以僅標示AEC-Q100中Design House與 Design Verification 相關(guān)測試項目。
圖2. AEC-Q100驗證流程
2.2 IC設(shè)計業(yè)者進行AEC-Q100驗證
在AEC-Q100建議中,IC設(shè)計業(yè)者需要依據(jù)IC芯片在汽車中使用位置區(qū)分為引擎區(qū)與乘坐區(qū)兩部份,其基本工作環(huán)境要求不同,故對于測試溫度,可靠度,安全性的建議規(guī)格也不同。由于IC芯片種類繁多,因此在試驗條件上,AEC-Q100已進行分門別類,亦即依照屬性設(shè)定建議的試驗條件,當IC芯片設(shè)計測試規(guī)范訂定后依據(jù)圖2 AEC-Q100驗證流程圖,IC設(shè)計業(yè)者需完成紅框的驗證項目,當Wafer Foundry也通過需做測項后,AEC-Q100驗證項目都完成后,就可說此IC芯片完成AEC-Q100的驗證。
3. 車用電子產(chǎn)品需要通過的認證
除了ADAS本身須具備的功能需通過AEC-Q100認證外,也需有額外設(shè)計才能符合在汽車的應(yīng)用環(huán)境下的需求,下列幾個舉例說明在車用ADAS中增加的設(shè)計,有別于一般消費性電子產(chǎn)品。
3.1 CRC checksum 安全驗證
在車用ADAS設(shè)計實例中,考慮到汽車環(huán)境中干擾嚴重且需要高可靠度。ADAS程序在刻錄進ADAS 產(chǎn)品的NOR-Flash時,將欲刻錄程序經(jīng)由CRC32-CCIR演算后得到32bits結(jié)果一并寫在NOR-Flash上。在車上當ADAS產(chǎn)品開機后,NOR-Flash 上的程序搬到RAM后,在RAM的程序也一樣經(jīng)過CRC32-CCIR演算后得到的結(jié)果與程序后面32bit checksum演算結(jié)果做比對,如果RAM端與NOR-Flash數(shù)值一致表示通過CRC checksum 安全驗證,如果數(shù)值不一致代表RAM上的程序在過程中被干擾須采取對應(yīng)的措施。增加CRC checksum 安全驗證可以知道車用ADAS對安全與可靠度要求遠高于一般消費性電子產(chǎn)品。
3.2 程序啟動前先行驗證 CPU 周邊
有別于一般消費性產(chǎn)品,車用電子產(chǎn)品在程序啟動前需驗證CPU周邊device本身之正確性,以ADAS實例來說明需要驗證cache與RAM。在ADAS程序執(zhí)行前,提供晶心科技自定義指令集CCTL (Cache Control)指令做cache的驗證。將CCTL指令以intrinsic 函數(shù)方式(如下所示)[4]提供給客戶使用:
Unsigned int __nds32__cctlidx_read (const enum nds32_cctl_idxread subtype, unsigned int idx)
void __nds32__cctlidx_write (const enum nds32_cctl_idxwrite subtype, unsigned int b, unsigned int idxw)
開發(fā)ADAS客戶使用晶心科技提供__nds32__cctlidx_write 函數(shù)寫入 再用__nds32__cctlidx_read 函數(shù)讀出來驗證整個cache device。
RAM在使用前也需要做RAM device的驗證,進行RAM device 驗證需要驗證程序結(jié)合RAM 測試pattern。晶心科技使用程序編寫的技巧提供ADAS開發(fā)業(yè)者不需要用到RAM的驗證程序結(jié)合ADAS開發(fā)業(yè)者使用March C Algorithm做為的RAM device的驗證pattern。
在ADAS開機時使用March C Algorithm 來做RAM的BIST好處是快速,產(chǎn)品開機時所需的等待時間對于車用產(chǎn)品極為重要,也是車用產(chǎn)品優(yōu)劣的重要評判準則,March C Algorithm 除了簡單快速外,還有fault coverage 高的特性。受到廣泛的應(yīng)用,將March C Algorithm 的pseudo code 詳列如下[5]:
//for writing 0s in block 1 and writing 1s in block 2, let n and m are rows and columns
for(i=0;i<(n-1)/2;i=i+1)
begin
for(j=0;j<(m-1);j=j+1)
mem[i][j]=0; //write 0 in m1
end
for(i=(n-1)/2;i<(n-1);i=i+1)
begin
for(j=0;j<(m-1);j=j+1)
mem[i][j]=1; //write 1 in m2
end
//for reading background and for writing alternate
for(i=0;i<(n-1)/2;i=i+1)
begin
for(j=0;j<(m-1);j=j+1)
begin
if(mem[i][j]==0)
mem[i][j]=1;
else return;
end
end
for(i=(n-1)/2;i<(n-1);i=i+1)
begin
for(j=0;j<(m-1);j=j+1)
begin
if(mem[i][j]==1)
mem[i][j]=0;
else return;
end
end
4. 結(jié)語
D1088具DSP指令適合應(yīng)用在高級駕駛輔助系統(tǒng)。晶心科技提供高性能符合車用的CPU給IC設(shè)計業(yè)者,在IC設(shè)計業(yè)者開發(fā)車用ADAS產(chǎn)品時,晶心科技提供適當?shù)闹С謪f(xié)助IC設(shè)計業(yè)者開發(fā)具競爭力且符合車規(guī)的ADAS芯片與系統(tǒng),衷心感謝偉詮公司顧朝奇博士與陳文慶先生的協(xié)助,才能完成此技術(shù)文章。
電子產(chǎn)業(yè)各項領(lǐng)域中,不論是MCU,觸控,IoT與本文探討之車用ADAS,晶心科技都已取得不錯的成績,也期望在未來趨勢ADAS與車聯(lián)網(wǎng)產(chǎn)業(yè)中晶心科技與我們的客戶IC設(shè)計業(yè)者緊密的合作,開發(fā)出具競爭力的芯片與系統(tǒng),達到雙贏的目的。
參考文件
[1] Andes Fir_q15 Program “nds32_fir_q15.c”
[2] Andes Company Profile July 2016 page 28
[3] 新通訊 2016 年 4 月號 182 期《 技術(shù)前瞻 》
[4] Andes Programming Guide for ISA-V3 page 104
[5] Muddapu Parvathi , N. Vasantha, K. Satya Parasad, “Modified March C - Algorithm for Embedded Memory Testing” International Journal of Electrical and Computer Engineering (IJECE) Vol. 2, No.5, October 2012, pp. 571~576 ISSN: 2088-8708
評論