「ミュージックスペクトラムアナライザ」の編集履歴(バックアップ)一覧に戻る
ミュージックスペクトラムアナライザ - (2012/10/01 (月) 20:07:49) のソース
*ミュージックスペクトラムアナライザ Isotope #image(isotope_working1_800.jpg,http://www36.atwiki.jp/aroe?cmd=upload&act=open&pageid=38&file=isotope_working1.JPG) #image(isotope_working2_800.JPG,http://www36.atwiki.jp/aroe?cmd=upload&act=open&pageid=38&file=isotope_working2.JPG) 秋月300円液晶(LTA042B010F)とLatticeXP2 FPGA(LFXP2-8E)を使ったスペクトラムアナライザです。LCDを二枚使用することでステレオ表示を実現しているのが特徴です。描画速度は約64FPSで4096点FFTを毎秒128回行なっているので非常に描画がなめらかです。入力は同軸デジタルとLINE入力の二系統で電源は5Vで動作しています。 こうしたスペクトラムアナライザの横軸のスケールには普通、対数が使われるのですがこれはラウドネスを考慮したスケールになっていて人間の聴覚が過敏な周波数のスペクトラムを多めに(鈍感な周波数を少なめに)表示するようにしてます。これにより対数スケールのみを使った場合より実際に音楽を聞いた際感じる聴域の占有率と表示されるスペクトラムとの差を小さくしています。 **基板 #image(isotope_pcb_800.jpg,http://www36.atwiki.jp/aroe?cmd=upload&act=open&pageid=38&file=isotope_pcb.jpg) 中国深センの基板メーカーEzPCBに発注しました。 四層基板 **Isotope ブロック図 #image(http://www36.atwiki.jp/aroe?cmd=upload&act=open&pageid=38&file=isotope_block_800.png,http://www36.atwiki.jp/aroe?cmd=upload&act=open&pageid=38&file=isotope_block.png) Isotopeは様々なスペクトル表示モードやプリセット保存機能のをサポートするために複雑なシーケンス制御が必要でした。それをロジックだけで実現するのは困難でしたので、LatticeSemiconductor社が公開してる8bit ソフトコアCPUのLatticeMico8を使ってSoCを構成してFPGA内のモジュールを制御しています。他にLattice社が公開しているソフトコアCPUには32bitのLatticeMico32もありますが消費LUTとブロックRAMがLatticeMico8の10倍近く多いため、8k LUTのLFXP2-8Eに使うには消費リソースが多すぎるのでIsotopeにはLatticeMico8の方を使用しました。 LCDには秋月300円液晶のLTA042B010Fを2つ使っていますがこのLCDはバッファを持っていないので外部SRAMをFPGAに接続しVRAMとして使用しています。VRAMの非表示領域にPCMデータを保存することで入力信号のバッファも兼ねてブロックRAMを節約しています。 **回路 1.電源部 #image(sch_isotope1_500.png,http://www36.atwiki.jp/aroe?cmd=upload&act=open&pageid=38&file=sch_isotope1.PNG) 主電源はスイッチングACアダプタからDC5Vを供給します。ソフトスイッチ管理のためにAVRマイコンのATtiny13Aと P-chパワーMOS-FETのFDS4935Aをハイサイドスイッチとして使用しています。 LTA042B010FのLCDドライバのために正負電源が必要なのでDCコンバータICのSC4503を使用して+9V,-9Vを生成します。 さらにそれから正負のリニアレギュレータを用いてノイズを除去してアナログ入力のボリュームコントロールICのLM1972用の +5V,-5Vを作ります。リニアレギュレータで除去できるのは低周波ノイズだけなので高周波ノイズは何種類かの容量値の異なる コンデンサを使って除去します。 2.アナログ入力部 #image(sch_isotope2_500.png,http://www36.atwiki.jp/aroe?cmd=upload&act=open&pageid=38&file=sch_isotope2.PNG) Isotopeのオーディオ入力は同軸デジタル入力と、アナログ入力の2つあります。 デジタル、アナログとも後段にアンプやDACに接続することを想定してスルー出力を備えています。 アナログ部はボリュームIC LM1972で振幅調整し→低ノイズCMOSオペアンプAD8656で増幅→PCM1802でAD変換という流れです。 S/PDIFの復調にはCS8416を使っています。同軸デジタルのスルー信号は電源OFF時にも出力できるようにスルー出力生成用の TC7WU04の電源はハイサイドスイッチの手前から取ります。 3.FPGA周辺回路 #image(sch_isotope3_500.png,http://www36.atwiki.jp/aroe?cmd=upload&act=open&pageid=38&file=sch_isotope3.PNG) 左側のLCDの配線はFFCケーブルを90度折るので予め配線をクロスさせておきます。 オシレータが22.579MHzと中途半端な値なのはADCの512fsで44.1kHzを作り出すためです。 [[回路図(PDF)>http://www36.atwiki.jp/aroe?cmd=upload&act=open&pageid=38&file=sch_isotope.pdf]]