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

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

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

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


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


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


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

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


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


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


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


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

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