許多市場領(lǐng)域(包括視頻廣播,、軍事,、醫(yī)學(xué)影像,、基站)都得益于使用高密度FIFO器件方案的使用,,其具有可編程的特點(diǎn),。并且比SDRAM + FPGA的體系結(jié)構(gòu)可以顯著節(jié)省成本和改進(jìn)視頻質(zhì)量,,使用系統(tǒng)級編程,可以使高密度FIFO設(shè)計更簡單,,成本更低,。
在這篇文章中,我們將首先介紹幾個視頻應(yīng)用,,了解其數(shù)據(jù)路徑及需要處理的數(shù)據(jù)性質(zhì),。下一步,我們將盡力估計在視頻處理通道中操作數(shù)據(jù)的復(fù)雜性,。然后會介紹可編程高密度FIFO和其能力,,以及它如何能更有效率的替代當(dāng)前傳統(tǒng)的使用SDRAM和FPGA實(shí)現(xiàn)幀緩存的方案。
視頻應(yīng)用概述:
圖1顯示了IPTV的系統(tǒng)框圖,。輸入傳輸流可以是任何編碼形式如DVB -ASI,,MPEG2或SDI,他們通過用多格式解碼器(multi-format CODEC)傳輸,,轉(zhuǎn)換成(即解碼或重解碼)成H.264傳輸流,。經(jīng)編碼的傳輸流用通道信息封裝并通過以太網(wǎng)發(fā)送。在接收路徑,,到來的傳輸流在顯示之前要進(jìn)行解碼和后處理,,例如降噪、顏色增強(qiáng),,縮放,,去隔行等。
圖2顯示了一個用于電影制作和攝影棚的HD(高清)專業(yè)相機(jī)的系統(tǒng)框圖,。捕獲到的圖像經(jīng)過一個圖像處理器,,進(jìn)行色彩處理,、亮度提高、數(shù)碼縮放,、幀速率轉(zhuǎn)變等等,。圖像處理單元通常使用一個基于FPGA的設(shè)計,由于大部分的圖像處理是專有的,,會經(jīng)常發(fā)生變化,。應(yīng)用處理器管理與其它設(shè)備的通訊以及壓縮并存儲捕獲到的內(nèi)容到海量存儲(HDD)。應(yīng)用處理器也有一個圖形引擎來進(jìn)行屏幕顯示(OSD),,它和進(jìn)來的視頻混合后顯示,。
從上述例子中,,我們可以看到數(shù)據(jù)處理包括兩種類型:
1) 幀同步: 在一些任務(wù)中需要幀同步(例如,,通過以太網(wǎng)傳輸和接收時,當(dāng)碼流速度不斷變化而解碼器需要一個恒速的傳輸流),。雖然存儲器對同步的要求似乎很小,,但當(dāng)涉及到多個碼流時它可能很顯著。這種同步可以由一個異步FIFO實(shí)現(xiàn),。
2) 幀存儲: 幀存儲在這些地方需要:任何暫時的處理如幀率轉(zhuǎn)換,,數(shù)碼變焦(縮放),或執(zhí)行去隔行,。儲存的幀數(shù)量隨著需要的臨時信息數(shù)目增加而增加,。當(dāng)視頻數(shù)據(jù)按照本來的順序時,幀緩存也必須是“先進(jìn)先出”,。
通過上面的討論,,我們可以說,所有的儲存和同步都可以使用FIFO實(shí)現(xiàn),。那么理想的FIFO應(yīng)該是多大的呢,?一個典型的1080p 幀,10位 4:2:2格式將需要存儲器大小為39.55M位(每行像素數(shù)*每幀行數(shù)*每像素比特數(shù)= 1920*1080*20),。預(yù)計總?cè)萘靠梢酝ㄟ^需要存儲的幀數(shù)乘以這個數(shù)字,。典型的視頻處理算法需要存儲2到3幀,這意味著總?cè)萘恳_(dá)到120M位,。由于不可能有如此大的基于片上SRAM的FIFO存儲器,,一般的方法是使用一個DRAM來緩存這個數(shù)據(jù)。
高密度FIFO -傳統(tǒng)的實(shí)施和及其復(fù)雜性,。
幀緩存就是高密度FIFO,,傳統(tǒng)上使用外部DDR SDRAM實(shí)現(xiàn)。舉例說明一個典型的視頻處理應(yīng)用和這些FIFO如何實(shí)現(xiàn)。
圖3顯示了一個典型情況的數(shù)據(jù)路徑,,有4種不同來源的視頻流需要顯示在同一個顯示器上,。四個以1080p60(24位RGB)分辨率捕捉視頻的高清相機(jī)使用一個cameralink接口連接到系統(tǒng)上。色彩空間轉(zhuǎn)換 (從RGB到Y(jié)CbCr)及色度采樣降低(從4:4:4到4:2:2)后,,橫向和縱向幀按比例減少,,并儲存在DDR2 SDRAM里。存儲的幀可以按要求讀回和定位,,結(jié)果幀和融合幀然后提高采樣速度和色彩空間轉(zhuǎn)換為通過LVDS連接來驅(qū)動面板,。
讓我們看看存儲器大小和帶寬要求:
(i) 大小要求:
盡管這里沒有涉及到時間處理,,為了避免一個源的兩幀被分開儲存,,這樣當(dāng)一幀正在寫時,另一個幀可能要讀回來,。兩幀圖像的大小是((1920 * 1080 * 16)/ 4)* 2 ~ = 63.3M位,。
(ii)帶寬要求:
由于讀和寫路徑為復(fù)用的,,所需帶寬是讀,、寫路徑帶寬之和。
寫路徑頻率=(每個客戶端頻率)*( 客戶端數(shù)量)=(148.5/4 )* 4 = 148.5MHz
讀路徑頻率=輸出幀分辨率頻率= 148.5MHz,。
實(shí)際的工作頻率為( (讀頻率+寫頻率) / 2 +其它開銷),,因?yàn)榻涌诠ぷ髟陔p數(shù)據(jù)速率,,并且還有一些其它開銷,,如DRAM存儲器刷新周期、bank地址切換等等,。假設(shè)為80%的效率,,那么將在185MHz的頻率運(yùn)行。
(iii)內(nèi)存接口大小和I / O需求:
當(dāng)畫面以16位4:2:2格式存儲時,,一個16位接口就足夠了,。根據(jù)計算,F(xiàn)PGA 的I/O總數(shù)的為46:
時鐘引腳(2個用于差分時鐘,,1個用于時鐘使能)= 3引腳
命令引腳(片選,,RAS, CAS,, WE)= 4引腳
地址引腳(14個地址線,、3個 bank地址線)= 17引腳
數(shù)據(jù)線(X16接口)= 16引腳
數(shù)據(jù)選通及分離(4個引腳用于2微分DQS,2個用于分離數(shù)據(jù))= 6引腳
高密度FIFO -離散的存儲器:
現(xiàn)在讓我們看看使用離散可編程高密度FIFO的實(shí)現(xiàn)方式和特性定義,,這樣DDR2 SDRAM存儲器就可以由簡單的數(shù)據(jù)存儲便可以由簡單的數(shù)據(jù)存儲代替,。
(i)多隊(duì)列特點(diǎn):
如果FIFO存儲器定義為一個單一塊的內(nèi)存,那么寫多個視頻流是不可能的,。因此,,F(xiàn)IFO必須能夠配置并分成多個隊(duì)列。在上文的例子中,,有四種不同的畫面要寫,,并且四個幀必須同時從不同的隊(duì)列同時。因此,,我們的應(yīng)用需要至少八個隊(duì)列,。
(ii)分離和重傳:
有可能從一個標(biāo)準(zhǔn)的FIFO曾經(jīng)讀過的數(shù)據(jù)又從FIFO丟失了,。FIFO指針可以重新編程,,允許任何幀都可以根據(jù)需求多次讀出。
圖4顯示了賽普拉斯CYFX072VXXX HD-FIFO的框圖,。
圖5給出了使用賽普拉斯HDFIFO替代DDR2芯片的應(yīng)用案例,。
讓我們再來看看存儲器大小和帶寬要求:
(i) 大小要求:
存儲器大小和DDR2 SDRAM的相同,,為兩幀圖像的大?。ǎ?920 * 1080 * 16)/ 4)* 2 ~ = 63.3M位。
?。╥i)帶寬要求:
由于讀和寫路徑是分立的,,讀、寫的工作頻率可以不同,。這相對于DDR2 SDRAM來說有很大的優(yōu)勢,。
寫路徑頻率=(每個客戶端頻率)*( 客戶端數(shù)量)=(148.5/4 )* 4 = 148.5MHz
讀路徑頻率=輸出幀分辨率頻率= 148.5MHz。
實(shí)際的工作頻率對于讀和寫來說為單一的數(shù)據(jù)頻率148.5MHz,,這里沒有額外的開銷,,如DRAM存儲器刷新周期和bank地址切換。
?。╥ii)內(nèi)存接口大小和I / O需求:
當(dāng)畫面以16位4:2:2格式存儲時,,一個16位接口就足夠了。根據(jù)計算,,F(xiàn)PGA 的I/O總數(shù)的為48:
時鐘引腳(1個用于寫時鐘,,1個用于讀時鐘)= 2引腳
命令引腳(寫使能,讀使能,,輸入使能,,輸出使能,3個引腳用于選擇哪8個隊(duì)列寫,,3個引腳用于選擇哪8個隊(duì)列讀,,1個引腳用于分離,1個引腳用于傳輸)= 12引腳
數(shù)據(jù)引腳(16個引腳用于寫數(shù)據(jù),16個引腳用于讀數(shù)據(jù))= 32引腳
標(biāo)志(1個引腳用于空標(biāo)志,,1個引腳用于滿標(biāo)志)= 2引腳
離散HD-FIFO相對于傳統(tǒng)實(shí)現(xiàn)的優(yōu)勢:
結(jié)構(gòu)優(yōu)點(diǎn):
?。╥) 由于讀和寫路徑是分開的,沒有其它操作開銷,,操作頻率可以降低一半以上,,這些都是很顯著的優(yōu)勢。
?。╥i)由于使用的是SDRAM控制器,,不需要仲裁機(jī)制,F(xiàn)PGA內(nèi)部邏輯變得更簡單,。
?。╥) 信號開關(guān)頻率降低一半以上,允許增加建立時間余量,,相對于DDR2來說沒有嚴(yán)格的輸出同步要求,。
(iv) 設(shè)計里時鐘域的數(shù)量減少了,,因此降低了相關(guān)時序切換和交叉時鐘域的問題,。
電氣優(yōu)點(diǎn):
(i)減少了信號切換頻率,,從而減少了線路板上的開關(guān)噪聲,。
(ii) HD-FIFO 的IO邏輯可以是任何LVCMOS接口,,相對于DDR2 SDRAM的SSTL2邏輯有更大的噪聲冗余,。
節(jié)省成本:
在高端FPGA的解決方案中使用HD FIFO可以節(jié)省 FPGA資源,具體如下:
?。╥) SDRAM控制器,,降低了所需的存儲器,,I/O,,和邏輯
(ii)視頻處理功能,,這些功能可以采用多隊(duì)列特征在HD FIFO上實(shí)現(xiàn),,如:
a. 視頻信號的隔行/去隔行
b. PIP實(shí)施
c. 交叉信號處理
使用高密度FIFO可以節(jié)省邏輯元件,寄存器,,內(nèi)存和I / O,,可以幫助開發(fā)人員把高端FPGA換為更小的FPGA,從而可以節(jié)省20 ~ 30%的成本,。
Figure6.有無高密度FIFO系統(tǒng)框圖比較,。
高密度FIFO基于SRAM技術(shù),為客戶提供了高數(shù)據(jù)可靠性和低延遲性。簡單易用的總線接口可以減少實(shí)施和調(diào)試工作,。高密度FIFO密度可以達(dá)到144 Mb,,速度可以到150 MHz,具備segment特色,,還有很多增值功能,,如多隊(duì)列和可選的存儲器架構(gòu),可以幫助開發(fā)人員設(shè)計更快,、更有效率,,從而使其適應(yīng)廣泛的應(yīng)用。它已經(jīng)是一個成熟的解決方案,,可以加速推向市場的時間,,同時減少相關(guān)設(shè)計工作。該器件還可提供很寬的擴(kuò)展選擇,,可以適應(yīng)視頻廣播,,軍事,醫(yī)學(xué)影像,,基站(網(wǎng)絡(luò))設(shè)備,,滿足很多應(yīng)用,如:
普通高清格式幀緩存 (720p ,,1080i ,,1080p): 存儲四個1080p分辨率的幀
HDTV/SDTV幀同步
交換或格式轉(zhuǎn)換器盒子
高端數(shù)碼攝像機(jī)
軍事雷達(dá)中高密度緩存
醫(yī)學(xué)成像
基站--3G,4G及網(wǎng)絡(luò)