(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022173081
(43)【公開日】2022-11-17
(54)【発明の名称】符号器および復号器
(51)【国際特許分類】
H03M 7/14 20060101AFI20221110BHJP
【FI】
H03M7/14 A
【審査請求】未請求
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2022064575
(22)【出願日】2022-04-08
(31)【優先権主張番号】63/185,190
(32)【優先日】2021-05-06
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/389,146
(32)【優先日】2021-07-29
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】512187343
【氏名又は名称】三星ディスプレイ株式會社
【氏名又は名称原語表記】Samsung Display Co.,Ltd.
【住所又は居所原語表記】1, Samsung-ro, Giheung-gu, Yongin-si, Gyeonggi-do, Republic of Korea
(74)【代理人】
【識別番号】110002619
【氏名又は名称】弁理士法人PORT
(72)【発明者】
【氏名】アリアザム アバスファー
(57)【要約】 (修正有)
【課題】0連続及び1連続の数を制限することで通信品質を向上させる符号器及び復号器を提供する。
【解決手段】符号器は、元データを受信し、元データを複数の元q-ビットワードに分割し、複数の元q-ビットワードからのN個の元q-ビットワードを含むデータパケットを組み立て、N個の元q-ビットワードの値中にない第1符号器値D1および第2符号器値D2を識別し、第1符号器値D1及び第2符号器値D2に基づいたq-ビット元値からq-ビット符号化値への一対一の写像に応じて、N個の元q-ビットワードを符号化してN個の符号化q-ビットペイロードワードを生成し、第1符号器値D1及び第2符号器値D2を示すキーを生成し、キー及びN個の符号化q-ビットペイロードワードを伝送し、N個の符号化q-ビットペイロードワードは、全部0のワードと全部1のワードを含まない。
【選択図】
図5
【特許請求の範囲】
【請求項1】
処理回路を含む符号器であって、
前記処理回路は、
元データ(original data)を受信し、
前記元データを複数の元q-ビットワード(word)に分割し、
前記複数の元q-ビットワードからのN個の元q-ビットワードを含むデータパケットを組み立て、
前記N個の元q-ビットワードの値中にない第1符号器値D1および第2符号器値D2を識別し、
前記第1符号器値D1および前記第2符号器値D2に基づいたq-ビット元値からq-ビット符号化値への一対一の写像に応じて、前記N個の元q-ビットワードを符号化してN個の符号化q-ビットペイロード(payload)ワードを生成し、
前記第1符号器値D1および前記第2符号器値D2を示すキーを生成し、
前記キーおよび前記N個の符号化q-ビットペイロードワードを伝送し、
前記N個の符号化q-ビットペイロードワードは、全部0(all-zeroes)のワードと全部1(all-ones)のワードを含まない、
符号器。
【請求項2】
前記処理回路は、q-ビット元値xを前記第1符号器値D1および前記第2符号器値D2と比較した結果に基づいて、前記q-ビット元値xを前記q-ビット符号化値x’に符号化する、
請求項1に記載の符号器。
【請求項3】
前記第1符号器値D1および前記第2符号器値D2は、q-1長さのプレフィックス(prefix)が一致し、
計算値(computed value)Eは、前記第1符号器値D1のq-1 MSB(most significant bits)に対応し、
前記キーは、前記第1符号器値D1および前記第2符号器値D2を示す前記計算値Eを含む、
請求項1に記載の符号器。
【請求項4】
前記処理回路は、q-ビット元値xと前記計算値Eとを排他的論理和演算(exclusive or operation)で計算することによって、前記q-ビット元値xをq-ビット符号化値x’に符号化する、
請求項3に記載の符号器。
【請求項5】
前記q-ビット元値が有し得る2q個の値のスペース(space)は、複数の群に分けられ、各群は、複数の互いに異なり連続するq-ビット元値を含み、
前記処理回路は、
前記複数の群の中で、前記N個の元q-ビットワードの値中にない2個のq-ビット元値を有する1つの群を識別し、
前記1つの群内にある前記2個のq-ビット元値のうちの1つを前記第1符号器値D1として識別し、前記1つの群内にある前記2個のq-ビット元値のうちの他の1つを前記第2符号器値D2として識別することによって、
前記第1符号器値D1および前記第2符号器値D2を識別する、
請求項1に記載の符号器。
【請求項6】
前記q-ビット元値が有し得る2q個の値のスペースは、G個の群に分けられ、
Nは、2q-G-1以下である、
請求項5に記載の符号器。
【請求項7】
前記各群は、連続する値を3個まで含み、
前記処理回路は、前記1つの群内にある3個の値の中で、中間値を前記第1符号器値D1および前記第2符号器値D2を示す計算符号器値(computed encoder value)Eとして選択する、
請求項5に記載の符号器。
【請求項8】
前記処理回路は、q-ビット元値xと前記計算符号器値Eとを比較した結果に応じて、前記q-ビット元値xをq-ビット符号化値x’に符号化する、
請求項7に記載の符号器。
【請求項9】
各群は、2r個の値を含み、
前記第1符号器値D1および前記第2符号器値D2は、q-r MSB(most significant bits)を共有し、
前記処理回路は、
前記第1符号器値D1のr LSB(least significant bits)および前記第2符号器値D2のr LSBを2r-1ビットを用いて符号化してLSBコードを生成し、
前記q-r MSBを前記LSBコードと連鎖させることによって、
前記第1符号器値D1および前記第2符号器値D2を示す前記キーを生成し、
前記LSBコードは、少なくとも1つの遷移点(transition)を有する、
請求項5に記載の符号器。
【請求項10】
前記処理回路は、
前記q-r MSBを第1部分と第2部分とに分け、
前記LSBコードを前記q-r MSBの前記第1部分と前記第2部分との間に連鎖させることによって、
前記第1符号器値D1および前記第2符号器値D2を示す前記キーを生成する、
請求項9に記載の符号器。
【請求項11】
前記キーは、ヘッダとして伝送される、請求項1に記載の符号器。
【請求項12】
処理回路を含む復号器であって、
前記処理回路は、
キーおよびN個の符号化q-ビットペイロードワードを受信し、
前記キーから第1符号器値D1および第2符号器値D2を示すキーを復号化し、
前記第1符号器値D1および前記第2符号器値D2に基づいたq-ビット符号化値からq-ビット元値への一対一の写像に応じて、前記N個の元q-ビットワードを復号化してN個の復号化元q-ビットワードを生成する、
復号器。
【請求項13】
前記処理回路は、q-ビット符号化値x’を前記第1符号器値D1および前記第2符号器値D2と比較した結果に基づいて、前記q-ビット符号化値x’を前記q-ビット復号化値xに復号化する、
請求項12に記載の復号器。
【請求項14】
前記キーは、q-1ビット値Eを含み、
前記処理回路は、前記第1符号器値D1のq-1 MSB(most significant bits)を前記q-1ビット値Eに設定し、前記第1符号器値D1のLSB(least significant bit)を0に設定することによって前記第1符号器値D1を復号化し、
前記処理回路は、前記第2符号器値D2のq-1 MSBを前記q-1ビット値Eに設定し、前記第2符号器値D2のLSB(least significant bit)を1に設定することによって前記第2符号器値D2を復号化する、
請求項12に記載の復号器。
【請求項15】
前記キーは、q-1ビット値Eを含み、
前記処理回路は、q-ビット符号化値x’と前記q-1ビット値Eとの排他的論理和演算(exclusive or operation)の結果に応じて、前記q-ビット符号化値x’をq-ビット元値xに復号化する、
請求項12に記載の復号器。
【請求項16】
前記q-ビット元値が有し得る2q個の値のスペースは、複数の群に分けられ、各群は、複数の互いに異なり連続するq-ビット元値を含み、
前記各群は、連続する値を3個まで含み、
前記処理回路は、前記q-1ビット値Eに対する残りの演算(modulo operation)の結果に応じて、前記第1符号器値D1および前記第2符号器値D2を復号化する、
請求項12に記載の復号器。
【請求項17】
前記処理回路は、q-ビット符号化値x’と前記q-1ビット値Eとを比較した結果に応じて、前記q-ビット符号化値x’をq-ビット元値xに復号化する、
請求項16に記載の復号器。
【請求項18】
前記q-ビット元値が有し得る2q個の値のスペースは、複数の群に分けられ、各群は、2r個の互いに異なり連続するq-ビット元値を含み、
前記第1符号器値D1と前記第2符号器値D2は、q-r MSB(most significant bits)を共有し、
前記処理回路は、
前記キーから2r-1ビットLSB(least significant bits)コードを読み、
前記LSBコードを第1LSBと第2LSBに復号化し、
前記キーから前記q-r MSBを読み、
前記q-r MSBを前記第1LSBと連鎖させて前記第1符号器値D1を復号化し、
前記q-r MSBを前記第2LSBと連鎖させて前記第2符号器値D2を復号化することによって、
前記キーから前記第1符号器値D1および前記第2符号器値D2を復号化する、
請求項12に記載の復号器。
【請求項19】
前記キーは、ヘッダとして受信される、請求項12に記載の復号器。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、符号器および復号器に関する。
【0002】
本出願は、2021年5月6日付で米国特許庁に出願した米国特許出願番号第63/185,190号および2021年7月29日付で米国特許庁に出願した米国特許出願番号第17/389,146号を優先権主張し、ここに引用することによってこの出願の全体内容を本願に含む。
【背景技術】
【0003】
直列データリンク(serial data link)のような電子情報通信(electronic data communications)において、発信機と受信機との間の通信はクロック再生(clock recovery)またはクロック-データ再生(CDR:clock-data recovery)方法を用いて同期化することができる。例えば、受信機は、位相同期ループ(PLL:phase-locked loop)を用いて近似周波数基準(approximate frequency reference)からクロックを生成し、CDRを用いてデータストリーム(data stream)の生成した信号を[高い信号レベル(signal level)と低い信号レベルとの間の]遷移点(transition)に位相整列する。しかし、遷移点の数が不十分で受信機が検知できないことによってデータランレングス(run length)[例:1または0の連続数列(sequence)]が特定の長さを超えると、クロック信号の再生に失敗することがある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明が解決しようとする課題は、発信機と受信機との間の通信品質を向上させることである。
【課題を解決するための手段】
【0005】
本発明の一実施例による符号器は、処理回路を含む符号器であって、処理回路は、元データ(original data)を受信し、元データを複数の元q-ビットワード(word)に分割し、複数の元q-ビットワードからのN個の元q-ビットワードを含むデータパケットを組み立て、N個の元q-ビットワードの値中にない第1符号器値D1および第2符号器値D2を識別し、第1符号器値D1および第2符号器値D2に基づいたq-ビット元値からq-ビット符号化値への一対一の写像に応じて、N個の元q-ビットワードを符号化してN個の符号化q-ビットペイロード(payload)ワードを生成し、第1符号器値D1および第2符号器値D2を示すキーを生成し、キーおよびN個の符号化q-ビットペイロードワードを伝送し、N個の符号化q-ビットペイロードワードは、全部0(all-zeroes)のワードと全部1(all-ones)のワードを含まない。
【0006】
本発明の一実施例による復号器は、処理回路を含む復号器であって、処理回路は、キーおよびN個の符号化q-ビットペイロードワードを受信し、キーから第1符号器値D1および第2符号器値D2を示すキーを復号化し、第1符号器値D1および第2符号器値D2に基づいたq-ビット符号化値からq-ビット元値への一対一の写像に応じて、N個の元q-ビットワードを復号化してN個の復号化元q-ビットワードを生成する。
【発明の効果】
【0007】
こうすることにより、符号器と復号器との間のデジタルデータの通信品質を向上させることができる。
【図面の簡単な説明】
【0008】
【
図1】本発明の一実施例による発信機と受信機との間の直列リンクの概略ブロック図であって、本発明の一実施例による発信機1は、符号器(encoder)を含み、本発明の一実施例による受信機2は、復号器(decoder)を含む。
【
図2】単極線コード(unipolar line code)を用いてデータリンク上に伝送された二進データを示したものであって、論理1値は、論理高レベル(logic-level high)(H)信号に符号化し、論理0値は、論理低レベル(logic-level low)(L)信号に符号化する。
【
図3】本発明の一実施例による1つのデータパケットの概略図である。
【
図4】本発明の一実施例による最大ランレングスを示す概略図であって、この例では、データがデータパケットに符号化すると6-ビットワード(q=6)になる。
【
図5】本発明の一実施例により元データを符号化してデータパケットを生成する方法を示すフローチャートである。
【
図6】本発明の一実施例による、符号器値に基づいた元ワードの4ビット値から当該符号化データへの写像を示す。
【
図7】本発明の一実施例による符号化データパケットの復号化方法を示すフローチャートである。
【
図8】本発明の一実施例による、符号器値に基づいた符号化ワードの4-ビット値から当該復号化ワードまたは元ワードへの写像を示す。
【発明を実施するための形態】
【0009】
以下の詳細な説明において、本発明の特定の実施例についてのみ例により図示および説明する。当業者であれば分かるように、本発明は種々の異なる形態で実現可能であり、ここで説明する正確な実施例に限定されない。明細書全体にわたって同一の図面符号は同一の構成要素を指す。
【0010】
本発明の実施例は、通信システムにおいてデジタルデータのランレングスを縮小または最小化するシステムおよび方法に関する。より詳しくは、本発明の一実施例によるデジタルデータ符号化システムおよび方法は、ランレングスを限定するか、デジタルデータパケットのランレングスがランレングス制限コードの形態に特定した限界以下となるようにする。
【0011】
本発明の一実施例による符号器は、処理回路を含む符号器であって、処理回路は、元データ(original data)を受信し、元データを複数の元q-ビットワード(word)に分割し、複数の元q-ビットワードからのN個の元q-ビットワードを含むデータパケットを組み立て、N個の元q-ビットワードの値中にない第1符号器値D1および第2符号器値D2を特定し、元q-ビット符号化値から第1符号器値D1および第2符号器値D2に基づいたq-ビット元値への一対一の写像に応じて、N個の元q-ビットワードを符号化してN個の符号化q-ビットペイロード(payload)ワードを生成し、第1符号器値D1および第2符号器値D2を示すキーを生成し、キーおよび前記N個の符号化q-ビットペイロードワードを伝送し、N個の符号化q-ビットペイロードワードは、全部0(all-zeroes)のワードと全部1(all-ones)のワードを含まない。
【0012】
処理回路は、q-ビット元値xを第1符号器値D1および第2符号器値D2と比較した結果に基づいて、q-ビット元値xをq-ビット符号化値x’に符号化することができる。
【0013】
本発明の一実施例によれば、第1符号器値D1および第2符号器値D2は、q-1長さのプレフィックス(prefix)が一致し、計算値(computed value)Eは、第1符号器値D1のq-1 MSB(most significant bits)に対応し、キーは、第1符号器値D1および第2符号器値D2を示す計算値Eを含むことができる。
【0014】
処理回路は、q-ビット元値xと計算値Eとを排他的論理和演算(exclusive or operation)で計算することによって、q-ビット元値xをq-ビット符号化値x’に符号化することができる。
【0015】
本発明の一実施例によれば、q-ビット元値が有し得る2q個の値のスペース(space)は、複数の群に分けられ、各群は、複数の互いに異なり連続するq-ビット元値を含み、処理回路は、第1符号器値D1と第2符号器値D2を識別するように構成されている。具体的には、処理回路は、N個の元q-ビットワードの値中にない2個のq-ビット元値を有する複数の群から1つを識別し、識別された群にある2個のq-ビット元値のうちの1つを第1符号器値D1として識別し、識別された群の中にある2個のq-ビット元値のうちの他の1つを第2符号器値D2として識別することによって、第1符号器値D1および第2符号器値D2を識別することができる。
【0016】
q-ビット元値が有し得る2q個の値のスペースは、G個の群に分けられ、Nは、2q-G-1以下であってもよい。
【0017】
本発明の一実施例によれば、各群は、連続する値を3個まで含み、処理回路は、1つの群内にある3個の値の中で、中間値を第1符号器値D1および第2符号器値D2を示す計算符号器値(computed encoder value)Eとして選択することができる。
【0018】
処理回路は、q-ビット元値xと計算符号器値Eとを比較した結果に応じて、q-ビット元値xをq-ビット符号化値x’に符号化することができる。
【0019】
本発明の一実施例によれば、各群は、2r個の値を含み、第1符号器値D1および第2符号器値D2は、q-r MSB(most significant bits)を共有し、処理回路は、第1符号器値D1のr LSB(least significant bits)および第2符号器値D2のr LSBを2r-1ビットを用いて符号化してLSBコードを生成し、q-r MSBをLSBコードと連鎖させることによって、第1符号器値D1および第2符号器値D2を示すキーを生成し、LSBコードは、少なくとも1つの遷移点(transition)を有することができる。
【0020】
処理回路は、q-r MSBを第1部分と第2部分とに分け、LSBコードを前記q-r MSBの第1部分と第2部分との間に連鎖させることによって、第1符号器値D1および第2符号器値D2を示すキーを生成することができる。
【0021】
キーは、ヘッダとして伝送される。
【0022】
処理回路は、N個の符号化q-ビットペイロードワードと、キーを含むヘッダとを含むデータパケットを送信するように構成されてもよい。
【0023】
本発明の一実施例による復号器は、処理回路を含む復号器であって、処理回路は、キーおよびN個の符号化q-ビットペイロードワードを受信し、キーから第1符号器値D1および第2符号器値D2を示すキーを復号化し、第1符号器値D1および第2符号器値D2に基づいたq-ビット符号化値からq-ビット元値への一対一の写像に応じて、N個の符号化q-ビットワードを復号化して、N個の復号化元q-ビットワードを生成する。
【0024】
本発明の一実施例によれば、処理回路は、q-ビット符号化値x’を第1符号器値D1および第2符号器値D2と比較した結果に基づいて、前記q-ビット符号化値x’をq-ビット復号化値xに復号化することができる。
【0025】
キーは、q-1ビット値Eを含み、処理回路は、第1符号器値D1のq-1 MSB(most significant bits)をq-1ビット値Eに設定し、第1符号器値D1のLSB(least significant bit)を0に設定することによって第1符号器値D1を復号化し、処理回路は、第2符号器値D2のq-1 MSBをq-1ビット値Eに設定し、第2符号器値D2のLSB(least significant bit)を1に設定することによって第2符号器値D2を復号化することができる。
【0026】
キーは、q-1ビット値Eを含み、処理回路は、q-ビット符号化値x’とq-1ビット値Eとの排他的論理和演算(exclusive or operation)の結果に応じて、q-ビット符号化値x’をq-ビット元値xに復号化することができる。
【0027】
本発明の一実施例によれば、q-ビット元値が有し得る2q個の値のスペースは、複数の群に分けられ、各群は、複数の互いに異なり連続するq-ビット元値を含み、各群は、連続する値を3個まで含み、処理回路は、q-1ビット値Eに対する残りの演算(modulo operation)の結果に応じて、第1符号器値D1および第2符号器値D2を復号化することができる。
【0028】
処理回路は、q-ビット符号化値x’とq-1ビット値Eとを比較した結果に応じて、q-ビット符号化値x’をq-ビット元値xに復号化することができる。
【0029】
本発明の一実施例によれば、q-ビット元値が有し得る2q個の値のスペースは、複数の群に分けられ、各群は、2r個の互いに異なり連続するq-ビット元値を含み、第1符号器値D1と第2符号器値D2は、q-r MSB(most significant bits)を共有し、処理回路は、キーから2r-1ビットLSB(least significant bits)コードを読み、LSBコードを第1LSBと第2LSBに復号化し、キーからq-r MSBを読み、q-r MSBを第1LSBと連鎖させて第1符号器値D1を復号化し、q-r MSBを第2LSBと連鎖させて第2符号器値D2を復号化することによって、キーから第1符号器値D1および第2符号器値D2を復号化することができる。
【0030】
キーは、ヘッダとして受信される。
【0031】
デコーダは、N個の符号化されたq-ビットペイロードワードと、鍵を含むヘッダとを含むデータパケットを受信するように構成されることができる。
【0032】
図1は、本発明の一実施例による発信機と受信機との間の直列リンクの概略ブロック図である。本発明の一実施例による発信機1は、符号器(encoder)100を含み、本発明の一実施例による受信機2は、復号器(decoder)200を含む。
図1に示した配置において、元データ(original data)10が発信機1から受信機2に伝送され、元データ10は、復号器200によって復号化データ(decoded data)18に再構築される(reconstructed)。復号化データ18は、データコンシューマ(data consumer)20によって消費される。より詳しく説明すれば、符号器100は、元データ10を符号化データ(encoded data)30に符号化し、符号化データ30は、データリンク(data link)50を介して復号器200に伝送される。復号器200は、続いて符号化データ30を復号化して復号化データ18に再構築する。
【0033】
本発明の一実施例によれば、符号器100および復号器200は、それぞれ符号化回路または符号化処理回路(encoder processing circuit)および復号化回路または復号化処理回路としてもよいし、コンピュータシステムのCPU(a central processing unit)、AP(application processor)またはAPU(application processing unit)、FPGA(field programmable gate array)、DDIC(display driver integrated circuit)のようなASIC(application specific integrated circuit)および/またはGPU(graphics processing unit)などの様々な処理回路を用いて実現することができる。例えば、符号器100および復号器200は、[例えば、スマートフォン(smartphone)、タブレットコンピュータ(tablet computer)またはラップトップコンピュータ(laptop computer)のケース(case)などの1つの外筐体(enclosure)内に統合/集積された]同一のコンピュータシステムの部分であってもよく、あるコンピュータシステムの別個の部分(例:外部モニタと通信するデスクトップコンピュータ)であってもよく、別個のコンピュータシステム[例:データリンク50を介して通信する2つの独立したコンピュータシステム]であってもよく、それともこれらを変形したものであってもよい[例えば、データリンク50を介して通信するマイクロコントローラ(microcontroller)などの専用処理回路(special purpose processing circuit)内に備えられたりもするが、マイクロコントローラは、コンピュータシステム内にある周辺装置である]。当業者であれば分かるように、符号化回路は、復号化回路と異なる種類の処理回路を用いて実現することができる。また、当業者であれば分かるように、多様な処理回路は、同一の集積回路の部品(例:1つのチップまたはSoC上の同一システムの部品)であってもよく、印刷回路基板上のピンまたは導線を介して接続可能な互いに異なる集積回路の部品であってもよい。
【0034】
具体例として、表示装置を制御するデータリンク50の場合に、発信機1は、コンピュータシステム(例:ラップトップコンピュータ、スマートフォン、タブレットコンピュータなど)のGPUまたはAPUなどの映像データを元映像として生成するグラフィック制御器(graphics controller)を含むことができる。この映像データまたは元データ10は、続いてデータリンク50を介して表示パネル[例:液晶表示パネル(liquid crystal display panel)または有機発光ダイオード表示パネル(organic light emitting diode display panel)]に伝送されるが、表示パネルは、符号化データ30を復号化映像データ18に復号化する復号器200を含む。続いて、復号化映像データ18は、受信した復号化映像データ18を信号に変換する処理回路などのデータコンシューマ20に供給されるが、この時、変換した信号は、表示パネル[例:グラフィックユーザインターフェース(graphical user interface)、ビデオ(video)および他の表示素子]を制御して復号化映像データ18が示す映像を表示するようにする。
【0035】
デジタル通信において、発信機1と受信機2は、クロック再生またはクロック-データ再生過程を用いて同期化することができる。CDR過程を用いる受信機は、一般にデータリンクの物理層上のシンボル(symbol)(例:リンク上の信号の電圧レベル)間の遷移時間を検知し、検知した遷移に基づいて受信機のクロックを位相あわせすることによって動作する。
【0036】
図2は、単極線コード(unipolar line code)を用いてデータリンク50上に伝送された二進データを示したものである。ここで、論理1値は、論理高レベル(logic-level high)(H)信号に符号化し、論理0値は、論理低レベル(logic-level low)(L)信号に符号化する。論理高レベルおよび論理低レベル信号は、それぞれ高電圧(例:5Vまたは3.3V)および低電圧(例:0V)でデータリンク50上に符号化される。
図2に示した例では、データビット数列101001110010をデータリンク50を介して伝送している。論理低レベル(L)電圧と論理高レベル(H)電圧との間の遷移点を矢印51で表した。信号が変化しない間に繰り返されたビットの区間(stretch)をラン(run)という。
図2は、52、53、54、55、56、57、58で表した7つの互いに異なるランを当該ランレングスとともに特に強調する。データビット数列101001110010に基づいて、ラン52、53、54、55、56、57、58のランレングスは、それぞれ1、1、1、2、3、2、1である。
【0037】
受信した信号が過度に長いランレングスを含むならば(例:同一の電圧レベルを有するデータシンボルの長い数列)、受信した信号にある遷移点の数が不十分なのでCDR過程が失敗することがあり、これによってクロック再生に問題が生じうる。例えば、単極(unipolar)NRZ(non-return-to-zero)符号化において、論理高レベル値(例:高電圧)を用いて1を符号化することができ、論理低レベル値(例:低電圧)を用いて0を符号化することができる。ある特定の入力データの値を直接符号化すれば、ランレングスが任意の長さになる。例えば、全部0の長い数列と全部1の長い数列は、それぞれCDRに用いる遷移点なしに連続で論理低レベル値と論理高レベル値を有する信号をもたらすことができる。上記では長さの長いランから生じる問題点について単極NRZ符号化の観点で説明したが、3以上の信号振幅レベルを有する他の種類の変調[例:3以上のレベルを有するパルス振幅変調(PAM:pulse amplitude modulation)、例えば、4つの振幅レベルを有するPAM4]にも類似の問題が生じうる。
【0038】
このように、本発明の実施例は、入力データを符号化して符号化データビットを生成するシステムおよび方法に関し、符号化データビットが制限されたランレングス(例:特に限定されたビット数より長くないランレングス)を持たせるものである。このような方式で符号化したデータのランレングスを制限すれば、復号器がCDRを行う能力が向上し、これによって発信機と受信機との間の通信リンク品質が向上する。本発明の実施例はまた、符号化データビットを復号化して元入力データを復旧するシステムおよび方法に関する。
【0039】
より正式に言えば、本発明の実施例は、伝送路符号化アルゴリズム(line coding algorithm)を用いて遷移が規則的に発生するように生データ(raw data)または元データ(original data)を符号化することによってKビットごとに遷移が起こるようにする(例:ランレングスを制限する)ものである。
【0040】
本発明の一実施例は、入力データが1つ以上のデータパケット(data packet)に符号化されるランレングス制限コード(run-length limited code)に関し、データパケットそれぞれは、複数のワード(word)を含む。次の説明では、各データパケットがN個のワード(または最大N個のワード)を含み、各ワードは、qビットである(言い換えれば、各データパケットは、最大N個のq-ビットワードを含むことができる)。
図3は、1つのデータパケットの概略図である。各データパケット31は、qNビットペイロード(payload)32を含むものとして示すことができ、b[0:qN-1]のように0からqN-1まで番号を付けたり索引を付けることができる。q-ビットワードxそれぞれは、0から2
q-1までのいかなる値も取ることができ、例えば、b[0:q-1]のようにqビットの配列で示すことができる。ペイロード32は、qNビットの配列でともに連鎖されているN個のワードとして示すことができる。
【数1】
【数2】
【0041】
次の例では、説明の目的で、qを6に設定して各ワードの長さが6ビットであり、その値は0から63の範囲にあるようにする。しかし、本発明の実施例はこれに限定されず、符号化および復号化システムの要件(requirements)および設計パラメータ(design parameter)に応じて、そして応用/適用(application)に基づいて、qを8、10、16などの他の値に設定することもできる。
【0042】
図3に示したように、データパケット31は、(長さがhビットである)ヘッダ(header)34をさらに含み、ヘッダ34は、符号化データパケット(encoded data packet)31の一部として伝送され、復号器200が符号化データパケットを復号化するのに用いる付加オーバーヘッド情報(additional overhead information)を示す。ヘッダ34は、符号化データパケット31の復号化のための情報が入っているキー(key)を含むことができる。
【0043】
符号化方式の効率を示す尺度の1つは、ペイロードビット数(例:ワードあたりqビットであるN個のワードの場合、ペイロードビット数はqN)をデータパケット31の総ビット数(例:ペイロードビット数qNとヘッダビット数hとを加えた値)で割ったものである。例えば、次の数式1の通りである。
【0044】
【0045】
問題を簡単にするために、ここでは、キーがヘッダ34のhビット全部を用いると仮定する[例:また、ヘッダ34は、エラー/誤差(error)検知またはエラー/誤差修正のためのパリティビット(parity bit)などの追加情報を含まないと仮定する]。しかし、本発明の実施例はこれに限定されず、ヘッダ34が追加情報を含む場合も含むことができる。
【0046】
また、ここで説明する本発明の実施例では、特定のキーに関連のあるN個のデータワード(qNペイロードビット)を含むデータパケット31のヘッダ34内にそのキーを含めて伝送するが、本発明の実施例はこれに限定されない。本発明の一実施例によれば、ペイロードビットを含むデータパケット31とは別個のパケット内にそのキーを含めて伝送する。
【0047】
本発明の一実施例は、符号化データのワードごとに少なくとも1つの遷移点を存在させることと関連があり、これは符号化データ30のいかなるワードも全部0(all-zeroes)(例:0がq回連続)または全部1(all-ones)(例:1がq回連続)にならないようにすることで可能である。例えば、q=6の時、6’b000000と6’b11111は全部0、全部1の例である。言い換えれば、本発明の一実施例は、符号化データ30から全部0のワードと全部1のワードを除去すること、または符号化データ30が全部0のワードを含まず、全部1のワードも含まないようにすることと関連がある。符号化データから全部0のワードと全部1のワードを除去することによって、ランレングスは最悪の場合に2(q-1)ビットになる。
【0048】
図4は、本発明の一実施例による最大ランレングスを示す概略図であって、この例では、データがデータパケットに符号化すると6-ビットワード(q=6)になる。
図4に示したように、6-ビットワード6’b100000(ワードx
iとして識別)の後に6-ビットワード6’b000001(ワードx
i+1として識別)が付いてくると、10個の0[2×(6-1)]があるランが1つあるのである。これと同様に、6-ビットワード6’b011111を6-ビットワード6’b111110が後にくると、10個の1があるランが1つあるのである。全部0のワードと全部1のワードを除去したため、連続する一対のワードで生じるランレングスは、2(q-1)ビットの限定された最大ランレングスより短いはずである。
【0049】
次に、本発明の一実施例による、元データ10を符号化して全部0のワードと全部1のワードがない(例:q個の0を有するワードも、q個の1を有するワードもない)符号化データ30を生成するシステムおよび方法について、以下により詳しく説明する。また、本発明の他の実施例は、符号化データ30を復号化して、元データ10と符合し全部1のワードおよび/または全部0のワードを含むことができる復号化データ18を生成するシステムおよび方法に関する。
【0050】
図5は、本発明の一実施例により元データを符号化してデータパケットを生成する方法500を示すフローチャートである。本発明の一実施例によれば、
図5の動作は、ここで説明する動作を行う符号器100内に命令(instructions)などの形態で実現することができる。命令はメモリに記憶され、処理機(processor)または処理回路は、この命令を実行して符号器100を実現する。処理機およびメモリは、マイクロコントローラ(microcontroller)、AP(application processor)、CPU(central processing unit)、DSP(digital signal processor)、FPGA(field programmable gate array)、ASIC(application specific integrated circuit)などの部分であってもよい。
【0051】
図5を参照すれば、元データ(original data)10がデータソース(data source)(例:グラフィック処理装置が生成した映像データ)から符号器100に供給される。段階510で、符号器100は、元データ10を複数のq-ビットワードに分割する。各ワードxのビット数qは、様々な設計考慮事項により設定可能であり、これについては後により詳しく説明する。説明の便宜のために、変数Nをワードの数を示すのに用いると、段階510は、元データ10をN個のワードに分割し、各ワードはqビット長であるので、全体はqNビットになる。元データ10がqNビットより少なく含む場合には、元データ10に追加パディングビット(additional padding bit)を加えて全てqNビットになるようにしたり、特定のデータパケットにある符号化されたワード数をNより小さくすることができる。元データ10にqNビットより多くあれば、元データ10の最初のqNビットを1番目のデータパケットに符号化し、元データ10の次のビットはその次のデータパケットに符号化することができる[例えば、元データ10の次のqNビットは2番目のデータパケットに符号化する方式である]。
【0052】
段階530で、符号器100は、段階510で元データ10から分割したN個のq-ビットワードが持っていない値を有する2個のq-ビットワードを識別する。1つのq-ビットワードは、0から2q-1までの範囲にある2q個の互いに異なる値のうちの1つを取ることができる。例えば、1つの6-ビットワードは、0から63までの範囲にある64個の互いに異なる値のうちの1つを取ることができる。1つのデータパケットにあるワードの数をNに限定したので、N個のq-ビットワード中に現れていないq-ビットワードが少なくとも2個存在する。例えば、Nを2q-2以下に設定すればこれを保障することができる(例:6-ビットワードの場合、N=26-2=62に設定すれば、6-ビットワードが有し得る64個の値の中で少なくとも2つは62個のワードに現れない)。次に、選択した2個のq-ビットワードを符号器値(encoder value)D1およびD2とし、D1<D2であると定める。本発明の実施例により符号器値D1およびD2を選択する方法について以下により詳しく説明する。
【0053】
段階550で、符号器100は、D1およびD2に基づいて元データ10を符号化してN個の符号化ペイロードワード(encoded payload word)を有する符号化ペイロードデータ(encoded payload data)を生成し、(N個の元q-ビットワードが全部0のワードや全部1のワードを含むか否かに関係なく)符号化ペイロードデータは、全部0のワードと全部1のワードを含まない。上記の6-ビットワードの例を挙げ続けると、N個の符号化ペイロードワードの中でb000000もなくb111111もない(N個の元ワードは、b000000および/またはb111111を含んでいても、そうでなくてもよい)。
【0054】
本発明の一実施例によれば、符号器100は、元値と符号化値との間の一対一の写像(mapping)関数に基づいて元データを符号化する。
【0055】
図6は、本発明の一実施例により2個の符号器値D1およびD2に基づいて元データを符号化して符号化データを生成する方法を示す。本発明の一実施例によれば、符号器100は、元ワードxを符号化ワードx’に符号化する次の関数enc(x)に応じて、元ワードの値を符号化ワードに写像することによってN個の元ワードを符号化する。
【数4】
言い換えれば、元ワードxの値がD1より小さい時には1だけ増加し、その値がD1とD2との間であればそのまま維持し(恒等)、その値がD2より大きければ1だけ減少する。(符号化するN個の元ワードは、例示した通り、D1およびD2値を持たないので、x=D1またはx=D2の場合は考慮する必要がない。)この写像は全部0の値が符号化データに現れないようにするが、これはD1より小さい全ての値が1ずつ増加するので、N個の元ワードで全部0の値は1として現れるからである(例:q=6の場合はb000001)。これと同様に、この写像は全部1の値が符号化データに現れないようにするが、これはD2より大きい全ての値が1ずつ減少するので、N個の元ワードで全部1の値は2番目に高い値として現れるからである(例:q=6の場合はb111110)。
【0056】
図6に示した例において、q=4(例:各ワードが4ビット長)であり、値4(4b0100)、5(4b0101)、10(4b1010)、13(4b1101)が元入力データにないが、元データは次のようなビット列であってもよい。
【数5】
【0057】
図6は、4ビットワードが有し得る全ての値を二進法(binary representation)601と十進法(decimal representation)602で示した表であって、白色背景にある値は元データにある値であり、元データにない値は黒色背景に示されている。説明の便宜のために、4個の候補値の中から値4b0101をD1として選択し、値4b1010をD2として選択する。符号化関数または符号化写像enc610は、矢印で表したように、元データ602の値を当該符号化値630に写像する。その結果、全部0の値(4b0000)と全部1の値(4b1111)はデータの符号化バージョン(encoded version)に使用されない。特に、上記で提示した例の元データの符号化バージョンは次の通りである。
【数6】
上記で分かるように、この元データの符号化バージョンは全部0の値も含まず、全部1の値も含まない。また、最大ランレングスは元データの12から符号化データの6[例:2(q-1)]に減少した。
【0058】
本発明の一実施例によれば、符号器100は、元ワードxを符号化ワードx’に符号化する次の関数enc(x)に応じて、元ワードの値を符号化ワードに写像することによってN個の元ワードを符号化する。
【数7】
言い換えれば、元ワードxが全部0の値(例:0がq回連続)であればD1に写像し、元ワードxが全部1の値(例:1がq回連続)であればD2に写像する。[その代わりに、本発明の他の実施例によれば、xが全部1の値であればD1に写像し、xが全部0の値であればD2に写像する。]そうでなければ、符号化ワードx’は、元ワードxと同一の値を有する。したがって、上記の元ビット列、すなわち、
【数8】
は、値4b0101をD1として選択し、値4b1010をD2として選択した時、全ての4b0000を4b0101に置き換え、全ての4b1111を4b1010に置き換えることによって、次のように符号化される。
【数9】
【0059】
段階570で、符号器100は、符号器値(例:D1およびD2)を示すヘッダ34を生成し、段階590で、符号器100は、ヘッダ34とN個の符号化ペイロードワード32とを含むデータパケット31を生成する。最終データパケット31は、符号化データ30としてデータリンク50を介して復号器200に伝送される。
【0060】
図7は、本発明の一実施例による符号化データパケットの復号化方法を示すフローチャートである。データパケット31は、ヘッダ34と符号化ペイロードワード32とを含むことができる。
図7に示したように、段階710で、復号器200は、受信したデータパケット[例:符号器100が符号化したデータパケット]からヘッダを読み、ヘッダからエンコーダ値(例:D1およびD2)を復号化する。エンコーダ値D1およびD2を用いて符号化ペイロードワードの符号化値から元データの復号化値への写像を決定する。
【0061】
本発明の一実施例によれば、復号器200は、符号化ワードx’を元ワードxに復号化する次の関数dec(x’)に応じて、符号化ワードの値を元ワードに写像することによってN個の符号化ワードを復号化する。
【数10】
言い換えれば、符号化ワードx’の値がD1以下の時には1だけ減少し、その値が第1符号器値D1と第2符号器値D2との間であればそのまま維持し(恒等)、その値がD2以上であれば1だけ増加する。この写像は元データに現れる全部0の値と全部1の値を全て復元する。
【0062】
図8は、本発明の一実施例による、符号器値に基づいた符号化ワードの4-ビット値から当該復号化ワードまたは元ワードへの写像を示す。
図8に示したように、復号化関数または復号化写像decは、符号化値830から再構築または元値への写像を二進法818で計算し、十進法819でも示す。
【0063】
これと類似して、符号化関数encが全部0のワード(例:4b0000)をD1に置き換え、全部1のワード(例:4b1111)をD2に置き換え、その他の全ての値はそのまま維持する写像を行った場合には、復号化関数または復号化写像decは下記のように表現することができる。
【数11】
【0064】
このように、本発明の実施例は、元データに使用されない値を識別し、使用されない値を符号器値として選択し、この符号器値に基づいて元データを符号化することによって、符号化データのランレングスを制限する元データの符号化システムおよび方法に関する。本発明の実施例は、符号器値に基づいて符号化データを復号化することと関連がある。符号器値の選択、データパケット内のワード数Nの選択、ワードあたりのビット数qに対する追加的な細部事項について以下に詳しく説明する。
【0065】
上記では、データパケットにあるワード数Nを2
q-2以下に制限して少なくとも2個の値がN個のワードに現れないようにし、2個の不在(absent)または未使用(unused)値を符号化システムの符号器値D1、D2として用いる実施例について説明した。D1およびD2が2
q個の使用可能な値のスペース内にあるいかなる値にもなり得るので、D1およびD2は[段階570で生成したように]ヘッダの一部として圧縮なくそのまま伝送することができ、これによって2qビット(D1およびD2それぞれに対してqビット)のオーバーヘッド(overhead)が生じる。先に言及したように、符号化方法の効率は次のように与えられる。
【数12】
この場合、h=2qであり、これによって、以下のように与えられる。
【0066】
より具体的に説明すれば、q=6であり、N=2
q-2である場合に、これは、すなわち、以下となる。
【数13】
【0067】
本発明の実施例は、1つのデータパケットにあるワード数Nと1つのワード内にあるビット数qを効率を向上させる方向で選択することと関連があり、例えば、N個のワードからなるデータパケット31においてワードに対する符号化値の復号化に必要な符号器値を示すのに用いるヘッダビット数(またはオーバーヘッドビット数)を減らすことによって可能である。
【0068】
より詳しく説明すれば、本発明の実施例は、符号器値(例:D1およびD2)を伝送するのに用いるオーバーヘッドビット数を圧縮により2qビットより小さく減らすことと関連がある。例えば、共通のプレフィックス(prefix)[またはMSB(most significant bits)]を有するようにD1およびD2を選択すれば、より少ないビットで2個の値をヘッダで伝送することができる。より一般的には、本発明の一実施例は、共通プレフィックス(または共通MSB)に基づいてq-ビットワードが有し得る2q個の値を分類(grouping)し、2個の未使用値(例:符号化する元データにない値)が同じ群に属するように1つのデータパケットにあるワードの数(N)を選択するものである。こうすれば、同じ群に属する2個の未使用値を符号器値D1およびD2として選択し、その群に関連する識別子(identifier)(または群識別子)に基づいてこれら2個の符号器値D1およびD2を符号化することができるが、このような符号器値D1およびD2の符号化方法は2qオーバーヘッドビットより少ないビットを用いる。Nワードのデータパケットは、N≦2q-G-1の時、同じ群に属する2個の未使用値を有するはずであり、q-ビットワードの2q個の値のスペースは、G個の群に分けられる。
【0069】
以下により詳しく説明する本発明の一実施例は、N=30、q=6、5-ビットオーバーヘッド(97.3%効率);N=40、q=6、6-ビットオーバーヘッド(97.6%効率)、N=47、q=6、7-ビットオーバーヘッド(97.6%効率)、N=55、q=6、8-ビットオーバーヘッド(97.6%効率)である符号化方法に関するが、本発明の実施例はこれに限定されない。例えば、本発明の実施例は、6ビットでない長さのワード、例えば、q=8で実現されてもよい。
【0070】
本発明の一実施例によれば、q-ビット元ワードxが有し得る値のスペースを2個の連続値(値の対)の群に分ける。例えば、群0は、0と1の値を含むことができ、群1は、2と3の値を含むことができ、群3は、4と5の値を含むことができる(一般に、群kは、値2kと2k+1を含む)。各群がプレフィックスを共有する連続値を含むので、例えば、q-1 MSBを含むので、各群にある2個の値はLSB(least significant bit)のみ異なる。したがって、D1およびD2が同じ群に属すれば、第1符号器値D1と第2符号器値D2を両方ともq-1ビットを用いて符号化することができる。N≦2qG-1の場合、これが真実であることを保障することができる。したがって、本発明の一実施例によれば、段階530で、符号器100は、同じ群に属する2個の符号器値D1およびD2を識別する。
【0071】
次の表1はq=6である場合の一例を示す。
【表1】
【0072】
前記表1にて、その群を示す5-ビットオーバーヘッドまたはキーともが、00-000または11-111(「-」符号は可読性のために含む)で表現できる群0を除いて少なくとも1つの遷移点を含む。群0を示すキーを伝送する時、遷移点をおくために、本発明の一実施例による符号器は、遷移点を作るためにそのキーの直前に伝送されるビット値に基づいて00-000または11-111を用いて群0を示すか否かを判断する。例えば、そのキーの直前に伝送されるビットが1であれば、符号器は00-000を群0を指すキーとして用いるが、そのキーの直前に伝送されるビットが0であれば、符号器は11-111を群0を指すキーとして用いる。しかし、00-000および11-111を全て群0を示すのに用いるので、群31を示すキーとして残っているものがない。しかし、D1=62およびD2=63は使用する必要がない。特に、N≦30の場合に、(帰謬法で証明できる)代わりに選択する他のD1およびD2の対が常に存在する。したがって、群31を示すキーを必要とせず、表1ではこれを「無効(invalid)」として示す。
【0073】
q=6、N=30の場合に、各群は5ビットを用いて識別することができ、これによって、同じ群に属するD1およびD2を用いる場合、その効率は次のように計算することができる。
【数14】
【0074】
本発明の一実施例によれば、符号器100は、段階550で上述した方法(例:数式2または数式3に基づく)またはそれに準ずる方法を用いて元値から符号化値への符号化関数または写像関数を実現することができる。
【0075】
また、D1とD2がLSBのみ異なる本発明の一実施例(例:D1=6b010010、D2=6b010011)において、符号器100は、段階550で元データを次のように符号化する。値EはD1に基づいて計算するが、EはD1を2で割ったもの[またはこれと同等に、右側に1だけ移動したもの(right shift by1)]である。
【数15】
q=6の場合については、以下のように符号化し、
【数16】
続いて、計算した値Eを用いて、Eに基づいて元ワードxを当該符号化ワードx’に符号化する。
【数17】
ここで、{(q-1){x[0]}}は、x[0]でq-1回複製したビット値を指す。q=6の場合には、当該符号化ワードx’に符号化する。
【数18】
ここで、{5{x[0]}}は、x[0]で5回複製したビット値を示す。
【0076】
(q-1)-ビット値Eは、段階570でヘッダ34に生成され、(q-1)-ビット値Eは、選択された符号器値D1およびD2を全て含む群を示す。符号器100は、続いて段階590で[(q-1)-ビット値Eが入っている]ヘッダ34と符号化ペイロードデータ32とを含むデータパケット31を生成する。最終データパケット31は、符号化データ30として復号器200を用いてデータパケット31にある符号化ペイロードデータ32を復号化する受信機2に伝送される。
【0077】
特に、この実施例では、段階710で、復号器200は、データパケット31のヘッダ34に入っている(q-1)-ビット値Eに基づいて群を判断する。この群は2個の値だけを含むため、復号器200は、これらの値を符号器値D1およびD2として選択し、これらを用いて段階750で復号器200が(例:先に説明したように数式10または数式11により)符号化ペイロードワードを復号化するのに用いる写像を決定する。
【0078】
上記数式17に示したように、排他的論理和(XOR:exclusive or)符号化を用いる実施例では、復号器200が段階750でヘッダ34に伝送された群識別子Eに基づいて類似の排他的論理和演算を行う。
【数19】
q=6である特定の場合には、以下のように示す。
【数20】
【0079】
本発明の他の実施例によれば、ワードの値を3個の連続値で群にして配列する。例えば、群0は、値0、1、2を識別し、群1は、値3、4、5を識別する、といった方式である。したがって、符号器100は、[例えば、段階570でヘッダ34を生成する時]一群とその群内で符号器値D1およびD2に対応する2個の値を識別するのに用いるq-ビット値Eを次の数式21により計算する。
【数21】
直観的に、これはEがその群の中間値を示すと考えられる。特に、例示したものにより、D1≦E≦D2である。D2-D1=2であれば(後にくる表2における各群の中間行の場合)、Eは中間値である(E=D1+1=D2-1)。その上の行の場合、D1=E、そしてD2=E+1である(これはD1が3の倍数の時である)。その下の行の場合には、D1=E-1であり、D2=Eである。
【0080】
これらの実施例において、符号器100は、段階550で、例えば、上記数式2または数式3を用いて元ワードxから符号化ワードx’に写像または符号化する。これらの実施例において、数式2の符号化方法は、符号器値Eに基づいて次のように簡素化することができる。
【数22】
【0081】
次の表2は、q=6の場合に、値における群への写像および当該オーバーヘッドの例を提示する。
【表2】
【0082】
このような符号化配列を用いる本発明の実施例において、復号器200は、段階710でq-ビット値Eが入っているヘッダ34から符号器値を次のように復号化する。
【数23】
復号器200は、数式10および数式11により上述したように符号化値を元値に復号化することができる。また、数式10による復号化は、この場合、次のように簡素化することができる。
【数24】
【0083】
6-ビットワード(q=6)の場合には、この方式はデータパケットあたり2
6-22-1=41個のワードを使用できるようにする。したがって、q=6、N=41の場合には、各群を6ビットを用いて識別することができ、これによって、同じ3値の群に属するD1およびD2を用いる場合、その効率は次のように計算することができる。
【数25】
【0084】
本発明の一実施例によれば、q-ビットワードが有し得る値のスペースを2r個の値からなる群に分けて、各群にある値がr LSBの前までの共通プレフィックス(prefix)を共有するようにする(例:その値がq-r MSBを共有して各値内にあるq-r MSBが同一であるようにできる)。例えば、rを2に設定すれば、q-ビットワードが有し得る値のスペースは、4個の値を有する群に分けられ、各群にある値は、2LSBの前までの共通プレフィックスを共有する(例:最初のq-2ビットが同一である)。本発明の一実施例によれば、一群内から選択した2個の値を2r-1の追加ビットを用いて符号化する。
【0085】
次の表3は、q=6およびr=2である場合の一例を提示する。
【表3】
【0086】
このように、一群をq-2ビット(例:q-2 MSB)を用いてその群に固有識別することができる。D1およびD2に対応する群内の2個の値は、残りの2ビット(例:2LSB)が異なり、本発明の一実施例によれば、これら一対の値を3の追加ビットを用いて識別するが、例えば、下記表4の通りである。
【表4】
【0087】
上記の特別な符号化方式では、一群内の符号器値D1およびD2のLSBを符号化するのに用いるコード(例:3ビットコード)は、それらそれぞれが少なくとも1つの遷移点を含むように設計する(例:コードの中で0が3個連続したり、1が3個連続することはない)。これは可能なD1およびD2の対の数がこの対を符号化するのに用いるビット数より小さいからである(例:3ビットを用いて6個の互いに異なる場合を符号化するが、3ビットでは2
3個の可能な値を符号化することができる)。一方、群を識別するのに用いるq-2ビットは、q-2個の連続0またはq-2個の連続1を含むことができる。この場合、一群を識別するのに用いるq-2ビットとその群内の符号器値D1およびD2を識別するのに用いる3ビットを単純連鎖させると、q個の連続0またはq個の連続1からなるランが生じる。例えば、q=6の場合、群識別子が0000であり、LSBコードが001であれば(表4によりD1およびD2をLSB00および01の値として識別)、0000と001を単純連鎖させると、ヘッダが0000001になり、これは6個の連続0からなるランを1つ含む。群識別子が1111であり、LSBコードが110である時も、6個の連続1からなるランが1つ生じる類似の問題が発生しうる。したがって、本発明の一実施例によれば、群識別子を2部分に分けてLSBコードを2部分の間に配置する。q=6の時の例を継続すれば、D1とD2に共通の高次ビット(higher order bits)は、D1[5:2](例:D1の5番目位置から2番目位置までのビット、またはこれと同等に、D2[5:2]のようにD2の5番目位置から2番目位置までのビット)として識別することができる。このような4高次ビットを第1部分(D1[5:4])と第2部分(D1[3:2])とに分けることができ、LSBコードは次のように2部分の間に配置することができる。
【数26】
【0088】
上述したように、LSBコードは、それぞれが少なくとも1つの遷移点を含むように設計する。したがって、2部分の間にLSBコードを配置することによって、ヘッダ34の最大ランレングスが(q-2)/2+2になる。例えば、上記の群識別子0000およびLSBコード001の場合、ヘッダ34は0000100に符号化され、4個の連続0を含むランが1つ生じる。
【0089】
復号器200は、段階710で、ヘッダ34からMSB(例:D1[3:2]と連鎖されるD1[5:4])を読み、ヘッダ34からLSBコードを読んだ後、(例えば、上記テーブルに基づいて)LSBコードを復号化してD1のLSBとD2のLSBを判断することによって、第1符号器値D1および第2符号器値D2を復号化する。ヘッダ34から読んだMSBをD1の復号化LSBと連鎖させることによって完全な第1符号器値D1を復号化し、ヘッダ34から読んだMSBをD2の復号化LSBと連鎖させることによって完全な第2符号器値D2を復号化する。
【0090】
このような符号化方式を用いると、オーバーヘッドは、群を識別するq-2ビットにその群内から選択した2個の構成員を識別する3ビットを加えて、計h=q+1ビットになる。例えば、q=6の場合、オーバーヘッドは7ビットである。q=6の場合には、N≦47(例:データパケットあたりのワード数が2
6-16-1=47まで)の時、群中に有効なD1およびD2が保障される。したがって、q=6、N=47の場合には、各群を7ビットを用いて識別することができ、これによって同一の4値の群に属するD1およびD2について、効率を次のように計算することができる。
【数27】
【0091】
これらの実施例において、符号器と復号器は、先に説明したものと類似の方式で実現できる。例えば、この符号化方式を用いる実施例では、復号器200が数式2または数式3によりq-ビット値D1およびD2が入っているヘッダ34から符号器値を復号化する。これと同様に、復号器200は、続いて数式10または数式11について上述したように符号化値を元値に復号化することができる。
【0092】
他の例を挙げると、r=3である本発明の一実施例では、使用可能な値のスペースを8個の連続値からなる群に分ける。例えば、群0は、値0から7までを含むことができ、群1は、値8から15までを含むことができる、といった方式である。この方式では、各グループ内の値がq-3ビットの共通プレフィックスを共有し、3LSBのみ異なる。次の表5は、q=6、r=3であり、例えば、値9をD1として選択し、値11をD2として選択した例を提示する。D1およびD2に対応する行は下記表5に太字で表した。
【表5】
【0093】
先に説明したものと類似の方式で、8個の値を含む一群内にある2個の値は、5ビット長のLSBコードに固有識別することができる(例:8個の値を有する集合から2個の値を選択する方法は28種であり、これによって5ビット(2
5=32)でこの28種の2値の対を特定するのに十分であり、LSBコードに全部0および全部1の5ビットランを除く余裕がある)。このように、本発明の一実施例によれば、値D1およびD2を次のコードを用いて符号化する。
【数28】
【0094】
例えば、q=6の場合には、次のように表現することができる。
【数29】
【0095】
本発明の一実施例によれば、先に説明したものと類似の方式でMSBを2部分に分けてLSBコードを2部分の間に配置する。例えば、q=8の場合、MSBを最初の3ビット(D1[7:5])からなる第1部分と、その後の2ビット(D2[4:3])からなる第2部分とに分けられる。その結果、次のように表現することができる。
【数30】
【0096】
復号器200において、段階710で、r=2の場合について先に説明したものと類似の方式で(例:MSBを読み、テーブルを用いてLSBコードからLSBを復号化し、MSBを2個の復号化LSBと連鎖させることによって)ヘッダ34から第1符号器値D1および第2符号器値D2を復号化することができる。
【0097】
したがって、q=6の場合には、N≦2
6-8-1=55の時、同じ群内のD1およびD2を保障することができる。ヘッダ長がq-3+5=6-3+5=8ビットであれば、この符号化方式の効率は次のように計算することができる。
【数31】
【0098】
本発明の一実施例によれば、符号器100は、段階550で先に説明した方法(例:数式2または数式3に基づく)またはそれに準ずる方法を用いて元値から符号化値への符号化関数または写像関数を実現することができる。これと類似して、復号器200は、段階750で(数式10または数式11に基づいて)上述した方法またはそれに準ずる方法を用いてともに符号化値の復号化関数または写像を実現することができる。
【0099】
本発明の一実施例によれば、符号器100は、段階550で排他的論理和(^)演算を用いて元値から符号化値には2段写像を実現することができる。特に、符号化の1番目の段階で、符号化するワードxとD1とを排他的論理和演算して中間値yを計算する。2番目の段階で、yの1つ以上のビットをyのビットのうちの1つと排他的論理和演算する。特に、1の値を有するD2に対して計算したy値から1つのビット位置zを選択し、そのビット位置の値とz以外の他の位置でのyのビットとを排他的論理和演算し、そのビット位置zでのビットをx’の同じ位置zにコピーすることによってx’を計算する。表5は、D1およびD2が9および11にそれぞれ相当する特定の例を示す。ここで、特定のワードxに対する符号化を行うために、ワードxをD1の値(9または二進法で001-001)と排他的論理和演算してyを計算する(y=x^D1で標識が付いた列参照)。例えば、値x=7に対して、7(二進法で000-111)をD1(001-001)と排他的論理和演算してy=001-110に達することによってyを計算することができる。表5を再度参照すれば、D2は値1を有する位置(z=2または2番目のLSB)をたった1つ有する。したがって、x=7に対して、y(001-110、z=2で1の値を有する)でz=2である位置のビット値をyの他の全ての位置(z≠2)でのビット値と排他的論理和演算してx’=110-011を得ることによってx’を計算する。他の例を挙げると、x=8に対して、対応する値yは000-001であり、2番目の位置でのビット値は0である。したがって、2番目の位置以外の他の位置でのビット値を排他的論理和演算してx’を計算すれば、その値はyの値と異なることなくそのまま維持されて、x’=000-001になる。
【0100】
本発明の実施例は、最大ランレングスを縮小させてデータリンクの遷移の周波数を高められるデータ符号化システムおよび方法を提示する。遷移の周波数を高めると、例えば、クロック-データ再生過程を改善することができ、そうすることにより、データリンクを介して通信する発信機と受信機との間の接続品質を向上させることができる。より詳しくは、本発明の実施例では、元データをN個のq-ビットワードからなるデータパケットに分割し、元データを全部0のワードおよび全部1のワードがない符号化データに符号化することによって、q-ビットごとに少なくとも1回の遷移が起こるようにする。このような符号化は、元データに現れない2個の値に対応する2個の符号器値で定義される一対一の写像に基づいて行われ、2個の符号器値はオーバーヘッドとして伝送され、復号器は、これらを符号化データを復号化する写像を定義するのに用いる。符号器値を圧縮することによって符号化過程に関連するオーバーヘッドを減らすことによって効率を向上させる。
【0101】
上記ではグラフィック制御器と表示装置との間の直列リンクに関連して本発明の実施例について説明したが、本発明の実施例はこれに限定されず、他の種類の周辺装置および計算装置(computing device)、例えば、データ記憶装置(data storage device)[例:揮発性(volatile)または不揮発性(non-volatile)メモリ、大容量記憶装置(mass storage device)など]、外部同時処理装置(external co-processing device)[例:外部グラフィック処理装置、人工知能加速器(artificial intelligence accelerator)など]、回路網制御器(network controller)、他のコンピュータシステム、スマートフォンおよび他の携帯用計算装置などを接続するための他の種類の直列データリンクおよび直列データバスにも適用可能である。
【0102】
本発明の実施例は、当業者に知られた多様な方式で実現可能であり、ここで用いた「処理機(processor)」という用語は、上述した動作/演算を行うことができる全ての計算装置、例えば、接続されたメモリに記憶された命令に伴うプログラミングされた汎用処理機(programmed general purpose processor)(例:ARM処理機)、FPGA(field programmable gate array)、注文型ASIC(custom application specific integrated circuit)などを指すことができる。本発明の実施例は、直列通信制御器(serial communications controller)[例:USB(universal serial bus)制御器]、グラフィック処理装置(GPU:graphical processing unit)、パネル間インターフェース(intra-panel interface)およびデジタルデータを送受信する他のハードウェアまたはソフトウェアシステムなどに統合される。
【0103】
本発明の特定の実施例に関連して説明したが、本発明はこれらの実施例に限定されるものではなく、むしろ逆に本発明の趣旨および範囲内に含まれる多様な変更およびその等価物を包括することを理解しなければならない。
【符号の説明】
【0104】
1:発信機、2:受信機、10:元データ、18:復号化(映像)データ、20:データコンシューマ、30:符号化データ、31:データパケット、32:ペイロードデータ、34:ヘッダ、50:データリンク、100:符号器、200:復号器