基于MPC8260处理器的PPMC系统_嵌入式系统论文
关键词:嵌入式系统 ppmc powerpc mpc8260 pci
伴随网络时代的来临,带宽急刷增长,而新业务要求嵌入式系统具备很强的处理能力,配备高带宽的外围总线。pci(peripheral component interconnect,外围部件互连)总线以其优越的性能,成为高端嵌入式系统首选总线。以往嵌入式系统式样众多,硬件模块可重用度低、可互替性差,硬件平台的繁杂使得加载rtos(实时操作系统)没有规则性可言,极大地延长了研发周期。
鉴于以往嵌入式系统缺点,结合高端嵌入式系统的新要求,vso(vita standard organization)在ieee制定的p1386.1标准上,提出了ppmc(processor pci mezzanine card)概念,目的是确保各个厂家不同的cpu对外拥有相同的pci接口。它对ppmc插座接口的电气特性、引脚信号、ppmc和其carrier board的连接以及ppmc的尺寸作了严格规定,力求在高端嵌入式系统中促进系统模块化。
本文介绍了一种以mpc8260处理器为基础的ppmc实现,构建了一个微型计算机系统。该系统完全符合vso对ppmc的要求,在嵌入式pci系统中可以即插即用,并可应用于cpmpactpci系统中。该ppmc系统处理能力优异(内核最高处理能力可达350mips),带有多种通讯协议处理接口,符合多种rtos(psos、vxworks等)对其运行平台的要求,且在硬件上满足rtos的两种主要调试手段(串口调试和以太网调试),应用开发相当容易。此外,该系统具备高度的现场可扩展性,通过简单的软件配置,可以方便地提供多种通讯协议的前端处理接口。
1 mpc8260处理器简介
powerpc芯片是由motorola、apple、ibm三家公司联合研制的一种risc处理器,具备超强处理能力,广泛出现在处理器的高端应用场合。motorola公司考虑到电信和网络市场的特点,在powerpc芯片的基础上,推出了专为嵌入式系统设计的mpc8260芯片。该芯片内嵌一个powerpc 603e内核,有着与powerpc完全相同的指令集合,并且集成了若干通讯协议处理单元,是目前最先进的专为电信和网络市场设计的微处理器。mpc8260芯片的功能框图以及外部引脚示意如图1所示。
由图1可知,mpc8260主要包括三部分。第一部分是高性能的powerpc 603e内核,体系结构与其它powerpc芯片相同,运行频率为100~266mhz。
第二部分是总线接口。在兼容mpc860局部总线的基础上,mpc8260另外提供了高性能的powerpc 60x总线。该总线是一种标准总线,32位地址线,64位数据线,支持多powerpc芯片互连。可以通过简单的寄存器配置来决定采用哪种总线。本系统选用60x总线,总线工作频率为66mhz。
第三部分是通信处理模块cpm(communication processor module)。该模块是mpc8260相对其它处理器的最大优势所在,除了带有一个增强的32位risc专用通信控制器外,模块中还内嵌有3个fcc(fast communication controller)、2个mcc(multiple channel controller)、4个scc(serial channel controller)、2个smc(serial managements controller)。所有这些控制器都可以用来处理特定的通讯协议。
mpc8260芯片中包括四组通用i/o端口:pa、pb、pc、pd。这四组通用i/o端口与cpm有着密切关系。pa、pb、pc包含32个管脚,pd包含28个管脚。各组端口中的每一个管脚都可以通过软件配置外接不同的信号。例如,管脚pc可以配置为外接以太网mii(media-independent interface)接口的cd信号,也可配置为外接atm(asynchronous transfer mode异步传输模式)utopia接口的txd信号,还可配置为一般的io信号。
pa、pb、pc、pd四组通用i/o端口的灵活配置,结合内部scc、fcc、smc的可配置性,使得cpm的功能得以倍增。cpm模块利用这四组通用i/o端口完成的通讯协议接口主要如下:
(1)2个atm utopia接口,可用来实现2个155mbps atm sar。
(2)8个 tdm(时分复用线)接口,其中2个tdm接口可以无缝连接到t3/e3,最高可以提供256个全双工64kbps hdlc通道。
(3)3个mii接口,可用来实现3个10/100mbps自适应以太网接口。
(4)4个rs-232串口。
由此可知,mpc82760内嵌了多种通讯处理模块,可以方便地为用户提供一个全新的系统解决方案来建立高端嵌入式系统。
2 基于mpc8260的ppmc系统
图2为基于mpc8260的ppmc系统模块框图。
注:篇幅所限,vso在ieee标准上专门为ppmc定义的标准插座没有画出来,而图2中,除了连接到两个rj45插座的信号外,其它黑色粗体箭头代表的信号都必须连到该插座上去。请参阅vso相关手册。
各子模块的解释如下:
(1)10/100mbps以太网子模块接口和rs-232串口子模块。两者的实现都利用了mpc8260的通用i/o管脚。以太网子模块还包括外接的以太网phy和以太网变压器。phy选用levelone公司的970系列芯片。变压器选用pulse h1081。以太网mii接口管脚分布如表1所示。
表1 以太网mii接口管脚分布
mii信号 | mpc 8260管脚 | 含 义 |
txd[0:3] rxd[0:3] crs col tx_en tx_er rx_er rx_dv txclk rxclk | port b b[4:7] port b b[8:11] port b b[12] port b b[13] port b b[14] port b b[15] port b b[16] port b b[17] port c c[16] port c c[19] | 发送数据线 接收数据线 开始发送 发送冲突 可以发送 发送失败 接收到环帧 接收到数据 发送时钟 接收时钟 |
rs-232串口子模块包含一个电平转换器max3221。此外,相对一般的9线rs-232接口而言,本系统中无论是数据接收还是发送,mpc8260总是处于准备好的状态。因而rs-232使用5线接口就可以,串口管脚分布如表2所示。
表2 串口管脚分布
信 号 | 管 脚 | 含 义 |
txd rxd cd rts cts | port d d[26] port d d[27] port d d[28] port c c[12] port c c[13] | 发送数据线 接收数据线 检测到载波 请求发送 可以发送 |
(2)时钟和复位子模块为系统提供时钟信号和复位信号。时钟子模块核心部件为高稳定性66mhz石英晶振。该晶振提供系统基准时钟。考虑到晶振直接带负载能力有限,时钟子模块中还包含1个零延时缓冲器。复位子模块核心为max706芯片,结合后面提到的epld,可为系统各器件提供上电复位、硬复位、软复位等各种复位信号。
(3)power span子模块为ppmc系统提供对外pci接口,pci总线工作在33mhz。
(4)epld子模块。因为需要实现的控制逻辑较多,采用altera公司的可编程逻辑芯片epm9510arc208-10,可以为sdram产生时序信号、读取接口配置信号、汇总各个中断信号、汇总复位信号和时钟信号。
(5)sdram子模块。选用4片现代公司的hy57v653220ct sdram芯片。
3 硬件实现的要点
就硬件实现而言,有几点需要注意:
(1)为以太网和串口分配管脚。如果仅仅是配置一个mii接口和一个rs-232接口,有多种实现方案。但必须考虑到系统功能的可扩展性,尽可能多地预留tdm接口和atm utopia接口。
(2)pci桥接和总线仲裁
vso规定,ppmc系统必须带有pci接口。但mpc8260芯片本身不带pci接品,因而需要外挂pci桥接芯片powerspan。
powerspan是tundra公司生产的pci桥接芯片,总线频率范围为25~66mhz,支持pci2.2规范。powerspan内部模块如图3所示。可以与mpc8260、powerpc 603e/740/750等powerpc系列芯片无缝接合。电气特性符合vso ppmc标准。
实际应用时,powerpc 60x总线和pci总线上都挂二多个器件,每个器件都可能需要获取总线的控制权以便发起总线操作,因此总线控制权的仲裁十分重要。
就pci总线布言,采用powerspan内嵌的pci总线仲截器件为整个pci总线的仲裁器,应该将ppmc卡标准插座上各组gnt、req信号连到powerspan相应管脚处。powerpc 60x总线的情况有点不同,mpc8260芯片和powerspan芯片都自带60z总线仲裁器。从系统的扩展性考虑,采用mpc8260芯片自带 60x总线仲裁器。因而powerspan的pb_br、pb_bg、pb_dbg等信号必须连到mpc8260芯片对应处。
(3)片选信号和内存分配
mpc8260 60x总线包含32位地址线,可以访问高达4g字节的内存。mpc8260内嵌有一个内存分类控制器,该分类控制器提供了多个片选信号。在本系统中,地址空间分类6类子空间,如表3所示。
表3 内存分配表
60x内存类型和片选信号 | 地址范围 | 含 义 |
powerspan register space mpc8260 register space bootrom(cs0) d[0:7] flash (cs1) d[0:15] sdram (cs2) d[0:63] pci image n (n=1...8) | 0x30000000~0x30000fff 0xf0000000~0xf001ffff 0xfe000000~0xe0ffffff 0xe0000000~0xe0ffffff 0x00000000~0x03ffffff maximum block size=2gb minimum block size=64kb | 4kb 128kb 1024kb 16mb 64mb |
以64位数据线方式访问powerspan内部寄存器空间,以及通过powerspan映射的pci空间。访问二者时,不需要片选信号。powerspan自行判断60x地址是否指向自身,决定是否回应。
cs0代表的bootrom空间有着特殊含义。根据mpc8260的规定,复位时,mpc8260自动读取bootrom中的指令运行启动程序。bootrom空间是唯一不需要额外配置、mpc8260就可以读取的子模块。
相关配置寄存器包括:mpc8260中的brn、orn(n=0,1,2)寄存器、immr寄存器以及powerspan相关设置中的slave image和iarget image。
4 硬件实现的难点
保证外部pci器件(没有位于ppmc上)通过powerspan高速访问ppmc系统所带sdram内存,是设计上一大难点。图4是外挂pci器件时,内存存取示意图。
图4从左向右为slave image方向。mpc8260通过设置powerspan的相关slave image寄存器,将外部pci空间映射到60x空间后,powerspan即成为透明桥。mpc8260以60x总线地址访问外部pci器件,powerspan会自动进行有关转换工作。
图4从右向左为target image方向。此时外部pci器件要访问ppmc上的sdram。通过设置powerspan target image中相关寄存器,将60x总线地址空间的一部分(也就是ppmc上sdram对应的60x地址空间中的一段)映射到外部pci空间上,外部pci器件就可能以pci总线地址访问ppmc所带sdram,powerspan自动进行有关转换工作。
由此可知,mpc8260和powerspan都可成为60x总线的master,都会访问sdram。从效率考虑,必须允许二者可以猝发存取sdram。
与读写rom不同,读写sdram的时序关系很复杂,要考虑到多种因素,如sdram的刷新问题。遗憾的是,就60x总线信号的时序而言,无法直接与sdram连接。特别是对powerspan,没有内嵌任何内存控制器,即使mpc8260提供了一些辅助控制信号,也无法直接连接,因而外部须提供逻辑转换。就本ppmc系统而言,必须在epld内实现一个sdram控制器,这就是图4中引入epld的原因。
该控制器采用verilog hdl实现,可为sdram提供一系列符合时序的控制信号。控制器就其本质而言,是一个状态机。随着外部60x总线输入信号的变化,该状态机在一系列不同状态之间转换,同时输出sdram控制信号,以及60x总线的回应信号。例如就读数据而言,隐去刷新等状态,状态机如图5所示。
图6是在触发方式下,2-beat读取数据时,内存控制器产生的控制信号。此时,page closed、cas latency为3个时钟周期,activate to read interval为2个时钟周期。ras为控制器输出的行地址选择信号,cas为列地址选择信号,dqm为字节选择信号。
5 初始化软件流程
本ppmc的初始化流程有着与rtos中标准bsp(board support package)要求相同的次序,程序流程如图7所示。
系统初始启动时,mpc8260自动读取bootrom中的指令。bootrom中最初一段程序采用powerpc汇编语言编写,该部分程序必须对系统进行基本的初始化工作。其中最重要的是初始化那些与sdram有关的寄存器,以便可以尽快使用sdram,从而在其后可以使用c语言编写的程序进行后继初始化工作。
本文构建了一个符合vso和ieee标准的ppmc系统,可以为嵌入式系统(特别是通讯用嵌入式系统)提供一个功能强大、高度模块化、具体高度可扩展性的微型计算机系统。