<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于NiosⅡ軟核的嵌入式多路視頻點(diǎn)播系統

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

作者: 時(shí)間:2015-01-16 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/268262.htm

  2.1.2 RAM分區讀寫(xiě)

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

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

  

 

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

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

  

 

  2.1.3 移位輸出模塊

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

  2.2 系統軟件工作流程

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

  

 

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

  

 

  客戶(hù)端的狀態(tài)和播放進(jìn)度也由專(zhuān)門(mén)的結構體來(lái)記錄和管理。定義的數據結構有:

  

 

  3 結束語(yǔ)

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

pid控制相關(guān)文章:pid控制原理


pid控制器相關(guān)文章:pid控制器原理



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: NiosⅡ 多路視頻 SOPC

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>