SoC(片上系统)的概念已日益普及,而随着FPGA技术的迅速发展,可编程系统芯片(SoPC)作为一种特殊的嵌入式微处理器系统,融合了SoC和FPGA各自的优点,并具备软硬件在系统可编程、可裁减、可扩充、可升级的功能,已逐渐成为一个新兴的技术方向。SoPC的核心是在FPGA上实现的嵌入式微处理器核,目前主要有Xilinx公司的32位软核MicroBlaze、32位PowerPC系列处理器硬核PowerPC 405,以及Altera公司的Nios系列微处理器软核等。
本文介绍的系统是一个以PowerPC 405为微处理器,基于VME总线的以太网接口设备,它通过以太网和VME总线接口,实现VME系统与外部局域网的实时数据交换。
硬件开发
开发采用Xilinx公司的EDK7.1(嵌入式开发套件)和ISE7.1工具软件。EDK工具包中集成了硬件平台生成器(Platgen)、软件平台生成器(Libgen)、仿真模型生成器(Simgen)、软件编译器(Mb-gcc/ppc-gcc)和软件调试工具(Mb-gdb/ppc-gdb)等控制工程网版权所有,通过提供的集成开发环境XPSCONTROL ENGINEERING China版权所有,用户可以调用上述所有工具
首先在XPS界面环境下生成硬件系统框架并添加所需的IP核,也可以用文本编辑器直接编写硬件描述文件 (.MHS文件),再调用Platgen将其生成嵌入式处理系统的网表文件(.NGC文件);然后通过系统生成或手工编辑的软件描述文件(.MSS文件)来设置系统软件配置,并调用Libgen生成驱动层和库。虽然EDK的IP库中有一些很有用的功能模块和外设接口的IP核,如DCM(数字时钟管理器)、处理器复位、PLB/OPB总线接口、外部存储控制器(EMC)、UART、GPIO、中断控制器、定时器等控制工程网版权所有,充分利用这些资源就可以构建一个较为完善的嵌入式微处理器系统,但是对于许多有特殊专用电路的嵌入式计算机系统的应用还是不够的。如何将用户专用电路设计到EDK系统中,一般有两种方法,第一种是将EDK工程作为一个子系统在XPS中用Export to PorjNav生成ISE工程,然后在ISE中将专用电路和处理器子系统(system.vhd)合成为顶层HDL文件(system_stub.vhd)后,在ISE中完成综合布线,最后在XPS中用Import from PorjNav得到硬件的.bit文件,便可以回到XPS中完成和应用软件的合成、下载和调试了。第二种方法是将专用电路设计成为用户自定义的IP Corewww.cechina.cn,然后直接在系统中调用来实现。自定义的IP Core用HDL设计并要满足EDK的规范控制工程网版权所有,如有专门目录结构和处理器外设定义文件(.MPD)、外设分析定义文件(.PAO)等。如果自定义的IP Core要具有软件驱动,那设计还要完全符合相应的PLB或OPB总线接口规范。完成了硬件和驱动的设计后控制工程网版权所有,就可以在XPS工程中添加应用软件项目并编写应用软件,然后调用处理器对应的编译器编译并和硬件综合后生成的.bit文件合成后下载到目标板便可以进行调试了。
本系统硬件组成框图如图1所示。本设计选用Virtex-II Pro系列FPGA芯片XC2VP40,将系统的程序存储器和数据存储器都放在片内用Block RAM来实现,在系统中添加DCM模块,将外部参考时钟4倍频提供给PowerPC 405作处理器时钟,并分频后再送给OPB总线作总线时钟,降低慢速外设的总线速度,使系统搭配更合理。
图1 系统硬件组成框图
PowerPC 405是此嵌入式系统的核心,它通过PLB总线实现和程序存储器和数据存储器的快速通道,并通过PLB-OPB桥实现了片上的OPB总线,然后通过OPB总线进行各种外设的扩展,OPB外设包括一个RS232串口,一个OPB_EMC用于扩展以太网控制器芯片,一个GPIO作以太网控制器输出的中断请求,一个中断控制器OPB_INTC将GPIO输入的外部中断通知PowerPC 405并可以设置优先级,还有一个用户自定义的IP Core用于实现和VME总线的接口电路。
PowerPC 405 是专门为嵌入式应用而设计的高性能32位PowerPC系列处理器芯核,对于Virtex-II Pro系列FPGA,其实现型号为PowerPC 405D5。
PLB是处理器本机总线,它为指令和数据一侧提供独立的32位地址和64位数据总线。PLB总线架构支持多主从设备,每一个PLB主控机通过独立的地址总线、读数据总线和写数据总线与PLB连接,有一个中央判决机构来授权对PLB的访问以允许主控机通过竞争来获得总线的所有权。OPB是片上外设总线,提供分离的32位地址总线和3