« 特電で花見をやりました | トップページ | CosmoZの低速サンプリング »

2015.04.10

Cosmo-Zのサンプリング周波数を動的に変更

Cosmo-ZのADコンバータのサンプリング周波数を動的に変更できるようにしました。

Cosmo-ZのADコンバータはのサンプリング周波数は、80MHz、100MHz、125MHzと3種類の選択肢があります。

このADコンバータのクロックはPLL(MMCM)で作っているので、いままでは、FPGAのソースコードを変更して再ビルドしなければなりませんでした。そこで、この周波数を動的に変更しようと考えました。

基本的なやり方は、過去の記事「XILINX 7 シリーズにおけるMMCM周波数の動的変更」で書いたのですが、MMCMのDRP(ダイナミック・リコンフィギュレーション・ポート)を使います。

基本的にはDRPを通じてレジスタに設定値を送り込めばMMCMは新しい周波数で動作を開始するのですが、望みの周波数で発振させるためにはどんな設定値を書けばよいのか、わからないと思います。

そこで、まず、80MHz、100MHZ、125MHzで動作するMMCMをCoreGenで作って、DRPを通じて現在の値を読み出します。その値をVHDLでハードコーディングして、必要なときに送り込むようにすればよいというわけです。

このようにしてDRPポートに送り込んでいるときの波形は次のとおりです。

Clk_drp

こうして作ったクロックによって、Cosmo-ZのADCは80MHz/100MHz/125MHzを動的に切り替えられます。

クロックが変わったら、ADCから送られてくるシリアルデータをデコードする回路をリセットして、やらねばなりません。

次の図は、ISERDESのIDELAY_CEと、BitSlipのパルスです。

80MHzのとき。

Sync80

100MHzのとき。

Sync100

125MHzのとき。

Sync125

このように、動的に周波数を変更し、再同期を行うことができるようにしました。




|

« 特電で花見をやりました | トップページ | CosmoZの低速サンプリング »

コメント

コメントを書く



(ウェブ上には掲載しません)




« 特電で花見をやりました | トップページ | CosmoZの低速サンプリング »