微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > TM1300 PCI-XIO口的UART和USB接口设计

TM1300 PCI-XIO口的UART和USB接口设计

时间:01-17 来源:单片机及嵌入式系统应用 作者:赵井军 沈 斌 点击:
引言

  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接口,下面将对其进行详细介绍。


1.1 TM1300 PCI-XIO接口的工作机制

PCI-XIO总线提供了TM1300与普通PCI外设和简单8位外设的无缝混合连接。它提供以下特性:

*完全的PCI 2.1特性(32位,33MHz);

*简单的非复用8位数据,24位地址XIO总线,支持68K、X86控制信号;

*内部或外部可编程时钟源;

*0~7个可编程等待周期以适应慢速XIO设备;

*支持单字节读写和DMA读写。


  图2是PCI-XIO总线系统示意图,可以看出,XIO总线控制器作为PCI总线上的一个特殊设备工作,通过复用PCI信号线,实现简单8位设备的标准接口。XIO总线控制器作为XIO总线的"代理",在XIO总线操作进行时负责为PCI总线接口单元(BIU)产生PCI_DEVSEL信号,当收到BIU的PCI_IRDY信号时,它使能PCI_INTB信号,可以作为所有XIO设备的全局片选信号。它还重新配置了PCI的32位地址/数据线,将低24位作为XIO总线的地址线,高8位作为XIO总线的数据线。

  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所示。

  由图3可见,24位16MB地址空间的XIO总线映射到16MB PCI(4字节)地址空间。XIO总线上一次字节的读写对应于PCI总线上的一次字读写。图4是TM1300访问XIO总线使用的数据格式,向XIO总线写一个字节时,PCI BIU在PCI写操作的数据相,向XIO总线控制器写4字节,但低24位(bit23:0)被忽略,对应的PCI_BYTE_ENABLE信号无线;从XIO总线读1字节时,XIO总线控制器在PCI读操作的数据相,向PCI BIU发送4字节,其中高8位(bit31:24)是从XIO总线的数据线上读到的数据,低24位(bit24:0)返回这次读操作的XIO总线地址。

  在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个映射到内存的寄存器。


TM1300与USB9604连接的原理图如图6所示。

  在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);

1.3 外部中断设计

  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。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top