一種非定長碼高速拼接硬件實現裝置制造方法
【專利摘要】本發明公開了一種非定長碼高速拼接硬件實現裝置,包括8碼字拼接模塊和定長碼至定長碼拼接模塊,其中,8碼字拼接模塊用于將輸入的非定長碼拼接成8比特定長碼數據;定長碼至定長碼拼接模塊用于將上述拼接后的8比特定長碼數據拼接成定長碼數據并輸出;本發明所設計的一種非定長碼高速拼接硬件實現裝置能夠在實現高速拼接非定長碼的同時,有效的減少硬件資源使用。
【專利說明】一種非定長碼高速拼接硬件實現裝置
【技術領域】
[0001]本發明涉及數據壓縮技術,尤其涉及一種非定長碼高速拼接硬件實現裝置。
【背景技術】
[0002]在數字圖像、視頻、語音等數據壓縮應用中,經常使用熵編碼,例如Huffman編碼、RICE編碼、算術編碼等。而這些二進制的編碼數據在表示中僅有若干位有效的編碼,即輸出的編碼是非定長碼,但在數據輸出時要求所有的碼字信息為規定格式,這就要求把所有的碼字按照其長度依次連接,形成緊湊的定長字,經緩存后按恒定碼速率輸出。
[0003]FPGACField Programmable Gate Arry),即現場可編程門陣列。它是在 PAL、GAL、CPLD等可編程器件基礎上進一步發展的產物。它是作為專用集成電路領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有的可編程器件門電路數有限的缺點。但是FPGA的內部資源也是有限的。
[0004]因此,如何有效的在實現同等功能和性能的同時,有效的減少資源的消耗,成為了FPGA設計時的一個首要的問題。
【發明內容】
[0005]本發明所要解決的技術問題在于克服現有技術的不足,提供一種能夠在實現高速拼接非定長碼的同時,有效的減少硬件資源使用的非定長碼高速拼接硬件實現裝置。
[0006]本發明具體采用以下技術方案解決上述技術問題:本發明設計了一種非定長碼高速拼接硬件實現裝置,包括8碼字拼接模塊和定長碼至定長碼拼接模塊,其中,
8碼字拼接模塊用于將輸入的非定長碼拼接成8比特定長碼數據;
定長碼至定長碼拼接模塊用于將上述拼接后的8比特定長碼數據拼接成定長碼數據并輸出。
[0007]作為本發明的一種優化結構:所述8碼字拼接模塊包括碼長累加模塊、累加和譯碼模塊、第一數據暫存陣列、第二數據暫存陣列和多路選擇器,其中,
碼長累加模塊用于累計到當前位置的非定長碼的碼元總長;
累加和譯碼模塊用于將上述非定長碼的碼元總長解析成拼接控制信號,并分別傳輸至第一數據暫存陣列、第二數據暫存陣列和多路選擇器;
第一數據暫存陣列和第二數據暫存陣列根據上述控制信號依次交替暫存碼字數據,所述多路選擇器根據上述控制信號選取其中碼字數據存滿的數據暫存陣列,將其中的碼字數據以8比特定長碼數據形式輸出。
[0008]作為本發明的一種優化結構:所述定長碼至定長碼拼接模塊包括字節累加模塊、字節和譯碼模塊及數據暫存陣列,其中,
字節累加模塊接收8碼字拼接模塊輸出的8比特定長碼數據,并計算到當前位置總共的字節數目;
字節和譯碼模塊用于根據上述字節數目產生該字節的寫入位置和控制信號,并將控制信號傳輸至數據暫存陣列;
數據暫存陣列用于根據上述控制信號暫存定長碼數據,當定長碼數據存滿時,將定長碼數據輸出。
[0009]作為本發明的一種優化結構:所述數據暫存陣列由D觸發器陣列和多路選擇器陣列構成,其中,
所述多路選擇器陣列包括至少一個多路選擇器,字節和譯碼模塊將解析成的控制信號傳輸至多路選擇器陣列中的一個或多個多路選擇器中;
所述D觸發器陣列中D觸發器的個數與多路選擇器陣列中多路選擇器的個數相同,且一一對應,多路選擇器根據字節和譯碼模塊解析成的控制信號將定長碼數據存儲到與其對應的D觸發器中,該D觸發器根據自身的鎖存信號暫存定長碼數據,當定長碼數據存滿時,將定長碼數據輸出。
[0010]作為本發明的一種優化結構:所述D觸發器陣列中D觸發器的個數為8,所述多路選擇器陣列中多路選擇器的個數為8。
[0011]本發明與現有技術相比具有如下優點:
本發明提供了一種非定長碼高速拼接硬件實現裝置,采用可編程邏輯器件(FPGA)實現非定長碼字的高速拼接功能,通過采用數據暫存裝置的交替使用和流水操作,在實現高速拼接同等功能和性能的同時,減少了非定長碼高速拼接實現時的硬件資源消耗。
【專利附圖】
【附圖說明】
[0012]圖1為本發明總的結構框圖;
圖2為本發明的一種【具體實施方式】;
圖3為圖2中201部分的工作流程圖;
圖4為本發明的另一種【具體實施方式】;
圖5為圖4中402部分的工作流程圖;
圖6為本發明中數據暫存陣列的結構原理圖。
【具體實施方式】
[0013]下面結合附圖對本發明做進一步的詳細說明:
如圖1所示,本發明設計了一種非定長碼高速拼接硬件實現裝置,包括8碼字拼接模塊和定長碼至定長碼拼接模塊,其中,
8碼字拼接模塊用于將輸入的非定長碼拼接成8比特定長碼數據;例如,有數據101和11001,則通過8碼字拼接模塊后輸出定長碼10111001 ;或者,有數據1001和1100101,則通過8碼字拼接模塊后輸出定長碼10011100,并將剩余的101存儲在8碼字拼接模塊中,與下一次的碼字進行拼接操作;
定長碼至定長碼拼接模塊用于將上述拼接后的8比特定長碼數據拼接成定長碼數據并輸出;例如,當8碼字拼接模塊輸出了定長碼11001100,11011101,11111111,10001000 ;則通過定長碼至定長碼拼接模塊后變成11001100110111011111111110001000。
[0014]如圖2和圖3所示,作為本發明的一種優化結構:所述8碼字拼接模塊包括碼長累加模塊、累加和譯碼模塊、第一數據暫存陣列、第二數據暫存陣列和多路選擇器,其中, 碼長累加模塊用于累計到當前位置的非定長碼的碼元總長;例如,之前共有7比特的碼元,碼長累加模塊中的數據為7,而當前的碼元為101,則碼長累加模塊中的數據變為10 ;另外,當碼長累加模塊中的數據為14,當前的碼元為101時,則碼元累加模塊中的數據變為
I(14+3-16),其余的類似的情況與上述采取同樣的方式對碼元長度進行累加;
累加和譯碼模塊用于將上述非定長碼的碼元總長解析成拼接控制信號,并分別傳輸至第一數據暫存陣列、第二數據暫存陣列和多路選擇器;例如,當碼長累加模塊中的數值為11時,而當前的碼元為101,則產生相應的控制信號向12、13、14個D觸發器中寫入數據“I”、“O” 和 “I”;
第一數據暫存陣列和第二數據暫存陣列用于根據累加和譯碼模塊解析成的控制信號暫存碼字數據,當任意一個數據暫存陣列中碼字數據存滿時,將碼字數據輸出;例如,當碼長累加模塊中的數值為3時,而當前的碼元為101,則分別將數據和“I”存儲到第一數據暫存陣列中的第4、5、6個D觸發器中;當第一數據暫存陣列中的8個D觸發器中都存儲了數據時,則將其中的數據以定長碼輸出;
當碼長累加模塊中的數值為11時,而當前的碼元為101,則分別將數據和“I”存儲到第二數據陣列中的第4、5、6個D觸發器中;當第二數據暫存陣列中的8個D觸發器中都存儲了數據時,則將其中的數據以定長碼輸出;
多路選擇器用于根據上述控制信號選擇輸出其中一個數據暫存陣列中的數據;例如,當第一數據暫存陣列中的數據存滿時,多路選擇器選擇第一數據暫存陣列中的數據以定長碼輸出;同樣,當第二數據暫存陣列中的數據存滿時,多路選擇器選擇第二數據暫存陣列中的數據以定長碼輸出。
[0015]如圖4和圖5所示,作為本發明的一種優化結構:所述定長碼至定長碼拼接模塊包括字節累加模塊、字節和譯碼模塊及數據暫存陣列,其中,
字節累加模塊用于計算到當前位置共輸出的字節數目;例如,之前共有2字節的數據,字節累加模塊中的數據為2,而當前的字節為11011101,則字節累加模塊中的數據變為3 ;另外,當字節累加模塊中的數據為8,當前的碼元為11011101時,則字節累加模塊中的數據變為 I (8+1-8);
字節和譯碼模塊用于根據上述字節數目產生該字節的寫入位置和控制信號,并將控制信號傳輸至數據暫存陣列;例如,當字節累加模塊中的數值為7時,而當前的碼元為11011101,則產生相應的控制信號向數據暫存陣列中的對應第8個字節的位置寫入數據“11011101” ;
數據暫存陣列,用于根據上述控制信號暫存定長碼數據,當定長碼數據存滿時,將定長碼數據輸出;例如,當字節累加模塊中的數值為3時,而當前的碼元為11011101,則將數據“11011101”存儲到數據緩存陣列中的第4字節對應的位置中;當數據暫存陣列中的8個字節中都存儲了數據時,則將其中的數據以定長碼輸出。
[0016]如圖6所示,作為本發明的一種優化結構:所述數據暫存陣列包括D觸發器陣列和多路選擇器陣列,其中,
所述多路選擇器陣列包括至少一個多路選擇器,字節和譯碼模塊將解析成的控制信號傳輸至多路選擇器陣列中的一個或多個多路選擇器中;
所述D觸發器陣列中D觸發器的個數與多路選擇器陣列中多路選擇器的個數相同,且一一對應,多路選擇器根據字節和譯碼模塊解析成的控制信號將定長碼數據存儲到與其對應的D觸發器中,該D觸發器根據自身的鎖存信號暫存定長碼數據,當定長碼數據存滿時,將定長碼數據輸出。
[0017]當8碼字拼接模塊將定長碼送至定長碼至定長碼拼接模塊時,首先由字節累加模塊計算當前的數據應該所在的字節位置,并將計算結果反饋給字節和譯碼模塊,字節和譯碼模塊根據信息產生寫入數據的地址和控制信號,將定長碼數據寫入到數據暫存陣列中,當數據暫存陣列中的數據存儲滿時,架構數據以較長的(需要的格式)定長碼輸出。
[0018]本發明中所有數據暫存陣列均由圖所示的這種結構或者類似的結構實現,其主要的實現方式是,由控制信號中的選擇信號選擇對應的D觸發器的數據選擇端,根據控制信號中的鎖存信號將數據鎖存到對應的D觸發器中,通過這種結構的堆疊可以實現任意長度碼字的拼接。
[0019]本發明中數據暫存陣列采用的堆疊次數為8次。
[0020]參考前述本發明示例性的描述,本領域技術人員可以知曉本發明具有以下優點。本發明提供了一種變長碼高速拼接的硬件實現裝置,采用可編程邏輯器件(FPGA)實現了非定長碼元的高速實時拼接,通過采用流水操作和Pipeline結構實現了變長碼得實時高速拼接,同時優化了結構,大大的減少了硬件資源的消耗。
[0021]盡管本發明此處具體化一些特定的例子示出和描述,然而本發明不限制于所示出的細節,因為在不偏離本發明精神以及在權利要求的范圍和同等范圍內,可以做出多種改進和結構變化。因此,寬范圍地并且如權利要求中所闡述的在某種意義上與本發明的范圍一致地解釋附加的權利要求是適當的。
【權利要求】
1.一種非定長碼高速拼接硬件實現裝置,其特征在于,包括8碼字拼接模塊和定長碼至定長碼拼接模塊,其中, 8碼字拼接模塊用于將輸入的非定長碼拼接成8比特定長碼數據; 定長碼至定長碼拼接模塊用于將上述拼接后的8比特定長碼數據拼接成定長碼數據并輸出。
2.根據權利要求1所述的一種非定長碼高速拼接硬件實現裝置,其特征在于,所述8碼字拼接模塊包括碼長累加模塊、累加和譯碼模塊、第一數據暫存陣列、第二數據暫存陣列和多路選擇器,其中, 碼長累加模塊用于累計到當前位置的非定長碼的碼元總長; 累加和譯碼模塊用于將上述非定長碼的碼元總長解析成拼接控制信號,并分別傳輸至第一數據暫存陣列、第二數據暫存陣列和多路選擇器; 第一數據暫存陣列和第二數據暫存陣列根據上述控制信號依次交替暫存碼字數據,所述多路選擇器根據上述控制信號選取其中碼字數據存滿的數據暫存陣列,將其中的碼字數據以8比特定長碼數據形式輸出。
3.根據權利要求1所述的一種非定長碼高速拼接硬件實現裝置,其特征在于,所述定長碼至定長碼拼接模塊包括字節累加模塊、字節和譯碼模塊及數據暫存陣列,其中, 字節累加模塊接收8碼字拼接模塊輸出的8比特定長碼數據,并計算到當前位置總共的字節數目; 字節和譯碼模塊用于根據上述字節數目產生該字節的寫入位置和控制信號,并將控制信號傳輸至數據暫存陣列; 數據暫存陣列用于根據上述控制信號暫存定長碼數據,當定長碼數據存滿時,將定長碼數據輸出。
4.根據權利要求3所述的一種非定長碼高速拼接硬件實現裝置,其特征在于,所述數據暫存陣列由D觸發器陣列和多路選擇器陣列構成,其中, 所述多路選擇器陣列包括至少一個多路選擇器,字節和譯碼模塊將解析成的控制信號傳輸至多路選擇器陣列中的一個或多個多路選擇器中; 所述D觸發器陣列中D觸發器的個數與多路選擇器陣列中多路選擇器的個數相同,且一一對應,多路選擇器根據字節和譯碼模塊解析成的控制信號將定長碼數據存儲到與其對應的D觸發器中,該D觸發器根據自身的鎖存信號暫存定長碼數據,當定長碼數據存滿時,將定長碼數據輸出。
5.根據權利要求4所述的一種非定長碼高速拼接硬件實現裝置,其特征在于,所述D觸發器陣列中D觸發器的個數為8,所述多路選擇器陣列中多路選擇器的個數為8。
【文檔編號】H04N7/26GK103458247SQ201310395810
【公開日】2013年12月18日 申請日期:2013年9月4日 優先權日:2013年9月4日
【發明者】李冰, 張 林, 劉勇, 趙霞, 王剛, 董乾 申請人:東南大學