• 検索結果がありません。

8

ビット・ワードをエンコードするには、8ビットの値を

datain

入力 に適用し、

ena

入力をアサート(アクティブ

High)する必要があります。

13

個の

10

ビット・コードのいずれかを挿入すると、同等な

8

ビット・

コードが

datain

ラインに配置され、

kin

入力がアサートされます。

MegaCore

ファンクションはエラー・チェックを実行して、帯域外

8

ビッ

ト・コードが有効であることを保証します。有効でない場合、kerr 出 力がアサートされます。有効な K コードのリストについて詳しくは、

3–1

を参照してください。

表3–1.キャラクタ・コード

10ビット・スペシャルKコード 等価8ビット・コード

K28.0 8'b000_11100

K28.1 8'b001_11100 K28.2 8'b010_11100

K28.3 8'b011_11100

K28.4 8'b100_11100

K28.5 (1) 8'b101_11100

K28.6 8'b110_11100

K28.7 8'b111_11100

K23.7 8'b111_10111

K27.7 8'b111_11011

K29.7 8'b111_11101

K30.7 8'b111_11110

10B_ERR 8'b111_11111

3–1

の注

:

(1) K28.5 はアラインメントに使用されるカンマ・キャラクタで、IDLE コード

を表します。

仕様

10B_ERR

コードが無効なスペシャル・キャラクタであると

見なされても、kerr信号はアサートされません。

idle_ins

入力をアサートしても

ena

がアサートされない場合、アイド ル(K28.5)キャラクタを自動的に挿入できます。

エンコーダは、アイドル(K28.5)コードをエンコードするのと同じ方法 で無効なキャラクタをエンコードします。デコーダは無効なキャラクタ をアイドル・コードとして扱います。

3-3

に、エンコーダのブロック図を示します。

図3-3. エンコーダ

ディスパリティ

ランニング・ディスパリティは、正または負にすることができ、これに よってユーザはスペシャル再同期パターンまたはディスパリティ・エ ラーを挿入できます。

rdforce

入力がアサートされたときは、rdinポートの値が現在のラン ニング・ディスパリティと見なされます。rdinを

0

に設定すると、エ ンコーダは正または中立のディスパリティを持つエンコードされたワー ドを作成します。rdinを

1

に設定すると、エンコーダは負または中立 のディスパリティを持つエンコードされたワードを作成します。

カスケード・エンコーディング

2

つのエンコーダをカスケード接続すると、

16

ビット・ワードのエンコー ディングが可能です。エンコーダをカスケード接続するには、最上位バ イト(MSByte)エンコーダの

rdcascade

出力を最下位バイト(LSByte)

エンコーダの 入力に接続し、LSByteエンコーダの 出力を

clk reset_n kin ena

rdin rdcascade

rdout valid kerr

datain [7:0]

dataout [9:0]

rdforce idle_ins

機能の説明

MSByte

エンコーダの

rdin

入力に接続します。このような接続により、

適切なランニング・ディスパリティ計算が保証されます。エンコーダが、

内部で生成されたランニング・ディスパリティではなく、rdin 入力の 値を考慮するには、

rdforce

入力をアサート(アクティブ

High)する

必要があります。両方の

ena

入力は、同時に

High

または

Low

になる 必要があります。kin

[1]

信号は、datain[15:8]に対応し、

kin[0]

は、

datain[7:0]

に対応しています。

3–6

ページの図

3-4 に、カスケー

ド・エンコーディングを実行するために接続された

2

つのエンコーダを 示します。

エンコードされたワードをシリアルに送信する場合、エンコーディング

datain[15:8]

の結果を最初に送信する必要があります。

図3-4. カスケード・エンコーディング (1)

3-4

の注

:

(1) ena、idle_ins、およびrdforceの各信号は、High(ロジック1)に設定されます。

clk reset_n

rdout valid kerr

clk reset_n

rdcascade valid kerr

rdout rdin

dataout [9:0]

rdcascade

rdin [1:0]

kin

[15:0]

datain

ena

rdforce

ena

rdforce datain [7:0]

datain [15:8]

dataout [9:0]

kin [0]

kin [1]

idle_ins idle_ins

仕様

レイテンシのエンコーディング

register inputs/outputs

パラメータをオンにすると、エンコーダ がパイプライン化されます。これにより、3 クロック・サイクルでキャ ラクタをエンコードできます。n の立ち上がりエッジでエンコーダによ りサンプリングされた

datain

および

kin

の値に対応するエンコード値 は、

n+2

の立ち上がりエッジの直後に出力され、クロック・サイクル

n+3

の立ち上がりエッジでのサンプリングに使用できます。(3–8ページ の図

3-5

参照)。

register inputs/outputs

パラメータをオフにすると、エンコーダ が

1

キャラクタをエンコードするのに

1

クロック・サイクルを要します。

立ち上がりエッジ

n

でエンコーダによってサンプリングされた

datain

および

kin

の値に対応するエンコード値は、立ち上がりエッジ

n+1

の 直後に出力され、クロック・サイクル

n+2

の立ち上がりエッジでのサン プリングに使用できます。(3–8ページの図

3-6

参照)。

カスケード・エンコーディングをイネーブルするために、

rdforce

およ び

rdin

入力で供給されるデータ・パスはパイプライン化されません。

rdforce

および

rdin

は、通常カスケード・コンフィギュレーションで のみ使用されるため、問題ありません。

rdforce

および

rdin

入力を非カスケード・コンフィギュレーションに 使用する場合、対応する

datain

および

kin

値に対して

2

クロック・サ イクル遅延しなければなりません。これは、2 個のレジスタを遅延させ る各入力と直列に挿入することによって達成できます。以下の

Verilog HDL

コードの例は、必要な遅延レジスタの実装方法を示しています。

:

非カスケード・アプリケーションに対する

rdforce

および

rdin

へ の遅延の追加

// The _pre2 registers are set at the same time as datain and kin.

reg rdforce_pre2;

reg rdin_pre2;

// The _pre1 registers provide an extra clock tick of delay

reg rdforce_pre1;

reg rdin_pre1;

always @ (posedge clk) begin

rdforce <= rdforce_pre1;

機能の説明

rdforce_pre1 <= rdforce_pre2;

rdin <= rdin_pre1;

rdin_pre1 <= rdin_pre2;

end

図3-5. エンコーダのタイミング図—3サイクル・レイテンシ

図3-6. エンコーダのタイミング図—1サイクル・レイテンシ

clk

datain, kin, ena

a b c d e f g

a b c d

a b c d e

dataout

rdforce, rdin

n n+1 n+2 n+3

e f

f g

clk

datain, kin, ena

a b c d e f g

a b c d

a b c d e

dataout

rdforce, rdin

n n+1 n+2 n+3

e f

f g

仕様

関連したドキュメント