APB-1 を作ってから2年以上たち、使っているデバイスの入手にも苦労するようになりました。 またデバイスも進化し、
APB-1 設計当初より高性能なものが使えるようになってきました。
そこで、2年たった今、入手可能なデバイスで FPGA実験基板を再設計してみました。
APB-1 で不満だった部分を強化し、不要だった部分は削除しました。
デバイスは以下のものを選定しました。
- FPGA XC6SLX9(Spartan6)
- AD ADC1610S(16ビット 100Msps 600MHzBW)
- ADドライバ ADA4950(750MHzBW)
- 高インピーダンスバッファ OPA356(450MHz、FET入力)
- DA AD9707(14ビット 175Msps)
- AD/DA UDA1345(S/N100dB 100Ksps)
- USB FT232H(USB2.0 480Mbps)
- CPU ATMEGA328(オプション)
- その他レギュレーター、バッファ、フラッシュなど
ほとんどの項目で性能が向上していますが、いくつか悪くなったところもあります。
具体的には
APB-1 と比べ性能向上したのは、
- FPGAをSpartan3E(XC3S250E)からSpartan6(XC6SLX9)に変更
- ADCが12ビットから16ビット、サンプリング周波数が80MHzから100MHzと向上した
- DACが10ビットから14ビットと向上した
- ADCドライバーの採用によりオーディオ帯域から入力可能
- 高インピーダンスバッファの採用により入力インピーダンスを1MΩに設定可能
- USBの通信速度が480Mbpsと高速化した
- オーディオ信号入力が可能になった
です。
一方、悪くなったり削除したのは、
- AD、DAのLPFを削除したためエイリアシングがでる。 そのかわりサブナイキスト帯域の実験ができる。
- ロジック入力が16ビットから8ビットになり、接続コネクターがピンヘッダーになった
- オーディオDAの最高サンプリング周波数が200KHzから100KHzと低くなった
- マイクロSDのコネクターがなくなった
- CPUがARMからAVRになり、オプション扱いとなった(基本的には使わない)
です。
簡単なアンチエイリアシングフィルターは必要なら入れられるようになっています。
■試作した基板
クリックすると拡大
基板は、大きさ100x100、厚さ0.8mmです。
中央の大きなIC1がFPGA(XC6SLX9)です。
FPGAの左上のIC6がADC1610Sです。 FPGAとLVDSで接続していますのでこの信号ラインからAD入力へのかぶり(自家中毒)が低減できます。
ADC1610Sの左にあるIC8がADドライバ(ADA4950)です。 シングルエンドから差動に変換しADCに接続しています。
高インピーダンスバッファ(OPA356)は裏面にあります。
FPGAの右側にあるIC7がDA(AD9707)です。 QFNパッケージなので小さく見えます。
FPGAの左下にあるIC5がAD/DA(UDA1345)です。 IC5の下にあるステレオミニジャックからオーディオ入出力します。
FPGAの左の未実装のIC10はATMEGA328用です。 スタンドアローン動作させるときはここに実装します。
■閑話休題
- LVDSラインはミアンダパターンで等長配線を試みましたが完全には等長にはできませんでした。
とはいっても100MHzですからスキューは十分小さいです。 実際、確実に受信できるウインドウ幅を測定しましたが十分広いです。 ミアンダパターンは必要なかったかも...
- ADC1610の仕様書のミスに悩まされました。 特にレジスターの設定説明部分に誤りが多いようです。
クロック入力をシングルエンドにすると動作しなくなるし、レジスター10番が存在しているようだけど記述がまったくないし...
- ADC1610のデータをFPGAで受けるのにADC1610のDAV出力を使おうと思っていましたが、DAVでサンプリングした後内部クロックに同期させる必要がありかえって面倒です。 結局FPGAのIODELAY2のディレー量を変化させ、正常受信できるウインドウのセンターに設定することにしました。
- ADC1610S、ADA4950、AD9707はQFNパッケージです。 QFPよりブリッジしにくく半田付けは容易です。 位置あわせが難しいのが難点ですね。
- デバッグ用にLEDをたくさんつけました(FPGAの右下)が、次回バージョンでは削除し、PRE−1基板と接続するコネクターにする予定です。 受信機として使うとADが16ビットになった効果があるのか気になります。
- いまの基板では入力インピーダンスは高インピーダンスバッファ(OPA356)を使う場合は1MΩ、使わない場合は50Ωになっています。 変更するにはコンデンサで切替えが必要です。
これでは面倒なので次回バージョンでは常に高インピーダンスバッファ(OPA356)を使うようにし、プッシュスイッチを押すと50Ωになるようにします。