UTL-016 シリアル信号取り込み ご参考 (XILINX) | |||||||||||
2012/05/25- | |||||||||||
当社のUTL-016はアナログ・デバイセズ(リニアテクノロジー)のLTC2274を搭載しており、高速にA/D変換したデータを8B/10B変換されたシリアル信号で出力します。 XilinxのSpartan-6 LXTを使って、データを受信するまでの要所をご説明します。 皆様のご参考になりますと幸いです。 下記環境で行った実験をもとに作成しています。 ISEのバージョンによって違いなどあるかもしれませんのであらかじめご了承ください。 ・XCM-020 ・ISE バージョン12.2 ・GTP Wizard バージョン1.6 |
|||||||||||
2012/05/28 : 公開しました 2015/02/25 : 加筆、修正を行いました |
|||||||||||
◆GTP Wizardの設定GTP Wizardの設定を解説します。ポイントは下記になります。
上記以外、特に設定することはないと考えています。 |
|||||||||||
◆GTPモジュールのクロック設定GTPに供給するクロックの設定は、GTP内部バス幅の設定により異なります。LTC2274を扱う場合2Byteモードですので、FPGA内のクロックは下図のように接続します。 PLLはユーザが設置する必要があります。 GTPCLKOU[0]とはTXOUTCLKのことです。通信レート/内部bit幅のクロックが出てきますので 1.5625G/10 = 156.25MHz が出力されます。 PLLからは1倍(CLKOUT0)と1/2倍(CLKOUT1)のクロックを生成させ、それぞれGTPのTXUSRCLK, TXUSRCLK2に戻します。 TXUSRCLK2 (= 78.125MHz)はユーザロジックに使用できます。 |
|||||||||||
◆UTL-016に与えるエンコードクロックLTC2274のエンコードクロックには、PLLでユーザロジック用に生成したTXUSRCLKを供給します。今回78.125MHzとしている理由は ・LTC2274の最大サンプリング周波数「105MHz」 ・GTPで設定可能なレート(1.2288 〜 1.62Gbps) の両方を満足し、かつできるだけ高速に動作する周波数であるからです。 LTC2274から送られてくるシリアルデータレートはエンコードクロックの20倍ですので、1.5625Gbpsとなります。 |
|||||||||||
◆まずKキャラクタを受信高速シリアル通信で、まず始めに手がかりに出来るのはKキャラクタの受信です。意図したタイミングで、Kキャラクタの受信フラグが立つかを確認してみてください。 UTL-016のSYNCピンをアサートして、フレーム同期モードに出来ます。このとき、LTC2274からはK28.5のみが出力されます クリックして拡大 これを受信すると、GTP側では「RXCHARISK」がアサートされます。ChipScopeでの波形を下記に示します。 K28.5は0xBCです。 クリックして拡大 |
|||||||||||
◆受信データをアライメントするUTL-016の出荷時スイッチ設定では、データ中にK28.7が混ざって送られてきます。GTPのアライメント設定で、K28.7を指定しておけば受信データがアライメントされ正常なA/Dデータが受信できます。 下図はデータを受けている時の波形です。 ・RXCOMMADET ・RXCHARISCOMMA ・RXCHARISK が頻繁に反応していることがわかります。 クリックして拡大 拡大した図です。 「RXCOMMADET」は8B/10Bデコーダよりも手前のブロックなので、 「RXCHARISCOMMA」「RXCHARISK」よりも早めに反応が出ているようです。 クリックして拡大 クリックして拡大 アライメントが出来ている場合は「RXBYTEISALIGNED」がアサートされます。 ある程度の期間「RXBYTEISALIGNED」がHighとなっていることを確認して ・ENPCOMMAALIGN ・ENMCOMMAALIGN をネゲートした方がよいようです。再アライメントが行われ、正常受信の妨げとなりました。 |
|||||||||||
◆受信データの順番をそろえるアライメントはデータの区切りとなるBit位置の検出でした。出力されるアライメントが整うタイミングで2Byte転送のByteが入れ替わる場合があります。 LTC2274は下位(2nd)ByteをKキャラクタとして送信してきますので、それを手がかりにByte並びを揃えます |
|||||||||||
◆フレームアライメントモニタ機能UTL-016(LTC2274)のフレームアライメントモニタ(FAM)機能を有効にする事により、Kキャラクタがデータに混ぜられ定期的に送出されます。クリックして拡大 FAM Mode 1では、ADしたデータのLowByteが前回のLowByteと一致していればK28.7(=0xFC)に置き換えます。 |
|||||||||||
◆受信データの順番をそろえるアライメントはデータの区切りとなるBit位置の検出でした。つぎは区切りとなるByte位置を検出します。出力データされる2Byteデータがずれている事があります。
GTP受信データはLTC2274の送出データが逆転しています。 ですので、GTP受信データのLowByteがK28.7である場合に、下記の組み合わせで並べ替えを行います 「今回受信したLowByte」&「前回受信したデータのHighByte」 クリックして拡大 ※お示ししている並べ替え、置き換え処理は一例です |
|||||||||||
◆K28.7を置き換えるK28.7は「前回ADのLowByteと同じ値である場合に置き換えられたもの」ですので、これを元に戻します。並び替え後のデータはK28.7が存在するとすれば、常にHighByteとなっているはずです。これを前回受信したHighByteで置き換えます。 最後に上位と下位を入れ替えてLTC2274の出力と揃えます。 クリックして拡大 ※お示ししている並べ替え、置き換え処理は一例です |
|||||||||||
◆入力アナログ波形の振幅についてUTL-016の出荷時スイッチ設定では1.5Vpp入力レンジとなっています。範囲外の振幅となる正弦波信号を入力した場合、以下のようにデータがクリップします。 クリックして拡大 PGA設定をLowとしますと2.25Vppとなり、クリップが解消されます。 クリックして拡大 UTL-016の差動アンプ(LTC6403-1)出力と、A/D変換IC(LTC2274)の入力は逆極性で接続されています。(パターン配線を考慮しています) シングルエンド入力の際はアンプのマイナス側から信号を入力します。 |
|||||||||||
◆回路データについて当社では、通常、サンプル回路などのご提供は行っておりません。 |
|||||||||||
みなさまの参考になれば幸いです。 間違いなど見つけられましたらぜひご指摘下さい。 |
|||||||||||
メールでのご質問はこちらへどうぞ | |||||||||||
UTLシリーズトップへ | |||||||||||