文献标识码:B
文章编号: 0258-7998(2010)10-0128-04
片上系统SoC(Sytem on Chip),即是将整个系统集成在单个的芯片上[1]。与传统的板级电路不同,SoC集成的完整系统一般包括系统级芯片控制逻辑模块、微处理器/微控制器CPU内核模块、数字信号处理器(DSP)模块、嵌入的存储器模块、与外部进行通信的接口模块、含有ADC/DAC的模拟前端模块、电源和功耗管理模块,是一个具备特定功能、服务于特定市场的软件和硅集成电路的混合体(如WLAN基带芯片、便携式多媒体芯片、DVD播放机解码芯片等)。
在SoC的设计总时间中,系统验证的时间约占70%以上。为缩短SoC的设计时间、提高设计质量,需要对验证技术进行研究开发。软硬件协同验证方法与传统的数字系统仿真验证方法不同,软硬件协同仿真验证是针对软件和硬件系统模块进行的混合模拟仿真[2]。目前大多数公司提供的开发验证系统(开发板)存在两个不足:一是开发板的性能、规模难以根据特定的设计需求灵活、自由地调节;二是开发板的功能大多数只能进行软件代码的调试,即使ARM公司提供的开发平台也只能调试部分硬件。而现场可编程门阵列(FPGA)作为集成电路设计技术的第三次重大进步的重要标志,可以使RTL综合的结果直接运行在SoC芯片上,重用性及现场灵活性较好。因此,本文利用Altera公司的FPGA开发工具对基于国产龙芯I号处理器IP核的SoC芯片进行ASIC流片前的系统验证,全实时方式运行协同设计所产生的硬件代码和软件代码,构建一个可独立运行、可现场监测的验证平台。
1 基于龙芯I号处理器IP核SoC芯片
龙芯I号CPU IP核是兼顾通用及嵌入CPU特点的32位处理器内核,采用类MIPS Ⅲ指令集,具有7级流水线、32位整数单元和64位浮点单元;具有高度灵活的可配置性,方便集成的各种标准接口。图1为龙芯I号CPU IP核可配置结构,用户可根据自己的需求进行选择配置,从而定制出最适合用户应用的处理器结构。
主要的可配置模块包括:浮点部件、多媒体部件、内存管理、Cache、协处理器接口。浮点部件完全兼容MIPS的浮点指令集合,其相关的系统软件完全符合ANSI/IEEE 754-1985二进制浮点运算标准。浮点部件主要包括浮点ALU部件和浮点乘法/除法部件,用户可根据自己的实际应用选择是否添加。媒体部件复用了MIPS浮点指令的Format域,并复用了浮点寄存器堆,媒体指令集基本对应了Intel SSE媒体指令集合的各种操作。图2为基于龙芯I号CPU IP核的SoC系统架构。
该SoC芯片支持通用MIPS32指令集,主频可达266 MHz;内置MAC网络,提供MII接口;存储器接口,芯片同时支持SDRAM接口、NOR Flash/ROM和NAND Flash接口,并特置HPI接口可直接与VOIP CODEC芯片相连;提供丰富的其他外设接口支持,包括I2C接口、UART串口、SPI接口、AC97等接口设备。提供丰富的GPIO接口,能够为“网络+语音”以及工业控制应用提供高效的单芯片解决方案。
2 FPGA验证平台的设计
2.1 FPGA的开发流程
FPGA的典型开发流程如图3所示。在图3中,逻辑仿真器主要有Modelsim、Verilog-XL等,逻辑综合器主要有LeonardoSpectrum、Synplify Pro、FPGA Express/FPGA CompilerII等,FPGA厂家工具有Altera公司的Max+PlusII、QuartusII,Xilinx公司的Foundation ISE、Alliance等。设计输入主要有原理图输入和HDL输入两种方式,绝大部分设计,FPGA和ASIC的工程师都使用HDL平台。设计仿真主要包括功能仿真和网表仿真,设计仿真需要RTL代码或综合后的HDL网表和验证程序,有时候还需要测试数据,测试数据可能是代码编译后的二进制文件或使用专门的工具采集的数据。布局布线工具利用综合生成的网表、调用模块的网表,根据布局布线目标,把设计翻译成原始的目标工艺,最后得到生成编程比特流所需的数据文件。布局布线一般需要的输入输出与调用关系如图4所示。布局布线目标包括所使用的FPGA具体型号等,约束条件包括管脚位置、管脚电平逻辑(LVTTL、LCMOS等)需要达到的时钟频率,有时包括部分模块的布局、块RAM的位置等。在一般设计中,只需要注意管脚位置和需要达到的时钟频率,逻辑端口与FPGA管脚的对应取决于PCB板的设计。
2.2 验证平台的系统设计
本验证平台FPGA采用Altera公司的Cyclone II EP2C70,该器件采用了TSMC领先的90 nm低电介工艺技术生产;支持4个可编程锁相环(PLL),提供灵活的时钟管理和频率合成能力;包含了150个18×18 bit乘法器,可以完成基本的DSP处理;高速外接存储器接口支持SRAM、DRAM、DDR、DDR2以及QDRII SRAM;支持差分和单端I/O标准,包括接收速率805 Mb/s和发送速率640 Mb/s的LVDS、mini LVDS、LVPECL、差分HSTL和差分SSTL及处理器、ASSP和ASIC接口的64位66 MHz PCI和PCI-X;高达260 MHz工作频率,真正的双端口工作(1个读和1个写,2个读或2个写);与133 MHz PCI-X 1.0标准兼容;用户最多可用引脚622个;高达402.5 MHz性能的分层时钟网络,多达16个全局时钟线,快速串行配置时间小于100 ms;支持3.3 V、2.5 V或1.8 V多种电压,可用于视频、图像处理(如MPEG4编码和译码、视频滤波)和无线基础设备中。基于龙芯I号CPU IP核的SoC的验证平台结构如图5所示。
图5 中,外围电路的主要功能是验证SoC 中各个接口IP 模块能否与龙芯I号IP核、外部接口单元、硬件驱动软件和实时操作系统协调高效地工作。由于接口(如USB接口、UART/IrDA 接口、SPI和LCD接口等)电路结构比较简单,且很多资料都有介绍,在设计时,除了注意通用的设计规则和印制电路板(PCB) 布局布线外,没有特别的要求。同时,为了便于分析各个被验证的IP模块在任意时刻的状态, 将Cyclone II EP2C70的大多数I/O引脚都引出到PCB上,以方便SoC开发人员使用逻辑分析仪进行信号实时采集和分析,也可让信号发生器产生一些特定信号以供系统调试使用。该开发系统在设计PCB时还特别注意了电磁干扰的屏蔽问题。
2.3 SoC到FPGA的系统移植
使用Altera公司的FPGA开发工具QuartusII,将SoC向Cyclone II EP2C70(FPGA)移植的步骤如下:
(1)对SoC进行修改,以适合FPGA的开发环境。修改子模块配置、RAM、FIFO等,添加PLL对所需要的时钟进行适当的分/倍频,或提高时钟信号的质量。
(2)使用QuartusII内置综合工具或专用综合工具(如常见的Synplify_pro)单独建Project,对RTL进行综合,生成网表。时钟工作频率较高的,要写综合约束条件。
(3)指定每一个输入输出信号对应的FPGA管脚和输入输出逻辑类型。
(4)编译生成的网表以生成sof文件,包括优化、适配、sof文件生成等分步骤。
(5)进行静态时序分析,检查是否满足预定的时钟频率要求,若不能满足,则重新进行第(2)步。如果多次进行步骤(2)仍不能满足时序要求,则需要根据关键路径对RTL代码进行修改。
关键路径是指延迟最大的路径,该路径的延迟限制了时钟的最大工作频率。该SoC芯片的最大工作频率在266 MHz以上,与选用的FPGA Cyclone II EP2C70的总线时钟速度相当。
3 VxWorks实时操作系统
本文所设计的SoC硬件平台上,最终将运行VxWorks操作系统,作为此次嵌入式SoC硬件平台设计的软件需求和最终的验证目标。VxWorks是一个具有可伸缩、可裁减、高可靠性,同时适用于所有流行CPU平台的实时操作系统[3]。可伸缩性指VxWorks提供了超过1 800个应用编程接口(API)供用户自行选择使用;可裁减性指用户可以根据自己的应用需要对VxWorks进行配置,产生具有不同功能集的操作系统映像;可靠性指VxWorks可以提供非常安全的操作系统平台。VxWorks的基本构成组件包括BSP(Board Support Package)、微内核Wind、网络系统、文件系统及I/O系统。本文测试更关注于BSP、Wind以及I/O组件。BSP中包括硬件环境中CPU的初始化及系统各项硬件资源的安装和配置,如RAM、Clock、网络接口、中断控制器等。微内核Wind是WindRiver公司自行开发的一种嵌入式操作系统内核,该内核具有标准的嵌入式实时操作系统的基本特征。
4 验证平台的检验
将已经成熟的AMBA总线IP核的Verilog代码通过Synplify 综合,利用Altera公司的QUARTUS Ⅱ软件作布局布线,烧入Cyclone II EP2C70,再用同样的方式将新开发的EMI IP 核的Verilog 代码烧入该FPGA,将其中的SDRAM控制器作为验证示例,选取其中最简单的访问方式来验证该平台能否使用。上电后,首先要对所有内存区(bank) 预充电,经8个自刷新周期后需要设置访问模式,即编程模式寄存器。以上三个过程要求如下:
(1) 预充电命令的发出要求:在时钟周期的上升沿处,CS、RAS、WE 为低,CAS 为高。
(2) 自刷新命令的发出要求:在时钟周期的上升沿处,CS、RAS、CAS 和CKE 保持低,WE为高。
(3) 模式寄存器的激活:在时钟的上升沿处,RAS、CAS、CS和WE为低。
当要验证各个IP模块(包括INT 中断控制器、DMA 控制器、LCD 控制器和AC97控制器等)之间的协同工作时,烧入的代码较多,占用的FPGA资源也较多,再加上需要实时运行,例如播放PM3实时解码过程中,时钟至少要求60 MHz,需要工作的IP核有总线、DMA控制器、INT 中断控制器、AC97 控制器等,因此在这种情况下,最好使用Multi PointSynthesis 的综合流程和Timing driven的综合与优化策略,并使用Logic-lock约束技术和人工干预布局布线,以达到预期目的。使用该平台对所开发的SoC的各个模块进行了验证,并在10 MHz~70 MHz条件下与代码前(后)仿真结果和SoC实测结果进行了比较,发现该FPGA 验证平台在多模块、高速情况下,性能有所下降,如图6所示,需进一步提高综合和布局布线技术。
本文设计了基于国产龙芯I号处理器IP核的SoC 的FPGA 验证平台,介绍了怎样利用该平台进行软硬件协同设计、SoC系统移植、IP核验证和运行实时操作系统。在电压设计、模块选用甚至处理器核的选用方面都考虑了升级扩展技术,可为其他SoC的验证所借鉴。验证结果表明,基于龙芯I号CPU IP核的SoC可成功运行Linux嵌入式程序及VxWorks。
参考文献
[1] KUNKEL J. Embedded computing-toward IP-based system-level soc design[J]. Computer,2003,36(5):88-89.
[2] 严迎建,刘明业,片上系统设计中软硬件协同验证方法的研究[J].电子与信息学报,2005,27(9):317-321.
[3] Wind River System. VxWorks_BSP_R eference.www.windriver.com.2004.