基于MPC755的嵌入式计算机系统设计
4. PCI设备 表2:重要走线示意 系统启动过程和调试
本系统中,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。
PMC插槽用于扩展PCI插卡,增加系统功能。例如,如果系统需要增加一个网口,只要在PMC槽上插入一块具有PMC接口的网卡就可以了。
5. 时钟
M41T81是ST公司生产的一款时钟芯片。在本设计中,为系统提供时钟,因为在电信、网络等许多应用场合,系统必须提供时间信息。M41T81具有I2C接口,两种供电模式:在系统上电时,由电路板上的3.3V电源供电;系统断电时,自动切换到外接电池供电。电池供电时的电流很小,仅为1A。
地址空间分配
在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所示。
表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。
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走线,都进行了阻抗匹配控制。
当信号#HRESET为低电平时,MPC107就读取配置引脚,以决定工作状态。这些配置引脚是复用的,但是,在上电时,它们只扮作配置引脚。关键的几个配置引脚的意义如表3。
表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语言编写的程序进行后继初始化工作。