沈智明,資深經理,晶心科技股份有限公司
先進駕駛輔助系統(Advanced Driver Assistance Systems;ADAS)為現今 IT 產業發展之重要方向,是將來可以達到無人駕駛智慧車輛的技術進階過程。ADAS 的主要功能並不是控制汽車,而是為駕駛人提供車內的工作情況與車外環境變化等相關資訊進行分析,提供預先警告可能的危險狀況,讓駕駛人提早採取因應措施,避免交通意外發生。晶心科技的產品 D1088 具數位信號處理器(digital signal processor,DSP)指令,除了一般 CPU 指令外還多了 SIMD instructions 來加速ADAS 系統的演算,增加 ADAS 產品之性能,也因此獲得客戶的認同使用晶心科技 D1088 開發 ADAS 產品。使用 D1088 開發的 ADAS 產品包括盲點偵測(Blind-Spot Detection, BSD),前車碰撞警示(Forward-Collision Warning, FCW),車道偏移警示(Lane-Departure Warning, LDW),移動物偵測(Motion-Object Detection, MOD),倒車碰撞警示(Rear-Collision Warning, RCW),行人碰撞警示(Pedestrian-Collision Warning, PCW)及行車紀錄器。
車 用 電 子 須 通 過 AEC-Q100(Automotive Electronics Council – Failure Mechanism Based Stress Test Qualification For Integrated Circuits)的認證,要求有別於一般消費性電子產品,本文之目的除了告訴我們的客戶(IC設計業者)D1088的優勢,也與我們的客戶一起探討車用電子與消費性電子產品間差異。希望在車用電子領域,晶心科技與我們的客戶攜手同行從今日開發ADAS晶片到未來的無人車自動駕駛。
1. D1088 應用於 ADAS 的優勢
生活環境中都是類比訊號,聲音是類比訊號,影像是類比訊號,汽車碰撞的壓力值還是類比訊號,汽車在行進中,感知器將量測數值傳送進 ADAS 控制器,經過 ADC 轉換後得到數位訊號﹐車內外環境中充滿了干擾與雜訊,濾波器可以濾掉雜訊與干擾,大大提升訊號正確性與可靠度,還原事物的原貌。文中以數位濾波器 FIR (Finite Impulse Response)為例,比較使用一般 CPU 指令與D1088 提供的 DSP 指令在實踐 FIR 時的差異,說明 D1088 的優勢與特性。
1.1 使用Fir_q15 函數驗證
以 ADAS 中車道偏移警示系統會用到的 FIR 數位濾波器,使用 Fir_q15[1] 函數 C 語言實作如下所示:
void nds32_fir_q15(const nds32_fir_q15_t *instance,q15_t *src, q15_t *dst, uint32_t size)
此 FIR 數位濾波器函數,其中函數的引數:*instance 此是指向 FIR 結構的指標,數位濾波器參數特性定義在此。輸入*src 與輸出*dst 是以 Q15 的資料格式來呈現,size 是此函數一次處理的取樣數目,本實驗的取樣數目是 1024。
在使用此函數時,設計兩種定義,一種是全部使用 Andes baseline 指令, 另一種使用 DSP 指令,D1088 除了具備一般 CPU 功能外,增加超過 130 DSP 相關指令。在此函數中除了運用 DSP Q 指令外也使用了DSP 中的saturation 運算, 當數位訊號運算後產生 overflow 或 underflow 時,沒有使用 saturation 運算會產生錯誤且離譜的結果,Andes saturation 指令可以大大提升效能。
在 Fir_q15 函數在 D1088 上做驗證函數的取樣數目為 1024,在全部使用baseline 指令運算所得的 cycle 數除以取樣數目 1024 得到每一筆 DSP 訊號所需要的 cycle 數是 210,如果使用 DSP 指令,處理每一筆 DSP 指令只需要的是 41 cycles。從 Fir_q15 函數運算結果得知 DSP 指令對比 baseline 指令運算效能提升5.12 倍。
1.2 DSP Benchmark 數值
下圖1是依各類測試群組得到 D1088 與 Baseline CPU 的 benchmark 數據,總體 benchmark 的平均值 D1088/N1068 有 64%的性能提升:
![](http://www.andestech.com/wp-content/uploads/daas-2.png)
圖1 DSP Library效能圖
2. 車用電子產品需要通過之認證
近幾年隨著汽車市場逐步走向車聯網、電動車領域,需要更多駕駛資訊輔助整合系統,也讓IC設計業者找到一個好的發展方向與新的產品市場。很明顯, 車用電子要求有別於一般消費性產品,分別在產品的壽命,溫度的範圍,可靠度等級與安全性的要求等皆遠高於消費性電子產品,車用電子需要經過ISO 26262 與AEC-Q100認證。晶心科技是CPU IP 的供應商,提供CPU IP給IC設計業者。從AEC-Q100的驗證流程中,了解IC設計業在車用電子所在的角色,也可以得知CPU與IC設計業者在車用電子中的位置與關係。
2.1 車用IC規範AEC-Q100驗證流程
圖2為AEC-Q100規範中的驗證流程[3],此圖是以Die Design→Wafer Fab.→ PKG Assembly→Testing的製造流程來繪製,各群組的關聯性須要參考圖中的箭頭符號,本文重點著重在IC設計業者(Design House),所以僅標示AEC-Q100中Design House與 Design Verification 相關測試項目。
![](http://www.andestech.com/wp-content/uploads/daas2.png)
圖 2. AEC-Q100 驗證流程
2.2 IC設計業者進行AEC-Q100驗證
在AEC-Q100建議中,IC設計業者需要依據IC晶片在汽車中使用位置區分為引擎區與乘坐區兩部份,其基本工作環境要求不同,故對於測試溫度,可靠度, 安全性的建議規格也不同。由於IC晶片種類繁多,因此在試驗條件上,AEC-Q100 已進行分門別類,亦即依照屬性設定建議的試驗條件,當IC晶片設計測試規範訂定後依據圖2 AEC-Q100驗證流程圖,IC設計業者需完成紅框的驗證項目,當Wafer Foundry也通過需做測項後,AEC-Q100驗證項目皆完成後,就可說此IC晶片完成AEC-Q100的驗證。
3. 車用電子產品需要通過之認證
除了 ADAS 本身須具備之功能與通過 AEC-Q100 認證外,也需有額外設計才能符合在汽車的應用環境下的需求,下列幾個實例說明在車用 ADAS 中增加的設計,有別於一般消費性電子產品。
3.1 CRC checksum 安全驗證
在車用 ADAS 設計實例中,考慮到汽車環境中干擾嚴重且需要高可靠度。ADAS 程式在燒錄進 ADAS 產品的 NOR-Flash 時, 將欲燒錄程式經由CRC32-CCIR 演算後得到 32bits 結果一併寫在 NOR-Flash 上。在車上當 ADAS 產品開機後,NOR-Flash 上的程式搬到 RAM 後,在 RAM 的程式也一樣經過CRC32-CCIR 演算後得到的結果與程式後面 32bit checksum 演算結果做比對,如果 RAM 端與 NOR-Flash 數值一致表示通過 CRC checksum 安全驗證,如果數值不一致代表 RAM 上的程式在過程中被干擾須採取對應的措施。增加 CRC checksum 安全驗證可以知道車用 ADAS 對安全與可靠度要求遠高於一般消費性電子產品。
3.2 程式啟動前先行驗證 CPU 周邊
有別於一般消費性產品,車用電子產品在程式啟動前需驗證 CPU 周邊device 本身之正確性,以 ADAS 實例來說明需要驗證 cache 與 RAM。在 ADAS 程式執行前,提供晶心科技自訂指令集 CCTL (Cache Control)指令做 cache 的驗證。將 CCTL 指令以 intrinsic 函數方式(如下所示)[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)
開發 ADAS 客戶使用晶心科技提供 nds32 cctlidx_write 函數寫入 再用 nds32 cctlidx_read 函數讀出來驗證整個 cache device。
RAM 在使用前也需要做 RAM device 的驗證,進行 RAM device 驗證需要驗證程式結合 RAM 測試 pattern。晶心科技使用程式編寫的技巧提供 ADAS 開發業者不需要用到RAM 的驗證程式結合ADAS 開發業者使用March C Algorithm 做為的 RAM device 的驗證 pattern。
在 ADAS 開機時使用 March C Algorithm 來做 RAM 的 BIST 好處是快速, 產品開機時所需的等待時間對於車用產品極為重要,也是車用產品優劣的重要評判準則,March C Algorithm 除了簡單快速外,還有 fault coverage 高的特性。受到廣泛的應用,將 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. 結語
D1088 具 DSP 指令適合應用在於先進駕駛輔助系統。晶心科技提供高效能符合車用的 CPU 給 IC 設計業者,在 IC 設計業者開發車用 ADAS 產品時,晶心科技提供適當的支援協助 IC 設計業者開發具競爭力且符合車規之 ADAS 晶片與系統,衷心感謝偉詮公司顧朝奇博士與陳文慶先生的協助,才能完成此技術文章。
電子產業各項領域中,不論是 MCU,觸控周邊,IoT 與本文探討之車用 ADAS, 晶心科技皆已取得不錯的成效,也期望在未來趨勢 ADAS 與車聯網產業中晶心科技與我們的客戶 IC 設計業者緊密的合作,開發出具競爭力的晶片與系統,達到雙贏的目的。
參考文件
[1] Andes Fir_q15 Program “nds32_fir_q15.c”
[2] Andes Company Profile July 2016 page 28
[3] 新通訊 2016 年 4 月號 182 期《 技術前瞻 》
[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