概念や言葉をよくわかっておらず、旗の上げ下げで説明します。
(前提)
・AさんからBさんに、10ビット(1024通り)の情報を伝えます。
・声は届かず、Aさんは、一定周期で旗を上げ下げして、情報をBさんに伝えます。
二人は「旗の上げ下げルール」を申し合わせています。
※ 下下下下下上上上上上=32 というように、二進数で伝えます。
・但し、BさんがいつAさんの旗を見はじめるか(データ開始)タイミングが分からず、Aさんは同じパターンで繰り返し旗を動かします。
・Aさんは、旗を上げるか、下げるかどちらかしかできません。
(「これから信号送るよ」というデータの始まりも、旗の上げ下げで表現しなくてはいけません)
・また、先の「一定周期」より短いタイミングで旗を上げたり下げたりすることもできません。
(質問)
・AさんとBさんとの間で、どんなルールを申し合わせると、一番効率よく(=短い上げ下げの回数で)情報を伝えられるでしょうか?
…伝わりにくい質問ですみません。
答えが難しい場合検索キーワードでも助かります。
よろしくお願いいたします。
4B/5B符号化変換を応用すると19bitの繰り返しで10bitが送れます。
下下下下に続けて、10bitを2bit,4bit,4bitに分けて4B5B符号化変換した19bitの繰り返しを送付すれば、下が4つ続かないように5bitのテーブルはできているので先頭が区別できます。
4ビット | 5ビット |
0000 | 上上上上下 |
0001 | 下上下下上 |
0010 | 上下上下下 |
0011 | 上下上下上 |
0100 | 下上下上下 |
0101 | 下上下上上 |
0110 | 下上上上下 |
0111 | 下上上上上 |
1000 | 上下下上下 |
1001 | 上下下上上 |
1010 | 上下上上下 |
1011 | 上下上上上 |
1100 | 上上下上下 |
1101 | 上上下上上 |
1110 | 上上上下下 |
1111 | 上上上下上 |
例:
0:下下下下上上上上下上上上上下上上上上下
494:下下下下下上下下上上上上下下上上上下下
1023:下下下下上下上下上上上上下上上上上下上
4B/5B符号化変換を応用すると19bitの繰り返しで10bitが送れます。
下下下下に続けて、10bitを2bit,4bit,4bitに分けて4B5B符号化変換した19bitの繰り返しを送付すれば、下が4つ続かないように5bitのテーブルはできているので先頭が区別できます。
4ビット | 5ビット |
0000 | 上上上上下 |
0001 | 下上下下上 |
0010 | 上下上下下 |
0011 | 上下上下上 |
0100 | 下上下上下 |
0101 | 下上下上上 |
0110 | 下上上上下 |
0111 | 下上上上上 |
1000 | 上下下上下 |
1001 | 上下下上上 |
1010 | 上下上上下 |
1011 | 上下上上上 |
1100 | 上上下上下 |
1101 | 上上下上上 |
1110 | 上上上下下 |
1111 | 上上上下上 |
例:
0:下下下下上上上上下上上上上下上上上上下
494:下下下下下上下下上上上上下下上上上下下
1023:下下下下上下上下上上上上下上上上上下上
お礼が遅くなってしまい、失礼しました。
ありがとうございます。4B/5B符号化変換、目からウロコでした。
まさに求めていた回答です。
二点、頂いた回答をもとに少し考えたのですが・・・
・2bit部分の圧縮
データ部分で4つ以上「下」を連続させないことが条件だとすると、
伝送データが10bitの場合、データ部分の頭の2bitは4B/5B符号化変換が不要で、
4bit(ヘッダ)+2bit(データ)+5bit(4B/5B符号化変換)+5bit(4B/5B符号化変換)
と、16bitに圧縮できるかもしれない、、、ですかね?
・先頭パターンの前後連結判定
先頭(下下下下)の前後が「下」になる場合、信号部分の判定が前後にずれて読めてしまうので、
例えば「上下下下下」みたいに、1bit足すと間違いなくなる感じかなと思いました。
ありがとうございました!
・先頭パターンの前後連結判定
例の494を先頭が下下下下になる範囲でずらしてみると、ずれたものは、すべて変換不能になります。これは、変換テーブルが、下下???や上上下下下を使わないようにできているためです。
「128b/130b符号化」という方式がPCI-Express 3.0で使用されていますが、私が知る限りこれが最も効率の良い方式です。
旗の上げ下げをデータの0/1に対応させるイメージですね。
詳細は下記URLをご参照下さい。
http://www.ni.com/white-paper/52915/ja/
これですと、通信開始の為のオーバーヘッドが2/130(≒2%弱)で済みますので、非常に効率が良いです。
お礼が遅くなってしまい、失礼しました。
2017/08/17 11:24:40ありがとうございます。4B/5B符号化変換、目からウロコでした。
まさに求めていた回答です。
二点、頂いた回答をもとに少し考えたのですが・・・
・2bit部分の圧縮
データ部分で4つ以上「下」を連続させないことが条件だとすると、
伝送データが10bitの場合、データ部分の頭の2bitは4B/5B符号化変換が不要で、
4bit(ヘッダ)+2bit(データ)+5bit(4B/5B符号化変換)+5bit(4B/5B符号化変換)
と、16bitに圧縮できるかもしれない、、、ですかね?
・先頭パターンの前後連結判定
先頭(下下下下)の前後が「下」になる場合、信号部分の判定が前後にずれて読めてしまうので、
例えば「上下下下下」みたいに、1bit足すと間違いなくなる感じかなと思いました。
ありがとうございました!
・先頭パターンの前後連結判定
2017/08/18 02:52:17例の494を先頭が下下下下になる範囲でずらしてみると、ずれたものは、すべて変換不能になります。これは、変換テーブルが、下下???や上上下下下を使わないようにできているためです。