伴随着导航系统功能日益多样化、软件算法愈加复杂和集成度要求更高的趋势,在大规模可编程器件上设计、验证和测试导航soc芯片成为解决方案之一。导航系统soc芯片设计的要求主要有:
①安全性。芯片的所有功能模块运行正常,运行机制透明,可靠性强。
②可配置性。根据应用要求对硬件进行裁减和配置,达到最佳的功能、功耗和面积比。
③高运算能力。具备在特定时间内完成复杂算法的运算能力。
soc芯片的核心是实现运算和控制功能的微处理器。leon是一款基于sparc v8架构的开源微处理器ip软核,在vhdl源代码基础上,结合具体需求加入定制的运算单元和外设接口建立soc系统。在配置灵活的leon核上运行embedded linux,提供soc调试和测试的基本平台。
1 软硬件平台构建
1.1 leon软核架构简介
leon核心是一个与sparcv8兼容的整数处理单元iu(integer unit),leon2是5级流水线,leon3是7级流水线。leon包含整数硬件乘法和除法单元、双协处理器接口(fpu浮点处理单元和co-processor协处理器),分离的指令和数据总线(harvard结构)。leon通过高速的amba-ahb总线,指令缓存和数据缓存分别和内存控制器及高速的外部接口相连传输数据。低速的amba-apb总线实现片上外设的接口,例如定时器、串口、网络接口等。leon3软核可配置体系架构如图1所示。
1.2 leon在soc芯片开发应用中的优势
leon软核最突出的优势是其良好的可配置性和可移植性,以及遵循gpl许可证协议的开源性。这些特性保证导航系统soc芯片的安全性,提供良好的性能和灵活的解决方案,也决定了在leon上进行嵌入式操作系统移植的特殊性。
1.2.1 开源性
基于gpl许可证协议,leon非容错版本软核ip提供vhdl源代码,仅是容错版本的leon软核需要商业授权。源代码公开是实现导航系统soc芯片设计安全性的前提,同时也使研究者和开发者从根本上研究软核的细节从而定制满足具体应用的软核成为可能。与全部源代码开放的leon相比,altera的nios软核等其他软核仅提供若干接口,无法在更深的软核层次上进行设计和优化。
1.2.2 优异的可配置性
leon软核通过集成一套丰富的接口和运算单元ip库,根据具体要求来达到性能、功耗和面积的平衡和优化的目的。
①软核iu可配置参数包括流水线的深度、地址和数据高速缓存(cache)。另外,常用指令及指令序列可以根据定制的硬件进行优化;在设计或配置新运算单元后能够对指令集进行扩展。在导航系统soc芯片设计中,通过配置leon的整数硬件乘除法单元以实现较高的运算性能;而在其他某些使用软件乘除法,即满足要求的应用中无需配置,以降低功耗和优化芯片面积。
②外围设备接口硬件通过挂载amba总线来实现。leon3的amba-ahp总线上能够灵活选择集成opencores的以太网控制器和greth以太网控制器中的任意一个。针对导航系统中常见的1553总线接口设备,在leon中通过配置gr1553单元完成1553总线到amba-ahb总线的转换,为1553总线设备的集成提供了方便。
③硬件加速单元(如特定加密算法、数字信号处理单元和浮点处理单元)根据需求集成。
优异的可配置性带来了硬件设计极大的灵活性,也为嵌入式操作系统的移植带来了一定难度(特别是在扩展了指令集的情况下)。考虑到进行性能测试的完整性和灵活性,leon3软核在本项目中的配置方案如图2所示。(详细配置参数未列出)
1.2.3良好的可移植性
leon软核通过层次度分明的vhdl模型实现。通过vhdl中特定的配置接口,leon核的关键参数(例如修改cache的大小和组织方式,乘法器的生成,速度、芯片面积的调整以及容错方案的选择)都能够灵活设置和移植;而唯一使用专用技术的模型是内存宏模块。这一部分的设计采用了加上中间交互层接口的方式,因此移植的工作仅需重新编写中间交互层接口。导航系统中包括单次滤波在内的大量算法经过硬件实现后需集成在leon中,根据leon特定的配置接口即可实现集成和soc系统移植。在本硬件平台的设计中,针对特定硬件开发板,通过修改顶层module文件设置以及更新引脚配置,即可完成硬件设计的移植工作。
目前,leon在研究领域被广泛应用,特别是作为软核嵌入在可编程器件中,作为构建soc芯片的控制和运算中心。leon软核的容错版本也已经用在了空间站上。在本导航系统soc芯片项目中,选择了开源且配置灵活的leon硬件平台和linux软件平台,并且在初期测试中表现出良好的性能。在本验证平台上,soc系统需要以太网接口、1553总线接口、串口、通用i/o口以及调试单元,具体配置方案如图3所示。
1.3 linux系统的移植和调试
近年来linux凭借其开源、性能优异、软件资源丰富的优势,在嵌入式平台上得到了广泛的应用。在leon上运行的操作系统目前已经有rtems、ecos、vxworks和嵌入式linux。选择嵌入式linux的主要原因,是由于linux的开发平台搭建得比较完善,在工具链、内核移植、驱动程序以及应用程序的各层上都有很好的支持;使用linux开发能够大大加快开发的进度,并满足多数应用的指标。目前,对leon提供良好支持的linux发行版有snapgear。由于leon软核优异的可配置性和可移植性,在leon上进行linux的移植工作与普通定制的嵌入式微处理器相比,有很多特殊点和难点,主要表现在两个方面。
(1)配置和编译内核
编译内核的目的在于,生成在目标cpu上运行的内核。由于leon自身硬件的可配置性,linux的源代码中也需要加入与硬件核相关的选项进行配置。若leon软核配置ip,例如硬件加速单元、加密单元或外设接口,则linux内核中需加入驱动程序。因此,内核的配置分为两类,一类是配置leon软核自身的设置,另一类是配置目标板上的其他外围设备,例如内存系统、外设接口等。与一般的定制嵌入式cpu(如arm体系的cpu)相比,前一类配置是leon独有的。这种配置的灵活性为软硬件平台的定制提供了极大的方便。例如,snapgear embedded linux根据具体需求配置硬件乘除法指令和浮点运算单元fpu;在不需要进行浮点运算的应用中,配置leon硬件就不需配置浮点单元,相应linux的配置中取消fpu,进而节省硬件资源和软件的开销。
项目中实际采取的leon软核配置方案为:leon核选择leon2mmu或leon3mmu,时钟频率为50mhz,配置硬件整数乘除法指令和fpu对应的浮点操作指令。外围设备配置的串口的起始波特率为38 400 bps,另外,还配置了只读存储区rom和随机存取器ram。
(2)调试内核
leon软核平台调试工具有:tsim、grsim和grmon。
tsim:sparc架构处理器通用软件仿真器,用于软件仿真erc32-和leon微处理器。
grsim:leon平台软件仿真器,支持多处理器平台(mp)。
grmon:leon平台硬件仿真调试器,支持基于grlib软核ip的soc设计的硬件调试。
tsim作为软件模拟的vhdl模型,调试过程中常见的启动选项设置如下:
-freq:设置tsim模拟leon处理器硬件的工作频率,leon3默认为50 mhz。
-fpm:配置模拟fpu模块。
-nfp:针对无fpu的模拟硬件平台关闭fpu。
-nov8:针对无硬件乘除法硬件平台关闭硬件乘除法指令。
-pr:指定使用性能观察器。
在tsim-leon平台上进行程序的测试和调试过程中,profiling(性能观察器)能够显示程序各个分支函数以及宏在实际运行中占用的资源,从而为程序的进一步优化提供必要参考,例如某测试程序在程序运行完毕后使用pro命令得出的结果:
program exited normally
tsim>pro
function rario(%)
_start 99.99
_hardreset_real 99.99
main 99.82
processl 92.90
__muldf3 56.44
__adddf3 31.14
…
宏_muldf3和_adddf3在程序运行中占用了大量时间,需进一步优化。经测试证明,通过在leon中集成fpu消除了宏_muldf3和__adddf3,从而大幅提高浮点运算性能。
2 leon数学运算性能及算法测试
在leon软核系统上移植成功linux后,通过特定测试程序验证leon在数学运算上的性能,以确定是否满足项目开发的需求。测试中对比arm9 sc32410,分析leon以及其集成fpu配置的性能,并根据测试结果对软硬件配置进一步优化。由于leon硬件配置十分灵活,因此在测试中采用了多种平台,编译程序的选项也有对应的设置。中断响应、功耗等虽然也是处理器性能的重要方面,但本文尚未涉及。
2.1 测试平台
(1)硬件测试平台
硬件测试平台如表1所列。
tsim仿真器通过主机的浮点机制来进行浮点运算仿真,因此仿真器的浮点精度与主机平台相关。仿真器的时间精度与meikofpu相同,集成fpu的leon3相当于集成meikofpu的leon3。
(2)软件测试平台
①leon2和leon3在linux 2.6.11下运行。
②直接使用gcc编译生成程序加载到leon上并运行,无操作系统。
③samsungs3c2410在linux 2.4.18下运行。
(3)不同硬件测试平台上测试程序说明
不同的硬件平台和软件平台的搭配需在编译程序过程中指定特定选项(通过makefile管理):
①一msoft-float选项。leon平台上若未集成fpu,则进行浮点运算必须指定该选项,此时所有浮点运算转化为软件模拟实现,代价是运行时间大大增加,优势是能够节省硬件资源(加入fpu后leon的le的使用率是无fpu情况下的近2倍)。
②-mv8选项。leon平台上配置硬件整数乘除法构件时需要指定该选项。
③sparc-linux-gcc和sparc-elf-gcc编译器。对于leon平台,若在linux系统上运行测试程序,则需用sparc-linux-gcc进行编译,程序使用动态链接库完成链接;若直接在leon硬件上加载运行,则需用sparc-elf-gcc:进行编译,程序使用静态链接库完成链接。
④arm-linux-gcc:编译器。arm9的s3c2410编译器为arm-linux-gcc。
⑤-o3优化选项。leon和arm的微处理器通过指定该选项进行程序算法优化。
2.2测试项目及说明
测试项目1:整型数组与浮点数组的加法、乘法及乘加运算。每种类型的运算都循环50 000次,以验证leon各种平台和arm9的mcu在数学运算上的性能,并分析加入linux系统后程序运行性能的变化。
测试项目2:单次滤波算法,程序每一次运行包含12 791次浮点乘法和13 595次浮点加法,以验证在导航系统的滤波算法中leon在多种配置下的性能。
测试程序采用clock()系统调用获取算法开始运行和结束运行的时间,并以算法的运行时间作为衡量系统效能的唯一标准。
2.3测试总结
leon平台灵活的软硬件配置在多项测试中表现优异,总结如下:
①与主流arm9微处理器在数学运算上性能相当。
②嵌入式linux操作系统平台相对于无系统平台有一定资源开销,根据具体应用合理选择软件平台是否需要嵌入式linux系统。
③指定-mv8和-03选项后程序性能提升显著,根据具体应用合理选择是否配置整数硬件乘除法器。
④leon硬件配置fpu后浮点运算性能提高一个数量级,代价是综合需要的逻辑资源增长一倍,在权衡性能和可编程器件资源后合理选择配置方案。
结合导航系统soc芯片高速数据处理的需求,设计方案定型为leon+fpu,在测试中能够满足系统的运算吞吐量指标要求。
可配置fpu对leon数学运算性能的提升极为有效,特别是在运算密集型的soc设计中。leon3的grfpu相对于其他常见微处理器的fpu有较大优势。表2为若干处理器核fpu单元完成浮点运算指令需要的处理(延迟)时钟周期数对比情况口。
时钟周期数说明:括号外数字是指令处理周期数,即硬件流水线中完成该指令的周期;括号内数字是指令延迟周期数,即该指令进入流水线至从流水线中输出结果所需要的时钟周期数。
3 结论
作为硬件vhdl代码开源的sparc架构软核ip微处理器,leonx(包括leon2和leon3)良好的可移植性和可配置性使其成为建立片上系统微处理器的一个优选方案。采用snapgear embedded linux的方案能够提供一个从内核、库文件到常用应用程序的验证原型。然而,leon硬件配置上的改变、升级需要驱动程序的支持,定制的软件也需要自主开发。另外,在leon平台上移植并运行良好的实时操作系统有rtems和ecos,根据实际的需求可以灵活选择这些软件开发平台。
通过详尽的对比测试,leon软核的性能优异,在导航系统soc芯片原型设计中得到验证。测试为基于leon开源可配置软核的嵌入式系统开发的软硬件配置方式提供了有益的参考,特别是集成浮点处理单元fpu的方案。随着可编程器件规模的超大型化,实现高性能且配置灵活的开源soc硬件系统及软件平台的优势日益明显,为制造asic提供前期原型论证提供极大方便。
美军用的Windows10平板,就是这么高科技!
人工智能的未来市场趋势剖析,机器学习变成企业必须拥有的能力
电源电压超压欠压报警电路图
国产FPGA将逐渐缩短与国外技术水平的差距
关于电缆接头弯曲时的相位稳定性分析
基于LEON开源微处理器IP软核实现SoC系统基本平台的构建
DSP的GPIO调试心得
小米研发高端CPU,小米6s或将首发
连拓精密气密性防水测试仪检测手环案例
评论:合作伙伴对微软"Surface"作何反应?
防水透气膜的应用将会提升交流充电桩防水防腐蚀的能力
你准备好加速你的DDR5设计了吗?
魅族pro7什么时候上市?魅族pro7最新消息:魅族Pro7真的要来了!双屏双摄旗舰,门店已开启预售!
移动分布式充电,新能源汽车推广的“最后一公里”?
传苹果将入股瑞萨子公司,意欲何为?
IPM智能功率模块是什么 IPM的特点
ch32v307和stm32的区别
AMC1204应用指南
中国空调出口量累计达到4364万台,产量同比增长5.5%
虚拟现实在军事训练中的好处