Andes D1088 在汽车ADAS之应用
扫描二维码
随时随地手机看文章
高级驾驶辅助系统(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 矩阵指令外也使用了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 数值
下图[2]是依各类测试基准得到D1088与 Baseline CPU的benchmark 数据,总体benchmark的平均值D1088/N1068有64%的性能提升:
图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 相关测试项目。
图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