本站小编为你精心准备了1394总线接口设计与实现参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
摘要:
IEEE1394总线是一种高性能的串行总线标准,与传统总线相比,具有传输速率高、可靠性高、物理设计小、节点自动配置、支持等时和异步传输等特点,已成为军用电子系统信息传输的主要方式之一。文章结合一个PCI转1394总线通信系统应用实例,分析了1394总线接口硬件和软件设计中的一些问题,从器件选择、PCI总线配置、OHCI协议等问题上提出了解决方法。
关键词:
1394总线;OHCI协议;DMA传输方式
本系统以MPC8280为核心处理器,通过PCI总线访问TSB43AB23,实现1394总线通信。
一、PCI转1394总线验证板的设计
1.原理概述1394总线功能电路原理框图如图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的时钟信号同步锁存接收数据包。发送数据时,数据的48.152Mhz同步时钟由内部锁相环提供。编码完成的串行数据,传送速率可为98.304Mb/s、196Mb/s或393.216Mb/s。数据差分信号在双绞线B上传送,控制差分信号在双绞线A上传送。数据接收时,关闭发送器,开启接收器。接收到的信号,可以恢复为接收时钟和串行数据,由内部锁相环的48.152MHz的时钟信号将接收到的串行数据同步锁存。TPA和TPB线缆接口电路,通过差分比较器,对线缆的状态进行检测,检测的结果可用于内部逻辑的仲裁。TPA通道通过检测输入电缆的共模电压,可得出下一个数据包的传输速率。
二、设计要点
1.DMA控制器1394数据传输采用DMA方式,共支持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、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寄存器中的描述符块。主机在处理过程中,会自动将active位置为‘1’,并在处理结束后自动清零。wake为‘1’表示正在处理描述符,主机在获得一个描述符之后自动将该位置0。所以可以通过active位知道主机是否处理完成。处理过程中一旦遇到错误,主机会将dead位置为‘1’。如果run被置为‘0’,dead也会自动清零。spd为数据包的传输速率。最终,处理完成后,无论正确与否,主机控制器都会在ContextControl寄存器的最末5位中填入包处理事件代码。
2.1394数据接收和发送数据发送时,我们使用两个描述符块组成一个关联,每一个描述符块由一个OUTPUT_MORE_Immediate和一个OUTPUT_LAST组成。第一个描述符块OUTPUT_LAST中下一个描述符块地址指向第二个描述符块,第二个描述符块OUTPUT_LAST中下一个描述符块地址指向第一个描述符块,形成一个环形链表。初始化时,按照数据格式要求填写两个描述符块,两个描述符块可以共用一个发送缓冲区,但不指定OUTPUT_LAST中下一个描述符块的地址。第一次发送数据使用第一个描述符块,填写发送缓冲区数据和发送数据长度后,将ContextControl的RUN位置1,并将OUTPUT_LAST中下一个描述符块地址指向第二个描述符块,可以通过中断寄存器判断数据是否发送成功。第二次发送数据使用第二个描述符块,填写发送缓冲区数据和发送数据长度后,将ContextControl的WAKE位置1,并将OUTPUT_LAST中下一个描述符块地址指向第一个描述符块,同样可以通过中断寄存器判断数据是否发送成功。除了第一次发送数据需要将RUN位置1外,以后的发送数据都只需要将WAKE置1,让控制器处理新增的描述符块。
数据接收时,也使用两个描述符块组成一个关联,每个描述符块只需一个INPUT_MORE。第一个描述符块中下一个描述符块地址指向第二个描述符块,第二个描述符块中下一个描述符快地址指向第一个描述符块。初始化时按数据格式要求填写两个描述符块,指定下一个描述符块地址,每个描述符块有独立的数据接收存储缓冲区。与发送不同的是,只有接收存储缓冲区满了以后,才会使用下一个描述符块中的接收缓冲区,而且在初始化中ContextControl中RUN位置1后,就不需要对控制器进行任何配置了。需要注意的是数据接收存储的位置不是从存储区基址开始的,而是接着上次数据存储的位置往后排,所以在接收中断到来之后,数据的取出需要做相应的处理。
三、结语
1394总线具有诸多优点,已成为军用电子系统信息传输的主要方式之一。目前,1394技术广泛应用于视频数据传输中。1394总线在大容量存储器以及网络互连等方面也有广阔的应用前景。在我们的实际工作中,各个系统、功能模块之间的需要交换和备份的数据量越来越大,因此对传输速率的要求也越来越高。所以,1394总线具有很强的实用性。
参考文献:
[1]IEEE1394-1995,IEEEStandardforaHighPerformanceSerialBus[S].1994.
[2]张大朴.IEEE1394协议及接口设计[M].西安:西安电子科技大学出版社,2004.
[3]李世平.IEEE-1394(FireWire)系统原理与应用技术[M].西安:西安电子科技大学出版社,2004.
[4]李肇庆.IEEE1394接口技术[M].北京:国防工业出版社,2004.
作者:常晨晨 曹峰 张锋 高颖 单位:苏州长风航空电子有限公司