« あけましておめでとうございます | トップページ | ZCU111でコンステレーション »

2023.01.02

ZCU111のDACとADCを動かす

ZCU111を会社に持ち帰って、正月早々から開発開始です。

Rfsoc_20230109114101

実験していて思い通りの波形が出なかったのですが、最初にわかったのは、RF Data Converter(ADCとDACを使うためのIPコア)のtvalidとtreadyは飾りであるということです。

普通、AXI Streamはtvalidとtdataでフロー制御するのですが、RF Data Converterではそれを見ていないようです。起動後はtreadyは常に'1'で変化しなのでフロー制御はできません。DAC周波数に同期したクロックを与えるのが正解です。

その代わりに、RF Data Converterが出す出力クロック(サンプリングクロックが分周されて出てくる)に同期してデータを与えるようです。

さて、DACに入っている「ミキサ」という機能を有効にすると、RFSoC内部にNCO(数値発振器)を作ってくれて、IQ用の波形を作ってくれます。

変調のかかったIと変調のかかったQを出力してみました。

Iq1

拡大してみると、IとQが90°ずれていていい感じです。

Iq2

500MサンプリングでNCOは100MHzという、微妙に周波数があっていない設定でも正しく動くなんてすごいですね。

これを足し合わせればそのままRF信号になるというわけでしょう。

 

同じ要領で、のこぎり波  /|/|/|/|/|/| を作って、それをに2GHzで変調をかけた波を出すことにも成功しました。

Iq3

この出力チャネルには「バラン」という部品が入っていて、差動信号をシングルエンドにしているのですが、バランはトランスなのでBPFになっています。そのため、頂点から落ちるところで位相が180°回転するので波形が乱れているのだと思われます。

どこまで周波数を上げられるかというと、6.5GHzのDACなので、最大は3.2GHz付近。

私のオシロは2.5GHz帯域なので減衰してしまいますが、何とか見ることはできました。

Iq4

上の波形を作るのに使ったRF DCの設定は以下のとおりです。

Iq5

 

 

さて、DACは理解したので今度はADCを使おうとしたら、いきなりの難題。

なぜかADCのほうは128bit幅しかありません。

Iq6

データシートを読むと確かに128ビット幅と書かれています。

DACの半分のビット幅しかないのですがこういう仕様のようです。

ゆっくりとした波形を見るときには問題ないのですが、

Iq7

早い波形を見て拡大すると、やはり、データが半分消えてしまっています。

Iq8

どうすればよいのかというと、4Gサンプリング時、128bit 500MHzでデータを出力してきたデータをAXI StreamのInter connectを使って256bit 250MHzに変換してあげればよいようです。

Axisic

これで綺麗な波形がキャプチャできるようになりました。

Iq9

下の図は、ファンクションジェネレータで作った正弦波をZCU111に入れて、ADCでサンプリングしたものをそのままDACから出力したものです。

Iq10

パルス波形なんかも入力と出力できるのですが、バランが入っているせいで歪んでしまいます。

Iq11

ここに至るまで相当苦労しましたが、ZCU111のADCとDACを使いこなせるようになってきました。

 

|

« あけましておめでとうございます | トップページ | ZCU111でコンステレーション »

コメント

大変参考になります。ZCU111で同じようなことをしたいのですが、FPGAのコードを参考にいただくことは可能でしょうか。Block Diagramの全体を参考に掲載いただきたいです。ご検討よろしくお願い致します。

投稿: momo | 2023.03.25 15:51

厳しいことを言いますが、これくらいの設計が自分でできなければ、ZCU111を使って何かを作り上げることはできないでしょう。

投稿: なひたふ | 2023.03.25 21:25

コメントを書く



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




« あけましておめでとうございます | トップページ | ZCU111でコンステレーション »