MPC8272是Motorola公司2004年推出的第2代PowerQUICC通信处理器。该通信处理器采用MPC603e核心处理器,核心处理器工作频率达400 MHz,外部总线工作频率达100 MHz,总线支持32位地址,64位数据位宽操作。另外该通信处理器内嵌一个32位RISC处理器的通信处理模块,集成有MAC、FCC、SMC、ATM、HDLC、UART、T1、USB、PCI等设备通信接口,以及1个60x总线接口连接通用外围设备,非常适用于通信控制领域的应用。
1 通信处理器MPC8272读写时序
MPC8272总线对外部器件的读、写访问是通过存储器控制模块来实现的,存储器控制模块生成8个外部存储器地址空间片选信号CS0~CS7,每个片选信号对应2个主要控制寄存器BR和OR,用它们来定义片选信号所定义的地址空间和对等待状态数、读写选通信号的建立时间、激活时间、保持时间等的设置。MPC8272对外部器件数据读、写时序如图1、图2所示。其中tC是外部总线工作时钟Clock的时钟周期,tRC和tWC分别是读写指令周期,tW是读写指令周期内插入的Clock时钟周期。当不使用外部输入信号TA(数据传输确认信号)时,插入的时钟周期数由OR寄存器的SCY值确定,其值最大为15个时钟周期;当使用外部输入信号TA时,插入的时钟周期数由其确定;当输入信号TA变低时(即外设数据准备好时),处理器即可完成此次数据的读写操作。
MPC8272的外部总线工作频率可达100 MHz。当读写指令周期不插入时钟周期时,其外部总线指令周期为2个时钟周期——20 ns,外部总线速率最高可达(50×N)Mbps(其中N为总线数据位宽)。该速率对于一般通用外设来说是很高的,需调整OR寄存器的SCY值以降低总线速率与外设进行读写操作。插入最大15个时钟周期时,外部总线指令周期最大为17个时钟周期——170 ns,此时外部总线速率最低为(5.8×N)Mbps,该速率满足常用外设的总线读写要求。对于通信的一些特殊外设,如交换网络电路MT90826、双口RAM IDT71V321、数字信号处理器TMS320VC5416等接口,需采用处理器MPC8272的外部数据传输确认信号TA并设计相应的外部硬件等待逻辑电路进一步降低总线速率或动态插入任何数目的等待时钟周期tW,以避免数据读写冲突,提高处理器总线效率和数据传输可靠性。
图1 MPC8272数据读时序
图2 MPC8272数据写时序
2 外设读写时序分析
作为语音通信产品,嵌入式处理器主要外设的工作是:话音交换矩阵完成话音交换;DSP完成DTMF收发号、FSK来电号码显示以及会场话音融合等;双口RAM完成嵌入式处理器与其他处理器间的数据通信;显示器用于参数设置或功能显示等。各外设的总线接口具有读、写周期长且不确定等特点,不能直接与MPC8272总线连接,需设计相应的外部硬件电路以满足外设的读写时序要求。以下分别对各外设接口进行介绍。
MT90826是卓联公司开发的4 096×4 096通道无阻塞大型话音交换矩阵电路,支持2.048 Mbps、4.096 Mbps、8.192 Mbps和16.384 Mbps等STBUS格式数据流。电路采用顺序写入控制读出交换机理,每个输出通道对应一个连接寄存器。嵌入式处理器通过在输出通道的连接寄存器中写入输入通道的地址,完成输入与输出通道话音数据流的交换。嵌入式处理器对MT90826的读写操作是否完成,可通过MT90826的数据传输确认信号DTA指示,其时序如图3所示。当DTA信号在片选周期内由高变低后,表示嵌入式处理器可以结束本次总线的读写操作了。tAKD时间长短并不确定,其最大值为240 ns,最小值为0。
图3 MT90826数据写时序
在一个系统中,可能存在多片数字信号处理器TMS320VC5416,它们分别完成DTMF收发号、FSK来电号码显示和会场话音融合等功能。TMS320VC5416采用8位HPI接口与嵌入式处理器进行数据交换,其通信原理与两个处理器之间采用双口RAM进行数据通信相似,即两处理器共享一段内存空间,分不同时间对其读写操作。当处理器1正在对一个内存地址操作(读或写),而处理器2也需对其进行操作(写或读)时,此时输出忙占用信号,处理器2需等待忙占用信号结束后才能完成本次写或读操作。TMS320VC5416与双口RAM IDT71V321的不同之处在于:嵌入式处理器操作IDT71V321是直接内存操作,而嵌入式处理器操作TMS320VC5416是通过HPI接口地址、数据寄存器间接操作TMS320VC5416的内存空间的。另外,TMS320VC5416的HPI接口忙信号HRDY为高电平有效,IDT71V321接口忙信号BUSY为低电平有效。HRDY和BUSY信号的产生均具有随机性,且随着总线操作频率的增加而加大;忙等待时间tRDY和tBUSY也具有不确定性,与其通信的处理器运行速度的快慢有关,读写时序如图4所示。
图4 DSP和双口RAM数据读写时序
VGG12864E是北京维信诺科技有限公司开发的128×64点阵OLED显示模块,读写时序如图5所示。该OLED模块的使能信号E的周期tEC最小为1 000 ns(相当于固定1 Mbps的总线速率),使能信号脉冲宽度tEH、tEL最小为450 ns。嵌入式处理器MPC8272若采用总线方式直接控制OLED模块,则MPC8272的读、写周期最大值为170 ns,其读、写时序不能满足该OLED模块的要求,需设计相应的外部硬件等待逻辑电路来扩展MPC8272的读、写周期时长,以满足OLED模块的要求。
图5 VGG12864E数据读写时序
3 总线适配设计
快速嵌入式处理器与慢速外设的总线适配方法大致有3种:降低外部总线频率、调整片选控制寄存器时钟周期数和使用外部输入确认信号TA(Intel处理器名为数据准备好信号RDY,三星处理器名为总线周期延长请求信号nwait,它们的工作原理相同)。
降低嵌入式处理器外部总线频率可加长总线数据传输周期,达到与低速外设匹配的目的,但大大降低了处理器的利用率和效率。该方法不可取。
图6 硬件连接关系图
图7 逻辑关系图
调整嵌入式处理器片选控制寄存器的插入时钟周期数,可以满足总线周期固定且不大于处理器外部总线周期的外设的要求,但不能满足总线周期不确定和大于处理器外部总线周期的外设的要求。例如,MPC8272的外部总线工作频率为100 MHz,外部总线指令周期最大为170 ns,可以满足总线周期小于170 ns的外设的要求,但不能与OLED模块(周期为1000 ns)连接。由于TMS320VC5416和IDT71V321接口的不确定性,其总线也不能与嵌入式处理器总线直接连接,需使用其外部输入确认信号TA并设计外部逻辑电路进行适配,以满足稳定、可靠的外部总线读写需要,其硬件连接如图6所示。MT90826数据总线接口为16位宽,设置MPC8272的片选CS4为16位宽与其匹配;其他外设数据总线均为8位宽,共用MPC8272的片选CS5,并与高位地址线A18、A17进行地址译码产生其他外设的片选使能信号。CPLD EPM3064的详细设计如图7所示。
图7中,TA_N是MPC8272的数据传输确认信号,低电平有效,而DSP HPI接口数据准备好信号HRDY高电平有效,因此须反向;双口RAM忙指示信号(即数据未准备好)BUSY_N低电平有效,须反向;OLED_RDY_N是当外部总线为100 MHz时(SCLK为100 MHz外部总线时钟输入),插入cnt=100个时钟周期(等待状态为1 μs)后的数据准备好信号,低电平有效。功能模块RDY_N的相关VHDL描述如下:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY RDY_N IS
GENERIC ( cnt:INTEGER := 100 );
cnt = 1uS&pide;( 1 / 100MHz ) = 100
PORT(
clk: IN STD_LOGIC; CPU总线时钟
cs_n: IN STD_LOGIC; 外设片选
rdy_n: OUT STD_LOGIC
);
END RDY_N;
ARCHITECTURE logic OF RDY_N IS
SIGNALcount: INTEGER ;
BEGIN
PROCESS (clk,cs_n)
BEGIN
IF (cs_n = '1') THEN
count<= 0 ;
rdy_n<= '0';
ELSIF (CLK'EVENT AND CLK = '1') THEN
IF count < cnt THEN
count <= count + 1;
rdy_n <= '1';
ELSE
rdy_n <= '0';
count在该次总线操作完成后由片选cs_n='1'清零
END IF;
END IF;
END PROCESS;
END logic;
这里由于采用了CPLD芯片,因此只需修改VHDL程序中参数cnt的值,就可方便地调整等待状态的时长,如0.5 μs、2 μs、3 μs、4 μs等,使用非常简单、快捷。定制固定1 Mbps总线速率时,只需将该片选的cnt值设为100,即等待状态时长为1 μs。
4 总结
嵌入式处理器MPC8272内存控制模块和总线外部TA数据传输确认输入信号,为其与常用外设和慢速外设通信的时序匹配设计提供了方便。本文给出了MPC8272与各种外设的时序匹配方法。该方法提高了嵌入式处理器的总线效率和数据传输的稳定性及可靠性,并已在实际工程应用中正常使用,具有很强的适用性和通用性。