TM1300 PCI-XIO口的UART和USB接口设计
关键词:TM1300 PCI-XI0口 UART接口 USB接口
引言
Trimedia集成电路是Philips公司新近推出的针对多媒体应用的一种高性能DSP,它能够进行高质量的视频和音频处理。TM1300是Trimedia系列产品之一,它的核心是32位处理器,能够进行32位线性寻址,寻址能力可达4GB,含有128个通用寄存器。Tm1300核心处理器采用的是VLIW(超长指令字)结构,可以在每一时钟周期内同时进行5个操作,VLIW结构还可以减少处理器的工作量。TM1300支持16KB的数据高速缓存和32KB的指令高速缓存,并且数据高速缓存是双端口的,允许同时双向接入。
TM1300有别于一般的通用DSP,它有专门的视频接口、音频接口和PCI、SSI(同步串行接口)等丰富的外设接口。在本设计前,已经利用TM1300上的SSI接口实现了UART(Universal Asynchronous Receiver and Transmit)接口板和E1接口板,利用片上PCI接口实现了以太网接口,并实现了PSTN、DDN和以太网上的视频传输。本文改进了参考文献中的URAT实现方案,利用TM1300的PCI-XIO接口实现串行通信接口和USB接口,系统框图如图1所示。
1 硬件设计
TM1300集成了一个符合PCI 2.1的PCI接口,总线数据宽度为32位,最高时钟频率可达33MHz,峰值吞吐率可达132MB/s。TM1300还通过XIO总线控制器在PCI接口上扩展了一个XIO接口。通过XIO接口,TM1300可以方便实现对8位简单外设的无缝连接。本文设计的硬件实现主要就是基于XIO接口,下面将对其进行详细介绍。
图2
PCI-XIO总线提供了TM1300与普通PCI外设和简单8位外设的无缝混合连接。它提供以下特性:
*完全的PCI 2.1特性(32位,33MHz);
*简单的非复用8位数据,24位地址XIO总线,支持68K、X86控制信号;
*内部或外部可编程时钟源;
*0~7个可编程等待周期以适应慢速XIO设备;
*支持单字节读写和DMA读写。
图3
PCI-XIO总线控制器包括一个可编程的MMIO寄存器:XIO_CTL。其中使能位(7)为1时,允许XIO总线操作;高6位(31:26)定义了XIO空间的基地址;时钟频率位(4:0)用来定制内部时钟;等待状态(10:8)用来支持慢速外部XIO设备操作。
TM1300初始化后,PCI-XIO总线默认为普通PCI模式。若MMIO里XIO-CTL寄存器的使能位被置位,并且TM1300寻址到XIO地址空间,XIO总线控制器就被激活。
从图2可以看出,TM1300利用PCI BIU访问XIO总线,TM1300访问XIO总线的地址格式如图3所示。
在XIO逻辑激活期间,PCI-XIO接口把PCI中断信号PCI_INTB复用为XIO总线全局使能信号CS;把PCI的命令/比特使能信号PCI_C/BE0和PCI_C/BE1分别复用为XIO总线的读使能信号RD和写使能信号WR;把PCI/C_BE2复用为数据锁存信号,用于地址线与数据线复用的环境;PCI的时钟信号PCI_CLK可在XIO总线操作期间为PCI总线接口单元(BIU)提供由TM1300内部高速时钟分频而来的可编程时钟;其它PCI控制信号则由XIO总线控制器负责与PCI BIU进行交互。
1.2 基于PCI-XIO的接口实现方案
通过上述介绍不难看出,PCI-XIO接口的8位数据线无疑是TM1300连接8位外设ST16C550和USBN9604的理想桥梁。
串行接口的实际技术已经非常成熟,本文选用比较常见的ST16C550芯片。ST16C550是可编程的通用异步接收/发送器,工作在3.3V或5V,内部收发均有16个字节FIFO,能实现数据的串行与8位并行之间的转换,支持异步通信协议。片内有时钟产生电路,最高工作频率24MHz,波特率可以从50bps~1.5Mbps.ST16C550可以为应用于远程通信系统中的调制解调器提供控制信号,并接收和记录调制解调器的状态信息。
本文所选用的USB接口芯片USBN9604是National Semiconductor公司设计生产的一款新型的USB通信控制芯片,支持全速传输,可满足USB1.0和USB1.1协议。它具有8位并行接口,可支持DMA、MICROWIRE。其主要特别如下:工作频率为48MHz,芯片内部有倍频电路;可编程产生不同的接口(SIE),可实现USB物理层和信号协议层的转换;带有7个端点的USB功能控制器,每个端点对应一个FIFO;内部有64个映射到内存的寄存器。
图5
在TM1300通过XIO口对USB芯片进行读写的过程中,要特别注意时序问题。虽然TM1300的XIO接口和USB芯片能够实现硬件上的无缝连接,但两者在读写数据的时序上并不匹配。TM1300在发起XIO总线读写操作时,在片选信号有效期间,地址和数据是同时发向USB芯片时;而USB芯片需要先接收一个地址,再对相应地址读写数据,地址与数据是分时的。对于TM1300的读写操作,USB芯片无法将地址和数据区分开来,即两个芯片的读写时序不匹配。本文利用TM1300的PCI_AD0引脚来控制USBN9604的A0,当PCI_AD0为1时,表示写入USBN9604的是地址;当PCI_AD0为0时,表示真正的数据通信。具体的编程语句如下:
void write_usb(BYTE address,BYTE data)
{xioWrite(USB基地址+0x000001,address);
xioWrite(USB基地十+0x000000,data);}
BYTE read_usb(BYTEaddress)
{xio Write(USB基地址+0x000001,address);
return(BYTE)xioRead(USB基地址+0x000000);}
对UART的读写,则不用考虑时序问题,使用如下语句即可。
xioWrite(UART基地址+UART寄存器地址,data);
TM1300除了内部模块中断之外,还提供了5个外部中断输入引脚:PCI-INTA/B/C/D和TR1_USERIRQ,前四个中断引脚推荐为电平触发模式,在不用作中断输入时,可以配置为通用I/O引脚,TRI_USERIRQ适合于电平触发或者边沿触发模式。
在本文的硬件设计中,PCI-INTB在PCI-XIO总线激活时,作为XIO总线的全局使能信号;UART芯片利用TRI_USERIRQ引脚向TM1300发中断请求;PCI-INTD用于UART通信接口板上USB芯片的中断请求;PCI-INTC保留未用,可用作以后的扩展。
由于ST16C550的中断输出引脚和TM1300的TRI-USERIRQ中断输入引脚都工作在正逻辑模式,两者可以直接连接。对于ST16C550这样可以同时发生多个中断条件的外部设备,INT-USERIRQ应该工作在电平触发模式。
1.4 PCI-XIO总线复用
本文设计的硬件系统中,通过PCI-XIO总线连接到TM1300的外部设备有三个:Flash、ST16C550和USB9604。为了这三个设备能够同时正常工作,必须加入地址译码芯片以复用PCI-XIO总线。
由于Flash占用4MB的地址空间,可以考虑将16MB的XIO空间划分为4个4MB的地址块,利用XIO地址线的高2位作地址译码。
本文选择的地址译码芯片是常见的三-八译码器,原理图如图7所示。这里将XIO总线的全局使能信号PCI-INTB作为74138的使能信号。XIO逻辑激活期间,XIO地址线AD[23、22]的值决定了三个外部设备中的一个片选信号有效。由图7可见,Flash的基地址为0x000000,USB9604的基地址为0x800000,ST16C550的基地址为0xC00000。
2 总结
本文通过PCI-XIO接口为TM1300硬件平台实现串行接口和USB接口,在硬件上实现了带有串行通信接口和USB接口的TM1300编码板。
接下来的工作是为TM1300实现一个WLAN通信接口,使得以TM1300为硬件平台的编码器可以用于高速无线网络平台。
评论