由外部总线访问MPC5554的内部存储器
扫描二维码
随时随地手机看文章
1 处理器MPC5554的总线模式
MPC5554是Freescak公司推出的32位PowerPC系列处理器,其内核为PowerPC Book E结构的e20026CPU,外围有丰富的外设接口,包括有eMIOS、eQADC、DSPI、eSCI、eDMA、eTPU、FlexCAN等模块,可以方便地与外设进行连接。这款处理器广泛地应用在汽车电子和航空航天等场合,具有成熟可靠的体系结构和广泛的技术支持。
MPC5554的外部总线模块称为EBI(External BusInterface)模块,同其他处理器的外部总线模块一样,也可以扩展诸如F1ash、SSRAM以及异步存储器。EBI模块可以工作在许多不同的模式下,主要有以下几种模式:
◆单独主机模式,此模式下只响应处理器内部的命令,忽略所有的外部总线请求;
◆外部主机模式,此模式下可以响应处理器内部的命令和外部总线请求,并且允许外部主机访问内部地址空间;
◆模块禁止模式,模块被禁止后即停止工作;
◆16位数据总线模式,数据总线只有16位,DATA[O:15]有效,DATA[16:31]无效;
◆调试模式,当系统处于此模式下时,EBI模块不受影响,仍正常工作。
以上几种模式中,只有外部主机模式下可以实现外部主机访问MPC5554内部存储地址的功能。
2 MPC5554的外部主机模式
EBI Moclule Configuration Register(EBI_MCR)寄存器是EBI模块的配置寄存器,其中的EXTM位即为EBI的外部主机模式选择位,置1表示将EBI模块置为外部主机模式,置0表示为单独主机模式。在启动模块时,需要将MDIS位清O。
EBI模块的外部引脚在外部主机模式时全部需要使用,MPC5554与外部主机的硬件连接如图1所示。
[!--empirenews.page--]
2.1 内部存储空间地址编码
当EBI被配置为外部主机模式时,外部主机可以通过总线访问内部的存储空间。MPC5554,内部地址总线是32位,但外部地址总线只有24位,需要通过特殊的解码方式来将24位地址总线扩展为32位。EBI模块将外部总线的ADDR[8:11]这4位进行解码,作为内部总线ADDR[O:11]的12位。解码的规则为:
①当外部地址总线的ADDR[8]=O时,EBI忽略外部数据,无效地址。
②当外部地址总线的ADDR[8]=1时,ADDR[9:11]用来选择为Flash存储地址的区块;匹配则进入该区块,不匹配则返回总线错误标志。
外部主机模式下具体的地址译码如表1所列。
2.2 外主模式下外部主机在内存储器上读写数据
外部主机在得到总线控制权后,通过拉低TS位来初始化对内存储器的操作。如2.1节所示,当地址线上的信号匹配时,即可访问内存储器空间,访问结束于TA信号或TEA信号出现。TA信号为正常结束信号,TEA信号则表示有总线上的错误。图2为外部主机读数据流程,图3为外部主机读数据时序。
图4和图5为外部主机写数据的流程和时序,与读数据时的大体类似。但需要注意的是,规定外主访问的最小延迟是3个总线周期,在实际系统中还需要根据具体访问的存储器块来决定。
[!--empirenews.page--]
3 系统设计
3.1 硬件设计
主芯片使用处理器MPC5554,其内部Flash有2 MB,通过EBI模块进行外部访问。外部主机使用Altera公司生产的Cyclone II系列FPGA芯片EP2C35F672,芯片的I/O资源丰富,选用的672引脚封装最大可用I/O为475个,对于I/O需求很多的应用非常适合。EP2C35F672的33 216个LE单元,105个M4K的RAM块,可以满足较高要求的应用。
电路板上的电源种类较多,MPC5554需要有5 V、3.3V、1.5 V供电,EP2C35F672需要3.3 V和1.2 V供电,外部输入则为5 V。采用2片LT1765将5 V转换至3.3 V和1.2 V,1.5 V则利用NJD2783从3.3 V处生成。
根据图1所示的连接,将MPC5554的EXTAL、TS、TSIZ[0:1]、ADDR[8:31]、DATA[O:31]、RD_WR、BR、BG、BB、TA、TEA等信号线全部接至FPGA的I/O处,其中EXTAL需要引至FPGA的PLL输出口作为外部输入时钟,其余的都接至普通I/O。
为了方便调试及观察结果,将MPC5554的1路SCI接口引出,通过MAX3232电平转换至RS232电平,然后连至PC上的串口,使用超级终端程序进行观察。
3.2 软件设计
软件的设计需要MPC5554与FPGA协同工作。首先需要将MPC5554配置为外主模式,在MPC5554的EBI模块里共有2个主要的配置寄存器,分别是EBI模块配置寄存器EBI_MCR和EBI总线监控寄存器EBI_BMCR。
EBI模块配置寄存器负责整个模块的基础配置,MDIS位控制EBI模块是否启用,EXTM位配置EBI是否为外主模式,DBM位控制。EBI为32位或16位数据总线,EARP[O:1]用来设置总线请求的优先级。
EBI总线监控寄存器负责对总线监测控制,BMT[O:7]位为总线监测的超时周期,BME位控制总线监测的使能。
另外,还有一个总线传输错误状态寄存器EBI_TESR,TEAF位为传输错误标志位,BMTF为总线监测超时标志位。
EBI模块的初始化程序为:
在读取操作时,EBI模块在接收到FPGA发来的地址信息后,返回相应地址的数据信息;在写入操作时,EBI模块根据FPGA发来的地址信息,将数据信息写入相应地址。根据图2~图5的流程与时序,作为外部主机的FPGA起到发起数据传输并结束的作用。FPGA部分使用VHDL语言,只附上结构体里的process部分。
结 语
本文所述的基于MPC5554和FPGA的测试系统已调试完成,MPC5554内部的Flash存储器可以通过EBI模块由外部的FPGA进行读写。与外挂的存储器相比,通信读/写速度和系统的可靠性都大大提高。在实际应用中,其他处理器也可以像文中的FPGA一样模拟总线时序。当应用中不需要数据传输时,也可将连接配置为普通I/0以作他用,硬件配置灵活。