本發明屬視頻圖像應用技術領域,涉及高分辨率視頻流數據的存儲,具體是一種視頻流像素級數據隨機實時訪問的存儲器及存儲方法。
二、
背景技術:
在視頻圖像應用領域,數據流高分辨率視頻流像素級數據隨機實時訪問在視頻圖像的生成中必不可少,隨機實時訪問的流暢性、像素時鐘周期、讀取數據效率直接關系視頻圖像的質量。
對于高分辨率視頻流數據處理系統來說,其中的存儲單元,除了需要足夠的存儲空間,足夠的數據訪問帶寬外,還需要將輸入圖像的像素數據能夠在幀內的全部像素地址隨機讀寫,這種隨機讀寫功能對于圖像數據的全屏像素映射變換是必須的。
輸出圖像的每個像素點來自于源圖像數據的多個像素點的數據組合。現有技術中,每個輸出圖像像素點所需要的源圖像四個像素點是相鄰的,但其在源圖像上的位置可能是隨機的,所以,依據算法提供的源圖像像素點的地址,再從存儲器中讀出此目的像素點所需要的四個像素點數據。
對于高分辨率視頻流數據的存儲,視頻流每幀圖像的像素點RGB值(24bit)由輸入圖像某相鄰的四個像素點按所占比例通過乘加運算獲得,即輸出圖像像素數據按此算法逐像素點、逐行生成輸出圖像的各個像素點。也就是說,每生成一個目的像素點都需要進行四次數據讀操作。一般源圖像存儲在SRAM中,獲取此四個像素點不僅需要耗費四倍的像素時鐘周期,還需要大容量SRAM來儲存,而大容量SRAM價格昂貴,對于處理高分辨率的圖像,特別是像素級數據的存儲,現有技術存在明顯的不足,不能滿足高分辨視頻圖像日益發展的需求。
三、
技術實現要素:
本發明的目的是針對現有技術數據讀取周期長,需用大容量SRAM來儲存、價格昂貴的不足,提供一種能減少數據獲取周期和時間,降低存儲模塊費用,滿足隨機實時訪問的高分辨率視頻流數據的存儲器及存儲方法。
本發明的基本思路是:設置兩組模塊組合,每組由兩塊QDR2存儲模塊組成的存儲器,設置按照圖像數據相鄰的兩個奇行、偶行設置奇行存儲單元和偶行存儲單元。將圖像數據按照奇行、偶行分別存儲在不同存儲模塊單元中。兩組存儲單元采用乒乓緩存的方式分別存儲一半奇幀,一半偶幀并行工作,實現視頻流實時處理。使用像素數據冗余存儲的方法,在寫入數據過程中,將三個像素數據組合形成72bit的一次寫數據,除每行的第一次寫除外,每次寫都將上次的最后一個像素重復寫一次,確保每組的每次數據訪問是按兩個數據突發方式讀寫有效,實現用一個像素時鐘周期,同時讀寫4個像素值,滿足隨機實時訪問的高分辨率視頻流數據的存儲應用要求。
本發明的目的是這樣達到的:
視頻流像素級數據隨機實時訪問的存儲器基于高性能圖像處理平臺應用,平臺以FPGA為控制器。
存儲器為相同結構的兩組模塊組成,每一組模塊采用兩塊相同的數據突發讀寫Burst 2的QDR2存儲模塊組合擴展構成模塊組合,兩塊QDR2存儲模塊通過地址總線組、時鐘信號線組、控制信號線組和數據總線組并聯在一起,控制信號對兩塊QDR2存儲模塊同時進行控制。
在每一組存儲模塊組合中,設置結構完全相同、專用于每次圖像數據訪問按兩個數據突發方式讀寫的存儲單元;存儲器的兩組存儲模塊組合分別按照圖像數據相鄰的兩個奇行、偶行設置為奇行存儲單元(QDR2_1)和偶行存儲單元(QDR2_2),分別在(QDR2_1)中存儲奇行數據,在(QDR2_2)中存儲偶行數據。
在每一組QDR2存儲模塊組合中,所述兩塊QDR2存儲模塊通過地址總線組、時鐘信號線組、控制信號線組和數據總線組并聯在一起,設置以下線組:
(1)時鐘信號線組三組:c1_qdr_c[0],c1_qdr_c_n[0]是讀差分時鐘;c1_qdr_cq[0],c1_qdr_cq_n[0]是讀有效差分時鐘;c1_qdr_k[0],c1_qdr_k_n[0]是讀寫地址、讀寫控制差分時鐘;
(2)數據總線組兩組;c1_qdr_d[0:35]是36位輸入數據,c1_qdr_q[0:35]是6位輸出數據;
(3)地址總線組一組:c1_qdr_sa[20:0],由于兩個數據突發讀寫(Burst2)的特點,4M地址空間的總線寬度為21根;
(4)控制信號一組:c1_qdr_bw_n[0],c1_qdr_bw_n[1],c1_qdr_bw_n[2]c1_qdr_bw_n[3]是字節有效控制,每個字節是9個bit位,兩片QDR2分別對應低18位數據和高18位數據;c1_qdr_r_n是讀控制信號;c1_qdr_w_n是寫控制信號。
所述每一組模塊組合采用兩塊相同的數據突發讀寫Burst 2的QDR2存儲模塊組合擴展構成,每一塊QDR2存儲模塊空間大小為4M×18bit,每一組QDR2存儲模塊的空間大小為4M×36bit,兩組模塊組合組成的存儲器空間大小為4M×72bit,數據訪問帶寬為36bit×2×2×300MHz=43.2Gbps;
每個奇行、偶行存儲單元存儲像素數據結構相同的3個像素數據,每個像素數據結構帶寬為24bit。
視頻流像素級數據隨機實時訪問的存儲器的存儲方法,其特征在于:
存儲器為相同結構的兩組模塊組成,每一組模塊采用兩塊相同的數據突發讀寫Burst 2的QDR2存儲模塊組合擴展構成模塊組合,兩塊QDR2存儲模塊通過地址總線組、時鐘信號線組、控制信號線組和數據總線組并聯在一起,控制信號對兩塊QDR2存儲模塊同時進行控制。
存儲器的每一組存儲模塊組合中,圖像數據按照相鄰的兩個奇行、偶行分別存儲在奇行存儲單元QDR2_1和偶行存儲單元QDR2_2,在QDR2_1中存儲奇行數據,在QDR2_2中存儲偶行數據,兩組存儲單元采用乒乓緩存的方式分別存儲奇幀一半圖像數據,偶幀一半圖像數據并行工作,實現視頻流實時處理。
每次圖像數據訪問按兩個數據突發方式讀寫的方式進行;每次數據訪問均按兩個數據突發方式Burst 2讀寫,每個數據位寬是36bit,兩個數據構成72位位寬,拼接成每個像素數據結構位寬為24bit的3個像素數據結構。
使用像素數據冗余存儲的方法,在寫入數據過程中,將三個像素數據組合形成72bit的一次寫數據,除每行的第一次寫除外,每次寫都將上次的最后一個像素重復寫一次。
在寫入像素數據過程中,按照每個存儲模塊的每次訪問按兩個數據突發方式Burst 2讀寫,兩個數據的位寬共有72位,正好是三個像素位寬,存儲方式是將兩個數據中第一個的低24位對應放三個像素中的第1個;兩個數據中的第二個的低24位對應放三個像素中的第2個;第三個像素的高低12位分別放在兩個數據中的高12位空間。
在存儲器的兩組模塊中,圖像數據以奇行、偶行排列,當圖像數據像素為2560×1600時,設第1、2行為分別存儲到兩個模塊組合中,3、4行分別存儲到兩個模塊組合中,依次類推,每組的奇行和偶行對應像素的存儲器寫地址相同;第一行地址為0—(2560/2-1),第二行也是0—(2560/2-1);第3行地址為2560/2—(5120/2-1),第4行也是2560/2—(5120/2-1);依次類推,兩組存儲單元并行工作,實現乒乓方式的緩存機制和視頻流實時處理。
本發明的積極效果是:
1、利用每次冗余存儲的一個像素數據,來確保Burst 2突發方式讀寫有效,進而結合這種存儲結構,實現用一個像素時鐘周期,同時讀寫4個像素值,大幅降低視頻流數據隨機實時訪問的時鐘周期,大幅提高視頻流數據隨機實時訪問的質量,解決了現有技術中每生成一個目的像素點都需要進行四次數據讀操作,獲取此四個像素點需要耗費四倍的像素時鐘周期的技術難題。
2、本發明采用圖像數據奇行、偶行分別存儲的方式,數據訪問在不浪費帶寬資源的情況下,存儲空間得到充分利用,降低存儲器空間占用。
3、使用QDR2存儲模塊組成存儲模塊組合,在由存儲模塊組合構成存儲器,解決了現有技術使用大容量SRAM價格昂貴的問題,有利于市場發展。
四、附圖說明
圖1是現有技術中四個像素點數據在源圖像中的位置排列狀況。
圖2是本發明的存儲器結構示意圖。
圖3-圖4是本發明QDR2存儲模塊組合的實際電路原理圖。
圖5是圖像數據奇偶行像素連續寫組合形式。
圖6是寫3個像素的bit位組合形式。
圖7是圖像數據的奇行、偶行和奇偶幀在本發明的存儲器中存放示意圖。
五、具體實施方式
本實施例基于應用視頻流圖像最大分辨率(2560×1600),60Hz刷新率,需要的存儲空間:2560×1600×3×8bits=11.72M bytes,圖像數據的訪問帶寬:2560×1600×60×24(bit)×4(4個像素點)=23.6Gbps。
由于采用圖像數據流奇行、偶行分別存儲的方式,用于存儲圖像數據的存儲器不小于23.44MB。
參見附圖1。
現有技術中,對視頻流像素級數據隨機實時訪問,每個輸出圖像像素點所需要的源圖像四個像素點是相鄰的,但其在源圖像上的位置可能是隨機的。所以,依據源圖像像素點的地址,從存儲器中讀出此目的像素點所需要的四個像素點數據。四個像素點數據在源圖像中的位置排列狀況如圖1所示,如果每次讀取上下并列相鄰的兩個像素點,每生成一個目的像素點都需要進行四次數據讀操作。如果源圖像存儲在SRAM中,獲取此四個像素點需要耗費四倍的像素時鐘周期。另外,大容量SRAM價格昂貴,對于處理高分辨率的圖像,常規存儲技術不可行。
因此,提供一種能減少圖像數流存儲時間周期,大幅降低存儲模塊費用,滿足隨機實時訪問的高分辨率視頻流數據的存儲器及存儲方法非常必要。
參見附圖2~圖4。
本發明的視頻流像素級數據隨機實時訪問的存儲器基于高性能圖像處理平臺應用,平臺以FPGA為控制器。存儲器選用具有讀寫獨立的兩套數據總線,36bit/套,時鐘雙采樣,300MHz,并且按兩個數據突發讀寫Burst 2的QDR2存儲器。顯然,這種突發讀寫的兩個數據就是對應相鄰兩個像素的。
存儲器為相同結構的兩組模塊組成,每一組模塊采用兩塊相同的數據突發讀寫Burst 2的QDR2存儲模塊組合擴展構成模塊組合,兩塊QDR2存儲模塊通過地址總線組、時鐘信號線組、控制信號線組和數據總線組并聯在一起,控制信號對兩塊QDR2存儲模塊同時進行控制。
在每一組存儲模塊組合中,設置結構完全相同、專用于每次圖像數據訪問按兩個數據突發方式讀寫的存儲單元。存儲器的兩組存儲模塊組合分別按照圖像數據相鄰的兩個奇行、偶行設置為奇行存儲單元QDR2_1和偶行存儲單元QDR2_2,分別在QDR2_1中存儲奇行數據,在QDR2_2中存儲偶行數據,兩組存儲單元并行工作。兩組存儲單元采用乒乓緩存的方式分別存儲一半圖像數據奇幀,一半圖像數據偶幀并行工作,實現視頻流實時處理。
在每一組QDR2存儲模塊組合中,設置以下數據連接:
(1)時鐘信號線組三組:c1_qdr_c[0],c1_qdr_c_n[0]是讀差分時鐘;c1_qdr_cq[0],c1_qdr_cq_n[0]是讀有效差分時鐘;c1_qdr_k[0],c1_qdr_k_n[0]是讀寫地址、讀寫控制差分時鐘;
(2)數據總線組兩組;c1_qdr_d[0:35]是36位輸入數據,c1_qdr_q[0:35]是6位輸出數據;
(3)地址總線組一組:c1_qdr_sa[20:0],由于兩個數據突發讀寫(Burst 2)的特點,4M地址空間的總線寬度為21根;
(4)控制信號一組:c1_qdr_bw_n[0],c1_qdr_bw_n[1],c1_qdr_bw_n[2]c1_qdr_bw_n[3]是字節有效控制,每個字節是9個bit位,兩片QDR2分別對應低18位數據和高18位數據;c1_qdr_r_n是讀控制信號;c1_qdr_w_n是寫控制信號。
參見圖5、圖6。
按照視頻流圖像像素的奇行、偶行分別將圖像數據存儲在存儲器的兩組奇行存儲單元QDR2_1和偶行存儲單元QDR2_2;每個存儲單元存儲像素數據結構相同、帶寬為24bit3個像素數據3個;在每組4M×36bit的QDR2存儲單元中,每組的每次數據訪問均按兩個數據突發方式讀寫Burst 2,每個數據位寬是36bit,兩個數據構成72bit位寬,拼接成每個像素數據結構帶寬為24bit的3個像素數據結構;
使用像素數據冗余存儲的方法,在寫入數據過程中,將三個像素數據組合形成72bit的一次寫數據,除每行的第一次寫除外,每次寫都將上次的最后一個像素重復寫一次。
如圖5所示,本實施例中,在QDR2-1中存儲奇行像素,在QDR2-2中存儲偶行像素。第一次存儲012,第2次存儲寫入時,重復第一次的最后一個像素“2”,第3次重復上一次的“4”,以此類推,直至寫入完成。
參見附圖6。
在寫入像素中,在寫入像素數據過程中,按照每個存儲模塊的每次訪問按兩個數據突發方式Burst 2讀寫,兩個數據的位寬共有72位,正好是三個像素位寬,存儲方式是將兩個數據中第一個的低24位對應放三個像素中的第1個;兩個數據中的第二個的低24位對應放三個像素中的第2個;第三個像素的高低12位分別放在兩個數據中的高12位空間。
參見附圖7。本實施例的圖像數據的奇行、偶行和奇、偶幀在存儲器中存放示意。在存儲器的兩組模塊中,圖像數據以奇行、偶行排列,當圖像數據像素為2560×1600時,設第1、2行,即奇行、偶行,分別存儲到兩個模塊組合的奇行存儲單元QDR2_1和偶行存儲單元QDR2_2中,3、4行分別存儲到兩個模塊組合奇行存儲單元QDR2_1和偶行存儲單元QDR2_2中,依次類推,每組的奇行和偶行對應像素的存儲器寫地址相同;第一行地址為0—(2560/2-1),第二行也是0—(2560/2-1);第3行地址為2560/2—(5120/2-1),第4行也是2560/2—(5120/2-1);依次類推。同時,兩組存儲單元采用乒乓緩存的方式分別存儲一半奇幀,一半偶幀并行工作。實現視頻流實時處理。
由上可知,QDR存儲單元的數據訪問在沒有浪費帶寬資源的情況下,存儲空間充分利用。本存儲單元的特點正是利用每次冗余存儲的一個像素數據,來確保Burst 2突發方式讀寫有效,進而結合這種存儲結構,實現用一個像素時鐘周期,同時讀寫4個像素值,滿足高分辨率視頻流像素級數據隨機實時訪問的應用要求。