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
仕様