基于嵌入式SoPC的以太网接口配置
发布日期:2011-05-04
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)等,通过提供的集成开辟环境XPS,用户可以调用上述全部东西,来完成嵌入式体系开辟的整个流程。
起首在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 Core,然后直接在体系中调用来实现。自定义的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位地点总线和32位数据总线,一样平常用来访问低速和低性能的体系资源。它是一种完全同步总线,但不直连续接到处理惩罚器内核,处理惩罚器内核通过“PLB to OPB”桥和OPB总线来访问OPB接口外设。
网络控制器采取Cirrus Logic公司的通用单片10/100M以太网控制器CS8900A,该芯片完全服从与IEEE 802.3以太网标准,支持完全的全双工操纵。应用EDK的OPB_EMC IP可以很方便地将CS8900A扩展为体系OPB总线上的一个配置,只要将EMC端口的地点、数据总线以及控制信号分别接到CS8900A的地点、数据总线和控制端口上,并将EMC的时序参数设置成与CS8900A手册上请求的同等就可以了。别的将CS8900A的停止输出INTRQ作为一个GPIO引入体系以实现以太网的停止办事成果。
自定义的IP Core内容如图2所示,它用FPGA内的Block RAM资源实现64KB的双口RAM用来完成和VME总线上其他配置的通讯和数据互换。我们用上述的第二种要领来实现将用户专用电路嵌入微处理惩罚器体系中,自定义的IP重要包括OPB总线接口和用户电路两部分,我们用EDK提供的OPB总线的IPIF模板修改后,作为自定义IP的总线接口,64KB的双口RAM和VME总线接口是真正的用户电路。
图2 自定义的IP Core布局
软件开辟
嵌入式开辟环境EDK(Embedded Development Kit)将软件开辟分为两大部分,一是底层体系软件的开辟,重要完成BSP(板级支持包)的成果;另一部分则是用户应用软件的开辟(包括用户硬件驱动及用户上层应用软件)。由于EDK中带有很多IP核以及相应的驱动软件,因此底层体系软件的开辟大部分可以借助EDK集成开辟环境来完成的,如操纵体系的选择、配置驱动步伐的选择、停止/非常处理惩罚例程的设置、操纵体系参数设置等在内的种种体系级软件参数的设置。而用户应用软件的开辟由于有底层驱动的断绝,可移植性好。整个用户软件的开辟及调试事变都可以在EDK中完成。
● 底层体系软件开辟
在本计划中,没有利用操纵体系,利用所谓的standalone模式,即EDK仅提供硬件初始化及引导代码。别的还必要对GPIO、EMC、RS232、停止控制器等一些外设天生底层驱动,这些都可以通过在EDK集成环境XPS中选择菜单Project->Software Platform Settings的对话框举行设置,如图3所示。着实质是主动修改工程的.MSS文件。比方停止函数的处理惩罚例程可在如图4所示的界面中加以设置。也可以手工编辑.MSS文件如下设置:
PARAMETER int_handler = CS8900A_INT_HANDLER, int_port = IP2INTC_Irpt
图3 在XPS中设置操纵体系和驱动步伐
图4 在XPS中设置停止办事例程
设置完成后在XPS中运行Tools->Generate Libraries and BSPs将调用LibGen主动天生驱动库文件,这些CPU和外设驱动库的设置、操纵函数实现或定义可在工程项目根目次下的以处理惩罚器实例名为名字的目次下的libsrc目次下相应的各模块子目次中找到,参考着实现有助于深刻明白究竟上产生的操纵。比方停止向量表可在中段向量控制器模块子目次(本例中为intc_v1_00_c\src)下的xintc_g.c文件中找到。
● 用户软件开辟
用户软件重要是对网络控制器、GPIO、RS232串口等的操纵,此中控制CS8900A的步伐是紧张部分,它要完成TCP/IP协议。CS8900A全部的控制寄存器和数据寄存器都映射在被称为PacketPage的片上4K地点空间内,这4K空间可映射到主机地点空间中(存储器模式),或通过8个16位I/O口举行存取(I/O模式)。本计划中CS8900A事变于I/O模式,通过EDK的OPB_EMC IP作为OPB总线上的一个配置,并给EMC控制器和所映射的配置分派操纵地点空间,在步伐中用Xuint32 XIo_In32(XIo_Address InAddress);
void XIo_Out32(XIo_Address OutAddress, Xuint32 Value);
读写映射的配置,这两个I/O函数同*pDestMem = Value(直接读写存储器操纵)的差别在于前者做了读写同步(调用eieio汇编指令)。参考芯片手册编写CS8900A的驱动,实现根本I/O操纵CS8900A_SendFrame和CS8900A_RecvFrame。EDK中有需付费的以太网IP CORE并附带有一些TCP/IP协议栈,该协议栈实现了大部分常用成果,但也有一些紧张成果并未实现,比方TCP包的超时未达重发,收发操纵的停止事变方法。通过修改、增长和美满这些软件包,实现了真正面向用户更高层应用软件的网络编程接口。
● 软件开辟中的部分题目
软件开辟进程中遇到的几个重要题目归纳如下:
(1)IEEE 802.3网络及网络控制器CS8900A采取的均是Little Endian编码,而XC2VP40内含的处理惩罚器PowerPC 405D5采取的是Big Endian编码方法,因此在数据I/O进程中必要做一下转换。
(2)可通过编写链接控制脚本文件控制应用步伐的链接进程,从而控制步伐映像在存储器中的重定位进程。这在FPGA这种存储器资源有限的环境中偶然很有效。
(3)要将EDK提供的默认bootloop步伐打包到硬件初始化流中,如许做的目标是提供默认的CPU复位后运行步伐,包管CPU处在可预知的状态,而不是由于实行了存储器中的随机代码而处于一种未知的状态。
体系调试要领
由于PowerPC 405处理惩罚器核中已包括调试模块,并用JTAG端口引出,只要在体系中添加一个叫做JTAGPPC的IP模块并和PowerPC 405相连便可将其调试端口串入FPGA的JTAG链中,如许只需利用FPGA本身的下载电缆和JTAG接口便可完成体系软件调试而不必要增长分外电路。
EDK提供的软件调试东西重要有XMD和GDB。值得一提的是利用XMD下载可实行步伐映像时还会表现各步伐段的重定位环境,在产生错误时会报告错误,诸如请求的地点空间大于实际提供的地点空间等错误,而这在EDK集成环境下是看不到的。在存在多种范例存储器资源的环境下,编写链接控制脚本文件控制重定位进程大概可以或许办理上述某地点空间不敷的题目。网络通讯部分的调试重要由Sniffer软件帮助完成。
GDB是EDK附带的GNU的主机方图形界面调试东西,它通过和XMD通讯完成图形界面调试成果,此时XMD则扮演了一个主机方调试代理的角色,全部的调试通讯是由XMD同目标机通讯完成的。
结语
SoPC使得硬件计划能真正实征象搭积木一样方便敏捷,而利用EDK开辟东西就可以实现一个基于FPGA的嵌入式体系的软硬件一体化的开辟,的确大大进步了嵌入式体系的开辟服从,但是如今它另有很多不敷美满的方面。
起首是体系计划对计划东西软件的依赖性很大,而这些软件另有很多有待修正美满的地方,计划师无法克制将在利用熟习软件方面花很多时间。其次,IP Core的不绝丰富和美满是SoPC的底子,昂贵的付费IP核倒霉于此技能的推广,尤其在海内,而要计划验证用户本身的IP Core对计划者的请求较高。如今一个美满的嵌入式体系都有及时操纵体系在运行,SoPC要成为主流也必要更丰富的RTOS的支持。