MPC850中复位逻辑和CPM协议切换的CPLD实现
2.2 基于CPLD的实现方法。
设计时,将MPC850的复位信号(上电复位poreset、硬复位hreset、软复位sreset)连接到XC95144XL的连接方法如图2所示。
该方案中CPLD的上电复位设计过程如下:
(1) 系统上电后,上电复位poreset由XC95144XL产生,为了使MPC850得到可靠的复位,这个延迟时间通常比要求的3μs要大一些。MODCK配置可一直固定。
(2) poreset 信号无效后(为高电平),MPC850会采样MODCK并驱动HRESET信号512个时钟周期。需要注意的是这个时间由MPC850控制的,CPLD不作逻辑实现。然后MPC850开始采样总线上的32bit配置数据。这时不能马上驱动总线数据线,应延迟若干时钟周期后驱动,经应用证明延迟8个时钟周期以上可以满足要求。
(3) 驱动总线配置数据16个时钟周期后把总线置为高阻态,上电复位结束。
手动复位的逻辑实现主要考虑的是对按键的复位作抗抖动处理,以防止多次短暂接触对系统造成反复复位,可以在代码中加入一个RS触发顺来实现抗抖。
本设计采用VHDL语言实现,限于篇幅代码省略。需要注意的是:在总线数据配置时,不能采用顺序执行语句,而只有应用并发语句执行才能得到正确的配置。如:
d <="ZZZZZZZZZZZZZZZZ"when flag=true else"0000011010100010";
--512个时钟周期后,再等待8个时钟周期将初始配置字推至数据线
--采用条件代入语句的并发描述
而如果采用顺序描述语句:
if flag =true then
d <="ZZZZZZZZZZZZZZZZ "
else
d <="0000011010100010";
则配置字将得不到正确读取。这一点需要特别注意。
3 MPC850通信的CPLD实现
3.1 MPC850 CPM的应用
MPC850的CPM模块支持7个串行通道,其中包括:2个串行管理控制器SMC(支持通用异步收发UART、透明模式和通用电路接口)、2个串行通信控制器SCC(支持Ethernet、ATM、HDLC和其它多种通信协议)、1个USB信道、1个I2C端口和1个串行外围接口SPI。
在实际应用中,可通过设置模式寄存器的相关控制位来决定各个通道应该采用的协议。各信道的接口通过MPC850的并行I/O口PA、PB和PC与外设进行连接,这些I/O口对应的协议需要对端口的引脚配置寄存器(pin assignment register)和数据方向寄存器(data direction register)进行配置,但由于端口数量的限制,所有的通信协议不可能被同时支持,因此受I/O口限制,若干协议不能同时被使用。故此,在使用这些I/O口,就存在复用和互斥的问题。表1给出了各I/O口和通信协议的对应关系。
表1 MPC850端口复用一览表