基于SAA6752HS 的嵌入式視頻監(jiān)控和傳輸系統(tǒng)的設(shè)計
系統(tǒng)軟件設(shè)計
本系統(tǒng)的軟件包括兩大部分,一是硬件驅(qū)動程序,二是控制邏輯設(shè)計。下面分而述之。
系統(tǒng)驅(qū)動程序設(shè)計
環(huán)境下進行的。CCS 界面簡單明了,操作方便,功能強大,大大降低了開發(fā)的難度。系統(tǒng)的驅(qū)動程序由TMS320VC5502 初始化程序,SAA7114A ,SAA6752HS 和LAN91C111 的配置程序、數(shù)字視頻MPEG2 碼流接收存儲封包程序、MPEG2 碼流以太網(wǎng)發(fā)送程序和系統(tǒng)主控程序等多個模塊組成。圖6 為軟件系統(tǒng)框圖。
圖6 軟件系統(tǒng)框圖
TMS32VC5502 的初始化程序完成對‘C5502 的堆棧和運行狀態(tài)位,中斷使能位的設(shè)置,以及DSP內(nèi)核頻率的設(shè)置。SAA7114 和SAA6752HS 的配置程序通過‘C5502 的I2C 接口完成對其的設(shè)置,使其能正常地進行模擬解碼和數(shù)字編碼。LAN91C111 的初始化程序完成對該芯片的一些寄存器設(shè)置,使其能正常運轉(zhuǎn)起來。數(shù)字視頻MPEG2 碼流接收存儲封包程序是通過‘C5502 將SAA6752HS 傳過來的數(shù)據(jù)按照RTP 協(xié)議標準打成網(wǎng)絡(luò)上的數(shù)據(jù)包,然后再通過MPEG2碼流以太網(wǎng)發(fā)送程序?qū)?shù)據(jù)包發(fā)送出去。數(shù)據(jù)傳輸時都是使用的DMA 傳輸方式,這樣可以節(jié)省大量的時間,提高系統(tǒng)運行的效率。
在整個驅(qū)動程序設(shè)計當中,時序的把握是十分關(guān)鍵的。比如SAA7114 的配置程序,當中需要用到I2C 總線,而I2C 總線對時序要求是相當嚴格的,如果在發(fā)出START 命令之后,不加上一定的時延,而立即傳送數(shù)據(jù),由于DSP 的速度太快,可能會造成前后數(shù)據(jù)的覆蓋,導致程序出錯。另外,由于系統(tǒng)是進行實時處理的,中斷程序設(shè)計是必不可少的。在程序設(shè)計時有幾個問題需要注意:
第一, 當外部中斷信號不穩(wěn)定時,比如波形前后跳動、毛刺過多等,都有可能造成能檢測到中斷,但無法進入中斷服務(wù)程序的情況。
第二, 若將程序單步執(zhí)行,這樣會造成仿真器出錯,無法檢測到中斷。
第三, 在修改兩個中斷矢量指針I(yè)VPD 和IVPH 之前,應確信:
a、禁止所有的可屏蔽中斷( INTM= 1) 。這可以在修改中斷矢量指針,使之指向新中斷矢量之前,防止產(chǎn)生一個可屏蔽中斷。
b、每個硬件非屏蔽中斷對新舊IVPD 值分別有一個中斷矢量和一個中斷服務(wù)程序。這樣在修改IVPD 過程中,產(chǎn)生一個硬件非屏蔽中斷時,可以防止非法指令代碼。
FPGA 邏輯設(shè)計
該系統(tǒng)中使用了一塊Altera 公司的ACEXEP1K30QC208-3Q 型號的FPGA ,主要利用該FPGA實現(xiàn)SAA6752 與TMS320VC5502 之間的接口。如上SAA6752HS 與TMS320VC5502 的連接圖4 所示,移位寄存器負責將SAA6752HS 輸出的8 位數(shù)據(jù)方式擴展成32 位寬度,以提高數(shù)據(jù)的吞吐效率。通過時鐘信號PDIOCLK、有效位信號PDOVAL 和音視頻標志位PDOAV 來控制移位寄存器的工作。FIFO是一個寬度為32 位的緩沖器,TMS320VC5502 通過片選信號CE3 和讀信號ARE/SRE/SDRE 控制對FIFO 數(shù)據(jù)的讀操作。
當SAA6752HS 采用傳送流的數(shù)據(jù)結(jié)構(gòu)時,每讀完4 個數(shù)據(jù)包(每個數(shù)據(jù)包為188個字節(jié)) , 計數(shù)器2 就會產(chǎn)生一次中斷,TMS320VC5502 從FIFO 中讀入這些數(shù)據(jù)包,完成信道編碼后向網(wǎng)絡(luò)上傳輸。FPGA 邏輯正是依據(jù)這一思想設(shè)計的。為了提升系統(tǒng)的穩(wěn)定性,避免累積錯誤,該邏輯中采用了一種雙FIFO 輪流切換的方法。在系統(tǒng)開始運行,只往FIFO1 里寫,當寫完4 個數(shù)據(jù)包,產(chǎn)生一次中斷,通知DSP 來讀數(shù)據(jù);接下來,系統(tǒng)自動切換到往FIFO2 里寫,此時DSP 同時在讀FIFO1里的數(shù)據(jù),直到往FIFO2 里寫完4 個數(shù)據(jù)包(由于DSP 讀數(shù)據(jù)的速度遠遠快于SAA6752 往FIFO 里寫數(shù)據(jù)的速度,故此時FIFO1 已被讀空) ,便又產(chǎn)生中斷;接下來,DSP 讀FIFO2 里的數(shù)據(jù),同時往FIFO1里寫,依次輪流切換。
圖7 DIO 主模式下輸出傳輸流分組的時序圖
SAA6752 的輸出采用DIO 主模式,其輸出端口的時序如圖7 所示,每個數(shù)據(jù)包包含188 個字節(jié),這是MPEG2 傳輸流分組的特性。在MAX+PLUSII 下設(shè)計其邏輯,運行正常。
結(jié)束語
本文針對數(shù)字視頻壓縮及網(wǎng)絡(luò)傳輸作了較為深入的研究,并針對嵌入式網(wǎng)絡(luò)視頻服務(wù)器的設(shè)計和實現(xiàn)作了初步而有益的探索,其中既有經(jīng)驗也有教訓。由于時間及其它因素的限制,研究工作留有許多需要完善的地方。Non-PCI 結(jié)構(gòu)網(wǎng)絡(luò)接口性能的優(yōu)化和客戶端軟件的具體實現(xiàn)及形成嵌入式網(wǎng)絡(luò)視頻服務(wù)器原理樣機是我們下一步的目標。
評論