MotionJPEG視頻壓縮IP核的設計與實現(xiàn)

上傳人:痛*** 文檔編號:45361753 上傳時間:2021-12-07 格式:DOC 頁數(shù):17 大?。?96.50KB
收藏 版權申訴 舉報 下載
MotionJPEG視頻壓縮IP核的設計與實現(xiàn)_第1頁
第1頁 / 共17頁
MotionJPEG視頻壓縮IP核的設計與實現(xiàn)_第2頁
第2頁 / 共17頁
MotionJPEG視頻壓縮IP核的設計與實現(xiàn)_第3頁
第3頁 / 共17頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《MotionJPEG視頻壓縮IP核的設計與實現(xiàn)》由會員分享,可在線閱讀,更多相關《MotionJPEG視頻壓縮IP核的設計與實現(xiàn)(17頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、Motion JPEG視頻壓縮IP核的設計與實現(xiàn) 2008-06-23 14:22:40作者:李大舟來源:中電網(wǎng)   引言   隨著多媒體技術及通信技術的快速發(fā)展,在嵌入式平臺上實現(xiàn)連續(xù)圖像壓縮的需求已變得日益廣泛。常用的系統(tǒng)結(jié)構(gòu)是獨立處理器配和專用圖像壓縮芯片或者是只用一個高主頻的數(shù)字信號處理器完成主要功能。但隨著大規(guī)模集成電路技術的發(fā)展及市場對產(chǎn)品低成本的要求不斷提高,一種新的在嵌入式平臺上實現(xiàn)連續(xù)圖像壓縮的系統(tǒng)結(jié)構(gòu)正逐步成為上述兩種系統(tǒng)結(jié)構(gòu)的替代者。這種新的結(jié)構(gòu)就是Altera公司提出的基于Avalon總線的SOPC結(jié)構(gòu)。SOPC結(jié)構(gòu)可以把處理器,圖像壓縮IP核,通訊單元及控制單

2、元集成到一塊FPGA芯片上。較之以往的結(jié)構(gòu),不但極大地節(jié)約了系統(tǒng)資源和成本,更是減少了系統(tǒng)的復雜度。尤其是可以用硬件電路實現(xiàn)軟件處理極為耗時的運算功能,使得在低主頻,低功耗的嵌入式平臺上實現(xiàn)連續(xù)圖像實時壓縮變?yōu)榭赡?。連續(xù)圖像壓縮IP核也成為整個SOPC系統(tǒng)的一個關鍵部件?,F(xiàn)有的MPEG系列,H26X系列IP核對FPGA的芯片資源及性能要求極高,難以滿足系統(tǒng)對低成本,低功耗的要求。所以設計一個適合低成本,低功耗的FPGA芯片的視頻壓縮IP核變得極為重要。這即要求壓縮算法的復雜度不能太高,又要求有適當?shù)膲嚎s效果,Motion JPEG算法恰好滿足上述要求。   1.Motion JPEG壓縮算法

3、簡介   Motion JPEG是一種基于靜態(tài)圖像JPEG壓縮標準的動態(tài)圖像壓縮標準,壓縮時將連續(xù)圖像的每一個幀視為一幅靜止圖像進行壓縮,從而可以生成序列化運動圖像。壓縮時不對幀間的時間冗余進行壓縮,雖然降低了壓縮比,但也同時降低了復雜度,易于硬件電路實現(xiàn)。Motion JPEG標準所根據(jù)的算法是基于離散余弦變換和熵編碼,關鍵技術有二維離散余弦變換、量化、差分編碼、霍夫曼編碼和游程編碼等。單幀的處理過程如下圖所示。            2.IP核的結(jié)構(gòu)設計   2.1二維離散余弦變換模塊   二維離散余弦變換是由一維離散余弦變換衍生而來的,所以可以用兩個級聯(lián)的一維離散余弦變

4、換實現(xiàn)。實現(xiàn)時要注意第一級一維離散余弦變換模塊產(chǎn)生的結(jié)果不能直接作為第二級一維離散余弦變換模塊的輸入量,而是等到第一級一維離散余弦變換模塊產(chǎn)生的結(jié)果形成一個88的矩陣后,對這個88的矩陣做轉(zhuǎn)置處理,再把轉(zhuǎn)置后得到的矩陣按行掃描的順序輸出,這時輸出的數(shù)據(jù)才能作為第二級一維離散余弦變換模塊的輸入量。   二維離散余弦變換模塊處理的對象是88的像素矩陣,來自其前一級模塊預處理模塊。預處理模塊一個時鐘周期只能輸出一個數(shù)據(jù),為了滿足二維離散余弦變換模塊中第一級一維離散余弦變換模塊一次運算需要8個輸入數(shù)據(jù)的要求,利用一個串行轉(zhuǎn)并行模塊,把每個時鐘周期內(nèi)預處理模塊輸出的一個數(shù)據(jù)緩存起來,當數(shù)據(jù)湊滿8個后再

5、一次傳給二維離散余弦變換模塊。   二維離散余弦變換模塊輸出的數(shù)據(jù)是88的二維離散余弦系數(shù)矩陣,傳遞給其后一級模塊量化模塊。量化模塊一個時鐘周期只能接收一個數(shù)據(jù),為了滿足二維離散余弦變換模塊中第二級一維離散余弦變換模塊一次運算產(chǎn)生8個輸出數(shù)據(jù)的條件,使用一個并行轉(zhuǎn)串行模塊,把每隔8個時鐘周期二維離散余弦變換模塊輸出一次的8個數(shù)據(jù)緩存起來,在等待下一次二維離散余弦變換模塊輸出數(shù)據(jù)的8個時鐘周期的等待隔內(nèi),把數(shù)據(jù)串行傳給量化模塊。   2.1.1第一級一維離散余弦變換模塊   根據(jù)一維離散余弦變換的定義和cos函數(shù)的互補對稱性,參考Weiping Li提出的Skew Circular Con

6、volution的概念,能夠使一維離散余弦變換達到非常精簡的硬件架構(gòu)。但是考慮到處理的對像是連續(xù)幀這個條件,速度就成為主要因素,因此沒有完全依照其提出的方法,而是適當?shù)脑黾与娐访娣e來夠造新的11階全流水線結(jié)構(gòu),從而獲得最大的運算速度。處理過程可劃分為4個階段。   階段1:消耗3個時鐘周期,完成8位有符號數(shù)的加減運算,結(jié)果為9位有符號數(shù)。   階段2:消耗2個時鐘周期,完成9位有符號數(shù)的固定系數(shù)乘法,因為乘的系數(shù)是小數(shù),所以要把小數(shù)轉(zhuǎn)換為二進制表示。   階段2中的乘法操作是用EP2C35芯片中的28個嵌入式乘法單元實現(xiàn)的。EP2C35芯片中共有70個嵌入式乘法單元,一個嵌入式乘法單元可

7、以實現(xiàn)兩個9位數(shù)的乘法,兩個嵌入式乘法單元并聯(lián)可以實現(xiàn)兩個大于9位小于18位數(shù)的乘法。根據(jù)這一特性,假如在階段1中實現(xiàn)乘法會因輸入量是8位而浪費了一個嵌入式乘法單元的全部能力,假如在階段3或階段4中實現(xiàn)乘法又會因輸入量或系數(shù)中每個元素的長度大于9位而耗用兩個嵌入式乘法單元去完成一個乘法操作,又很不經(jīng)濟。所以在階段2中實現(xiàn)乘法操作是最為合理的,階段2的輸入量為9位,恰好耗用一個個嵌入式乘法單元。這也同時要求乘法中的固定系數(shù)的位數(shù)為9位,位數(shù)的過多或過少都不能充分利用芯片上的硬件資源。   階段3:消耗3個時鐘周期完成9位有符號數(shù)的加減運算,結(jié)果為9位有符號數(shù)。一般的9位有符號數(shù)的加減的結(jié)果應該

8、用10位有符號數(shù)來表示,因為進位操作或借位操作導致結(jié)果的位數(shù)從9位增長到10位。但是階段3的輸入序列是由9位有符號數(shù)乘以固定系數(shù)得到的,且固定系數(shù)的值都小于0.5,所以序列之間的加減操作不會引起進位操作或借位操作,9位有符號數(shù)足夠表示加減操作的結(jié)果序列。   階段4:消耗3個時鐘周期完成9位有符號數(shù)的加減運算,結(jié)果為10位有符號數(shù),也是第一級一維離散余弦變換的最終結(jié)果。   2.1.2并行矩陣轉(zhuǎn)置模塊   常用的88矩陣轉(zhuǎn)置的方法是,先把64個矩陣元素按行掃描的順序一個個串行輸入到一個RAM(64個存儲空間)中,然后按轉(zhuǎn)置后的矩陣的行掃描順序把RAM中64個矩陣元素逐次輸出。這種方法最少

9、需要128時鐘周期才能完成一個88矩陣的轉(zhuǎn)置??煞Q其為串行矩陣轉(zhuǎn)置。串行矩陣轉(zhuǎn)置一次接收一個輸入數(shù)據(jù)與一維離散余弦變換一次產(chǎn)生8個輸入數(shù)據(jù)在傳輸速率上不匹配,第一級一維離散余弦變換模塊需要在串行矩陣轉(zhuǎn)置工作期間等待,當串行矩陣轉(zhuǎn)置完成后再產(chǎn)生新的一維離散余弦變換系數(shù)并傳遞給串行矩陣轉(zhuǎn)置模塊。這也是二維離散余弦變換難以設計為全并行的原因。   本文提出了一種新的矩陣轉(zhuǎn)置方法,稱為其并行矩陣轉(zhuǎn)置。用8個RAM(每個RAM有8個存儲空間)代替一個RAM(有64個存儲空間),再增加兩個8通道的旋轉(zhuǎn)多路器,同時配合對8個RAM的變址讀操作。一次輸入原始矩陣的一列,20個周期后完成一個88矩陣的轉(zhuǎn)置。比

10、串行矩陣轉(zhuǎn)置節(jié)省至少100個時鐘周期。   并行矩陣轉(zhuǎn)置模塊的寫操作:每個時鐘周期變換一次RAM_BANK的接入順序,每個RAM_BANK每次寫入地址隨時鐘周期而順序遞增從,0增加到7,每次增加1。               并行矩陣轉(zhuǎn)置模塊的讀操作:每個時鐘周期變換一次RAM_BANK的輸出順序,每個RAM_BANK每次讀出地址隨時鐘周期而變化,且同一時鐘周期內(nèi)不同的RAM_BANK有不同的讀出地址。               在實際設計時,通過接入旋轉(zhuǎn)多路器實現(xiàn)每個時鐘周期改變第一級一維離散余弦變換輸出端與RAM_BANK的接入順序,通過輸出旋轉(zhuǎn)多路器實現(xiàn)

11、每個時鐘周期改變一次RAM_BANK與第二級一維離散余弦變換輸入端的接入順序。這兩個旋轉(zhuǎn)多路器,都是以8個時鐘周期為1個旋轉(zhuǎn)周期,在1個旋轉(zhuǎn)周期內(nèi)實現(xiàn)8個通道的旋轉(zhuǎn)接通。每個RAM_BANK的讀寫地址都依靠同一個地址產(chǎn)生器產(chǎn)生,在一個時鐘周期內(nèi)所有RAM_BANK的寫地址相同,讀地址不同。   在設計具體的硬件電路時,一個RAM_BANK就是一個雙端口RAM,為提高工作效率,每個RAM_BANK實際含有32個存儲單元而不是理論上的8個存儲單元。這樣一個RAM_BANK就可以分為4個區(qū)塊,每個區(qū)塊8個存儲單元,在寫入一個區(qū)塊的同時可以讀出前一個已經(jīng)寫入數(shù)據(jù)的區(qū)塊,形成一種乒乓緩沖的結(jié)構(gòu),用電路

12、面積換取運行效率。整個矩陣轉(zhuǎn)置模塊是一個13階的流水線結(jié)構(gòu),每階流水耗用一個時鐘周期。            圖5是并行矩陣轉(zhuǎn)置模塊在ModelSim仿真軟件中的時序仿真結(jié)果,仿真的時鐘頻率設定為100Mhz。從輸入數(shù)據(jù)到開始得到結(jié)果,中間間隔了13個時鐘周期。   2.1.3第二級一維離散余弦變換模塊   第二級一維離散余弦變換模塊在計算結(jié)構(gòu)上與第一級一維離散余弦變換模塊一樣也分為4個階段,完成一次運算耗用13個時鐘周期,每個時鐘周期完成一個流水線操作,實際的電路結(jié)構(gòu)是13階的流水線結(jié)構(gòu)。   階段1:消耗3個時鐘周期,完成10位有符號數(shù)的加減運算,結(jié)果為11位有符號數(shù)。

13、   階段2:消耗4個時鐘周期,完成11位有符號數(shù)的固定系數(shù)乘法。   這個階段與第一級一維離散余弦變換模塊的有所不同,沒有使用嵌入式乘法單元,因為完成一個11位有符號數(shù)的固定系數(shù)乘法需要2個嵌入式乘法單元并聯(lián),完成整個階段28個乘法操作需要56個嵌入式乘法單元,這占整個芯片嵌入式乘法單元的80%。一個模塊過多的耗用嵌入式乘法單元會造成Cyclone II芯片在布局布線時跨越區(qū)域過大,從而導致布線延時過大。   第二級一維離散余弦變換模塊在這個階段中采用Altera的Mega function中的PARALLEL_ADD模塊實現(xiàn)固定系數(shù)乘法操作。PARALLEL_ADD模塊可以在4個時鐘周

14、期內(nèi)完成8個16位有符號數(shù)的加法操作。11位有符號數(shù)的乘法轉(zhuǎn)化為8個以內(nèi)的11位有符號數(shù)的加法。固定系數(shù)都小于0.5,所以PARALLEL_ADD模塊的結(jié)果可取11位。上述方法可理解為用并行加法來實現(xiàn)了一個簡單的陣列乘法器。   這種用并行加法來實現(xiàn)了一個簡單的陣列乘法,在不使用嵌入式乘法單元的條件下,是一種實現(xiàn)固定系數(shù)乘法的合理選擇。在后來的驗證中也證明,除了在計算過程比嵌入式乘法單元多兩個時鐘周期,電路面積有所增加以外,其計算精度和運行速度都基本與嵌入式乘法單元相同。運算過程中比使用嵌入式乘法單元多出的多兩個時鐘周期也會因為整個二維離散余弦變換是全流水結(jié)構(gòu)而只增加了流水線的鋪滿時間,流水

15、線一旦鋪滿后,這個兩個時鐘周期的延遲對運算延遲的影響將不再存在。   階段3:消耗3個時鐘周期,完成11位有符號數(shù)的加減法操作,結(jié)果仍為11位有符號數(shù)。結(jié)果仍為11位有符號數(shù)而不是12位有符號數(shù)的原因在第一級一維離散余弦變換模塊的階段3中已說明。   階段4:消耗3個時鐘周期完成11位有符號數(shù)的加減運算,結(jié)果為12位有符號數(shù),也是二維離散余弦變換的最終結(jié)果。         2.1.4并行全流水結(jié)構(gòu)的二維離散余弦變換模塊   在不考慮二維離散余弦變換中輸入數(shù)據(jù)的串行轉(zhuǎn)為并行,輸出數(shù)據(jù)的并行轉(zhuǎn)為串行的條件下。即假設二維離散余弦變換模塊的前一級模塊可以在每一個時鐘周期內(nèi)為其提供64

16、位數(shù)據(jù),二維離散余弦變換模塊的后一級模塊可以在每一個時鐘周期內(nèi)接受其產(chǎn)生的96位數(shù)據(jù)。這時本文提出的并行全流水線結(jié)構(gòu)的二維離散余弦變換模塊只需要43個時鐘周期就可以完成一個88矩陣的二維離散余弦變換。   圖6及圖7是該模塊在ModelSim仿真軟件中的時序仿真結(jié)果,仿真的時鐘頻率設定為100Mhz,43個時鐘周期完成一次88二維離散余弦變換。                           相同數(shù)據(jù)在Matlab中二維離散余弦變換結(jié)果見圖8。                        二者差值的分析:本文提出的二維離散余弦變換模塊在

17、對小數(shù)乘法結(jié)果的處理上采取了截尾方式,沒有保留小數(shù)參加后續(xù)的運算。這與Matlab中64位的浮點運算的運算結(jié)果相比在變換系數(shù)中的直流系數(shù)上和第1個交流系數(shù)上相差的數(shù)值為8,其它系數(shù)可以認為是近似相同的。   對小數(shù)乘法結(jié)果的處理采取截尾方式的原因有兩點:   1:保留小數(shù)位數(shù)過多會導致在后續(xù)的計算中輸入數(shù)據(jù)位數(shù)過長,特別是對于全8路并行結(jié)構(gòu)更易產(chǎn)生數(shù)據(jù)偏移或時鐘偏移,同時也會降低模塊的運行頻率。   2:考慮到后續(xù)的量化模塊,采用標準的量化表時直流系數(shù)的量化步長為16是差值8的2倍,而且量化過程中有對量化結(jié)果四舍五入的處理。所以差值8會在量化過程中基本被消除。這一點在后面的實際圖像測試中

18、得到了映證,壓縮后的圖像在視覺上與原始圖像一致。   2.2量化模塊   量化過程就是每個離散余弦變換系數(shù)除以各自的量化步長并對結(jié)果取整的過程。取整采用的是四舍五入的方式。   為了方便在FPGA中實現(xiàn),離散余弦變換系數(shù)除以各自的量化步長改為乘以量化步長的倒數(shù),量化步長的倒數(shù)使用二進制小數(shù)表示,選取長度為12位。乘法器用EP2C35中兩個嵌入式乘法單元并聯(lián)實現(xiàn)。因為離散余弦變換系數(shù)的長度為12位有符號的數(shù),所以乘操作后得到的24位結(jié)果,保留高12位,低12位舍去。具體電路在算法結(jié)構(gòu)上分為3個階段,由5階的流水線組成,完成整個量化操作耗時5個時鐘周期。            

19、   2.3 ZigZag掃描模塊   經(jīng)過量化處理后的離散余弦變換系數(shù)的高頻分量大部分為零。經(jīng)過ZigZag掃描后,一個二維的88離散余弦變換系數(shù)矩陣變?yōu)橐粋€一維含64個元素的序列,頻率分量按從低到高排列,一維序列的高頻部分會出現(xiàn)大量的連續(xù)零元素。產(chǎn)生這種一維序列的目的是為了使用熵編碼中游程編碼,進一步提高壓縮效率。   從電路功能的角度上看,ZigZag掃描模塊的作用就是把按列順序輸入的量化后的離散余弦變換系數(shù)以ZigZag掃描的順序輸出。處理時以一個88的離散余弦變換系數(shù)矩陣為一個處理單元,在接收一個以列順序輸入的88的離散余弦變換系數(shù)矩陣的同時,把前一個已經(jīng)接收完畢的88的離散余弦

20、變換系數(shù)矩陣以ZigZag掃描的順序輸出。一個擁有128個存儲單元,每個存儲單元長度為9位的雙口RAM可以完成上述功能。RAM的128個存儲單元在使用上分為兩個操作區(qū),每個操作區(qū)64個存儲單元,一個操作區(qū)用于接收以列順序輸入的88的離散余弦變換系數(shù)矩陣,同時另一個操作區(qū)以ZigZag掃描的順序輸出前一個已經(jīng)接收完畢的88的離散余弦變換系數(shù)矩陣。兩個操作區(qū)輪換交替,形成一種乒乓操作模式。在這里使用乒乓操作是為了保持整個IP核的整體全流水線設計。   乒乓操作是一種常用于數(shù)據(jù)流控制的處理技巧。其特點是相互配合切換多個存儲單元并完成數(shù)據(jù)的處理,把處理后的數(shù)據(jù)沒有停頓的運送到下一個處理模塊。把一個乒

21、乓操作模塊當作一個整體,從其兩端看數(shù)據(jù),輸入數(shù)據(jù)和輸出數(shù)據(jù)都是連續(xù)不斷的,沒有任何停頓,因此非常適合流水線結(jié)構(gòu)。圖11是ZigZag掃描模塊在ModelSim仿真軟件中的時序仿真結(jié)果,仿真的時鐘頻率設定為100Mhz。輸入數(shù)據(jù)是一個88的二維矩陣。按列掃描順序輸入的如下矩陣: 0 1 5 6 14 15 27 28 2 4 7 13 16 26 29 42 3 8 12 17 25 30 41 43 9 11 18 24 31 40 44 53 10 19 23 32 39 45 52 54 20 22 33

22、 38 46 51 55 60 21 34 37 47 50 56 59 61 35 36 48 49 57 58 62 63         2.4熵編碼模塊   熵編碼與前面介紹的量化都是數(shù)據(jù)壓縮的手段,但二者有所不同,熵編碼利用信號的統(tǒng)計特征來降低位率,理論上不會丟失信息,量化會丟失信息。實現(xiàn)熵編碼有多種方式,本文根據(jù)ISO/IEC10918協(xié)議,使用了游程編碼和霍夫曼編碼兩種方式。游程編碼的原理是把沿一定方向排列的等大小量化值的離散余弦變換系數(shù)作為連續(xù)的整體,用特定碼字替代這種連續(xù)的整體就會達到數(shù)據(jù)量減少的效果?;舴蚵幋a是一種

23、變長編碼,將多次出現(xiàn)的代碼用較短的碼字代表,很少出現(xiàn)的代碼用較長的碼字代表。產(chǎn)生哈夫曼編碼要求掃描兩遍原始數(shù)據(jù),第一遍掃描是為了在原始數(shù)據(jù)中精確地統(tǒng)計每個值出現(xiàn)的頻率,第二遍利用構(gòu)造的哈夫曼樹得到編碼,兩次掃描耗時巨大,因此數(shù)據(jù)壓縮難以滿足實時性要求。ISO/IEC10918協(xié)議中在對大量8位精度圖像的平均統(tǒng)計基礎上,給出了4個合適大多數(shù)應用的個哈夫曼碼表。在實現(xiàn)硬件電路時把哈夫曼碼表存儲在片上ROM中,使用時直接查找。因為離散余弦變換中直流系數(shù)和交流系數(shù)分別使用不同的碼表,且直流系數(shù)不需要進行游程編碼,所以直流系數(shù)和交流系數(shù)使用不同的模塊來處理。   2.4.1直流系數(shù)處理模塊   直流

24、系數(shù)是88矩陣內(nèi)64個像素均值的度量,是包含了整個圖像能量的重要部分。利用相鄰的88矩陣的直流系數(shù)具有很強的相關性,對直流系數(shù)使用差分壓縮編碼。前一個88矩陣的直流系數(shù)作為當前矩陣的直流系數(shù)的預測值,求出現(xiàn)實值和預測值之間的差值后,再對差值做霍夫曼編碼。在硬件實現(xiàn)時,直流系數(shù)只有一個值,所以不需要做游程編碼,對其處理的第一步就是求得其與預測值之間的差值。根據(jù)差值的大小和正負查找存儲在片上ROM的標準霍夫曼碼表,得出前綴代碼和前綴代碼長度,同時根據(jù)ISO/IEC10918協(xié)議中提出的尾碼產(chǎn)生方式得到對應的尾碼代碼及尾碼代碼長度。上述處理完成之后再經(jīng)過合并前綴代碼與尾碼代碼為霍夫曼代碼,則直流系數(shù)

25、的熵編碼完成,之后等待被變長編碼模塊封裝。具體的實現(xiàn)電路由4階流水線組成,直流系數(shù)的熵編碼處理過程耗時4個時鐘周期。               2.4.2交流系數(shù)處理模塊   交流系數(shù)首先要現(xiàn)經(jīng)過游程編碼處理。在游程編碼中非零交流系數(shù)前的零交流系數(shù)的個數(shù)是游程長度,前綴代碼及尾碼代碼的含義與直流系數(shù)中的一致,只不過在交流系數(shù)處理中游程長度和前綴代碼重新組合為一個新的查找索引來查找新的前綴代碼。ISO/IEC10918協(xié)議中給出的交流系數(shù)標準霍夫曼碼表里有兩個特殊的代碼。一個特殊代碼ZRL,ZRL代表游程編碼中游程長度大于16,如果游程長度大于32,48,56,分別用1個ZRL

26、,2個ZRL,3個ZRL表示,盈余的游程長度加入下一個游程長度計算中。ZRL代碼只有前綴代碼,沒有尾碼代碼。為了方便實現(xiàn),直接把ZRL的尾碼代碼長度設為零,起到屏蔽尾碼的作用。另一個特殊代碼EOB,EOB代表最后一個零行程中只有零元素直接代表當前矩陣的游程編碼已經(jīng)掃描結(jié)束,若當前矩陣的最后一個交流系數(shù)是非零數(shù)的則以正常結(jié)束一個游程長度的計數(shù)作為當前矩陣游程編碼的結(jié)束。同ZRL類似,EOB也沒有尾碼代碼,所以使用同樣的處理手段。具體的實現(xiàn)電路由4階流水線組成,交流系數(shù)的熵編碼處理耗時4個時鐘周期。            2.4.3交織模塊和冗余ZRL消除模塊   交織模塊的作用是把

27、前綴代碼和尾碼代碼合并為一個霍夫曼代碼,合并后的代碼易于進行下一階段的變長編碼操作,變長編碼操作過程需要的移位位數(shù)由前綴代碼長度加上尾碼代碼長度做和得到,這個求和過程也在交織模塊中實現(xiàn)。該模塊具體實現(xiàn)電路由2階流水線組成。   冗余ZRL消除模塊不是ISO/IEC10918協(xié)議的一部分,但它源于標準協(xié)議里對EOB的定義。從EOB之前直到最近一個的非零交流系數(shù)出現(xiàn),中間產(chǎn)生的ZRL都是可以消除的。基于全流水線結(jié)構(gòu)的電路設計一般很難滿足這一要求,原因是全流水線結(jié)構(gòu)的電路每級產(chǎn)生的結(jié)果都會直接傳遞給下一級,不對結(jié)果作保留。唯一的方法就是構(gòu)造一個同步FIFO來緩存前幾個時鐘周期內(nèi)產(chǎn)生的結(jié)果,根據(jù)之前

28、輸入的數(shù)據(jù)量和當前輸入的數(shù)據(jù)量是否滿足ZRL的冗余條件而選擇性的對FIFO輸出的結(jié)果做屏蔽。屏蔽的手段就是把FIFO輸出數(shù)據(jù)的對應的霍夫曼代碼長度清零。這樣在下一步的變長編碼中會因ZRL的霍夫曼代碼長度為零而消除冗余的ZRL。   2.4.4變長編碼模塊   變長編碼的作用是把交織編碼輸出的含有不等長有效位的霍夫曼碼字,提取其中的有效位并將其組合為一個連續(xù)的32位碼流。   編碼原理是把交織編碼輸出的含有不等長有效位的霍夫曼碼字向右位,移動的位數(shù)是前一個霍夫曼碼字的代碼長度。移位完成后的當前霍夫曼碼字與提供移動的位數(shù)的前一個霍夫曼碼字做或運算,同時累加兩個霍夫曼碼字的代碼長度。累加和大于

29、24時表明變長編碼的第一步完成。第二步是檢查前一步產(chǎn)生的24位封裝結(jié)果中是否有FF字節(jié),若有則直接在FF字節(jié)后面添加00字節(jié)。并不是所有的24位封裝結(jié)果都需要在FF字節(jié)后面添加00字節(jié),所以在第二步處理中還有移位處理。移位處理采用的方法與第一步移位處理的方法相同的,把24位封裝結(jié)果和添加00字節(jié)后的32位封裝結(jié)果,統(tǒng)一封裝為32位結(jié)果輸出。這個32位數(shù)據(jù)也是整個IP核輸出的最終壓縮結(jié)果。               3.基于SOPC結(jié)構(gòu)的實際驗證系統(tǒng)   經(jīng)驗證,Motion JPEG IP核可以實時處理由NTSC制式攝像頭采集經(jīng)ADV7181處理后輸出的CCIR656標準數(shù)據(jù)

30、,完成對連續(xù)視頻幀的實時壓縮。            驗證系統(tǒng)結(jié)構(gòu)如圖15所示,lineswitcher模塊把CCIR656標準數(shù)據(jù)的亮度分量以跳址寫入的方式通過Multi-Port SDRAM Controller模塊寫入到SDRAM中,亮度分量數(shù)據(jù)從隔行掃描變?yōu)橹鹦写尜A。Multi-Port SDRAM Controller模塊是一個工業(yè)級的SDRAM控制器,可以將一個SDRAM數(shù)據(jù)端口仿真成四個虛擬的數(shù)據(jù)端口(兩個寫端口+兩個讀端口)。SDRAM在存儲空間使用上劃分為4個區(qū)塊,在lineswitcher模塊寫入一個區(qū)塊的同時,Motion JPEG IP核讀出前一個已寫入亮度

31、分量的區(qū)塊。Motion JPEG IP核輸出端是一個Avalon總線上的具有流控制屬性從端口。DMA控制器與Motion JPEG IP核以流控制的方式進行數(shù)據(jù)傳輸,并把數(shù)據(jù)轉(zhuǎn)移到SRAM中。整個過程無需NIOSII處理器干預,只須等DMA控制器寫滿SRAM后以中斷的方式通知NIOSII處理器以使其掛起Motion JPEG IP核,防止存入SRAM中數(shù)據(jù)被覆蓋。最后使用DE2_Control_Panel傳輸SRAM中壓縮后的數(shù)據(jù)到PC中,便可看到采集后圖像經(jīng)壓縮后的效果。NIOSII處理器的作用是初始化DMA控制器和通過I2C總線設置ADV7181。            

32、  考慮到芯片上的資源,驗證時只對ADV7181輸出的亮度分量進行壓縮,舍棄了色差分量。雖然沒有了色差分量,但是仍然可以得到清晰直觀的驗證效果。            4.結(jié)論   本設計主要有以下幾個特點。   1:以全流水線結(jié)構(gòu)來實現(xiàn)Motion JPEG視頻壓縮IP核。   雖然流水線技術已經(jīng)是一種眾所周知的技術,但是現(xiàn)有的Motion JPEG視頻壓縮IP核仍未實現(xiàn)全部流水線結(jié)構(gòu),一般多以狀態(tài)控制模塊為核心來協(xié)調(diào)各個子模塊。這就導致系統(tǒng)中最慢的子模塊在處理數(shù)據(jù)時,其它子模塊只能等待,對數(shù)據(jù)塊訪問的效率低下。同時由于數(shù)據(jù)塊的被多個子模塊所使用而又需要復雜的仲裁機制。本文

33、提出的全流水線結(jié)構(gòu)把整個處理過程分解為198個小操作,每個時鐘周期內(nèi)由一階流水線完成一個小操作。當整個流水線鋪滿之后,整個數(shù)據(jù)處理過程中沒有等待延遲,沒有仲裁協(xié)議,大幅提高了系統(tǒng)的運行效率并降低了系統(tǒng)的復雜度。   2:并行矩陣轉(zhuǎn)置結(jié)構(gòu)的提出及基于并行矩陣轉(zhuǎn)置的并行二維離散余弦變換結(jié)構(gòu)。   并行矩陣轉(zhuǎn)置結(jié)構(gòu)較之以往的串行矩陣轉(zhuǎn)置在處理88矩陣上至少節(jié)省了100個時鐘周期。二維離散余弦變換在采用了并行矩陣轉(zhuǎn)置之后,也實現(xiàn)了全部并行處理,43個時鐘周期完成了一次二維離散余弦變換,效率提高顯著。   3:因采用全流水線結(jié)構(gòu)而取得的較高的運行頻率。   本文設計的Motion JPEG視頻壓

34、縮IP核在Quartus II 6.0中進行靜態(tài)時序分析,得到的最高運行頻率是150Mhz。            現(xiàn)有IP核與本文設計的IP核的運行頻率比較               實際驗證時不僅對處理CCIR656標準數(shù)據(jù)的能力給予驗證,同時也為100Mhz的運行頻率進行了驗證,結(jié)果證明IP核可以在100Mhz的運行頻率下正常工作。驗證方法是把7幀952568的亮度分量文件存入SDRAM中作為原始數(shù)據(jù),整個驗證系統(tǒng)以100Mhz頻率運行,經(jīng)過0.05秒完成7幀的壓縮,幀率可達147 frame/s。壓縮后圖像的大小為原來亮度圖像的十分之一。   4:可以在低

35、成本,低功耗,高密度的CycloneII系列FPGA芯片上運行,通過Avalon總線與NIOSII處理器構(gòu)成SOPC系統(tǒng),為將來實際產(chǎn)品的設計搭建了一個良好的平臺。   參考文獻   【1】Weiping Li, A New Algorithm to Compute the DCT and its Inverse, IEEE TRANSATIONS ON SIGNAL, PROCESSING, VOL. 39. NO. 6, JUNE 1991   【2】Shaw-MinLei, Ming-TingSun, An Entropy Coding System for Digital HDT

36、V Applications, IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, VOL. 1, NO.1, MARCH 1991   【3】ISO/IEC International Standard 10918-1. June 1992   【4】Altera Corporation. Quartus II Version 7.2 Handbook. October 2007   【5】Altera Corporation. Nios II Processor Reference Handbook. Oct

37、ober 2007   【6】Altera Corporation. Nios II Software Developers Handbook. October 2007   【7】Altera Corporation. Avalon Streaming Interface Specification. September 2007   【8】張志剛. FPGA與SOPC設計教程-DE2實踐. 西安: 西安電子科技大學出版社, 2007年4月.   【9】吳繼華,王誠. AlteraFPGA/CPLD設計(高級篇). 北京: 人民郵電出版社,2005年7月   【10】簡弘倫.精通VerilogHDL IC設計核心技術實例詳解.北京:電子工業(yè)出版社, 2005年10月. 相近文章: 某省數(shù)字化監(jiān)獄監(jiān)控系統(tǒng)建設方案 我國閉路監(jiān)控電視顯示器市場趨勢分析 HDcctv出世,視頻監(jiān)控系統(tǒng)市場將掀標準戰(zhàn)? G3視頻監(jiān)控網(wǎng)關:構(gòu)筑3G時代新生活模式 無線城市推動視頻監(jiān)控進入無線時代

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲