《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 一种主从系统数据交换设计

一种主从系统数据交换设计

2008-05-14
作者:李鸣明,孙 艳,赵 宏

  摘 要: 详细分析了主从式系统中双处理器数据交换的原理,提出了一种基于共享内存池传递数据的新方法。该方法数据传递效率高,具有良好的开放性,在多种视讯终端上应用良好。
  关键词: 主从系统 数据链路层 消息


  目前,视讯终端一般是基于X86结构的,在成本、稳定性、噪声、使用、安全和维护等方面存在着一系列急需解决的问题。解决的办法是采用嵌入式架构,开发基于主从双处理器的终端,从处理器完成媒体处理,主处理器完成协议和上层应用。这种终端具有成本低、稳定性高的特点。在这种系统中,主从处理器之间的数据传递方式对性能影响很大,主要的方式包括事件驱动和消息驱动两种模式。本文综合二者的优点,提出一种基于共享内存池传递数据的新方法。
1 系统硬件平台及软件架构
  系统硬件包括MIPS(充当主控芯片HOST)和多个DSP(可以是DM642、TM1502等多种DSP),通过PCI总线传递命令和数据。屏蔽硬件细节,可以视其为以PCI总线成树型联结的分布式系统,如图1所示。


  在图1中,DSP芯片组完成视音编解码" title="编解码">编解码、本地图像的获取和显示,任务单一,被视为协处理器" title="协处理器">协处理器族;HOST芯片在本系统中是MIPS,对上完成协议栈,对下完成打拆包后的数据收发以及对协处理器的控制(包括协处理器增加、配置、工作状态设定、任务分配与均衡、协处理器删除等功能)。HOST和协处理器族通过PCI总线互联,所有控制命令和数据都通过PCI总线传递。
  屏蔽硬件差别,该系统软件结构可以抽象成如图2所示形式。


  主从两侧分别提供相应的驱动,通过驱动层相互作用。协处理器一侧的驱动分成各个芯片的驱动,位于各个芯片系统中。传递的信号或数据流都简化为通道上的命令和数据;每个协处理器视为一个节点;协处理器的启用/停止/任务改变视为节点的增/删/节点状态改变。
2 数据链路层设计
2.1 节点的状态及管理

  在多处理器平台上,协处理器被视为处理器网络上的节点,每个节点就是一个DSP处理器。对于每个节点,可能处在多路" title="多路">多路视(音)频编码,也可能处在多路视(音)频解码,或者同时进行多路视(音)频编/解码。因此,节点的状态定义为对一路视(音)频而言所处的编解码状态,即一个通道的状态,DSP节点的状态是各通道视(音)频处理状态的合集。从而可以将各通道粗略地分成4个状态:
  (1)RESET状态
  系统启动,DSP尚未运行时,为了降低系统功耗,所有DSP处于硬件复位状态;当HOST要求DSP推出服务时,将DSP硬件复位,即回到复位状态。此时编解码算法尚在HOST处。
  (2)IDLE状态
  HOST的资源分配算法要求启用DSP时,退出DSP硬件复位,DSP引导,并下载软件及算法,DSP空转,各路编解码器处于待命状态。为简单起见,此时应同时下载编、解算法,避免分步下载。
  (3)CODER状态
  DSP仅执行编码,包括视频和音频算法。可以支持多路,算法应可重入。
  (4)DECODER状态
  DSP仅执行解码,包括视频和音频算法。可以支持多路,算法应可重入。
  为了驱动DSP在以上状态间转换,定义一组命令字,由HOST发给DSP,驱动DSP的状态变化。命令字的含义如下:
  (1)Create/Delete:DSP处于RESET状态时,发出Create命令,引导DSP,并向DSP下载视音频" title="视音频">视音频编解码算法,DSP进入IDLE状态;当DSP退出运行时,发出Delete命令,DSP进入复位状态。
  (2)Enc(vEnc/aEnc):可细分为视频编码和音频编码。当发出该命令时,DSP进入CODER状态,同时进行多路视音频编码。
  (3)Dec(vDec/aDec):可细分为视频解码和音频解码。当发出该命令时,DSP进入DECODER状态。
  (4)Pause(vPause /aPause):可细分为视频编解码和音频编解码。当发出该命令时,DSP进入IDLE状态。
  在上层软件的数据结构" title="数据结构">数据结构中,以链表来管理DSP节点,增加一路视音频对应链表节点的插入,减少一路视音频对应链表节点的删除,视音频节点分别在两个链表中排列。
2.2 命令/数据的传递通道及其编码形式
  HOST和CO-PROCESSOR族通过PCI总线连接,之间的命令、状态、数据可以通过邮箱、旗语等方式传递,实现方式可以是共用存储器,也可以是中断,前者的优点是简单、容易实现,不足是实时性不够,而后者刚好相反。
  在本设计中,采用共用存储器传递命令和数据,而以中断发起申请。不论命令、数据,也不论HOST/DSP,发起方首先填充信息模板和缓冲区,然后以中断提起申请,最后以旗语提供校验。
2.2.1 消息模板的构成
  为了提供主从处理器之间的数据链路,在每个DSP的内存中设置信息模板和数据缓冲区。结构如图3所示。


  · DSP Index:HOST的DSP节点管理器分配给该DSP的索引号,此处用于DSP查询自己的任务管理器,仅作校验。
  · Channel Index:HOST要求操作的DSP中的索引号,不同的DSP分别编排不同索引号,同一DSP中不同的任务序列,如编码和解码序列,可能出现相同的索引号。
  · perateMode(操作模式):
  MSB=0    该信息模板由HOST填写
  MSB=1    该信息模板由DSP 填写
  操作模式字段和后面的参数区共同确定特定DSP上一个通道的操作,屏蔽最高位,该字段的值和操作建立对应关系。
  · OperateState(操作状态): 操作状态描述主从处理器的同步关系,分两个字段。高字段作备份,用于不采用中断情况下的同步控制;低字段描述操作过程中主从之间的握手关系。


  SyncReq同步申请:是中断同步方式的备份。一般情况下,发起者发出中断,通知被操作方阅读信息模板的内容;在备份方式下,发起方通过该字段置位通知被操作方,并由被操作方改写该字段表示已完成。
  SyncReq的取值:
  SYNC_NO_ACK /0:缺省状态,标识没有阅读。同于不发起中断
  HOST_ACK_DSP /128+1:HOST发出的请求DSP 阅读模板内容命令
  DSP_ACK_HOST /128+2:DSP发出的请求HOST阅读模板内容命令
  StateCode状态码:标识主从处理器交互的状态。
  HOST_REQ_DSP_READ_MESSAGE /1:HOST填写完成,要求DSP阅读模板内容
  HOST_END_READ_MESSAGE /2:HOST结束阅读模板内容答复
  HOST_SEND_DATA_OVER /3:HOST发送数据结束
  HOST_READ_DATA_OVER /4:HOST接收数据结束
  DSP_REQ_READ_MESSAGE /5:DSP发出的请求阅读模板内容请求
  DSP_END_READ_MESSAGE /6:DSP结束阅读模板内容答复
  DSP_SEND_DATA_OVER /7:DSP发送数据结束
  DSP_READ_DATA_OVER /8:DSP接收数据结束
  · DnldStartAddr(下行数据缓冲区起始地址):DSP填写的下行数据的头地址。
  · DnldBlockLen(下行数据块长度):HOST填写的下行数据的长度。
  · UpldStartAddr(上行行数据缓冲区起始地址):HOST填写的上行数据的头地址。
  · UpldBlockLen(上行数据块长度):DSP填写的上行数据的长度。
  · VideoEncPara(视频编码器参数表):HOST填写的生成视频编码器的参数表,或者DSP填写的答复HOST查询的参数表。
  · VideoDecPara(视频解码器参数表):HOST填写的生成视频解码器的参数表,或者DSP填写的答复HOST查询的参数表。
  · AudioEncPara(音频编码器参数表):HOST填写的生成音频编码器的参数表,或者DSP填写的答复HOST查询的参数表。可用一个数据结构来表达,此处暂空32字节。
  · AudioEncPara(音频解码器参数表):HOST填写的生成音频解码器的参数表,或者DSP填写的答复HOST查询的参数表。可用一个数据结构来表达,此处暂空32字节。
  · VideoCapturePara(视频采集参数表):HOST填写的生成视频采集器的参数表,或者DSP填写的答复HOST查询的参数表。
  · VideoCapturePara(视频显示参数表):HOST填写的生成视频显示器的参数表,或者DSP填写的答复HOST查询的参数表。
  · AudioCapturePara(音频采集参数表):HOST填写的生成音频采集器的参数表,或者DSP填写的答复HOST查询的参数表。可用一个数据结构来表达,此处暂空32字节。
  · AudioPlayPara(音频播放参数表):HOST填写的生成音频采集器的参数表,或者DSP填写的答复HOST查询的参数表。可用一个数据结构来表达,此处暂空32字节。
2.2.2 消息模板的基本操作单元
  (1)握手的方式
  基本操作包括发起操作申请的方式和应答逻辑。发起方填写了信息模板后,要求应答方阅读模板,即发起操作申请,方式有两种:一种是利用中断。发起方提起中断申请,应答方通过中断响应或中断查询方式获取请求并阅读模板,然后清除中断申请,表示该次操作完成。另一种是利用旗语,即发起方通过改写信息模板的SynReq(同步申请)字段发起申请,应答方通过查询旗语获取请求并阅读模板,然后重置SynReq(同步申请),表示该次操作完成。
  (2)握手的协议
  所有操作分成三类,即设置参数、查询参数、传输数据。原则是数据的所有方发起传输。
  ①HOST要求设置参数,包括视音频编解码器、视音频输入输出的参数。图4是设置参数的流程图,其中(a)是HOST侧的协议,(b)是DSP侧的协议。
  ②HOST要求下行视音频数据,包括视音频编解码器的数据。本着数据的所有方发起传输的原则,数据下行传输由HOST发起。图5是下行参数的流程图,其中(a)是HOST侧的协议,(b)是DSP侧的协议。
  ③HOST要求上行视音频数据,包括视音频编解码器的数据。此时传输的发起方是DSP。过程与数据下行类似。
  (3)信息模板的建立


  信息模板位于DSP单元中,被HOST和DSP访问,每个DSP都有一张信息模板。为了不影响DSP对内存空间的自由使用,信息模板的位置并不是默认的固定位置,而是在初始化阶段由HOST和DSP协商确定其位置。
  在本设计中,利用寄存器PCIMA传递信息模板基址,以中断发起申请。
  如图6所示,将寄存器PCIMA内容分成3段,即ADDRESS、VERIFY、RESEARVE字段。低2位保留,不使用;高位31~6为信息模板基址,可见基址必须64字节对齐。低位5~2为校验字段,DSP填写基址后,将VERIFY字段置0101,表示基址可用,发起中断,要求HOST读取;HOST响应中断,查询VERIFY字段为0101后,读取基址,将基址按位取反,VERIFY字段置1010,发起中断,要求DSP校验;DSP校验无误后开始正常操作。如果有错误,则DSP将VERIFY置为0011,ADDRESS字段填写错误码。


  本文详细探讨了主从式系统中数据链路层的实现原则、方法,详细分析了消息模板的构成、传递数据的方式以及握手时序,这种结构在多种视讯终端中得到良好应用。
参考文献
1 李鸣明.用于快速三维扫描的主从式图像采集处理系统[J].小型微型计算机系统,2003;24(6):1078~1080
2 FUSIV VX200 Technical data sheet[M].ADI corporation,2003

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。