MPC755是Freescale公司开发的PowerPC系列微处理器中具有卓越性能的G3代产品。本文介绍了以MPC755为核心的嵌入式计算机系统的结构框架、主要芯片、地址空间分配、实现难点,以及系统的调试方法和启动过程。该嵌入式系统处理能力优越,内核最高处理能力可达733MIPS,可用于语音处理、路由器、无线接入、VoIP、软交换等。
伴随着信息化时代的来临,嵌入式系统在通信中的应用越来越广泛,人们对带宽的需求越来越高,而新业务要求嵌入式系统具备更强的处理能力。本文以MPC755为核心,构建了一个功能强大、高度模块化、实时性强、具备高度可扩展性的嵌入式计算机系统,可用于语音处理、路由器、无线接入、VoIP、软交换等众多场合。因为MPC755具有并行执行数条指令、简单指令的快速执行、流水线操作等优点,所以该系统处理能力优越,内核最高处理能力可达733MIPS。通过主/PCI桥MPC107扩展了多种通讯协议处理接口,符合多种RTOS(实时操作系统,如VxWorks、嵌入式Linux等)对其运行平台的要求。
图1:MPC755结构框图。 |
MPC755处理器
MPC755是一种32位超标量微处理器,遵循了PowerPC处理器架构,有着与PowerPC完全相同的指令集。芯片集成了6个独立的执行单元(2个整数单元、1个加载/存储单元、1个双精度浮点单元、1个系统寄存器单元和1个跳转处理单元),在一个时钟周期内最多可以同时执行6条指令。
MPC755内嵌了独立的32K字节指令和数据高速缓存,以及指令和数据内存管理单元(MMU)。L2 Cache(二级高速缓存)控制单元最大可外接1M字节SRAM,用作二级高速缓存。总线接口单元向外引出60X总线,可以外接具有60X总线的设备。当内核工作在400MHz时,性能高达733MIPS。MPC755还包含了一个性能监视器、一个遵循IEEE1149.1标准的JTAG调试接口、以及温度管理单元等(MPC755功能结构见图1)。
MPC755在引脚定义和软件代码上都向下兼容,核心电压为2.0V,I/O电压3.3V/1.8V可选。MPC755内核的最高频率是400MHz。系统时钟通过SYSCLK0引脚输入,经过PLL电路倍频,产生内核时钟,即主频。引脚PLL_CFG[0:3]在系统上电时的配置值(本设计中是0b'1010) 决定了倍频系数。
系统总体设计
图2是基于MPC755的嵌入式计算机的系统框图。由图可见,MPC755的接口扩展主要依赖于主/PCI桥--MPC107。MPC755本身只外接了二级缓存,以提高系统性能。而其它接口都从MPC107引出,包括一个串口,一个10M/100M自适应网口,I2C口等。串口和网口符合多种RTOS对运行平台的要求,且在硬件上满足了嵌入式系统的两种主要调试手段(串口调试和以太网调试),应用开发相当容易。PMC槽使系统具备较强的现场可扩展性,可满足不同的应用需求。
图2:基于MPC755的系统框图。 |
1. MPC107
MPC107是Freescale公司开发的一种高性能、高带宽的PCI桥接芯片。图3显示了MPC107的基本结构。MPC107一侧是60X总线接口,总线宽度32位/64位可选,最高频率100MHz,另一侧是PCI总线接口。芯片内部集成了存储器控制器、DMA控制器、可编程中断控制器、4个定时器、I2C控制器、消息单元(I2O)、PCI仲裁器、看门狗电路、动态电源管理单元,PCI总线性能监视单元、JTAG接口等。
存储器控制器共有12个片选空间,其中8个RAM片选空间,CS[0:7]。每个片选空间的时序可编程,可支持FPM DRAM、EDO DRAM或SDRAM,最大可外接1GB RAM。另4个是ROM片选空间,RCS[0:3],支持8位、32位、64位接口宽度,最大可外接144MB ROM。
2. 存储器
本系统在CS0空间中扩展128MB的SDRAM,用5片256M位(16M(16位)SDRAM拼成,其中一片用作ECC,其余4片用作系统内存。
Flash选用了Intel公司的28F016S3,2M字节。因为系统启动时,必须从RCS0上的设备读取启动代码,因此,Flash的片选连接到RCS0上。
At24C04是512字节的EEPROM,通过I2C总线连接到MPC107,用于存储系统信息,例如,产品名称、版本号、网口的物理地址等。
图3:MPC107结构框图。 |
二级高速缓存选用了IDT公司的IDT71V35761,每片128K(36位,共2片,组合成128K×72位,其中64位是数据线,另外8位是校验信号。芯片的最高频率为200MHz。二级高速缓存的使用极大地提高了系统性能,使MPC755如虎添翼。
3. 串口
TL16C550是RS-232串口控制芯片,接在RCS1空间,MAX3221是电平转换芯片。串口的工作模式由软件决定,既可工作于中断模式,也可工作于轮询模式。在调试的时候,串口用于输出调试信息和接收外部命令。在实际应用中,串口可以作为系统和用户的交流窗口,用户通过串口来掌握或改变系统的运行情况。
4. PCI设备
本系统中,PCI采用MPC107内部仲裁器,总线工作于33MHz。系统的网口芯片选用了Intel82559,这是一款具有PCI接口的,将物理层和链路层集成在一起的10M/100M自适应网口芯片,可减少电路板空间和走线数量。变压器选用了Pulse公司的H1012。网口可工作于全双工或者半双工模式。
另外,PCI1410A是连接PCI总线和CF卡的一种接口芯片。CF卡具有携带方便、易于升级、存储量大、抗震性好等优点。在本设计中,CF卡主要用于保存应用软件、用户数据备份等。而且,在今后的系统维护和软件升级中,技术人员只需要更换CF卡或者升级CF卡中的软件,十分方便。设计选用了SanDisk公司的型号为SDCFB-64-101的CF卡,64M字节容量,几何尺寸为36.4mm×42.8mm×3mm。
表1:地址空间分配。 |
PMC插槽用于扩展PCI插卡,增加系统功能。例如,如果系统需要增加一个网口,只要在PMC槽上插入一块具有PMC接口的网卡就可以了。
5. 时钟
M41T81是ST公司生产的一款时钟芯片。在本设计中,为系统提供时钟,因为在电信、网络等许多应用场合,系统必须提供时间信息。M41T81具有I2C接口,两种供电模式:在系统上电时,由电路板上的3.3V电源供电;系统断电时,自动切换到外接电池供电。电池供电时的电流很小,仅为1(A。
地址空间分配
在PCI主设备模式下,MPC107支持两种地址空间分配方案:Map A和Map B。在PCI从设备模式下,MPC107只支持Map B。选择哪种地址分配方案是由上电启动时,引脚SDBA0的高低来决定的,如果为高,则选用Map B,否则,选用Map A。在本系统中,MPC107工作于PCI主设备模式,选用了Map B地址空间分配方案。
在Map B地址空间分配方案中,整个32位(4G)地址空间被分为4大块:本地存储空间、PCI存储空间、PCI I/O空间、系统ROM空间。如表1所示。
在本系统中,128MB SDRAM的基地址是0000_0000,2MB Flash的基地址是FFE0_0000,串口控制芯片TL16C550的基地址是:7C00_0000,64M CF卡的访问地址是8000_0000。
设计关键
1. 时钟
时钟信号是本设计的一大关键。整个系统只有一个时钟输入:OSC_IN,33MHz,输入到MPC107,经过MPC107的FO缓存产生5个同步的PCI时钟信号,其中3个PCI时钟输送给PCI设备,1个保留,另一个PCI时钟作为系统时钟(PCISYNC_OUT),输送到PLL和DLL(延时锁相环)模块,经过锁相和倍频,分别产生CPU时钟(CPU_CLK0)、4个SDRAM(SDRAM_CLKx)时钟、和一个回馈时钟(SDRAM_SYNC)。CPU_CLK0输送给MPC755。
表2:重要走线示意。 |
MPC107的DLL模块类似于PLL,但是它能够把一个时钟周期分为128个离散的间隔。在PCB布线时,SDRAM时钟的走线是等长的。DLL检测SDRAM_SYNC时钟从输出到输入的时延,这个时延就相当于SDRAM_CLK的时延。通过调整SDRAM_SYNC时钟的时延,可以方便地增加或者减少SDRAM_CLK时钟的延迟。一般情况下,走线16.5cm相当于时延1000ps。
本设计中,CPU_CLK0走线长度、SDRAM_SYNC的走线长度和SDRAM_CLK时钟的走线长度三者相等。PCISYNC_OUT到PCISYNC_IN的走线长度和PCICLK的走线长度相等。
MPC755通过对CPU_CLK0时钟倍频,获得内核主频。二级高速缓存的时钟是由MPC755对内核主频分配所得,分频系数由L2CR寄存器的L2CLK位决定,可以是1、1.5、2、2.5、3(本系统选择了2.5)。一般的,分配系数的选择要根据外部Cache的性能、MPC755的内核工作频率和DLL的调整能力决定。L2 Cache最小的工作频率是80MHz。分频后的时钟经过片内的DLL电路调整,输送到二级缓存。但是,L2SYNC_OUT作为反馈时钟又输入到L2SYNC_IN,返回路径长度必须是L2CLK_OUTA走线长度的二分之一,这样CPU就能够保证输入到L2 Cache的时钟信号上升沿是和L2接口的时钟信号上升沿对齐的。
2. 高速布线
MPC107的PLL外部电路必须尽可能地靠近MPC107。网口芯片82559和变压器H1012之间的走线应该尽可能短,网口的一对输入信号和一对输出信号采用差分走线。连接MPC755和二级高速缓存的数据线、地址线的长度尽可能相等,因为要连接二片SRAM芯片,所以采用“Y”形走线方式。SDRAM、L2 Cache的地址线、数据线和控制线也都需要特别注意。如表2所示,所有高速走线,包括PCI走线,都进行了阻抗匹配控制。
系统启动过程和调试
表3:启动配置引脚及意义。 |
当信号#HRESET为低电平时,MPC107就读取配置引脚,以决定工作状态。这些配置引脚是复用的,但是,在上电时,它们只扮作配置引脚。关键的几个配置引脚的意义如表3。
系统的硬件调试借助了Windriver公司的EST7xx系列仿真器。仿真器一端连接PC机,另一端连接MPC755的JTAG接口,即使SDRAM等模块工作不正常,仿真器也可以访问MPC755和MPC107的内部寄存器,帮助判断SDRAM和其它器件的故障所在。
首先调试PowerPC内核和外部SDRAM,一旦它们工作正常,就可以通过仿真器下载RTOS,来辅助硬件调试。为此,笔者选用了Windriver公司的嵌入式实时操作系统,VxWorks及其集成开发工具Tornado。然后,调试串口,因为串口相对简单。如果串口工作正常,就可以脱离仿真器,利用Tornado提供的工具软件,例如WDB,通过串口线建立电路板和PC机的通信机制,继续调试其它模块。调试的主要工作量是在MPC107,而不是MPC755。
调试结束后,将正确的启动代码烧制到Flash中,VxWorks和应用软件烧制到CF卡。因为启动时中断入口的基地址为0xFFF00000,而PowerPC处理器启动的中断向量偏移地址是0x100,所以启动代码必须烧制在Flash的0xFFF00100地址。系统上电或者硬复位后,MPC755自动从该地址读取指令并执行,步骤如下:
PowerPC内核初始化;
关闭所有中断;
初始化SDRAM;
初始化MPC755内部的高速缓存;
初始化二级高速缓存
初始化PCI接口;
初始化CF卡;
从CF卡读取VxWorks及应用软件到SDRAM中;
运行VxWorks;
初始化串口;
初始化I2C,从AT24C04读取MAC地址;
初始化网口;
打开中断;
运行应用软件。
Bootrom中最初一段程序采用PowerPC的汇编语言编写,这部分程序完成了对系统的最基本的初始化,其中最重要的是PowerPC内核和SDRAM,以便可以尽快使用SDRAM,从而在其后可以使用C语言编写的程序进行后继初始化工作。