TW201342813A - 資料編碼及解碼方法與裝置 - Google Patents
資料編碼及解碼方法與裝置 Download PDFInfo
- Publication number
- TW201342813A TW201342813A TW101111828A TW101111828A TW201342813A TW 201342813 A TW201342813 A TW 201342813A TW 101111828 A TW101111828 A TW 101111828A TW 101111828 A TW101111828 A TW 101111828A TW 201342813 A TW201342813 A TW 201342813A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- data segment
- compressible
- length
- segment
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M5/00—Conversion of the form of the representation of individual digits
- H03M5/02—Conversion to or from representation by pulses
- H03M5/04—Conversion to or from representation by pulses the pulses having two levels
- H03M5/14—Code representation, e.g. transition, for a given bit cell depending on the information in one or more adjacent bit cells, e.g. delay modulation code, double density code
- H03M5/145—Conversion to or from block codes or representations thereof
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6011—Encoder aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一種編碼方法,包含有接收具有一第一長度之一第一資料;將該第一資料分割為具有一第一特定長度之複數個資料片段;由該複數個資料片段中,取得具有全相同資料值之至少一可壓縮資料片段及不具有全相同資料值之至少一非可壓縮資料片段;壓縮該至少一可壓縮資料片段,以取得具有一第二特定長度之至少一壓縮資料片段;根據該至少一壓縮資料片段之位置及一數量,產生一編碼資料片段;以及依序合併該至少一壓縮資料片段、該至少一非可壓縮資料片段及該編碼資料片段,以產生具有一第二長度之一第二資料;其中,該第二特定長度小於該第一特定長度。
Description
本發明係指一種編碼/解碼方法及裝置,尤指一種可透過壓縮資料中的連續相同資料以降低資料傳輸浪費率的編碼/解碼方法,及其相關編碼/解碼裝置。
一般來說,傳送端(Transmitter,TX)與接收端(Receiver,RX)在傳輸資料時,除了需要有傳送/接收資料的機制之外,也需要有傳送/接收時脈(Clock)資訊的機制。在高速介面傳輸資料時,為了要提高訊號傳輸品質、降低電磁干擾(Electromagnetic interference,EMI)、提供除錯機制(Error correction)以及節省時脈電路,一般會利用將欲傳輸的資料加以編碼(encoding)來滿足以上需求。
舉例而言,8B/10B的編碼技術係將8位元的資料經過映射(mapping)的機制,轉化為包含有時脈資訊之10位元字碼。詳細而言,8位元資料會被分成兩部分進行映射,其中5位元將被映射至一6位元資料,而剩餘3位元將被映射至一4位元資料,再合成為10位元的字碼。8B/10B編碼為了使資料具有直流平衡(DC-free)及維持低於5個連續相同資料值(Consecutive Identical Digit,CID)的特性,將原本8位元的資料轉換為10位元,資料傳輸上會有2位元(既相對於整體資料20%)的浪費。
另一方面,習知技術中另一種64B/66B編碼係在64位元資料前方加入2位元的訊息,因此具有較高的資料傳輸效率。然而,64B/66B編碼中資料卻有機會高達65位元的連續相同0或1,其對於後續解碼運作的資料及時脈還原(data and clock recovery)有不良的影響。
因此,發展一種可加入最少額外位元,而轉換後的資料又不具有超過一定長度的連續相同邏輯符,以提升編碼品質及降低資料浪費的編碼方式,已成為業界的共同目標之一。
因此,本發明之主要目的在於提供資料編碼/解碼方法及裝置。
本發明揭露一種編碼方法,包含有接收具有一第一長度之一第一資料;將該第一資料分割為具有一第一特定長度之複數個資料片段;由該複數個資料片段中,取得具有全相同資料值之至少一可壓縮資料片段及不具有全相同資料值之至少一非可壓縮資料片段;壓縮該至少一可壓縮資料片段,以取得具有一第二特定長度之至少一壓縮資料片段;根據該至少一壓縮資料片段之位置及一數量,產生一編碼資料片段;以及依序合併該至少一壓縮資料片段、該至少一非可壓縮資料片段及該編碼資料片段,以產生具有一第二長度之一第二資料;其中,該第二特定長度小於該第一特定長度。
本發明另揭露一種編碼裝置,包含有一處理器;一儲存裝置,儲存有一程式碼,該程式碼用來指示該處理器執行以下步驟接收具有一第一長度之一第一資料;將該第一資料分割為具有一第一特定長度之複數個資料片段;由該複數個資料片段中,取得具有全相同資料值之至少一可壓縮資料片段及不具有全相同資料值之至少一非可壓縮資料片段;壓縮該至少一可壓縮資料片段,以取得具有一第二特定長度之至少一壓縮資料片段;根據該至少一壓縮資料片段之位置及一數量,產生一編碼資料片段;以及依序合併該至少一壓縮資料片段、該至少一非可壓縮資料片段及該編碼資料片段,以產生具有一第二長度之一第二資料;其中,該第二特定長度小於該第一特定長度。
本發明揭露一種解碼方法,包含有接收具有一第二長度的一第二資料;取得該第二資料之一編碼資料片段;根據該編碼資料片段,由該第二資料中,取得具有一第二特定長度的至少一壓縮資料片段及具有一第一特定長度之至少一非可壓縮資料片段;將該至少一壓縮資料片段,還原為具有該第一特定長度,且具有全相同資料值的至少一可壓縮資料片段;以及依序合併具有該第一特定長度之該至少一可壓縮資料片段及該至少一非可壓縮資料片段,以產生具有一第一長度的第一資料;其中,該第二特定長度小於該第一特定長度。
本發明另揭露一種解碼裝置,包含有一處理器;一儲存裝置,儲存有一程式碼,該程式碼用來指示該處理器執行以下步驟:接收具有一第二長度的一第二資料;取得該第二資料之一編碼資料片段;根據該編碼資料片段,由該第二資料中,取得具有一第二特定長度的至少一壓縮資料片段及具有一第一特定長度之至少一非可壓縮資料片段;將該至少一壓縮資料片段,還原為具有該第一特定長度,且具有全相同資料值的至少一可壓縮資料片段;以及依序合併具有該第一特定長度之該至少一可壓縮資料片段及該至少一非可壓縮資料片段,以產生具有一第一長度的第一資料;其中,該第二特定長度小於該第一特定長度。
請參考第1圖,第1圖為本發明實施例之一編碼(encoding)流程10之示意圖。編碼流程10可用來對一原始資料X進行編碼而得一編碼資料Y,並包含有以下步驟:
步驟100:接收具有第一長度n之原始資料X。
步驟102:將原始資料X分割為具有一第一特定長度b之複數個資料片段SEG1-SEGk。
步驟104:由複數個資料片段SEG1-SEGk中,取得具有全相同資料值之至少一可壓縮資料片段SEG_cs及不具有全相同資料值之至少一非可壓縮資料片段SEG_us。
步驟106:壓縮該至少一可壓縮資料片段SEG_cs,以取得具有一第二特定長度c之至少一壓縮資料片段SEG_cs’。
步驟108:根據該至少一壓縮資料片段SEG_cs’之位置及一數量,產生一編碼資料片段SEG_enc。
步驟110:依序合併該至少一壓縮資料片段SEG_cs’、該至少一非可壓縮資料片段SEG_us及該編碼資料片段SEG_enc,以產生具有一第二長度(n+a)之編碼資料Y。
步驟112:結束。
其中,該第二特定長度c小於該第一特定長度b。
相對應地,請參考第2圖,第2圖為本發明實施例之一解碼(decoding)流程20之示意圖。解碼流程20可用來對編碼流程10所得之編碼資料Y進行解碼,而還原得到原始資料X,並包含有以下步驟:
步驟200:開始。
步驟202:接收具有第二長度(n+a)之編碼資料Y。
步驟204:取得編碼資料Y之一編碼資料片段SEG_enc。
步驟206:根據編碼資料片段SEG_enc,由編碼資料Y中,取得具有第二特定長度c的至少一壓縮資料片段SEG_cs’及具有第一特定長度b之至少一非可壓縮資料片段SEG_us。
步驟208:將至少一壓縮資料片段SEG_cs’還原為具有第一特定長度b,且具有全相同資料值的至少一可壓縮資料片段SEG_cs。
步驟210:依序合併具有第一特定長度b之至少一可壓縮資料片段SEG_cs及至少一非可壓縮資料片段SEG_us,以產生具有第一長度n的原始資料X。
步驟212:結束。
其中,該第二特定長度c小於該第一特定長度b。
首先,根據流程10,本發明係先將長度為n位元的原始資料X分割為長度b之資料片段SEG1-SEGk,再將資料片段SEG1-SEGk中具有全相同資料值之可壓縮資料片段SEG_cs壓縮為長度較短的壓縮資料片段SEG_cs’。接著,根據壓縮資料片段SEG_cs’的數量及位置,產生編碼資料片段SEG_enc以指示壓縮資料片段SEG_cs’的數量及位置,並合併壓縮資料片段SEG_cs’、非可壓縮資料片段SEG_us及編碼資料片段SEG_enc以得到總長度(n+a)的編碼資料Y。
對應地,根據流程20,在進行解碼時,係先取得總長度(n+a)位元的編碼資料Y中之編碼資料片段SEG_enc,再據以取得編碼資料Y中的至少一壓縮資料片段SEG_cs’及非可壓縮資料片段SEG_us。接著,壓縮資料片段SEG_cs’可被還原為具有全相同資料值的至少一可壓縮資料片段SEG_cs,並可與非可壓縮資料片段SEG_us進一步合併還原為原本的原始資料X。
簡單而言,相較於習知編碼方法在資料傳輸上會有較多的額外位元浪費或具有過長的連續相同值,造成解碼時還原時脈或資料的困難,本發明之編碼方法可有效利用壓縮原始資料中相同資料值所節省的資料空間,並以較少的額外加入位元進行編碼,以降低傳輸上的成本支出,亦可減少連續1或0的位元數量,使傳輸更有效率並減輕接收端時脈與資料回復電路的系統需求。
詳細而言,請參考第3圖,第3圖為第1圖之編碼流程10及第2圖之解碼流程20用於將長度n位元的原始資料X轉換為長度(n+a)的資料Y之示意圖。如第3圖所示,在編碼時,原始資料X包含長度(n-b)位元之非可壓縮資料SEG_us及一長度b位元的可壓縮資料片段SEG_cs,其可在編碼過程中被壓縮成一長度c位元的壓縮資料片段SEG_cs’。如此一來,加入a個額外位元的編碼後所得的編碼資料Y中,將可節省(b-c)個位元。因此,將有(b-c+a)個位元可作為編碼資料片段SEG_enc,其可在解碼過程中,指示在編碼資料Y中有多少個壓縮的資料片段SEG_cs’需被還原回原始資料X的可壓縮資料片段SEG_cs等資訊。由於編碼過程中進行壓縮,節省(b-c)個位元,因此本發明將可比習知技術加入較少的額外a位元,以降低傳輸成本。在第3圖中,僅以此原始資料X包含單一個可壓縮片段SEG_cs為例說明,實際上可被壓縮的片段越多,將可留更多空間供為解碼還原資訊。
因此,第1、2圖之編碼流程10及解碼流程20可在編碼過程中,壓縮原始資料中具有重複0或1的片段,以有效利用額外加入之位元,以降低傳輸上的成本支出,也可減少連續1或0的位元數量,使傳輸更有效率並減輕接收端時脈與資料回復電路的系統需求。需注意的是,本領域技術人員可將編碼流程10及解碼流程20用於不同長度的資料,亦可有不同的分割方式,以符合不同應用的需求。
舉例來說,請參考表1-1及表1-2,表1-1及表1-2為第1圖所示編碼流程10用於一16位元/17位元(16B/17B)編碼方法之編碼表。如表1-1及表1-2所示,長度為16位元的原始資料X[0:15]可被編碼轉換至長度為17位元的編碼資料Y[0:16](即編碼時只需在16位元的資料加入一額外位元,a=1)。因此,表1-1及表1-2所示的16B/17B編碼方法中加入1位元的額外資料進行編碼,因此造成的編碼位元浪費(overhead)僅為1/17=5.88%,並且至多僅可能出現7個連續0或1的同樣符號(Continuous Identical Digit,CID)。
表1-1及表1-2中列出16位元長的原始資料X[0:15]的各種可能情形下對應的編碼結果。其中d0-d15分別代表編碼前的原始資料X[0:15]的各位元資料值,而Y0-Y16則分別代表編碼後編碼資料Y[0:16]的各位元資料值,而表中每一列尾端的二元序列即代表每一中情形下應附加的編碼資料片段SEG_enc。在此實施例中,編碼時可先將原始資料X[0:15]分割為四個4位元長的資料片段SEG1-SEG4(b=4),其中SEG1=X[0:3](即原始資料X[0:15]的前四位元),以此類推SEG2=X[4:7]、SEG3=X[8-11]及SEG4=X[12-15]。
舉例而言,表1-1及表1-2中的情形1即代表原始資料X[0:15]之各資料片段SEG1-SEG4皆無出現全0或全1的狀況(即資料片段SEG1-SEG4皆為非可壓縮資料片段SEG_us),如X[0:15]={1011001010100110},而SEG1-SEG4={1011}、{0010}、{1010}、{0110}。在此情況下,編碼時可不經壓縮,直接在原始資料X[0:15]後加上一額外位元的編碼資料片段SEG_enc={0},以指示原始資料X[0:15]中並無壓縮資料片段SEG_cs’,並產生編碼後的編碼資料Y[0:16]={X[0:15],0}={10110010101001100}。
另一方面,在表1-1及表1-2中的情形4中,原始資料X[0:15]中之資料片段SEG2出現全0或全1的資料(即原始資料X[0:15]包含一個可壓縮資料片段SEG_cs),例如X[0:15]={1011000010100110},而SEG1-SEG4={1011}、{0000}、{1010}及{0110}。此時,由於其內容為全0,片段SEG2即為一可壓縮資料片段SEG_cs,而其餘資料片段SEG1、SEG3及SEG4則為非可壓縮資料片段SEG_us。因此,在編碼時可將片段SEG2={d4,d5,d6,d7}壓縮為長度1位元(c=1)的壓縮資料片段SEG2’={d4}={0},以一位元之資料代替原本內容重複的片段SEG2。如此一來,在依序合併SEG1、SEG2’、SEG3、SEG4後,編碼資料Y[0:16]將仍有Y[13:16]等4位元的空間可供編碼資料片段SEG_enc使用。在本實施例中,可將編碼資料片段SEG_enc設定為{0011},以指示編碼資料Y[0:16]含有一個壓縮片段SEG_cs’,且為四個片段SEG1-SEG4中的第二片段SEG2。故原始資料X[0:15]={1011000010100110}編碼後將得Y[0:16]={10110101001100011}。
另一方面,如表1-1及表1-2中的情形10顯示,原始資料X[0:15]中亦有可能有兩個全0或全1的資料片段片段SEG2、SEG3(即具有兩個可壓縮資料片段SEG_cs),如原始資料X[0:15]為{1011000011110110},而SEG1-SEG4={1011}、{0000}、{1111}、{0110}。此時,由於其內容分別為全0及全1,片段SEG2及SEG3為可壓縮資料片段SEG_cs,而其餘資料片段SEG1及SEG4則為非可壓縮資料片段SEG_us。因此,在編碼時可將片段SEG3={d8,d9,d10,d11}壓縮為長度1位元的壓縮片段SEG3’={d8}={1},而將片段SEG2={d4,d5,d6,d7}壓縮為長度2位元(c=2)的壓縮片段SEG2’={d4,d4’}={01}。此處插入d4的補數(complement),可避免出現連續8個相同符號(CID=8)的情形(例如SEG1={1000}、SEG2’={0}、SEG3’={0}及SEG4={0001})。如此一來,在依序合併片段SEG1、SEG2’、SEG3’、SEG4後得編碼後的編碼資料Y[0:16]將仍有Y[11:16]等6位元的空間可供編碼資料片段SEG_enc使用。在本實施例中,可將編碼資料片段SEG_enc設定為{101001},以指示編碼資料Y[0:16]中包含有兩個壓縮片段,其分別位於四個片段SEG1-SEG4中第二及第三的位置。
另外,請參考表1-1及表1-2中的情形2。在編碼時,編碼資料片段SEG_enc的設定也必須考慮其他可能會使連續相同符號超過7的特例情形。例如,當原始資料X[0:15]={0001001010101000},則四個片段SEG1-SEG4={0001}、{0010}、{1010}、{1000}皆為非可壓縮片段,若此時將編碼片段設為SEG_enc=[0],則編碼後編碼資料Y[0:16]的末四碼Y[13:16]={0000}。接著,若下個編碼前的第一資料為X[0:15]={0000000110111010}(編碼表中的情形3),則編碼後的第二資料將為Y[0:16]={00001101110100001},其前四碼Y[0:3]亦為{0000}。因此,兩個編碼後的第二資料前後連結合併後將造成連續八個相同符號(CID=8)的情形。上述情形中,可將具有四個非可壓縮片段的原始資料X[0:15]編碼後的編碼資料Y[0:16]的末四碼Y[13:16]={0000}替換為另一特定序列,如{1001}(表1-1及表1-2中的情形2)。
詳細而言,第4A、4B圖為表1-1及表1-2所示16位元/17位元(16B/17B)編碼方法之編碼及解碼詳細流程示意圖。如第4A圖所示,收到原始資料X[0:15]後,先分別判斷資料片段SEG1-SEG4是否為可壓縮片段SEG_cs,而判斷結果可表示為SEG_cs[0:3]。接著,若SEG_cs[0:3]={0000},則代表X[0:15]無可壓縮的片段,故應屬表1-1及表1-2中的情形1或情形2。因此,可進一步判斷SEG4=X[12:15]是否符合前述會造成CID=8的特例資料片段{1000}。若是,則判斷應根據表1-1及表1-2中的情形2進行編碼,若否,則屬於情形1。接著,若SEG_cs[0:3]並非全0(代表存在至少一個可壓縮片段),則進一步根據SEG_cs[0:3]判斷剩餘的15種可能,其分別對應至表1-1及表1-2中的情形3至情形17。詳細而言,若SEG_cs[0:3]僅有一“1”值(如{1000}、{0100}、{0010}或{0001})則對應於表1-1及表1-2之情形3至情形6。若SEG_cs[0:3]有兩個1值(如{1100}、{1010}、{1001}、{0110}、{0101}或{0011})則對應於表1-1及表1-2之情形7至情形12。若SEG_cs[0:3]有三個1值({1110}、{1101}、{1011}或{0111})則對應於表1-1及表1-2之情形13至情形16。最後,若SEG_cs[0:3]全為1值,則對應於表1-1及表1-2之情形17。舉例而言,若接收到X[0:15]={0000000110111111},則SEG_cs[0:3]={1001},對應於表1-1及表1-2中的情形9,而編碼後Y[0:16]應為{01000110111001101}。
接著,如第4B圖所示,於解碼時,收到解碼後的編碼資料Y[0:16]後,可先擷取其末碼Y[16],若Y[16]=0,則可判斷資料中無壓縮片段,並知其對應於表1-1及表1-2之情形1。若Y[16]=1,則進一步擷取Y[12:15]以判斷是否為表1-1及表1-2中的特例情形2。若Y[12:15]符合特例片段{1100},則應依據特例情形2進行解碼還原。若否,則進一步依序比較Y[10:13]之各位元,以判斷資料中包含有多少個壓縮片段及其位置。若Y[13]=0,則代表資料中僅包含有一組可壓縮片段,此時可進一步根據Y[14,15]判斷應為表1-1及表1-2中的情形3至情形6之何者。接著,若Y[13]=1且Y[12]=0,則代表資料中包含有兩組可壓縮片段,此時可進一步根據Y[11,14,15]判斷應為表1-1及表1-2中的情形7至情形12之何者。若Y[12,13]=1但Y[11]=0,則代表資料中包含有三組可壓縮片段,此時可進一步根據Y[10,14]判斷應為表1-1及表1-2中的情形13至情形16之何者。最後,若Y[11:13]=1但Y[10]=0,則代表原資料中四組片段SEG1-SEG4皆為可壓縮片段,其對應於表1-1及表1-2中的情形17。舉例而言,若接收到Y[0:16]={01101010110011011},則可判斷Y[17]=1且Y[12,13]={11}但Y[11]=0且Y[14:15]不等於{00}(確定不是情形2),應對應於表1-1及表1-2中的情形13至情形16之其中之一。由於Y[10,14]={00},故為表1-1及表1-2中的情形13。因此原本資料X[0:15]應還原為{0000111111111011}。
然而,上述16B/17B編碼方法僅為本發明一實施例,實際上本發明之編碼流程10、解碼流程20可用於不同長度之資料的編解碼。請繼續參考表2,表2為本發明實施例一12位元/13位元(12B/13B)編碼方法的編碼表。表2所示的12B/13B編碼方法僅在12位元的資料中加入1位元的額外資料進行編碼,因此可達成的位元浪費(overhead)僅為1/13=7.7%,並且至多僅可能6個連續出現0或1的同樣符號(CID=6)。
於上述實施例之16B/17B編碼方法及12B/13B編碼方法中,係先將資料群組為等長度的複數個資料片段(如皆為4位元的資料片段),然而亦可視不同應用有所變化。請繼續參考表3-1及表3-2,表3-1及表3-2為根據本發明實施例一24位元/25位元(24B/24B)編碼方法的編碼表。如表3-1及表3-2所示,在此實施例中,係將欲編碼資料X[0:23]先依照4、5、5、5、5位元的方法進行群組分割,亦即分為5個資料片段SEG1-SEG5,其中SEG1=X[0:3]、SEG2=X[4:8]、SEG3=X[9:13],以此類推。表3-1及表3-2所示的24B/24B編碼方法僅在24位元的資料中加入1位元的額外資料進行編碼,因此可達成的位元浪費(overhead)僅為1/25=4%,並且至多僅可能9個連續出現0或1的同樣符號(CID=9)。
更進一步地,表4為本發明實施例之不同編碼方法與先前技術之編碼技術之表較示意圖。如表4所示,習知8B/10B編碼方法雖僅有至多5個連續相同符號(CID=5),但位元浪費率高達20%。而習知64B/65B編碼方法雖僅有3%的位元浪費率,但最高可達65個連續相同符號。相較之下,本發明在不同實施例中,僅需增加一個額外位元,即可實現不同資料長度的編碼方法,且皆具有適中的位元浪費率及連續相同符號。例如本發明實施例之24B/25B編碼方法、12B/13B編碼方法及16B/17B編碼方法僅具有皆遠低於於習知8B/10B編碼方法20%的位元浪費率,且亦有遠低於習知64B/65B編碼方法之最長連續65個相同符號。
關於編碼流程10及解碼流程20的實現,可參考第5圖。第5圖為本發明實施例一編碼/解碼裝置50之示意圖。編碼/解碼裝置50包含有一處理單元500、一儲存單元502及一程式碼504。程式碼504儲存於儲存單元502中,用以實現編碼流程10及解碼流程20,以指示處理單元500執行對應於編碼流程10及解碼流程20之功能及相關變化,從而處理編碼/解碼裝置50所接收之原始資料X,並編碼產生編碼資料Y,或將接收編碼資料Y,以解碼還原為原始資料X。透過程式碼504實現編碼流程10及解碼流程20之技藝應係本領域具通常知識者所熟知,在此不贅述。值得注意的是,編碼/解碼裝置50之處理單元500及儲存單元502可透過硬體、軟體、韌體等方式實現,不在此限。編碼/解碼裝置50可用各式通訊裝置或其他不同電子產品中。
需注意的是,本發明的精神在於利用壓縮原始資料中相同資料值所節省的資料空間,以較少的額外加入位元進行編碼,以降低傳輸上的成本支出,併減少連續1或0的位元數量,使傳輸更有效率。本領域具通常知識者當可據以進行修飾或變化,不在此限。例如,將原始資料分割的方法不限於等分分割,而分割長度亦無限定。若已知原始資料中含有大量的連續符號,則可將分割長度增長,以達成更佳的空間節省。而編碼資料片段的內容亦可依不同方式安排,前提是須考慮到前後編碼資料合併時造成過長的連續相同符號。另外,在其他實施例中,亦不限將多個壓縮片段以互補資料值分隔。
綜上所述,相較於習知編碼方法在資料傳輸上會有較多的額外位元浪費或具有過長的連續相同值,造成解碼時還原時脈或資料的困難,本發明之編碼方法可有效利用壓縮原始資料中相同資料值所節省的資料空間,並以較少的額外加入位元進行編碼,以降低傳輸上的成本支出,亦可減少連續1或0的位元數量,使傳輸更有效率並減輕接收端時脈與資料回復電路的系統需求。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
X...原始資料
Y...編碼資料
SEG_cs...可壓縮資料片段
SEG_cs’...壓縮資料片段
SEG_enc...編碼資料片段
50...編碼/解碼裝置
500...處理單元
502...儲存單元
504...程式碼
第1圖為本發明一編碼流程之示意圖。
第2圖為本發明一解碼流程之示意圖。
第3圖為第1圖之編碼流程及第2圖之解碼流程之用於一資料的示意圖。
第4A圖為本發明實施例之編碼方法的編碼流程之示意圖。
第4B圖為本發明實施例之解碼方法的解碼流程之示意圖。
第5圖為本發明實施例一編碼/解碼裝置之示意圖。
X...原始資料
Y...編碼資料
SEG_us...非可壓縮資料片段
SEG_cs...可壓縮資料片段
SEG_cs’...壓縮資料片段
SEG_enc...編碼資料片段
Claims (20)
- 一種編碼方法,包含有:接收具有一第一長度之一第一資料;將該第一資料分割為具有一第一特定長度之複數個資料片段;由該複數個資料片段中,取得具有全相同資料值之至少一可壓縮資料片段及不具有全相同資料值之至少一非可壓縮資料片段;壓縮該至少一可壓縮資料片段,以取得具有一第二特定長度之至少一壓縮資料片段;根據該至少一壓縮資料片段之位置及一數量,產生一編碼資料片段;以及依序合併該至少一壓縮資料片段、該至少一非可壓縮資料片段及該編碼資料片段,以產生具有一第二長度之一第二資料;其中,該第二特定長度小於該第一特定長度。
- 如請求項1所述之編碼方法,其中壓縮該至少一可壓縮資料片段,以取得具有該第二特定長度之該至少一壓縮資料片段之步驟,包含有:分別將該至少一可壓縮資料片段中,具有該第一特定長度之該全相同資料值,壓縮為長度為該第二特定長度之該資料值或該資料值的補數,以取得該至少一壓縮資料片段。
- 如請求項1所述之編碼方法,其中壓縮該至少一可壓縮資料片段,以取得具有該第二特定長度之該至少一壓縮資料片段之步驟,包含有:分別將該至少一可壓縮資料片段中,具有該第一特定長度之該全相同資料值,壓縮為長度為該第二特定長度一半之該資料值,並於其後加上該資料值之一互補(complement)資料值,以取得該至少一壓縮資料片段。
- 如請求項1所述之編碼方法,其中該編碼資料片段之一資料長度係為該第一長度減去該至少一可壓縮資料片段及該至少一非可壓縮資料片段之一總資料長度後,再加上至少一額外位元。
- 如請求項1所述之編碼方法,其中依序合併該至少一壓縮資料片段、該至少一非可壓縮資料片段及該編碼資料片段,以產生該第二資料之步驟,包含有:當依序合併該至少一壓縮資料片段、該至少一非可壓縮資料片段及該編碼資料片段後之資料尾端出現連續該第一特定長度之全相同資料值時,以另一特定資料片段取代該連續之全相同資料值,以產生該第二資料。
- 一種編碼裝置,包含有:一處理器;一儲存裝置,儲存有一程式碼,該程式碼用來指示該處理器執行以下步驟:接收具有一第一長度之一第一資料;將該第一資料分割為具有一第一特定長度之複數個資料片段;由該複數個資料片段中,取得具有全相同資料值之至少一可壓縮資料片段及不具有全相同資料值之至少一非可壓縮資料片段;壓縮該至少一可壓縮資料片段,以取得具有一第二特定長度之至少一壓縮資料片段;根據該至少一壓縮資料片段之位置及一數量,產生一編碼資料片段;以及依序合併該至少一壓縮資料片段、該至少一非可壓縮資料片段及該編碼資料片段,以產生具有一第二長度之一第二資料;其中,該第二特定長度小於該第一特定長度。
- 如請求項6所述之編碼裝置,其中該處理器係分別將該至少一可壓縮資料片段中,具有該第一特定長度之該全相同資料值,壓縮為長度為該第二特定長度之該資料值,以取得該至少一壓縮資料片段。
- 如請求項6所述之編碼裝置,其中該處理器係分別將該至少一可壓縮資料片段中,具有該第一特定長度之該全相同資料值,壓縮為長度為該第二特定長度一半之該資料值,並於其後加上該資料值之一互補(complement)資料值,以取得該至少一壓縮資料片段。
- 如請求項6所述之編碼裝置,其中該編碼資料片段之一資料長度係為該第一長度減去該至少一可壓縮資料片段及該至少一非可壓縮資料片段之一總資料長度後,再加上一額外位元。
- 如請求項6所述之編碼裝置,其中當該處理器依序合併該至少一壓縮資料片段、該至少一非可壓縮資料片段及該編碼資料片段後之資料尾端出現連續該第一特定長度之全相同資料值時,該處理器係以另一特定資料片段取代該連續之全相同資料值,以產生該第二資料。
- 一種解碼方法,包含有:接收具有一第二長度的一第二資料;取得該第二資料之一編碼資料片段;根據該編碼資料片段,由該第二資料中,取得具有一第二特定長度的至少一壓縮資料片段及具有一第一特定長度之至少一非可壓縮資料片段;將該至少一壓縮資料片段,還原為具有該第一特定長度,且具有全相同資料值的至少一可壓縮資料片段;以及依序合併具有該第一特定長度之該至少一可壓縮資料片段及該至少一非可壓縮資料片段,以產生具有一第一長度的第一資料;其中,該第二特定長度小於該第一特定長度。
- 如請求項11所述之解碼方法,其中將該至少一壓縮資料片段,還原為具有該第一特定長度,且具有全相同資料值的該至少一可壓縮資料片段之步驟,包含有:分別取得該至少一壓縮資料片段中每一壓縮資料片段的一資料值,並以連續該第一特定長度的該資料值,作為該至少一可壓縮資料片段。
- 如請求項11所述之解碼方法,其中將該至少一壓縮資料片段,還原為具有該第一特定長度,且具有全相同資料值的至少一該可壓縮資料片段之步驟,包含有:分別取得該至少一壓縮資料片段中每一壓縮資料片段的一資料值及一互補(complement)資料值,並以連續該第一特定長度的該每一資料值,作為該至少一可壓縮資料片段。
- 如請求項11所述之解碼方法,其中該編碼資料片段係用來指示該至少一壓縮資料片段位於該第一資料中之位置及一數量,且該編碼資料片段之一資料長度係為該第一長度減去該至少一可壓縮資料片段及該至少一非可壓縮資料片段之一總資料長度後,再加上一額外位元。
- 如請求項11所述之解碼方法,其中接收具有該第二長度的該第二資料的方法,包含有:當該第二資料之尾端呈現一特定資料片段時,將該特定資料片段取代為具有該第一特定長度之連續全相同資料值的一資料片段。
- 一種解碼裝置,包含有:一處理器;一儲存裝置,儲存有一程式碼,該程式碼用來指示該處理器執行以下步驟:接收具有一第二長度的一第二資料;取得該第二資料之一編碼資料片段;根據該編碼資料片段,由該第二資料中,取得具有一第二特定長度的至少一壓縮資料片段及具有一第一特定長度之至少一非可壓縮資料片段;將該至少一壓縮資料片段,還原為具有該第一特定長度,且具有全相同資料值的至少一可壓縮資料片段;以及依序合併具有該第一特定長度之該至少一可壓縮資料片段及該至少一非可壓縮資料片段,以產生具有一第一長度的第一資料;其中,該第二特定長度小於該第一特定長度。
- 如請求項16所述之解碼裝置,其中該處理器係分別取得該至少一壓縮資料片段中每一壓縮資料片段的一資料值,並以連續該第一特定長度的該資料值,作為該至少一可壓縮資料片段。
- 如請求項16所述之解碼裝置,其中該處理器係分別取得該至少一壓縮資料片段中每一壓縮資料片段的一資料值及一互補(complement)資料值,並以連續該第一特定長度的該每一資料值,作為該至少一可壓縮資料片段。
- 如請求項16所述之解碼裝置,其中該編碼資料片段係用來指示該至少一壓縮資料片段位於該第一資料中之位置及一數量,且該編碼資料片段之一資料長度係為該第一長度減去該至少一可壓縮資料片段及該至少一非可壓縮資料片段之一總資料長度後,再加上一額外位元。
- 如請求項16所述之解碼裝置,其中當該第二資料之尾端呈現一特定資料片段時,該處理器係將該特定資料片段取代為具有該第一特定長度之連續全相同資料值的一資料片段。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101111828A TW201342813A (zh) | 2012-04-03 | 2012-04-03 | 資料編碼及解碼方法與裝置 |
US13/855,730 US20130257634A1 (en) | 2012-04-03 | 2013-04-03 | Data Encoding and Decoding Method and Device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101111828A TW201342813A (zh) | 2012-04-03 | 2012-04-03 | 資料編碼及解碼方法與裝置 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201342813A true TW201342813A (zh) | 2013-10-16 |
Family
ID=49234166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101111828A TW201342813A (zh) | 2012-04-03 | 2012-04-03 | 資料編碼及解碼方法與裝置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20130257634A1 (zh) |
TW (1) | TW201342813A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110383726A (zh) * | 2017-03-09 | 2019-10-25 | 华为技术有限公司 | 用于长ldpc码的mcs |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5686912A (en) * | 1995-05-08 | 1997-11-11 | Hewlett-Packard Company | Data compression method and apparatus with optimized transitions between compressed and uncompressed modes |
US7164802B2 (en) * | 2002-11-14 | 2007-01-16 | Zoran Corporation | Method for image compression by modified Huffman coding |
US8217813B2 (en) * | 2010-04-29 | 2012-07-10 | Advanced Micro Devices, Inc. | System and method for low-latency data compression/decompression |
-
2012
- 2012-04-03 TW TW101111828A patent/TW201342813A/zh unknown
-
2013
- 2013-04-03 US US13/855,730 patent/US20130257634A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20130257634A1 (en) | 2013-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100894002B1 (ko) | 선택적 압축과 복원 및 압축 데이터에 대한 데이터 포맷을위한 장치 및 방법 | |
CN106560010B (zh) | Vlsi高效霍夫曼编码设备和方法 | |
JPS6148298B2 (zh) | ||
KR101610609B1 (ko) | 데이터 인코더, 데이터 디코더 및 방법 | |
WO2014131517A1 (en) | Encoder, decoder and method | |
JP2002305450A (ja) | 10進数を2進数にエンコード/デコードする方法 | |
JP5656593B2 (ja) | 符号化データを復号する装置及び方法 | |
JPS6376525A (ja) | 算術符号化システムにおける確率適応化方法 | |
JP4758494B2 (ja) | ビット長を符号に変換する回路及び方法 | |
EP4216442A1 (en) | Generalized near optimal packet encoding | |
TW201342813A (zh) | 資料編碼及解碼方法與裝置 | |
WO2020186535A1 (zh) | 点云属性编码方法和装置以及点云属性解码方法和装置 | |
KR100636370B1 (ko) | 결정 비트를 이용한 부호화 장치 및 그 방법과 그에 따른복호화 장치 및 그 방법 | |
US7683809B2 (en) | Advanced lossless bit coding | |
US6573847B1 (en) | Multi-table mapping for huffman code decoding | |
KR101549740B1 (ko) | 이진 데이터의 압축 및 압축해제 방법과 장치 | |
CN115314185A (zh) | 编码器和解码器 | |
TW447195B (en) | A run-length decoder with error concealment capability | |
US8854235B1 (en) | Decompression circuit and associated compression method and decompression method | |
KR101733299B1 (ko) | 이진데이터의 실시간 압축 및 압축해제 방법 | |
JP4953145B2 (ja) | 文字列データ圧縮装置及びその方法並びに文字列データ復元装置及びその方法 | |
KR101670606B1 (ko) | 이진데이터의 압축 및 압축해제 방법 | |
KR102361730B1 (ko) | 데이터 압축 방법 및 장치 | |
US11632127B2 (en) | Near-optimal transition encoding codes | |
KR100686354B1 (ko) | 가변 트리를 이용한 허프만 복호화 방법 및 장치 |