《1394总线接口设计与实现.docx》由会员分享,可在线阅读,更多相关《1394总线接口设计与实现.docx(5页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、1394总线接口设计与实现IEEE1394总线是一种高性能的串行总线标准,与传统总线相比,具有传输速率高、可靠性高、物理设计小、节点自动配置、支持等时和异步传输等特点,已成为军用电子系统信息传输的主要方式之一。文章结合一个PCI转1394总线通信系统应用实例,分析了1394总线接口硬件和软件设计中的一些问题,从器件选择、PCI总线配置、OHCI协议等问题上提出了解决方法。关键词:1394总线;OHCI协议;DMA传输方式本系统以MPC8280为核心处理器,通过PCI总线访问TSB43AB23,实现1394总线通信。一、PCI转1394总线验证板的设计1.原理概述1394总线功能电路原理框图如图
2、1所示。CPU对1394总线的访问完全通过PCI端口操作TSB43AB23芯片来完成。2.主要芯片TSB43AB23简介TSB43AB23是TI公司的兼容OHCI技术规范的,集成IEEE-1394a链路控制器和物理层PHY的器件,具有业界最低功耗。TSB43AB23的PCI接口可直接连接本地PCI总线物理接口2.2标准。TSB43AB23的物理层时钟仅需外接一个的24.576MHz晶振,可以以连接24.576MHz的时钟信号。TSB43AB23内部的锁相环将24.576MHz倍频,产生393.216MHz的时钟参考信号,分频可得到内部所需的各种时钟。用内部48.152MHz的时钟信号同步锁存接
3、收数据包。发送数据时,数据的48.152Mhz同步时钟由内部锁相环提供。编码完成的串行数据,传送速率可为98.304Mb/s、196Mb/s或393.216Mb/s。数据差分信号在双绞线B上传送,控制差分信号在双绞线A上传送。数据接收时,关闭发送器,开启接收器。接收到的信号,能够恢复为接收时钟和串行数据,由内部锁相环的48.152MHz的时钟信号将接收到的串行数据同步锁存。TPA和TPB线缆接口电路,通过差分比拟器,对线缆的状态进行检测,检测的结果可用于内部逻辑的仲裁。TPA通道通过检测输入电缆的共模电压,可得出下一个数据包的传输速率。二、设计要点1.DMA控制器1394数据传输采用DMA方式
4、,共支持7种不同的类型,每种类型的DMA都有保留的寄存器空间。异步发送DMA具有下面四种命令描绘符:OUTPUT_MORE、OUTPUT_MORE_Immediate、OUTPUT_LAST和OUTPUT_LAST_Immediate。OUTPUT_MORE定义需传输的数据在主机内存空间中的地址,OUTPUT_LAST定义了下一个描绘符的起始地址,OUTPUT_MORE_Immediate和OUTPUT_LAST_Immediate包含了1394数据包头信息。一个描绘符块的组成有两种形式:1个单独的OUTPUT_LAST_Immediate或者由1个OUTPUT_MORE-Immediate、
5、0-5个OUTPUT_MORE、1个OUTPUT_LAST组成。OHCI协议中定义了寄存器ContextControl、CommandPtr。CommandPtr寄存器的内容是一个指针,指向要发送的DMA的首个描绘符块。如图2所示,descriptorAddress是首个描绘符块的起始地址的高28位,Z是描绘符块中的命令描绘符的个数。ContextControl寄存器的定义如图3所示。在run、active和dead位均为0的情况下,可向CommandPtr寄存器中写入关于描绘符块的正确数据。然后,将run位置为1,主机控制器即开场处理CommandPtr寄存器中的描绘符块。主机在处理经过中,
6、会自动将active位置为1,并在处理结束后自动清零。wake为1表示正在处理描绘符,主机在获得一个描绘符之后自动将该位置0。所以能够通过active位知道主机能否处理完成。处理经过中一旦碰到错误,主时机将dead位置为1。假如run被置为0,dead也会自动清零。spd为数据包的传输速率。最终,处理完成后,无论正确与否,主机控制器都会在ContextControl寄存器的最末5位中填入包处理事件代码。2.1394数据接收和发送数据发送时,我们使用两个描绘符块组成一个关联,每一个描绘符块由一个OUTPUT_MORE_Immediate和一个OUTPUT_LAST组成。第一个描绘符块OUTPUT
7、_LAST中下一个描绘符块地址指向第二个描绘符块,第二个描绘符块OUTPUT_LAST中下一个描绘符块地址指向第一个描绘符块,构成一个环形链表。初始化时,根据数据格式要求填写两个描绘符块,两个描绘符块能够共用一个发送缓冲区,但不指定OUTPUT_LAST中下一个描绘符块的地址。第一次发送数据使用第一个描绘符块,填写发送缓冲区数据和发送数据长度后,将ContextControl的RUN位置1,并将OUTPUT_LAST中下一个描绘符块地址指向第二个描绘符块,能够通过中断寄存器判定数据能否发送成功。第二次发送数据使用第二个描绘符块,填写发送缓冲区数据和发送数据长度后,将ContextControl
8、的WAKE位置1,并将OUTPUT_LAST中下一个描绘符块地址指向第一个描绘符块,同样能够通过中断寄存器判定数据能否发送成功。除了第一次发送数据需要将RUN位置1外,以后的发送数据都只需要将WAKE置1,让控制器处理新增的描绘符块。数据接收时,也使用两个描绘符块组成一个关联,每个描绘符块只需一个INPUT_MORE。第一个描绘符块中下一个描绘符块地址指向第二个描绘符块,第二个描绘符块中下一个描绘符快地址指向第一个描绘符块。初始化时按数据格式要求填写两个描绘符块,指定下一个描绘符块地址,每个描绘符块有独立的数据接收存储缓冲区。与发送不同的是,只要接收存储缓冲区满了以后,才会使用下一个描绘符块中的接收缓冲区,而且在初始化中ContextControl中RUN位置1后,就不需要对控制器进行任何配置了。需要注意的是数据接收存储的位置不是从存储区基址开场的,而是接着上次数据存储的位置往后排,所以在接收中断到来之后,数据的取出需要做相应的处理。三、结语1394总线具有众多优点,已成为军用电子系统信息传输的主要方式之一。目前,1394技术广泛应用于视频数据传输中。1394总线在大容量存储器以及网络互连等方面也有广阔的应用前景。在我们的实际工作中,各个系统、功能模块之间的需要交换和备份的数据量越来越大,因而对传输速率的要求也越来越高。所以,1394总线具有很强的实用性。