スペクトラム・アナライザの製作記事について

平成16年12月10日

改良されたFFTのデータフロー デザインウェーブマガジン2005年1月号の記事、
「スペクトラム・アナライザの製作」はいかがでしたでしょうか?

 このWebページでは、さまざまなサポート情報を紹介します。


circle21_purple.gif コンセプト

 前回や前々回のDWMの付録やトラ技の付録もそうですが、雑誌に載っているサンプルを実際に作られた方はあまり多くないのではないでしょうか?
 このフーリエ変換装置は実際に皆様に作っていただけることを念頭に設計し、(1)動かして面白く、(2)作るのが楽で、(3)入手の容易な部品だけで構成する、という3つをコンセプトとしています。

circle21_purple.gif 部品の入手

 シリアルADコンバータのMCP3204は、秋月電子で購入できます。
 オペアンプのLM324や、40MHzの水晶発信器も秋月電子で購入できます。

circle21_purple.gif 2.5Vのロジックレベルの作り方

 記事では、水晶発信器やADコンバータの出力を抵抗分圧で無理やり2.5Vロジックにしています。
 本来は74LVC244などの低電圧系ロジックを使ってレベル変換するのが正当な方法です。しかしながら、低電圧系ロジックは、慣れていないと購入が難しいだけでなく、また部品が小さくはんだ付けしにくいため、初心者の方には敷居が高くなってしまいます。本スペクトラム・アナライザは、誰にでも容易に作っていただけることを念頭に考え、抵抗で電圧を変換しています。
 Spartan3を製品にご利用の場合は、できるかぎり正当な方法でレベル変換してください。

 なお、抵抗でロジックレベルを変換する際には、次の点にご注意ください。

  1. 電流が多く流れる(数mAしか電流を流せないデバイスは要注意)
  2. 信号が遅くなり、波形が鈍る

 この1と2は相反する性質ですので、抵抗値はアプリケーションに応じてカットアンドトライで決めて下さい。

 なお、記事ではCLKのラインに5V水晶を接続し、220Ωを2つで分圧しています。

レベル変換回路

 5Vの振幅であれば抵抗に11mA流れます。水晶発振器にとっては限界に近い電流ではないかと思われます。また、もしCLKの配線の負荷容量が30pFくらいある場合には、30pF×220Ω=6.6n秒の時定数になります。40MHzくらいの単調な信号であれば動くでしょう。

 また、シリアルADコンバータの出力は2.2kΩ×2個でレベル変換していますが、これは、当該シリアルADがそれほど電流を取り出せないのと、信号が比較的遅いため、抵抗値を大きくしています。


circle21_purple.gif Parallel Cable IVとParallel Cable IIIの互換性について

 本スペクトラム・アナライザは、XILINX社の Parallel Cable III (互換品を含む。以下PC3と略す) またはParallel Cable IV(以下、PC4と略す)がご利用いただけます。

 PC4は、内部に複雑な回路を備えたインテリジェントなJTAGケーブルです。その複雑な回路によって高速通信を実現することができるようになっていますが、PC3と互換性のある動作モードも備えているようです。すなわち、PC3と同じ方法で単純にアクセスすると、PC4は下位互換モードで動作します。

 本スペクトラム・アナライザの記事ではPC4を使用していますが、PC3互換モードで動作させていますので、PC3でも当然動作いたします。なお、PC3でご利用の際に、FPGAが認識されない場合あるいは動作が不安定な場合はこちらの対策方法をご覧ください。

(12月26日 追記)


circle21_purple.gif ダウンロード

 

  • ソフトウェア (Windows版)Version 1.1
    若干高速化しました。 (12月26日)
    毎秒7.8サンプル →毎秒 8.9サンプル 
    サンプリング周波数10kHz時
  • FPGA用データ
    • fftjirou.bit
      FPGAに直接書き込むためのファイル
    • fftjirou.mcs
      コンフィグROMに書き込むためのファイル

 


circle21_purple.gif 固定小数点の乗算の件

 丸め処理の方法とかがこれで正しいのか、ちょっと自信がありません。一応動作していますが、本当は符号を考慮して丸め処理をしなければならないのではないかと思います。

circle21_purple.gif どうして遅いのか?

 FFTの処理は決して遅くありません。遅いのは、FFTの結果を送受信するJTAG上での通信速度です。JTAG経由で通信するのをやめて、USBかPCIにすれば超高速になります。

circle21_purple.gif パフォーマンスの改善

 91ページの図6を見るとわかるように、バタフライ演算器の各部分は使われていない時間が多くあります。特に、ステート11は、全く使用されていません。

バタフライ演算のデータフロー(無駄が多い)

 乗算器は3回しか乗算しない(ステート2,3,4)ので、パイプライン化すれば3〜4倍程度の速度向上が見込まれます。
 余力のある方は試してください。

circle21_purple.gif 筆者プロフィールの訂正

 私は技術士(電気電子部門)ではありません。まだ、技術士(電気電子部門)です。二次試験は来年こそ受験します。

 ball_metal.gif

お問い合わせはmail14.gifnahitafu@nifty.comまでお願いします。

chickens_back.gif 戻る

 

Copyright(C) 2004 NAITOU Ryuji. All rights reserved. 無断転載を禁ず