LA5034というロジックアナライザを買った。ロジックアナライザは既に、以前秋月電子で買ったZEROPLUS 16064を持っていたが、FPGAのデバッグで使うとチャンネル数が16では明らかに不足であった。なので32ch以上のロジックアナライザを探していたが、eBayでなんと34ch、500MHzサンプルのロジックアナライザが180$前後で売ってるではないか。 さっそくeBayに登録して落札してみたのだが、この後ヤフーオークションのような面倒くさい手続きが当然必要なのだと思っていたが、Paypalで金を払ったらそれでお終いで拍子抜けした。このお手軽感にはAmazonで買うのとほとんど変わらない。自分が買ったのは185$で送料が5$、計190$程度で買えた。最終的にカード会社に来た請求額は日本円で15011円であった。このスペックのロジックアナライザがこの値段で買えるとはチャイナパワー恐るべしである。注文から一週間で中国からEMSで商品が届いた。
ちょっとしたアイデアというかメモ
FusionPCBでヘッドフォンアンプの基板を作ろうかどうか悩んでいて、基本は前に作ったヘッドフォンアンプの回路を流用する気だけど、なるべくシンプルな構造にしたいので前面のスイッチを無くして、プラグを挿入すると電源が入る仕組みにしたいと思った。
いろいろ調べてみたのだけど巷で売っている二個スイッチ付きの3.5mmのオーディオジャックの回路ってのはほとんど下記のようになっていた



今作ってる物。製作中の物を晒すのもアレかなあとも思うのだけど、とりあえ動くものができたので中間報告。
発端はfoobar2000のChannel Spectrum Panel (こんなん↓)
こうしてみるとゴミみたいなんだけど、HDLなんか全く知らない状態から始めたので作るのに一年以上かかってるという。LatticeXP2基板にはロジックアナライザに繋ぎやすいように、上下両方にピンヘッダを装着してある。一部ピンヘッダが刺してない所は特に意味があるわけじゃなく手持ちのピンヘッダが無くなっただけという。あと写真に写ってないけどこれの他にDAI(CS8416)基板がある。
構成:
液晶:秋月液晶LTA042B010F
FPGA:デジタルデザイン誌付録 LatticeXP2 CQ-FRK-LXP2
SRAM:CY7C1041DV33
DAI:CS8416
処理の流れとしてはSPDIFから送られてきたデータをまずDAIで受けて右詰フォーマットにしてFPGAに送る。それから2048点でFFTしてからスペクトル化、バッファに書き込み。その後SRAMのデータを読み込んでドットクロック4MHzで秋月液晶に出力してる。VRAMには秋月で売られてる高速SRAM CY7C1041DV33を使用。これでダブルバッファ(左右合わせて四画面分)を作って出力している。FPGAの動作クロックは64MHzと超余裕なんだけどそんなんでも60FPSが簡単に達成できている。
これからの予定は今のところ横軸(周波数方向)がギターの指板のように純粋に対数的になってるのでこれを人間の聴覚に合わせて低域と高域の領域を狭めて、3000Hzあたりの人間の聴覚が過敏なあたりの周波数の領域を広げたい。(ラウドネス補正)
今2048点でやってるFFTのポイント数を二倍にしたい。秋月液晶の解像度は400x96と大した事無いんだけど2048点でもまだまだ低域の解像度が不足する感じ。2048点でFFTしても出力結果の半分はナ イキスト周波数以上のノイズであるから捨てなきゃいけない。実際に有効な結果はその半分の1024個で、出力結果の周波数は20Hz、40Hz、 60Hz、80Hz・・・と等差数列なので、対数的な人間の聴覚に合わせて横軸を割り振っていくと、低域の解像度が全然足りない。だけど高域は逆に余りま くってくるので表示されないスペクトルは間引きする。
FFTポイント数を二倍に上げると基底周波数1/2になると、出力周波数の差も半分になって10Hz、20Hz、30Hz、40Hz・・・となる。なのでポイント数を上げると低域の解像度が少しはマシになるという原理。
ポイント数を上げるのは速度的には問題無いのだけどリソース的に厳しい。今現在9個あるLatticeXP2の組み込みRAMのEBRRAM(18bit*1024)はFFTのIPコアだけで5/9食っている。あとDAIから送られてきたデータを保存するのに2048*16*2(LRch)で4/9食って空きが無い。その状態でさらにポイント数を倍にするとFFTのIPコアに使うメモリは9/9で、全部それだけでEBRRAMを食ってしまう。なのでDAIから送られてきたデータを組み込みRAMでなくSRAMのブランク領域に書き込まなければならないのだけど、SRAMにアクセスするmoduleが増えると制御が凄くめんどくさいことになりそうだ・・・
後やりたい事箇条書き。
・高さに応じたスペクトルの色付け→大きいスペクトルほど明るい色にしたり
・ピーク表示
・なるべくかっこいいケースにに組み込む
・ADCをつけてマイク入力、Line入力に対応
音が出るので注意
メモ帳代わりにwikiを作った。基本的にFPGA関連のネタ。
先日作ったDACなのだが、AK4112Bを使ったDACを作った時のようにまた電源ON時にリセットが失敗して信号が出力されないことがあった。今回もリセット端子にRーCディレイで一応100msほど遅延をかけて対策を取ったつもりだったのだが、どうもCS8416のリセットはもっとナイーブな様子。
Webで公開されているほかの人のCS8416を使った回路を見ると、リセットICを使ってリセットをかけているものがあったが、たかがリセットかけるのにIC使うのもどうかと思うし、ディスクリートで簡単に組める気がしたので、以下のようなリセット回路をDACに追加してみた。


電源電圧が徐々に上昇していき4.5V付近でトランジスタがONしてリセットがかかっているのがわかると思う。この回路を追加してからは電源ONリセットで起動が失敗することは無くなった。
前回に引き続きまたDACを作った。資格の試験が終わって時間ができたので、買ってから長い間放置していたCS8416を使ってデジタルフィルタ内蔵のものを作った。
DACの製作も3個目となると大分慣れてきて基板の設計やらなんやらは一日ほどで終わり。組んでからも一発で動いた。DAIに使ったCS8416は自作DACでよく使われるSPDIFレシーバで24bit 192KHzまでに対応している。共立電子で購入、結構高くて一個1200円ぐらいした。DACに使ったAK4395は旭化成の24bitデジタルフィルタ内蔵DACだ、これは手元にあった。
前作ったuPD6376はフィルタレスなのでどのぐらい違いが出るかオシロで確認してみた。
見た目で大分違う。PD6376の方はサンプルの継ぎ目で階段状の高調波が出ているが、AK4395の方はなめらかになっている。まあスピーカーを通して聴いた感じだとほとんど違いはわからないけれど・・・。
***
もうDAC作るのはいいな。満足した。今度は雑誌付録のFPGA(Lattice XP2)が買ってからちょっといじって放置プレイなのでこれでなにかしようか考え中。
![]()
手持ちのICが余ってるのでまたDACを作った。チップ間の配線はポリウレタン線を使用。電源レギュレータは面実装の物を使った。TO-220の物と比べて高さがかなり減るので良い。
最近は回路を組んでもわりと作ってから一発で動くことが多かったのだがAK4112Bには少し苦戦した。電源を投入してもBCKピンからクロックが出力されなかった。原因は起動直後の電源が不安定な時期に立ち上がってしまい、電源が安定してからもERRORフラグが立った状態だとPLLがONしないのでクロックが出ない。

要するに電源が安定するまでRESETピンをLOWに固定しておけば電源が不安定な時期に起動してエラーになるようなこともないのでこのようにして起動から数m秒後立ち上がるようにしたら無事BCKからクロックが出るようになった。
![]()
LEDはERRORフラグが出ていないときに光るようにした。

