両面基板で300MHz成功!
両面基板で作ったADV7123のDACボードが動きました。
FPGAとDACの間は、300MHzのTTLレベルのバスで接続していますが、問題なく動いてくれました。

ただ、ADV7123の出力するアナログ波形は、先日作ったAD9753よりも汚かったです。
100MHzのオシロで見ているので確実なことはわかりませんが、確かにAD9753のほうが狙ったとおりの波形を出してくれました。ADV7123はどうも波形がリンギング気味なのに鈍り気味です。
考えられる原因としては、ADV7123はAD9753よりもセトリングタイムが長いことや、プロービングがいいかげんである、などの問題など挙げられます。
この辺は高速なオシロを借りられたら見てみることにします。

また、FPGAからADV7123に供給するクロックは300MHzの速度になりますが、これはTTLレベルで与えないといけません(すごい仕様だ!)。ですが、FPGAから普通に300MHzの信号を出そうとしても出てきませんでした。
どうやら、150MHzあたりが限界のようでした。
よくよく調べてみると、Spartan3のFPGAはUCFファイル等でI/Oに何も指定しないと、「LVCMOSの2.5で、Slew=SLOW」という設定なってしまいます。
つまり、スルーレートが遅く、電流も弱めに設定されてしまっているのです。
これを「LVCMOS33の24mA、FAST」に指定すると、あら不思議。300MHzの信号が出せるようになります。
「LVCMOS33の24mA FAST」はパワーが違うようですね。
300MHzの速度でバスにデータを出力する箇所は、ODDRを使って実現しました。
というのは、Spratan3のFPGAはせいぜい150MHzくらいの速度でしか動きません。300MHzの速度でデータを出力するには、FPGA内部で150MHzの速度で2系統の信号を作り、それをODDRでマルチプレックスしながら出力すればいいわけです。

FPGAの中が150MHzくらいでしか動かないのは、普通の設計ではカウンタのようなものがあちらこちらに作られるからです。カウンタを作らずに、単純なデータラッチくらいならばもっと高速に動くでしょう。BlockRAMも単体なら300MHzくらいで動くようです。
カウンタをつくるかわりに、BlockRAMの中にバイナリコードを格納しておいて作るステートマシンもあるそうです。
そういう状況ですので、クロックだけならFPGAの中では300MHzの速度でも動くことができます。また、クロックだけなら、300MHzの速度で出力することができます。
というわけで、データはODDRで、クロックはDCMを使って作り、300MHzの速度でデータとクロックを供給しました。
こんな感じですが、どうやら問題なく動いてくれたようです。
両面基板といえども、頑張ればこのくらいのものは作れるようです。
次はGHzにチャレンジ! いや、それはちょっと無理っぽい!?
| 固定リンク


コメント