平成14年1月4日夕刊
なひたふ新聞 電子回路が大好きな趣味人「なひたふ」のWebサイト
maruTOPページへ戻る
maru電子回路作品集
電光掲示板(大)
電光掲示板(中)
電光掲示名札1
電光掲示名札2
電光掲示ウェルカムボード
486マイコンボード
Z380マイコンボード
超高速フーリエ変換器
空中配線ロボット
組込み型 PROM・GALライター
CPLDユニバーサルプログラマ
CMOSデジカメ
基板年賀状
フーリエ太郎
平成8年5月発案
平成10年10月完成
平成10年12月故障
メール
メールアイコン御意見、御感想は
nahitafu@nifty.com
Copyright
このWebページ上で紹介したすべての回路、情報、内容に関する著作権は私、なひたふが所有します。無断転載を固く禁じます。
(C)Copyright 1999-2001 Nahitafu
平成10年2月28日発行.第三種郵便物不認可
超高速フーリエ変換機 フーリエ太郎
基板表側写真

 これは、高速フーリエ変換を行うボードです。ハードウェアで高速フーリエ変換をいかに速く行うかをいろいろ模索していた私は、FFTのアルゴリズムをもとに適当な改良を加えて、さらに高速に行うことに成功しました。このアルゴリズムを私は勝手に超高速フーリエ変換(VFFT)と呼んでいます。通常、ソフトウェアでFFTのプログラムを書くと3重のループになります。これはハードウェアにするのは困難です。少なくとも、汎用TTLとGALの時代では・・・
 私がおこなったアルゴリズムの改良とは、3重のループを単一のループにすることです。そのおかげで上のような回路規模でFFTが実現できたのです。

 このボードにはCPUやDSPの類はのっていません。載っているのはラッチやレジスタ、メモリ、セレクタにカウンタ、シフタ、ロジックにステートマシン、そしてハードウェア乗算機です。これらの要素を組み合わせ、さらにFFTのアルゴリズムをハードウェアで計算するために改良してこのボードを作ったのです。ぎっちぎちにロジックICを並べ、それをぐじゃぐじゃっとしたジュンフロン線でこんもりとつなぎます。折り重なったジュンフロン線の厚さが1cmくらいにはなります。
 下の写真はそのボードの裏面です。この写真はかなり昔に撮影したので、現在ではもう少し部品が増えています。ボードの下にある赤い四角はマッチ箱です。
超高速フーリエ変換機(フーリエ太郎)性能表
基板裏側写真

 このフーリエ変換機の性能はかなりよいものです。
  • 複素4096ポイントフーリエ変換、実部・虚部ともに16bit
  • 一秒間に約80回のフーリエ変換をおこなう。
  • ADコンバータをつないだときはサンプリング周波数は320kHzくらいまでリアルタイムでフーリエ変換可能。
  • フーリエ変換中でもサイクルスチールで次のデータを取り込める設計なので、データの転送に伴う性能低下がなく、真のリアルタイム性を追求できる。
  • ISAバスがついているためパソコンにつなぐことが可能。
  • このボードはスタンドアローンで動くように設計されているので、パソコンがなくてもフーリエ変換できる。
  • 安価である。(製作費10数万円くらい?)量産すれば更に安く作れる。(部品代だけなら3万円くらい。)
展示風景
1997年度展示

 上の写真は1997年度の大学の学園祭で、当時属していたサークルの会場で展示したときの写真です。このときはマイクとADをつないで、人間の声をリアルタイムでフーリエ変換していました。データの表示には486CPUを積んだパソコンを使っています。


 このフーリエ変換器は非常に高速でリアルタイムで変換できたので、非常に有効なアプリケーションが考えられました。

1998年度展示

 上の写真はその一年後の学園祭で展示したときの写真です。その年は、専用のAD変換ボードを設計しました。このAD変換ボードは、100kHzでサンプリングし、12ビット精度で変換します。

 変換したデータは汎用のSRAMとGALで作られたFIFO、というよりはリングバッファに蓄えられます。このFIFOのおかげでAD変換とフーリエ変換のタイミングを非同期にできるようになりました。
 最初は、リングバッファの入力カウンタをバイナリにして、出力カウンタをFFTで使われるビットリバースで設計しました。こうするとデータの取り込みを完全に自動化できるからです。
 しかし、データの読み込み時のオフセットをどうするかという問題が生じてしまったので、結局のところ入力も出力も普通のバイナリカウンタにしました。ICを4つほど追加すれば解決できる問題ですが、基板の面積が足りなくなったので、妥協しました。

ウの声
 その年度の学園祭では、展示1日目と2日目の間に徹夜してアプリケーションを充実させました。というのは、音声のスペクトルを利用して、声を楽譜に直すアプリケーションを作りったのです。
 これがなかなか好評でした。この楽譜変換アプリは非常に高速(完全リアルタイム)であって、しかもとても正確です。和音を楽譜に直すルーチンは組んでいませんが、スペクトルを目で見たところ、半音程度の音の高さの差は余裕で識別できます。例えば、ピアノで1オクターブの12音を同時に鳴らしたら、本当にスペクトルが12本見えるほどです。

楽譜に変換

 一日目の展示を見にきてくださったお客様にはあまり好評ではありませんでした。なぜなら、FFTとは何か、ということを説明することがあまりにも難しかったからです。しかしながら、楽譜変換アプリケーションを作った後では、お客様に実際に唄っていただき、それを楽譜に変換しました。人間の声というのは意外と正確な音階から外れるものです。合唱ではよく「音が下がる」といいますが、歌っている人にはなかなかわからないものです。ですが、FFTを行えば一発でわかったのです。
 なお、2日目の展示が大好評で、そのお陰でサークル内の人気投票で第二位を取ることができました。2日目だけ見ればダントツの一位でした。実際にお客様が触って遊んで体感できるということが、人気投票で上位にいくコツであるということを学びました。

フーリエ太郎 応用例
 こんなことできたらいいな、も含めて・・
  • 合唱をフーリエ解析し、上手な合唱と下手な合唱の違いをスペクトル的に評価する。
  • 猫や犬の泣き声をフーリエ解析し、動物と会話をできるようにする。
  • 人間の声の善し悪しを解析し、合唱や声楽の発生指導に役立てる。
  • フーリエ変換と逆フーリエ変換をリアルタイムで行い、フィルタリングや音響処理を行う。
  • 聖徳太子(10人の会話を判別する)
  • 楽譜入力支援ソフト
画面
フーリエ変換機 開発秘話
 私がこれを最初に発案し、設計したのは1996年5月ごろでした。その年に作り始めたのですが、最初の年はまったく動作してくれませんでした。動かないながらも学園祭に出品したときは、でたらめな結果ばかり返したため、乱数発生器と呼ばれていました。度重なる徹夜の末、私は夢の中で啓示を受けました。
「おまえの回路には、あと10箇所の設計ミスがある」
と。
 徹底的にデバッグし、ようやくFFTらしきものができたのが、1997年の元日です。
 この装置を設計した当時(1996年5月頃)はおそらく一般人の扱えるコンピュータでは世界最高速だったと思うのですが、Pentium2の登場で立場が危うくなってしまいました(PentiumでFFTの計算するよりもこのボードの方が速かった)。さらに最近になって、最新のDSPには完全に負けました。時代の進歩は速いものです。趣味の世界で最速を追求するのは分が悪いと感じました。

 ここで、負けてはいられないと思い、新しくフーリエ変換機を作ることも考えました。ただ、ディジタル回路でいくら早くしても時代の進歩が速いので、たとえ世界最高速になってもすぐに抜かされてしまうでしょう。そこで、SAWコンボルバ(表面波畳み込みデバイス)を用いたマイクロ波的なフーリエ変換機を設計しよう思ったりしました。最近では個人でもCPLDやFPGAが使える時代になったので、一番手軽なのはXILINXのVirtexとかを使うことだと思います。