学海荡舟手机网

主页 > 实用文摘 > 教育文摘_07 > > 详细内容

TM1300 PCI-XIO口的UART和USB接口设计_接口电路论文

摘要:以philips公司的多媒体数字信号处理器tm1300的硬件核心平台,通过tm1300芯片的pci-xio口,经uart芯片st16c550实现串行通信接口,经usb接口芯片usbn9604实现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

    1.1 tm1300 pci-xio接口的工作机制

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

*完全的pci 2.1特性(32位,33mhz);

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

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

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

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

图3

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

图5

    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。

2

本文通过pci-xio接口为tm1300硬件平台实现串行接口和usb接口,在硬件上实现了带有串行通信接口和usb接口的tm1300编码板。

接下来的工作是为tm1300实现一个wlan通信接口,使得以tm1300为硬件平台的编码器可以用于高速无线网络平台。