新聞中心

EEPW首頁 > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 基于NiosⅡ軟核的嵌入式多路視頻點(diǎn)播系統(tǒng)

基于NiosⅡ軟核的嵌入式多路視頻點(diǎn)播系統(tǒng)

作者: 時(shí)間:2008-04-25 來源:網(wǎng)絡(luò) 收藏
0 引言

VOD(點(diǎn)播)技術(shù)為人們提供了一種交互式的信息獲取方式,并隨著技術(shù)的完善不斷擴(kuò)展著其應(yīng)用范圍和影響力。傳統(tǒng)的VOD系統(tǒng)主要是以服務(wù)器作為的信息源,通過局域網(wǎng)進(jìn)行點(diǎn)播,適合服務(wù)于住宅小區(qū)或公營機(jī)構(gòu)。而對于缺乏網(wǎng)絡(luò)支持、移動性較強(qiáng)的環(huán)境,如公共交通工具,傳統(tǒng)的VOD系統(tǒng)顯然難以實(shí)現(xiàn)。

本文針對特定的用戶環(huán)境,提出采用Altera的SOPC(片上可編程系統(tǒng))解決方案,利用處理器和FPGA(現(xiàn)場可編程門陣列)配置靈活、IP資源豐富、硬件設(shè)計(jì)和軟件編程方便的特點(diǎn),通過擴(kuò)展IDE(集成開發(fā)環(huán)境)接口,以硬盤作為存儲媒介,實(shí)現(xiàn)多路VOD系統(tǒng)的設(shè)計(jì)方案。該系統(tǒng)體積小、成本相對低廉,體現(xiàn)了電子產(chǎn)品的優(yōu)勢。與傳統(tǒng)的VOD系統(tǒng)相比,使用范圍更具針對性,裝配更靈活,升級擴(kuò)展更方便,具有很廣闊的前景。

1 系統(tǒng)功能劃分

該系統(tǒng)從功能上可劃分為系統(tǒng)控制核心、多路數(shù)據(jù)讀取單元、視頻解碼模塊和用戶點(diǎn)播終端4個(gè)部分。

1.1 系統(tǒng)控制核心

系統(tǒng)以為控制核心,主要負(fù)責(zé)硬盤初始化、提取視頻節(jié)目簇鏈、生成節(jié)目列表、人機(jī)交互控制等工作。上電后,Ⅱ控制器先初始化硬盤的傳輸模式和讀寫狀態(tài),然后讀取主引導(dǎo)記錄,尋址到基本分區(qū)的操作系統(tǒng)引導(dǎo)記錄區(qū),計(jì)算保留扇區(qū)和FAT(文件分配表)大小,分別得到FAT和根目錄的入口。對目錄樹上的文件進(jìn)行分析后,提取出視頻文件的文件名、文件首簇,根據(jù)首簇指針再次查找FAT,追溯出文件的簇鏈,最后燒寫到Flash存儲器中。完成以上工作后,初始化中斷,對用戶端進(jìn)行輪詢,等待用戶請求,分析用戶指令包,作出相應(yīng)響應(yīng)。

1.2 多路視頻數(shù)據(jù)讀取

為實(shí)現(xiàn)海量視頻數(shù)據(jù)的存取,該系統(tǒng)需外擴(kuò)展硬盤作為存儲介質(zhì)。通過用戶自定義的硬盤DMA(直接存儲器存取)控制模塊實(shí)現(xiàn)對硬盤數(shù)據(jù)的讀寫,功能包括為上層程序提供控制硬盤和多路數(shù)據(jù)輸出的接口,產(chǎn)生硬盤DMA操作狀態(tài)機(jī)信號。數(shù)據(jù)從硬盤讀出后,以乒乓操作的方式交替存儲在兩片SRAM中,內(nèi)存中的數(shù)據(jù)按照對應(yīng)的輸出端口并行排列。同時(shí),根據(jù)用戶終端提出的點(diǎn)播需求,數(shù)據(jù)往點(diǎn)播端口扇出。

1.3 視頻解碼

本系統(tǒng)采用外擴(kuò)展的視頻解碼板作為硬解碼模塊。解碼芯片是LSI LOGIC公司CL680視頻CDMPEG 1音頻/視頻解碼器。該芯片以CL480/484架構(gòu)為基礎(chǔ),用于MPEG-1音頻/視頻解碼,整合數(shù)字NTSC/PAL編碼功能和加強(qiáng)KTV功能。

1.4 用戶點(diǎn)播終端

為解決多用戶終端遠(yuǎn)距離通信的問題,系統(tǒng)采用RS-485收發(fā)器作為主機(jī)與用戶點(diǎn)播終端的連接橋梁。RS-485收發(fā)器采用平衡發(fā)送和差分接收,具有抑制共模干擾的能力,加上接收器的高靈敏度,能檢測低達(dá)200 mV的電壓,極大地提高信號傳播的可靠性。

主機(jī)與終端間的通信方式采用類似令牌總線的通信協(xié)議。主機(jī)不斷發(fā)出查詢包,收到查詢包的客戶端被賦予發(fā)送控制命令的權(quán)限,客戶端可選擇發(fā)送命令或直接丟棄查詢包,這樣就避免了多個(gè)客戶端同時(shí)向總線發(fā)送數(shù)據(jù)、導(dǎo)致通信失敗的情況。

系統(tǒng)采用MB90092視頻字符疊加模塊,在用戶終端屏幕中疊加功能菜單,建立友好的用戶操作界面,用戶可通過控制面板進(jìn)行點(diǎn)播操作。

2 系統(tǒng)設(shè)計(jì)

2.1 系統(tǒng)硬件結(jié)構(gòu)

系統(tǒng)硬件結(jié)構(gòu)如圖1所示。

為實(shí)現(xiàn)對硬盤的控制及兩片內(nèi)存的乒乓控制,系統(tǒng)使用了定制的DMA控制模塊,通過SOPC Builder軟件,以用戶邏輯形式掛到Avalon總線上。

2.1.1 DMA控制模塊

DMA控制模塊框圖如圖2所示。

DMA控制模塊主要功能是控制硬盤進(jìn)行多路視頻數(shù)據(jù)的并發(fā)傳輸。為保證視頻質(zhì)量,需考慮到數(shù)據(jù)讀寫速度的提高。本系統(tǒng)采用按照ATA/ATAPI-6協(xié)議編寫的DMA模塊,控制置硬盤以Ultra-DMA方式傳輸數(shù)據(jù),可實(shí)現(xiàn)最大傳輸速率為66 Mbit/s,滿足多路MPEG-1視頻碼流的并發(fā)傳輸。除了解決傳輸速率問題,該系統(tǒng)涉及到同時(shí)處理多路數(shù)據(jù)的讀寫,因此引入相應(yīng)的功能子模塊,以乒乓操作的方式控制兩片SRAM的讀寫,并對多路數(shù)據(jù)的存儲分區(qū)進(jìn)行地址管理。

模塊的主要子模塊有DMA控制器、DMA狀態(tài)機(jī)、switch和SRAM控制器。

DMA控制器作為Avalon總線與硬盤的接口,主要功能是接收上層程序的控制命令,再對硬盤的控制寄存器進(jìn)行讀寫,在NiosⅡ程序的控制下將硬盤的傳送模式設(shè)置為Ultra-DMA模式進(jìn)行數(shù)據(jù)傳輸。

DMA狀態(tài)機(jī)模塊是根據(jù)T13小組發(fā)布ATA(ATA/ATAPI-6)文檔為設(shè)計(jì)標(biāo)準(zhǔn),用Verilog HDL(硬件描述語言)實(shí)現(xiàn)的有限狀態(tài)機(jī)。在控制終端的設(shè)置下傳輸方式轉(zhuǎn)為Ultra-DMA模式后,硬盤向控制器發(fā)出DMA請求,此時(shí)DMA狀態(tài)機(jī)啟動。主機(jī)端向硬盤發(fā)送響應(yīng)信號,握于成功,解除DMA STOP狀態(tài),同時(shí)使IDE_HDMARDY有效表示主控端已準(zhǔn)備好。接著,數(shù)據(jù)流從硬盤流出,并發(fā)出一雙沿鎖存信號,SRAM控制器在該信號控制下將數(shù)據(jù)鎖存入內(nèi)存。直到DMA請求結(jié)束,STOP信號生效,DMA傳輸結(jié)束。整個(gè)過程遵守ATAPI-6協(xié)議,使用Verilog HDL描述出硬盤DMA傳輸過程的時(shí)序。

Switch和SRAM控制器模塊主要負(fù)責(zé)在DMA傳輸過程中在兩片SRAM間調(diào)度數(shù)據(jù),從而實(shí)現(xiàn)數(shù)據(jù)的乒乓存取。Switch模塊用于完成兩塊RAM之間的切換及數(shù)據(jù)的分區(qū)存儲。它工作于兩個(gè)狀態(tài):以Flag為標(biāo)志位,F(xiàn)lag為0時(shí)做寫RAMl的操作;Flag為1時(shí)做寫RAM2的操作。在DMA方式下,一次DMA讀取硬盤一個(gè)扇區(qū)剛好寫滿一片RAM,Switch模塊掛起數(shù)據(jù)寫入,等待中斷。當(dāng)另一片RAM中的數(shù)據(jù)被全部讀出后中斷發(fā)生,此時(shí)Switch模塊交換兩片內(nèi)存的讀寫端口地址。

2.1.2 RAM分區(qū)讀寫

由于系統(tǒng)要提供多路視頻的播放,因此,在進(jìn)行DMA傳輸?shù)倪^程中需實(shí)現(xiàn)各路視頻數(shù)據(jù)的分區(qū)讀寫。在寫內(nèi)存時(shí),采用雙時(shí)鐘控制機(jī)制。若要實(shí)現(xiàn)32路VOD系統(tǒng),將一片512 k的RAM分為32個(gè)單元,每個(gè)單元長度為16 k,定義RAM的地址為:wraddress2=wraddressl+wraddress

wraddressl為每個(gè)內(nèi)存分區(qū)的基地址,它的取值分別是0 k,16 k,32 k,48 k,…,496 k,另外是一個(gè)偏移地址wraddress。內(nèi)存分區(qū)方式如圖3所示。

定義時(shí)鐘C0為寫內(nèi)存分區(qū)時(shí)鐘,C1為寫內(nèi)存偏移時(shí)鐘,C0的頻率為寫C1的32倍。當(dāng)偏移地址為某一值時(shí),權(quán)值地址的取值會從0 k~496 k遍歷一次,即每一內(nèi)存單元讀寫周期,寫入每個(gè)分區(qū)的一個(gè)單元。

同樣,對內(nèi)存中的數(shù)據(jù)也要分區(qū)讀出并送往相應(yīng)端口。該模塊使用一種內(nèi)存地址的計(jì)數(shù)方法:將地址線的長度設(shè)置為10位,再將低5位的地址和高5位的地址互換,目的是從高5位開始計(jì)數(shù),計(jì)數(shù)滿了進(jìn)位到低5位。高5位表示分區(qū)地址,低5位為分區(qū)的偏移地址,地址從第6位開始累加,剛好遍歷32個(gè)分區(qū),完成高5位的依次累加后,進(jìn)位到低5位的分區(qū)偏移地址,表示開始讀下一輪分區(qū)的第2個(gè)內(nèi)存單元。如此類推。根據(jù)計(jì)算出的地址可實(shí)現(xiàn)對各分區(qū)的數(shù)據(jù)依次讀取。地址算法示意圖如圖4所示。

2.1.3 移位輸出模塊

該模塊主要實(shí)現(xiàn)的功能是:在分路時(shí)鐘的控制下,將從內(nèi)存中讀出的多路數(shù)據(jù)移位輸出。該模塊定義了一組長度為16位的移位寄存器。數(shù)據(jù)I/O讀寫的時(shí)間和速度由video_clock確定,video_clock的頻率是12.5 MHz,負(fù)責(zé)控制SRAM_R控制器,移位輸出模塊和視頻解碼板的同步。模塊中還設(shè)置了一個(gè)累加計(jì)數(shù)器div3,工作頻率與video_clock相同。當(dāng)SRAM_R控制器依次將各路視頻文件讀人一個(gè)寄存器后,每一個(gè)時(shí)鐘下降沿到來時(shí)移出1位,直至全部移出。若加大時(shí)鐘頻率和緩沖內(nèi)存空間,可以增加移位寄存器的數(shù)目,從而增加視頻輸出端口的數(shù)量,實(shí)現(xiàn)系統(tǒng)點(diǎn)播路數(shù)的增加。

2.2 系統(tǒng)軟件工作流程

系統(tǒng)程序劃分為主機(jī)程序和點(diǎn)播終端兩大部分。主機(jī)程序主要實(shí)現(xiàn)3個(gè)功能:管理硬盤,提取簇鏈;播放節(jié)目,點(diǎn)播控制;響應(yīng)請求,串口中斷。管理硬盤的方式主要是通過自定義的DMA控制模塊對硬盤的控制寄存器進(jìn)行操作,驅(qū)動硬盤后訪問FAT32文件系統(tǒng)下的相應(yīng)扇區(qū),追朔簇鏈,將簇鏈提取出來寫入到Flash ROM中,為播放做準(zhǔn)備。點(diǎn)播端程序則主要負(fù)責(zé)生成指令包。本系統(tǒng)軟件工作流程如圖5所示。

本系統(tǒng)要處理多路視頻數(shù)據(jù),并且視頻信號數(shù)據(jù)量大,在點(diǎn)播過程中系統(tǒng)必須集中大部分處理器時(shí)間來處理各路視頻信號,而視頻文件的文件名和簇鏈結(jié)構(gòu)必須通過相對低速的PIO操作來獲得。為了解決簇鏈讀取速度的瓶頸,本文設(shè)計(jì)了適合本系統(tǒng)應(yīng)用的數(shù)據(jù)結(jié)構(gòu)來優(yōu)化對數(shù)據(jù)的管理,加快讀取速度。定義的數(shù)據(jù)結(jié)構(gòu)有:

客戶端的狀態(tài)和播放進(jìn)度也由專門的結(jié)構(gòu)體來記錄和管理。定義的數(shù)據(jù)結(jié)構(gòu)有:

3 結(jié)束語

SOPC=NiosⅡ+FPGA這個(gè)創(chuàng)新的概念為設(shè)計(jì)帶來的極大的便利和靈活性。利用強(qiáng)大的SOPC開發(fā)平臺和豐富的IP資源,可大量縮短系統(tǒng)設(shè)計(jì)周期,而且系統(tǒng)的改進(jìn)也變得十分方便。本文提出的通過把用戶自定義的硬盤讀寫模塊整合到SOPC平臺上,與NiosⅡ無縫接合,成功實(shí)現(xiàn)了多路視頻數(shù)據(jù)的并發(fā)點(diǎn)播。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉