《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業(yè)界動態(tài) > 一種主從系統(tǒng)數據交換設計

一種主從系統(tǒng)數據交換設計

2008-05-14
作者:李鳴明,孫 艷,趙 宏

  摘 要: 詳細分析了主從式系統(tǒng)中雙處理器數據交換的原理,提出了一種基于共享內存池傳遞數據的新方法。該方法數據傳遞效率高,具有良好的開放性,在多種視訊終端上應用良好。
  關鍵詞: 主從系統(tǒng) 數據鏈路層 消息


  目前,視訊終端一般是基于X86結構的,在成本、穩(wěn)定性、噪聲、使用、安全和維護等方面存在著一系列急需解決的問題。解決的辦法是采用嵌入式架構,開發(fā)基于主從雙處理器的終端,從處理器完成媒體處理,主處理器完成協(xié)議和上層應用。這種終端具有成本低、穩(wěn)定性高的特點。在這種系統(tǒng)中,主從處理器之間的數據傳遞方式對性能影響很大,主要的方式包括事件驅動和消息驅動兩種模式。本文綜合二者的優(yōu)點,提出一種基于共享內存池傳遞數據的新方法。
1 系統(tǒng)硬件平臺及軟件架構
  系統(tǒng)硬件包括MIPS(充當主控芯片HOST)和多個DSP(可以是DM642、TM1502等多種DSP),通過PCI總線傳遞命令和數據。屏蔽硬件細節(jié),可以視其為以PCI總線成樹型聯(lián)結的分布式系統(tǒng),如圖1所示。


  在圖1中,DSP芯片組完成視音編解碼" title="編解碼">編解碼、本地圖像的獲取和顯示,任務單一,被視為協(xié)處理器" title="協(xié)處理器">協(xié)處理器族;HOST芯片在本系統(tǒng)中是MIPS,對上完成協(xié)議棧,對下完成打拆包后的數據收發(fā)以及對協(xié)處理器的控制(包括協(xié)處理器增加、配置、工作狀態(tài)設定、任務分配與均衡、協(xié)處理器刪除等功能)。HOST和協(xié)處理器族通過PCI總線互聯(lián),所有控制命令和數據都通過PCI總線傳遞。
  屏蔽硬件差別,該系統(tǒng)軟件結構可以抽象成如圖2所示形式。


  主從兩側分別提供相應的驅動,通過驅動層相互作用。協(xié)處理器一側的驅動分成各個芯片的驅動,位于各個芯片系統(tǒng)中。傳遞的信號或數據流都簡化為通道上的命令和數據;每個協(xié)處理器視為一個節(jié)點;協(xié)處理器的啟用/停止/任務改變視為節(jié)點的增/刪/節(jié)點狀態(tài)改變。
2 數據鏈路層設計
2.1 節(jié)點的狀態(tài)及管理

  在多處理器平臺上,協(xié)處理器被視為處理器網絡上的節(jié)點,每個節(jié)點就是一個DSP處理器。對于每個節(jié)點,可能處在多路" title="多路">多路視(音)頻編碼,也可能處在多路視(音)頻解碼,或者同時進行多路視(音)頻編/解碼。因此,節(jié)點的狀態(tài)定義為對一路視(音)頻而言所處的編解碼狀態(tài),即一個通道的狀態(tài),DSP節(jié)點的狀態(tài)是各通道視(音)頻處理狀態(tài)的合集。從而可以將各通道粗略地分成4個狀態(tài):
  (1)RESET狀態(tài)
  系統(tǒng)啟動,DSP尚未運行時,為了降低系統(tǒng)功耗,所有DSP處于硬件復位狀態(tài);當HOST要求DSP推出服務時,將DSP硬件復位,即回到復位狀態(tài)。此時編解碼算法尚在HOST處。
  (2)IDLE狀態(tài)
  HOST的資源分配算法要求啟用DSP時,退出DSP硬件復位,DSP引導,并下載軟件及算法,DSP空轉,各路編解碼器處于待命狀態(tài)。為簡單起見,此時應同時下載編、解算法,避免分步下載。
  (3)CODER狀態(tài)
  DSP僅執(zhí)行編碼,包括視頻和音頻算法??梢灾С侄嗦?,算法應可重入。
  (4)DECODER狀態(tài)
  DSP僅執(zhí)行解碼,包括視頻和音頻算法??梢灾С侄嗦罚惴☉芍厝?。
  為了驅動DSP在以上狀態(tài)間轉換,定義一組命令字,由HOST發(fā)給DSP,驅動DSP的狀態(tài)變化。命令字的含義如下:
  (1)Create/Delete:DSP處于RESET狀態(tài)時,發(fā)出Create命令,引導DSP,并向DSP下載視音頻" title="視音頻">視音頻編解碼算法,DSP進入IDLE狀態(tài);當DSP退出運行時,發(fā)出Delete命令,DSP進入復位狀態(tài)。
  (2)Enc(vEnc/aEnc):可細分為視頻編碼和音頻編碼。當發(fā)出該命令時,DSP進入CODER狀態(tài),同時進行多路視音頻編碼。
  (3)Dec(vDec/aDec):可細分為視頻解碼和音頻解碼。當發(fā)出該命令時,DSP進入DECODER狀態(tài)。
  (4)Pause(vPause /aPause):可細分為視頻編解碼和音頻編解碼。當發(fā)出該命令時,DSP進入IDLE狀態(tài)。
  在上層軟件的數據結構" title="數據結構">數據結構中,以鏈表來管理DSP節(jié)點,增加一路視音頻對應鏈表節(jié)點的插入,減少一路視音頻對應鏈表節(jié)點的刪除,視音頻節(jié)點分別在兩個鏈表中排列。
2.2 命令/數據的傳遞通道及其編碼形式
  HOST和CO-PROCESSOR族通過PCI總線連接,之間的命令、狀態(tài)、數據可以通過郵箱、旗語等方式傳遞,實現(xiàn)方式可以是共用存儲器,也可以是中斷,前者的優(yōu)點是簡單、容易實現(xiàn),不足是實時性不夠,而后者剛好相反。
  在本設計中,采用共用存儲器傳遞命令和數據,而以中斷發(fā)起申請。不論命令、數據,也不論HOST/DSP,發(fā)起方首先填充信息模板和緩沖區(qū),然后以中斷提起申請,最后以旗語提供校驗。
2.2.1 消息模板的構成
  為了提供主從處理器之間的數據鏈路,在每個DSP的內存中設置信息模板和數據緩沖區(qū)。結構如圖3所示。


  · DSP Index:HOST的DSP節(jié)點管理器分配給該DSP的索引號,此處用于DSP查詢自己的任務管理器,僅作校驗。
  · Channel Index:HOST要求操作的DSP中的索引號,不同的DSP分別編排不同索引號,同一DSP中不同的任務序列,如編碼和解碼序列,可能出現(xiàn)相同的索引號。
  · perateMode(操作模式):
  MSB=0    該信息模板由HOST填寫
  MSB=1    該信息模板由DSP 填寫
  操作模式字段和后面的參數區(qū)共同確定特定DSP上一個通道的操作,屏蔽最高位,該字段的值和操作建立對應關系。
  · OperateState(操作狀態(tài)): 操作狀態(tài)描述主從處理器的同步關系,分兩個字段。高字段作備份,用于不采用中斷情況下的同步控制;低字段描述操作過程中主從之間的握手關系。


  SyncReq同步申請:是中斷同步方式的備份。一般情況下,發(fā)起者發(fā)出中斷,通知被操作方閱讀信息模板的內容;在備份方式下,發(fā)起方通過該字段置位通知被操作方,并由被操作方改寫該字段表示已完成。
  SyncReq的取值:
  SYNC_NO_ACK /0:缺省狀態(tài),標識沒有閱讀。同于不發(fā)起中斷
  HOST_ACK_DSP /128+1:HOST發(fā)出的請求DSP 閱讀模板內容命令
  DSP_ACK_HOST /128+2:DSP發(fā)出的請求HOST閱讀模板內容命令
  StateCode狀態(tài)碼:標識主從處理器交互的狀態(tài)。
  HOST_REQ_DSP_READ_MESSAGE /1:HOST填寫完成,要求DSP閱讀模板內容
  HOST_END_READ_MESSAGE /2:HOST結束閱讀模板內容答復
  HOST_SEND_DATA_OVER /3:HOST發(fā)送數據結束
  HOST_READ_DATA_OVER /4:HOST接收數據結束
  DSP_REQ_READ_MESSAGE /5:DSP發(fā)出的請求閱讀模板內容請求
  DSP_END_READ_MESSAGE /6:DSP結束閱讀模板內容答復
  DSP_SEND_DATA_OVER /7:DSP發(fā)送數據結束
  DSP_READ_DATA_OVER /8:DSP接收數據結束
  · DnldStartAddr(下行數據緩沖區(qū)起始地址):DSP填寫的下行數據的頭地址。
  · DnldBlockLen(下行數據塊長度):HOST填寫的下行數據的長度。
  · UpldStartAddr(上行行數據緩沖區(qū)起始地址):HOST填寫的上行數據的頭地址。
  · UpldBlockLen(上行數據塊長度):DSP填寫的上行數據的長度。
  · VideoEncPara(視頻編碼器參數表):HOST填寫的生成視頻編碼器的參數表,或者DSP填寫的答復HOST查詢的參數表。
  · VideoDecPara(視頻解碼器參數表):HOST填寫的生成視頻解碼器的參數表,或者DSP填寫的答復HOST查詢的參數表。
  · AudioEncPara(音頻編碼器參數表):HOST填寫的生成音頻編碼器的參數表,或者DSP填寫的答復HOST查詢的參數表??捎靡粋€數據結構來表達,此處暫空32字節(jié)。
  · AudioEncPara(音頻解碼器參數表):HOST填寫的生成音頻解碼器的參數表,或者DSP填寫的答復HOST查詢的參數表??捎靡粋€數據結構來表達,此處暫空32字節(jié)。
  · VideoCapturePara(視頻采集參數表):HOST填寫的生成視頻采集器的參數表,或者DSP填寫的答復HOST查詢的參數表。
  · VideoCapturePara(視頻顯示參數表):HOST填寫的生成視頻顯示器的參數表,或者DSP填寫的答復HOST查詢的參數表。
  · AudioCapturePara(音頻采集參數表):HOST填寫的生成音頻采集器的參數表,或者DSP填寫的答復HOST查詢的參數表??捎靡粋€數據結構來表達,此處暫空32字節(jié)。
  · AudioPlayPara(音頻播放參數表):HOST填寫的生成音頻采集器的參數表,或者DSP填寫的答復HOST查詢的參數表??捎靡粋€數據結構來表達,此處暫空32字節(jié)。
2.2.2 消息模板的基本操作單元
  (1)握手的方式
  基本操作包括發(fā)起操作申請的方式和應答邏輯。發(fā)起方填寫了信息模板后,要求應答方閱讀模板,即發(fā)起操作申請,方式有兩種:一種是利用中斷。發(fā)起方提起中斷申請,應答方通過中斷響應或中斷查詢方式獲取請求并閱讀模板,然后清除中斷申請,表示該次操作完成。另一種是利用旗語,即發(fā)起方通過改寫信息模板的SynReq(同步申請)字段發(fā)起申請,應答方通過查詢旗語獲取請求并閱讀模板,然后重置SynReq(同步申請),表示該次操作完成。
  (2)握手的協(xié)議
  所有操作分成三類,即設置參數、查詢參數、傳輸數據。原則是數據的所有方發(fā)起傳輸。
  ①HOST要求設置參數,包括視音頻編解碼器、視音頻輸入輸出的參數。圖4是設置參數的流程圖,其中(a)是HOST側的協(xié)議,(b)是DSP側的協(xié)議。
  ②HOST要求下行視音頻數據,包括視音頻編解碼器的數據。本著數據的所有方發(fā)起傳輸的原則,數據下行傳輸由HOST發(fā)起。圖5是下行參數的流程圖,其中(a)是HOST側的協(xié)議,(b)是DSP側的協(xié)議。
  ③HOST要求上行視音頻數據,包括視音頻編解碼器的數據。此時傳輸的發(fā)起方是DSP。過程與數據下行類似。
  (3)信息模板的建立


  信息模板位于DSP單元中,被HOST和DSP訪問,每個DSP都有一張信息模板。為了不影響DSP對內存空間的自由使用,信息模板的位置并不是默認的固定位置,而是在初始化階段由HOST和DSP協(xié)商確定其位置。
  在本設計中,利用寄存器PCIMA傳遞信息模板基址,以中斷發(fā)起申請。
  如圖6所示,將寄存器PCIMA內容分成3段,即ADDRESS、VERIFY、RESEARVE字段。低2位保留,不使用;高位31~6為信息模板基址,可見基址必須64字節(jié)對齊。低位5~2為校驗字段,DSP填寫基址后,將VERIFY字段置0101,表示基址可用,發(fā)起中斷,要求HOST讀??;HOST響應中斷,查詢VERIFY字段為0101后,讀取基址,將基址按位取反,VERIFY字段置1010,發(fā)起中斷,要求DSP校驗;DSP校驗無誤后開始正常操作。如果有錯誤,則DSP將VERIFY置為0011,ADDRESS字段填寫錯誤碼。


  本文詳細探討了主從式系統(tǒng)中數據鏈路層的實現(xiàn)原則、方法,詳細分析了消息模板的構成、傳遞數據的方式以及握手時序,這種結構在多種視訊終端中得到良好應用。
參考文獻
1 李鳴明.用于快速三維掃描的主從式圖像采集處理系統(tǒng)[J].小型微型計算機系統(tǒng),2003;24(6):1078~1080
2 FUSIV VX200 Technical data sheet[M].ADI corporation,2003

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。