引言
MPC82XX是Freescale公司继MPC860之后推出的一系列高性能通信处理器中性能价格比十分出色的一款,它具有独立的64位数据总线和32位地址总线,独立的32位PCI2.2总线接口,丰富的外设接口(MII、I2C、SP、USB、UART等),足够的用户可自定义的GPIO。MPC82XX的这些技术特点使它非常适合于应用在某些既具有多样通信接口又具有一定计算和控制功能的自动化智能设备中。
在此类自动化智能设备的开发设计过程中经常遇到的一个问题是总线器件的扩展。对于地址总线和数据总线分开的器件,例如常见的ST16C554、NOR Flash等,MPC82XX提供了8路用户可自定义地址区间的片选信号,采用GPCM(GeneralPurpose ChipSelect Machine)模式可以非常方便地进行挂接。同时MPC82XX还提供了SDRAM接口模式——SDRAM Machine,可以方便应用SDRAM。
但是当遇到某些数据总线与地址总线复用的器件,如CAN总线驱动器SJA1000等,或者某些控制时序比较特殊的器件,如大容量存储器NAND Flash等,在这些情况下一般的做法是通过增加CPLD进行数据总线、地址总线和控制总线的时序和逻辑转换,以满足特定的要求。这种解决方案的优点是可以方便地对CPLD的逻辑进行反复调整以达到最佳效果,还能利用CPLD进行电平匹配。但是它的缺点也是显然的: 首先,增加了CPLD这种占PCB面积较大的芯片,同时还需要提供烧写CPLD的JTAG接口;其次,增加了CPLD软件的开发和维护工作。其实,MPC82XX的存储器控制模块还为用户提供一种配置十分灵活的UPM(UserProgrammable Machine)模式,充分利用其配置功能可以在不需要增加器件,或者只增加简单的逻辑接口器件的情况下,很好地解决以上问题。
1 UPM的特点
1.1 接口信号及时序控制
MPC82XX的UPM接口信号线如表1所列。其中,GPLx、CSx的时序用户可以自定义,它们最小可调整时序间隔为1/4个总线时钟周期。同时地址总线和数据总线的时序也可作一定程度的修改,以适应各种不同的应用场合。
表1 UPM接口信号线
调整时序间隔为1/4个总线时钟周期。同时地址总线和数据总线的时序也可作一定程度的修改,以适应各种不同的应用场合。
MPC82XX具有3个UPM,GPLx信号为各UPM所共用,每一个UPM对应一个由64个字(32位)组成的RAM阵列,RAM阵列中每个字对应一个时钟周期内总线上各信号的状态,同时可以通过设置LOOP位或者REDO位进行时间上的扩展,以适应某些慢速设备。UPM每个状态序列的结束由LAST位确定。由此可见,UPM控制的总线时序完全由它对应的RAM阵列决定,RAM阵列由用户在初始化UPM时写入。
1.2 划分基本操作
根据要挂接的芯片的基本操作,对UPM的RAM阵列进行分割,即在适当的位置设置LAST位,以形成几个基本微操作,如读写等。每次需要UPM进行某项操作时,先将该操作在RAM阵列中的起始地址写入UPM控制寄存器MxMR,接下来的操作对于用户来说相当于是透明的,只需要进行简单的赋值操作即可,总线时序将由UPM来控制。
下文将以利用UPM挂接两种常见的芯片为例进行详细说明。
2 扩展CAN总线驱动器
在工业控制领域,CAN总线应用相当广泛,SJA1000是最常见的CAN总线驱动器,利于MPC827X的UPM模式可以很好的挂接总线复用的SJA1000芯片。
2.1 硬件连接
MPC82XX利用UPM挂接SJA1000的连接如图1所示。
图1 UPM和SJA1000连接示意图
图2 时序波形
在该应用实例中,SJA1000的读写信号和地址有效信号均由GPL提供,74LVC245用于完成5 V逻辑和3.3 V逻辑的转换。
2.2 设计要点
对SJA1000的操作可以分为读数据和写数据两个基本操作,同时SJA1000是总线复用器件,待读写数据的地址必须先行给出,还需加上一个写地址的操作,因此可以将微操作定义为三个。不论是数据还是地址,都由MPC82XX的数据总线给出,通过分别使能ALE、RD和WR信号以区分以上三类操作,ALE、RD和WR功能图2分别给出了这三类操作的时序波形。由UPM的GPL信号线来模拟实现。
图4 NAND Flash总线时序
3 扩展NAND Flash存储器
闪存(Flash Memory)具有非易失性、高存储密度、功耗低等优点,是嵌入式系统的首选存储设备。NAND Flash更是具有容量大、价格低的优点,比较适合大容量存储。MPC82XX没有类似于SDRAM Machine的NA
图3 UPM和NAND Flash连接示意图
ND Flash专用接口,一般采用CPLD作为接口。但是结合UPM的特性和NAND Flash操作时序的特点进行分析,采用UPM挂接NAND Flash是可行的。经实践检验,下文所述方案完全可以满足应用需求。
3.1 硬件连接
MPC82XX利用UPM挂接NAND Flash,如图3所示。
该应用中,NAND Flash的读写信号、地址有效信号、命令有效信号均由GPL提供,NAND Flash的Ready/Busy信号则由MPC82XX的通用I/O引脚读取。
3.2 设计要点
NAND Flash的操作具有以下特点:其一,地址是通过I/O口串行写入的,即一次写入8位或者16位(视具体芯片IO总线宽度而定);其二,Flash在非空白区写入时需先进行擦除操作,擦除和写入的速度相对于CPU的速度来说是比较长的,因此CPU需等待一个操作完成后才能进行下一步操作;其三,对NAND Flash的读写操作之前必须先写入相应的命令字。以上这些特点决定NAND Flash的操作较为复杂,但是依然只需要划分为简单的4种操作即可:写命令、写地址、写数据、读数据。图4为其中的写命令和写地址操作的总线时序。
值得注意的是,写入了地址的最后一个字段后不能立即进行数据操作,必须等待几μs的时间,这个等待时间可以通过设置UPM的LOOP和REDO实现。经测试,该方案读数据的速度达到2 MB/s,写数据的速度达到1.5 MB/s,可以满足应用需求。
结语
PowerPC UPM方式配置灵活,适应力强,能有效地减少应用系统软硬件的复杂程度,提高系统可靠性,降低设备的研发成本和制造成本,使得PowerPC更加适合用在空间、成本等方面有诸多限制而接口要求又丰富多样的嵌入式应用系统中。