專利名稱:一種基于fpga的高清視頻輸出方法
技術(shù)領(lǐng)域:
本發(fā)明涉及FPGA應(yīng)用領(lǐng)域,具體涉及一種基于FPGA的高清視頻輸出方法。
背景技術(shù):
目前,無論是在高清電視、網(wǎng)絡(luò)視頻點(diǎn)播等普通消費(fèi)領(lǐng)域,還是在安防監(jiān)控、醫(yī)療、工業(yè)現(xiàn)場(chǎng)等專業(yè)領(lǐng)域,對(duì)高清視頻的清晰度和實(shí)時(shí)性的要求不斷提高,由此帶來視頻處理的復(fù)雜度和計(jì)算量的幾何級(jí)數(shù)增長(zhǎng),視頻、語音、圖形圖像等數(shù)據(jù)的傳輸量迅速增加。隨著信息技術(shù)、嵌入式技術(shù)及高性能處理器的發(fā)展,高速串行總線,相較傳統(tǒng)并行總線具有更高的數(shù)據(jù)帶寬、更少的信號(hào)連接線、更穩(wěn)定的傳輸質(zhì)量,因而廣泛用于大規(guī)模數(shù)據(jù)的高速傳輸中。隨著傳輸總線的不斷升級(jí),傳統(tǒng)的并行總線逐漸退出歷史舞臺(tái),新型的高速串行總線技術(shù)在芯片互連中扮演主要角色。PCIe總線采用了串行連接方式,使用數(shù)據(jù)包(Packet)進(jìn)行數(shù)據(jù)傳輸,采用這種結(jié)構(gòu)可以有效去除并行總線中存在的一些邊帶信號(hào)。PCIe支持多種數(shù)據(jù)路由的傳輸方式,基于多通路的數(shù)據(jù)傳遞方式,和基于報(bào)文的數(shù)據(jù)傳送方式,充分考慮了在數(shù)據(jù)傳輸過程中出現(xiàn)的服務(wù)質(zhì)量(Quality of Service)問題。聞速串行總線可以提供相當(dāng)聞的數(shù)據(jù)帶寬,最新PCIe2.0版本每通路可以提供聞達(dá)5.0Gbps的數(shù)據(jù)帶寬,非常適合要求帶寬高及實(shí)時(shí)性高的高清視頻應(yīng)用領(lǐng)域。FPGA (Field-Programmable Gate Array),即現(xiàn)場(chǎng)可編程門陣列,它是在 PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。為了適應(yīng)高清視頻的海量數(shù)據(jù)輸出,保證高清視頻的顯示質(zhì)量,需要提供一種可以更高效合理的高清視頻數(shù)據(jù)輸出方法。
發(fā)明內(nèi)容
本發(fā)明提供了一種基于FPGA的高清視頻輸出方法,解決了現(xiàn)有技術(shù)中CPU與視頻接口芯片直接進(jìn)行數(shù)據(jù)傳輸帶來的數(shù)據(jù)帶寬較低、傳輸通路數(shù)受限以及CPU負(fù)擔(dān)過大的問題,實(shí)現(xiàn)高清視頻的流暢顯示。一種基于FPGA的高清視頻輸出方法,包括以下步驟:(I)CPU將解碼后高清視頻數(shù)據(jù)暫存在CPU端的RAM中,然后將RAM中暫存的高清視頻數(shù)據(jù)量告知FPGA,并向FPGA發(fā)送數(shù)據(jù)通路開啟命令,若RAM中暫存的高清視頻數(shù)據(jù)量超過第一閾值,則FPGA開啟DMA控制器,將高清視頻數(shù)據(jù)從CPU端的RAM搬運(yùn)至FPGA端的DDR2 中;⑵CPU 向FPGA發(fā)送高清視頻送顯命令,若DDR2中緩存的高清視頻數(shù)據(jù)量超過第二閾值,則FPGA開啟DMA控制器,將高清視頻數(shù)據(jù)從FPGA端的DDR2搬運(yùn)至視頻接口芯片中,輸出高清視頻。在CPU向FPGA發(fā)送高清視頻送顯命令之前,在FPGA端的DDR2中緩存若干幀高清視頻數(shù)據(jù)。第一閾值為I 2幀,第二閾值為4 6幀。針對(duì)1080p分辨率,一幀數(shù)據(jù)大小約為4MByte,優(yōu)選第一閾值設(shè)為I幀,第二閾值設(shè)為4幀,第一閾值和第二閾值都可以依據(jù)系統(tǒng)的延時(shí)情況進(jìn)行調(diào)整。FPGA的一端與CPU相連,F(xiàn)PGA的另一端與視頻接口芯片相連,F(xiàn)PGA外擴(kuò)DDR2SDRMA(以下簡(jiǎn)稱DDR2)以增加數(shù)據(jù)的吞吐量,輸出支持多種標(biāo)準(zhǔn)高清視頻接口的數(shù)據(jù)。FPGA與CPU之間通過PCIe總線進(jìn)行數(shù)據(jù)傳輸,PCIe總線的數(shù)據(jù)傳輸率高,高數(shù)據(jù)帶寬可以傳輸大規(guī)模的高清視頻數(shù)據(jù)。FPGA中設(shè)立PCIe接口模塊,PCIe接口模塊由事務(wù)層、數(shù)據(jù)鏈路層和物理層組成,各層都具有發(fā)送和接收兩個(gè)功能模塊。PCIe接口模塊負(fù)責(zé)接收來自于CPU端經(jīng)由DMA控制器搬運(yùn)的多通路1080P全高清視頻數(shù)據(jù)、傳輸CPU向PFGA發(fā)送的命令和狀態(tài)信息,其中,事務(wù)層負(fù)責(zé)進(jìn)行PCIe事務(wù)層包(Transaction Layer Packet, TLP)的解析,經(jīng)過轉(zhuǎn)換接口后與FPGA內(nèi)部協(xié)議實(shí)現(xiàn)較為簡(jiǎn)單的片內(nèi)總線互連。所述的PCIeTLP解析為,拆解TLP包得到TLP頭標(biāo)以及TLP數(shù)據(jù)載荷(Playload)。TLP頭標(biāo)通用字段的頭標(biāo)格式(Format of Header, FMT)描述該TLP包的事務(wù)類型,事務(wù)類型主要包括3種類型,分別為存儲(chǔ)器寫請(qǐng)求(MRd)、存儲(chǔ)器讀請(qǐng)求(MWr)和消息請(qǐng)求(Msg),其中,存儲(chǔ)器寫請(qǐng)求(MRd)和存儲(chǔ)器讀請(qǐng)求(MWr),表示該TLP載荷數(shù)據(jù)為DMA由CPU端的RAM搬運(yùn)至FPGA端的DDR2中的高清視頻 數(shù)據(jù)。TLP頭標(biāo)中的地址(ADDR2ess)可以得到TLP基地址(Base ADDR2ess, BAR)偏移信息,確認(rèn)該高清視頻數(shù)據(jù)的通路映射信息;消息請(qǐng)求(Msg),Msg包含CPU傳輸?shù)母鞣N命令,也包含F(xiàn)PGA傳遞給CPU的各種中斷請(qǐng)求。作為優(yōu)選,所述步驟(2)中在將高清視頻數(shù)據(jù)從FPGA端的DDR2搬運(yùn)至視頻接口芯片中之前,將高頻視頻數(shù)據(jù)依據(jù)ITU-RBT.709標(biāo)準(zhǔn)轉(zhuǎn)換為標(biāo)準(zhǔn)格式。將視頻接口芯片支持HDM1、VGA、YPbPr分量等多種標(biāo)準(zhǔn)接口,按實(shí)際需要輸出多通路的全高清視頻。DDR2用于按地址分區(qū)塊存儲(chǔ)DMA由CPU端的RAM搬運(yùn)至FPGA的高清視頻數(shù)據(jù),可以增加數(shù)據(jù)吞吐量,當(dāng)CPU向FPGA發(fā)送高清視頻送顯命令時(shí),DDR2中存儲(chǔ)的高清視頻數(shù)據(jù)按照恒定的數(shù)據(jù)率進(jìn)行視頻格式的轉(zhuǎn)換。將高清視頻數(shù)據(jù)從CPU端的RAM搬運(yùn)至FPGA端的DDR2中時(shí)采取多通路數(shù)據(jù)操作,各通路數(shù)據(jù)操作之間輪詢切換,針對(duì)每一通路數(shù)據(jù)操作,例化一個(gè)緩存用的輸入FIFO和一個(gè)緩存用的輸出FIFO;當(dāng)從CPU端的RAM搬運(yùn)至輸入FIFO中的某一通路高清視頻數(shù)據(jù)量大于第三閾值時(shí),將輸入FIFO中的高清視頻數(shù)據(jù)寫入DDR2中;當(dāng)其一通路的輸出FIFO中的高清視頻數(shù)據(jù)量小于第四閾值時(shí),從DDR2讀取高清視頻數(shù)據(jù)至該輸出FIFO中。FIFO的容量可以根據(jù)系統(tǒng)的延時(shí)情況進(jìn)行調(diào)整,通常情況下設(shè)定第三閾值為輸入FIFO容量的3/4,第三閾值為輸出FIFO容量的1/4。DDR2涉及多通路高清視頻數(shù)據(jù)的寫入和讀取,由于傳輸通路的實(shí)時(shí)限制(寫入和讀取不能同時(shí)進(jìn)行),因此,DDR2需要對(duì)各通路高清視頻數(shù)據(jù)的寫入和讀取進(jìn)行優(yōu)先級(jí)切換和狀態(tài)機(jī)跳轉(zhuǎn),保證DDR2讀寫達(dá)到數(shù)據(jù)傳輸帶寬,滿足高清視頻數(shù)據(jù)的輸出要求。為了避免在高清視頻數(shù)據(jù)傳輸過程中出現(xiàn)的數(shù)據(jù)丟失,提高傳輸過程的穩(wěn)定性,優(yōu)選地,將高清視頻數(shù)據(jù)從CPU端的RAM搬運(yùn)至FPGA端的DDR2中時(shí),每完成一幀高清視頻數(shù)據(jù)的搬運(yùn),F(xiàn)PGA端向CPU端發(fā)送數(shù)據(jù)請(qǐng)求中斷,CPU端向FPGA端發(fā)送中斷響應(yīng);若FPGA端沒有接收到CPU端的中斷響應(yīng),則FPGA將DDR2中緩存的前一幀高清視頻數(shù)據(jù)搬運(yùn)至視頻接口芯片中;若FPGA端接收到CPU端的中斷響應(yīng),并確認(rèn)當(dāng)前幀高清視頻數(shù)據(jù)與前一幀高清視頻數(shù)據(jù)重復(fù),則不搬運(yùn)當(dāng)前幀高清視頻數(shù)據(jù)至視頻接口芯片中。本發(fā)明一種 基于FPGA的高清視頻輸出方法,解決了 CPU與視頻接口芯片直接進(jìn)行數(shù)據(jù)傳輸帶來的數(shù)據(jù)帶寬較低、傳輸通路數(shù)受限以及CPU負(fù)擔(dān)過大的問題,實(shí)現(xiàn)高清視頻的流暢顯示。
圖1為實(shí)現(xiàn)本發(fā)明基于FPGA的高清視頻輸出方法的裝置連接示意圖;圖2為本發(fā)明一種基于FPGA的高清視頻輸出方法中DMA的切換流程示意圖;圖3為本發(fā)明一種基于FPGA的高清視頻輸出方法中DDR2的讀寫切換流程示意圖;圖4為本發(fā)明一種基于FPGA的高清視頻輸出方法中容錯(cuò)機(jī)制的操作示意圖。
具體實(shí)施例方式下面結(jié)合附圖,對(duì)本發(fā)明一種基于FPGA的高清視頻輸出方法做詳細(xì)描述。實(shí)現(xiàn)本發(fā)明基于FPGA的高清視頻輸出方法的裝置如圖1所示,F(xiàn)PGA主要包括DDR2讀寫控制模塊、主控邏輯核、PCIe接口模塊和視頻格式轉(zhuǎn)換模塊,F(xiàn)PGA通過PCIe鏈路與CPU進(jìn)行數(shù)據(jù)交互,通過并行接口與后端接口芯片相連接,F(xiàn)PGA外擴(kuò)DDR2增加數(shù)據(jù)的吞吐量,實(shí)現(xiàn)全高清視頻數(shù)據(jù)的輸出。PCIe接口模塊110,主要包括物理層111、鏈路層112和事務(wù)層113,用于接收和發(fā)送PCIe物理鏈路的數(shù)據(jù),完成TLP包的解析和打包,通過FPGA片內(nèi)總線與主控邏輯核120相連,用于CPU與FPGA之間的高清視頻數(shù)據(jù)以及命令的交互。通過PCIe鏈路,CPU對(duì)FPGA進(jìn)行狀態(tài)查詢,通路控制等操作,F(xiàn)PGA根據(jù)高清視頻傳輸需求向CPU發(fā)送中斷請(qǐng)求,PCIe鏈路承擔(dān)高清視頻視頻數(shù)據(jù)的大規(guī)模傳輸。主控邏輯核120,用于多通路視頻數(shù)據(jù)傳輸通路的實(shí)時(shí)控制,包括DMA控制器121、傳輸控制器122以及容錯(cuò)控制器123,根據(jù)主控邏輯核120所處位置,將數(shù)據(jù)傳輸通路分為上游數(shù)據(jù)通路和下游數(shù)據(jù)通路,無論是上游數(shù)據(jù)通路還是下游數(shù)據(jù)通路,主控邏輯核120可以實(shí)現(xiàn)對(duì)其中任意一路數(shù)據(jù)傳輸通路的實(shí)時(shí)控制。對(duì)上游數(shù)據(jù)通路的實(shí)時(shí)控制,是指?jìng)鬏斂刂破?22經(jīng)PCIe接口模塊110與CPU交互,接收來自CPU的命令,開啟或關(guān)閉上游數(shù)據(jù)傳輸通路,其中,開啟上游數(shù)據(jù)傳輸通路時(shí),傳輸控制器122命令DMA控制器121開啟DMA搬運(yùn)機(jī)制,DMA控制器121將PCIe接口模塊110接收的高清視頻數(shù)據(jù)傳送給DDR2讀寫控制模塊130存入外擴(kuò)的DDR2中;關(guān)閉上游數(shù)據(jù)傳輸通路時(shí),傳輸控制器122向DMA控制器121發(fā)送暫?;蚪K止命令,DMA控制器121完成最近一次DMA操作后停止工作。對(duì)下游數(shù)據(jù)通路的實(shí)時(shí)控制,是指?jìng)鬏斂刂破?22經(jīng)PCIe接口模塊110與CPU交互,接收來自CPU的命令,開啟或關(guān)閉下游數(shù)據(jù)傳輸通路,其中,開啟下游數(shù)據(jù)傳輸通路時(shí),傳輸控制器122命令視頻格式轉(zhuǎn)換模塊140開啟視頻格式轉(zhuǎn)換操作,DMA控制器122將外擴(kuò)的DDR2存儲(chǔ)的視頻數(shù)據(jù)發(fā)送給視頻格式轉(zhuǎn)換模塊140,按ITU-RBT.709標(biāo)準(zhǔn)轉(zhuǎn)換格式后輸出給視頻接口芯片,對(duì)外輸出全高清視頻;關(guān)閉下游數(shù)據(jù)傳輸通路時(shí),傳輸控制器122向視頻格式轉(zhuǎn)換模塊140發(fā)送暫停或終止命令,視頻格式轉(zhuǎn)換模塊140完成最近一次轉(zhuǎn)換操作后停止工作,對(duì)外暫停輸出高清視頻。DDR2讀寫控制模塊130 (包括DDR2控制器131好的讀寫仲裁132),用于按地址分塊存儲(chǔ)DMA從CPU搬運(yùn)至外擴(kuò)的DDR2中的多通路高清視頻數(shù)據(jù)(對(duì)應(yīng)上游數(shù)據(jù)通路),并將存儲(chǔ)的高清視頻數(shù)據(jù)按恒定數(shù)據(jù)率輸出給視頻格式轉(zhuǎn)換模塊140 (對(duì)應(yīng)下游數(shù)據(jù)通路),由于上游數(shù)據(jù)通路和下游數(shù)據(jù)通路都包含多通路獨(dú)立的高清視頻數(shù)據(jù),而主控邏輯核120對(duì)數(shù)據(jù)傳輸通路進(jìn)行實(shí)時(shí)控制,因此,需要讀寫仲裁132對(duì)多通路寫入讀取操作進(jìn)行優(yōu)先級(jí)切換和狀態(tài)機(jī)跳轉(zhuǎn),保證DDR2讀寫能夠提供足夠的數(shù)據(jù)帶寬,滿足高清視頻的輸出需求。視頻格式轉(zhuǎn)換模塊140,用于視頻格式的轉(zhuǎn)換,視頻數(shù)據(jù)按照ITU-RBT.709標(biāo)準(zhǔn)進(jìn)行轉(zhuǎn)換,格式轉(zhuǎn)換后將高清視頻數(shù)據(jù)發(fā)送給視頻接口芯片,接口芯片支持HDM1、VGA、YPbPr分量等多種標(biāo)準(zhǔn)接口,按實(shí)際需要輸出多通路高清視頻。本發(fā)明一種基于FPGA的高清視頻輸出方法,包括以下步驟:
(I) CPU將解碼后高清視頻數(shù)據(jù)暫存在CPU端的RAM中,然后將RAM中暫存的高清視頻數(shù)據(jù)量告知FPGA,并向FPGA發(fā)送數(shù)據(jù)通路開啟命令,若RAM中暫存的高清視頻數(shù)據(jù)量超過I幀(對(duì)于1080p分辨率,一幀數(shù)據(jù)大小約為4MByte),則FPGA開啟DMA控制器,將高清視頻數(shù)據(jù)從CPU端的RAM搬運(yùn)至FPGA端的DDR2中。如圖2所示,F(xiàn)PGA復(fù)位后處于空閑狀態(tài),CPU將RAM中暫存的高清視頻數(shù)據(jù)量告知FPGA,當(dāng)通路I視頻流緩存量(即高清視頻數(shù)據(jù)量)達(dá)到I幀時(shí),開啟DMA寫操作,將通路I視頻流數(shù)據(jù)從CPU端的RMA搬運(yùn)至FPGA端DDR2中;完成通路I的操作后,當(dāng)通路2視頻流緩存量達(dá)到I幀時(shí),開啟DMA寫操作,將通路2視頻流數(shù)據(jù)從CPU端的RMA搬運(yùn)至FPGA端DDR2中;直至完成所有通路中視頻流數(shù)據(jù)從CPU端的RMA至FPGA端DDR2的搬運(yùn),即完成各個(gè)通路的一次輪詢寫操作。由于DMA搬運(yùn)通過PCIe鏈路實(shí)現(xiàn),PCIe的高帶寬保證了多路數(shù)據(jù)通路的數(shù)據(jù)連續(xù)輸送。(2)在FPGA端的DDR2中緩存若干幀高清視頻數(shù)據(jù)后,CPU向FPGA發(fā)送高清視頻送顯命令,若DDR2中緩存的高清視頻數(shù)據(jù)量超過4幀,則FPGA開啟DMA控制器,將FPGA端的DDR2中的高清視頻數(shù)據(jù)依據(jù)ITU-RBT.709標(biāo)準(zhǔn)轉(zhuǎn)換為標(biāo)準(zhǔn)格式后,搬運(yùn)至視頻接口芯片中,輸出高清視頻。將高清視頻數(shù)據(jù)從CPU端的RAM搬運(yùn)至FPGA端的DDR2中時(shí)采取多通路數(shù)據(jù)操作,各通路數(shù)據(jù)操作之間輪詢切換,針對(duì)每一通路數(shù)據(jù)操作,例化一個(gè)緩存用的輸入FIFO和一個(gè)緩存用的輸出FIFO;
當(dāng)從CPU端的RAM搬運(yùn)至輸入FIFO中的某一通路高清視頻數(shù)據(jù)量大于輸入FIFO容量的3/4時(shí),將輸入FIFO中的高清視頻數(shù)據(jù)寫入DDR2中;當(dāng)其一通路的輸出FIFO中的高清視頻數(shù)據(jù)量小于輸出FIFO容量的1/4時(shí),從DDR2讀取高清視頻數(shù)據(jù)至該輸出FIFO中。如圖3所示,F(xiàn)PGA的DDR2涉及多通路數(shù)據(jù)操作的讀寫接口,每一通路的每個(gè)接口都例化一個(gè)緩存用的FIF0,以滿足狀態(tài)機(jī)在跳轉(zhuǎn)過程中高清視頻數(shù)據(jù)流不溢出或中斷。一旦開始向視頻接口芯片送顯視頻后,下游通路高清視頻數(shù)據(jù)流就不能中斷,因此DDR2讀操作優(yōu)先級(jí)高于寫操作。FPGA復(fù)位后處于空閑狀態(tài),此時(shí)CPU將解碼后的高清視頻數(shù)據(jù)流傳輸給FPGA,并不會(huì)發(fā)送開啟送顯高清視頻的命令,F(xiàn)PGA在DDR2內(nèi)存儲(chǔ)一定量的數(shù)據(jù),此時(shí)DDR2讀操作不會(huì)開啟。
當(dāng)通路I視頻流的輸入FIFO緩存大于輸入FIFO容量的3/4時(shí),開啟DDR2寫操作,將通路I視頻流數(shù)據(jù)寫入相應(yīng)DDR2的地址區(qū)塊內(nèi),該寫操作完成后,當(dāng)通路2視頻流的輸入FIFO緩存大于輸入FIFO容量的3/4時(shí),開啟DDR2寫操作,將通路2視頻流數(shù)據(jù)寫入相應(yīng)DDR2地址區(qū)塊內(nèi),依次順序輪詢各通路輸入FIFO并完成DDR2寫操作。當(dāng)FPGA端DDR2存儲(chǔ)視頻流數(shù)據(jù)達(dá)到4幀后,F(xiàn)PGA會(huì)向CPU發(fā)送送顯準(zhǔn)備完畢信號(hào),此時(shí),CPU發(fā)送開啟送顯視頻命令給FPGA,當(dāng)通路I視頻流的輸出FIFO緩存小于輸出FIFO容量的1/4時(shí),開啟DDR2讀操作,將相應(yīng)DDR2地址區(qū)塊內(nèi)通路I視頻流數(shù)據(jù)讀出至輸出FIF0,該讀操作完成后,當(dāng)通路2視頻流的輸出FIFO緩存小于輸出FIFO容量的1/4時(shí),開啟DDR2讀操作,將相應(yīng)DDR2地址區(qū)塊內(nèi)通路2視頻流數(shù)據(jù)讀出至輸出FIF0,依次順序輪詢各通路的輸出FIF0,完成DDR2讀操作,各通路輸出FIFO緩存都大于輸出FIFO容量的1/4時(shí),才去輪詢輸入FIFO狀態(tài)。下游數(shù)據(jù)通路中的DDR2讀寫策略,滿足系統(tǒng)工作時(shí),CPU可能關(guān)閉開啟數(shù)據(jù)通路的任意一路的需求。多通路高清視頻對(duì)外輸出時(shí),各傳輸通道須保證視頻數(shù)據(jù)的連續(xù)性和正確性。根據(jù)當(dāng)前各通道的送顯情況,F(xiàn)PGA以視頻幀間隔為時(shí)間單位向CPU發(fā)送數(shù)據(jù)請(qǐng)求中斷,CPU須根據(jù)請(qǐng)求中斷保證RAM中緩存的高清視頻數(shù)據(jù)量及數(shù)據(jù)的正確性。CPU可能因各種原因偶爾出現(xiàn)高清視頻數(shù)據(jù)出錯(cuò),可預(yù)見的錯(cuò)誤主要包括兩種:一是,CPU丟失而未響應(yīng)FPGA發(fā)送的數(shù)據(jù)請(qǐng)求中斷,F(xiàn)PGA無法正常搬運(yùn)下一幀視頻數(shù)據(jù),導(dǎo)致傳輸通道數(shù)據(jù)流中斷,最終可能導(dǎo)致輸出高清視頻時(shí)出現(xiàn)漏幀的情況;二是,數(shù)據(jù)流出錯(cuò)誤導(dǎo)致下一幀甚至連續(xù)幾幀數(shù)據(jù)緩存為重復(fù)數(shù)據(jù),F(xiàn)PGA不加區(qū)別進(jìn)行搬運(yùn)送顯,可能導(dǎo)致視頻連續(xù)顯示同一幀數(shù)據(jù),本發(fā)明根據(jù)相應(yīng)錯(cuò)誤增加了重發(fā)和跳幀機(jī)制,避免這兩類錯(cuò)誤的出現(xiàn)。重發(fā)和跳幀機(jī)制如圖4所示,F(xiàn)PGA會(huì)在DDR2內(nèi)緩存若干幀數(shù)據(jù)以保證對(duì)外輸出高清視頻的連續(xù)性,并在每一幀視頻幀發(fā)送完畢時(shí)向CPU發(fā)送數(shù)據(jù)請(qǐng)求中斷,CPU收到中斷請(qǐng)求后應(yīng)作出響應(yīng),也可能因各種原因丟失FPGA發(fā)出的中斷,導(dǎo)致沒有做出響應(yīng)。FPGA得到CPU中斷響應(yīng)時(shí),會(huì)查詢CPU端此時(shí)緩存的高清視頻數(shù)據(jù)量,待高清視頻數(shù)數(shù)據(jù)量達(dá)到I幀時(shí)發(fā)起DMA寫操作,搬運(yùn)高清視頻數(shù)據(jù)至FPGA端的DDR2內(nèi);FPGA未收到CPU中斷響應(yīng)時(shí),F(xiàn)PGA最長(zhǎng)等待一幀數(shù)據(jù)送顯時(shí)間間隔(即兩幀數(shù)據(jù)傳輸之間的時(shí)間間隔),仍未收到CPU的中斷響應(yīng)時(shí),則認(rèn)為此次數(shù)據(jù)搬運(yùn)失敗,DMA搬運(yùn)的DDR2目的地址區(qū)塊將被回收,F(xiàn)PGA重復(fù)發(fā)送DDR2緩存的上一幀數(shù)據(jù),以保持?jǐn)?shù)據(jù)連續(xù)性。
FPGA得到中斷響應(yīng)并完成DMA寫操作,將高清視頻數(shù)據(jù)搬運(yùn)至FPGA端的DDR2中后,會(huì)收到CPU數(shù)據(jù)確認(rèn)信息,確認(rèn)搬運(yùn)的數(shù)據(jù)幀是否重復(fù)冗余,若數(shù)據(jù)幀并不重復(fù)冗余,F(xiàn)PGA端DDR2存儲(chǔ)的數(shù)據(jù)量充分時(shí),將按正常機(jī)制送顯下一幀存儲(chǔ)的視頻幀,并繼續(xù)發(fā)送數(shù)據(jù)請(qǐng)求中斷;若數(shù)據(jù)幀重復(fù)冗余,則此次數(shù)據(jù)搬運(yùn)失敗,DMA搬運(yùn)的DDR2目的地址區(qū)塊將被回收,F(xiàn)PGA跳過此次接收的視頻幀。重發(fā)和跳幀機(jī)制保證了高清視頻輸出的連續(xù)性,增加了方法的容錯(cuò)性。`
權(quán)利要求
1.一種基于FPGA的高清視頻輸出方法,其特征在于,包括以下步驟: (1)CPU將解碼后高清視頻數(shù)據(jù)暫存在CPU端的RAM中,然后將RAM中暫存的高清視頻數(shù)據(jù)量告知FPGA,并向FPGA發(fā)送數(shù)據(jù)通路開啟命令,若RAM中暫存的高清視頻數(shù)據(jù)量超過第一閾值,則FPGA開啟DMA控制器,將高清視頻數(shù)據(jù)從CPU端的RAM搬運(yùn)至FPGA端的DDR2中; (2)CPU向FPGA發(fā)送高清視頻送顯命令,若DDR2中緩存的高清視頻數(shù)據(jù)量超過第二閾值,則FPGA開啟DMA控制器,將高清視頻數(shù)據(jù)從FPGA端的DDR2搬運(yùn)至視頻接口芯片中,輸出高清視頻。
2.如權(quán)利要求1所述的基于FPGA的高清視頻輸出方法,其特征在于,第一閾值為I 2中貞,第二閾值為4 6中貞。
3.如權(quán)利要求2所述的基于FPGA的高清視頻輸出方法,其特征在于,第一閾值為I幀,第二閾值為4幀。
4.如權(quán)利要求1所述的基于FPGA的高清視頻輸出方法,其特征在于,所述步驟⑵中在將高清視頻數(shù)據(jù)從FPGA端的DDR2搬運(yùn)至視頻接口芯片中之前,將高頻視頻數(shù)據(jù)依據(jù)ITU-R BT.709標(biāo)準(zhǔn)轉(zhuǎn)換為標(biāo)準(zhǔn)格式。
5.如權(quán)利要求1所述的基于FPGA的高清視頻輸出方法,其特征在于,將高清視頻數(shù)據(jù)從CPU端的RAM搬運(yùn)至FPGA端的DDR2中時(shí),每完成一幀高清視頻數(shù)據(jù)的搬運(yùn),F(xiàn)PGA端向CPU端發(fā)送數(shù)據(jù)請(qǐng)求中斷,CPU端向FPGA端發(fā)送中斷響應(yīng); 若FPGA端沒有接收到CPU端的中斷響應(yīng),則FPGA將DDR2中緩存的前一幀高清視頻數(shù)據(jù)搬運(yùn)至視頻接口芯片中; 若FPGA端接收到CPU端的中斷響應(yīng),并確認(rèn)當(dāng)前幀高清視頻數(shù)據(jù)與前一幀高清視頻數(shù)據(jù)重復(fù),則不搬運(yùn)當(dāng)前幀高清視頻數(shù)據(jù)至視頻接口芯片中。
6.如權(quán)利要求1所述的基于FPGA的高清視頻輸出方法,其特征在于,將高清視頻數(shù)據(jù)從CPU端的RAM搬運(yùn)至FPGA端的DDR2中時(shí)采取多通路數(shù)據(jù)操作,各通路數(shù)據(jù)操作之間輪詢切換,針對(duì)每一通路數(shù)據(jù)操作,例化一個(gè)緩存用的輸入FIFO和一個(gè)緩存用的輸出FIFO; 當(dāng)從CPU端的RAM搬運(yùn)至輸入FIFO中的某一通路高清視頻數(shù)據(jù)量大于第三閾值時(shí),將輸入FIFO中的高清視頻數(shù)據(jù)寫入DDR2中; 當(dāng)其一通路的輸出FIFO中的高清視頻數(shù)據(jù)量小于第四閾值時(shí),從DDR2讀取高清視頻數(shù)據(jù)至該輸出FIFO中。
7.如權(quán)利要求1所述的基于FPGA的高清視頻輸出方法,其特征在于,所述步驟⑵中在CPU向FPGA發(fā)送高清視頻送顯命令之前,在FPGA端的DDR2中緩存若干幀高清視頻數(shù)據(jù)。
8.如權(quán)利要求6所述的基于FPGA的高清視頻輸出方法,其特征在于,第三閾值為輸入FIFO容量的3/4,第三閾值為輸出FIFO容量的1/4。
全文摘要
本發(fā)明公開了一種基于FPGA的高清視頻輸出方法,包括以下步驟CPU將解碼后高清視頻數(shù)據(jù)暫存在CPU端的RAM中,然后將RAM中暫存的高清視頻數(shù)據(jù)量告知FPGA,并向FPGA發(fā)送數(shù)據(jù)通路開啟命令,若RAM中暫存的高清視頻數(shù)據(jù)量超過第一閾值,則FPGA開啟DMA控制器,將高清視頻數(shù)據(jù)從CPU端的RAM搬運(yùn)至FPGA端的DDR2中;CPU向FPGA發(fā)送高清視頻送顯命令,若DDR2中緩存的高清視頻數(shù)據(jù)量超過第二閾值,則FPGA開啟DMA控制器,將高清視頻數(shù)據(jù)從FPGA端的DDR2搬運(yùn)至視頻接口芯片中,輸出高清視頻。本發(fā)明解決了數(shù)據(jù)帶寬較低、傳輸通路數(shù)受限的問題,實(shí)現(xiàn)高清視頻的流暢顯示。
文檔編號(hào)H04N5/765GK103237208SQ20131010621
公開日2013年8月7日 申請(qǐng)日期2013年3月29日 優(yōu)先權(quán)日2013年3月29日
發(fā)明者呂杰 申請(qǐng)人:蘇州皓泰視頻技術(shù)有限公司