« 3号機のソフト改善とSTM32Primer2の改修 | トップページ | 3端子レギュレーターの復讐 »

2010年1月27日 (水)

量産を目指したリニアPCMプレーヤー3号機完成

 Olimexに8枚も基板を発注して量産を目指しているSDカードを使ったリニアPCMプレーA1272647 ヤー(3号機)の1台目が遂に完成した。途中致命的な誤りを見つけて肝を冷やしたが、何とか想定どおりに実装が済んで動き出した。素直に嬉しい。ま、プロジェクトというものは必ずどこかで思わぬ障害にぶつかるもので、これを乗り越えてゴールに辿りつくからこそ、大きな感激になるというものだ。まあ今度もその顛末(てんまつ)を聞いてください。

1号機もハードでDACをドライブする(1/20/10)
 Olimexからfax received(FAX届いたよ)の2語メールが来て1週間後、1/15に例のshipped(出荷したよ)の1語メールが来た。いつもより遅い。発送から到着までは、前回の例や、ウェブなどを見ていると、航空便なのに12日から2週間ぐらいかかる。基板の到着は、今月末になりそうだ。時間があるので、ジッターのないDAC再生にもう少しこだわってみた。

 DACのデータ送り出しのタイミング(LRのトグル)をソフトでなく、タイマーのハードで制御することで、仕様上のジッターを0にする(勿論、水晶発振子のジッターは残るが)ことが出来るようになったのは、前回の記事のとおりだが、パラレルのLCDを使っている1号機には適用していない。

 このプレーヤーは自分がいつも持ち歩いており、音に慣れている。こいつを直すと、もしかしたら音が変わったことが分かるかも知れない。ブレッドボード上のプレーヤーはコンデンサーが違うし、配線が長いためか時々小さいビートが入ったりしてリファレンスにならない。

 変更はブレッドボードのようにジャンパー1本というわけにはいかない。久しぶりにねじ止めした基板をはずし、半田ごてでピンの位置を替える。パラレルのLCDの制御線とぶつかったが、このLCDのドライバーは以前、自由にピンを選べるようにした自信作である。ヘッダーファイルの変更だけで簡単に位置をずらせた。ソフトはこうあらねばと上機嫌で作業する。

 何事もなくファームの書き換えもすみ、1号機の改修は終わった。音を聞いてみる。正直なところ前と変わらない。しかし、何となく音が静かな感じがする。もちろん気のせいでしかないが、昔々、4~5万クラスの安物のCDプレーヤーから20万近い高級CDプレーヤーに替えたときに少し似ている。このときも始めは「おとなしい音になった」という印象があった。前のプレーヤーの賑やかな音に較べると派手さに欠けた。しかし、音の情報量、定位、解像度は格段に上がっていることが聞き込んで納得できた。

 今度も、何か、そんな気がする。落ち着いて音を聞いていられる。オーディオの怖さは、思い込みで聞いている音が変わるところで、ジッターがなくなったというだけでこれだけ音が違うように感じるのだから人間の思い込みというのは怖いものである。気のせいに違いないが、もしかしたら本当に音が変わっているのかもしれない。

Olimexの基板が予想より1週間早く着いた(1/22/10)
 基板が来るまで、まだ日にちがあるので、CDケースの角を利用した電池フォルダーをぼちぼち作り始めた。何しろ受注残は8台である。このあいだ買ったサーキュラーソー(丸鋸盤)が大活躍である。細刃は予想通り、きれいにプラスチックを切り出し、面白いようにフォルダーが出来ていった。A1232617

 ところがshippedのメールが来てからわずか1週間で、Olimexから基板が書き留めで届いてしまった。嬉しい誤算である。早速、梱包を解く。8枚の基板が何重にもラップにくるまれて出てきた。いやいや、これから忙しくなるぞ。

 今度の懸案は、新しいフォンジャックである。とるものもとりあえず沢山買って来てある現物をつけてみる。うーむ、A1272638 入らん。いや、端子がカーブしているからだ。ペンチで少し戻して慎重に入れていく。よーし、入った。位置決め用のホールもピッタリだ。

 他はすべて前の部品なので今度の基板はこれで大丈夫だ。組み立てに必要なリソースはすべて揃った。残る懸案は、これが予定したとおりケースに収まるかどうかである。

やっぱり間違えていた(1/23/10)
 早速、組み立てにかかる。今度の基板は、表裏をひっくりかえし、LCDパネルのある表側はハンダ面である。電池フォルダーを新設したので高さを確保するためだ。ケースがスケルトンなのにハンダ面が上に来て、折角のパーツが表から見えなくなって少しさびしいが、これまでの、ケースに電池接点基板を接着剤で固定する方法は、位置決め、接着の確認に時間がかかる上、とても神経を遣う。プレーヤーの量産のためには眼をつぶるしかない。それに高さが生まれたので低音増強のための200μFの大型パスコンが入れられる。

 例によって表面実装部品からハンダ付けしていく。LCDは裏側につくのでピンの位置も逆になっている。タクトスイッチも逆だが、これは左右対称なのでスイッチの順番を変えただけで問題ない。充電中を表示するLEDもハンダ面につける。

 LCDをつけようとピンを確認した時、とんでもない誤りに気がついた。裏につけるためLCDのピンアサインは逆にしたが、ピンヘッダーの位置は替えていない。あ、あ、もしかしてLCDの位置がおかしいか。LCDモジュールのピン位置は基板に対して左右対称でない。うはあ、いけない。逆につけられたLCDはケースから横にはみ出してしまった。

 発注する前から、基板を裏返しにした時の対応に何か抜けているのがあるかどうかどうも不安だった。その不安は的中した。これではケースに入らない。同じ基板が8枚もある。頭から血が引いていく。これからどうしたら良いか。

 気を取り直して、状況を調べる。はみ出した幅は、数ミリだ。幸い、液晶部分までは行っていない。LCDの基板部分を切り取れば入るかもしれない。おおお、はみ出ている部分は、このLCDモジュールで使っていないバックライトの配線部分だ。何やら横にチップ抵抗が乗っているが、そもそもバックライトがないのでこれを切り取っても本体に影響しない。

 しかも、サーキュラーソーを買ったので、基板を数ミリ幅で切り出すことはそう難しくない。これはなんとかなりそうだぞ。粉がかからないように液晶面をビニールでラップし、慎重にセットする。刃は基板切り出し用のダイヤモンド研磨刃である。A1272640

 見事に切れた。あっというまの作業である。液晶部分についた削り粉を刷毛で慎重に除去する。切り口もきれいで、何の問題もない。基板につけてみる。問題なくケースに入る。良かった、良かった。勢い込んで、手持ちのLCD全部を一緒に切り取る。

 いやいや俺もついている男である。液晶が載っている基板の横を数ミリ幅で切り取るなど、手でやることはほぼ不可能に近い。やすりで根気良く削れば出来るかもしれないが、削っているうちに部品を壊してしまう恐れが強い。サーキュラーソーを買っておいて本当に良かった。

何事もなく動いた(1/25/10)
 プリント基板のハンダ付けはいつもながら楽しい。プラモデルのように眼に見えて形になっていくのでつい夢中になる。新基板の3 号機は日曜半日の作業で完成した。ケースの加工をミニルーターで手早くすませてケースに入れてみる。これまで使っていたタクトスイッチの背が高すぎるのでこれは買い直す必要があるが、あとは順調だ。LRCKのジャンパーは最初に済ませてある。A1272641

 待ちきれなくなって、スイッチ部分も仮配線し、通電する。よーし、音が出た。あれ、ボリュームが逆だ。いけない。またここにもバグがあった。配線図を見たが、このボリュームは逆配線が出来ないことがわかった(2連抵抗の一方がコモンになっている)。このボリュームは部品面におかないと通常の左->小、右->大の状態にはならない。これは今さら無理だ。まあ、それほど致命的なミスではない。

 A1272644仕事の帰り、久しぶりに秋葉の千石によって適当な高さのタクトスイッチを調達する。ついでに秋月で、不足している3.3Vのレギュレーターを補充した。今度のプレーヤーは50mA程度しか消費しない。秋月で新しく出た、150mAの低ドロップ型のレギュレーターをこの先の量産用に入手した。いつもの500mAに較べれば半額だ。

 帰宅して最後の作業である。化粧面のタクトスイッチの穴 は用心して小さい穴をまず明けておき、カッターで広げる。このあたりの穴が不揃いだとA1272643みっともないものだ。ぴったりの穴が空いた。養生のテープをはがして、LCDの保護フィルムもとり、すべてを組み立てて、試聴する。至福の時間だ。ハンダ面のスケルトンも、まあこれはこれで趣のある感じがする。

 1台目が完成して、残りの生産の見通しが立った。2号機のような作業面での難しさはない。単純な作業の組み合わせで出来るはずである。そろそろ別のプロジェクトを立てる余裕が出てきた。やっぱり次は フォトフレームかなあ。しかし、先日、秋葉で\2000で5インチのA1272635液晶フォトフレームが安売りされているのを発見して少しがっくりしているところだ。

ここに、ハードでLRCKをトグルするバージョンV41のソースコードと、EAGLEの基板、回路ファイルをzipにかためたものを置きます。EAGLEのファイルは、上記の問題を解決したデータになっていますが、動作確認はしておりません。そのおつもりでお使いください。また、ソースコードはAVRstudioの形で、プロジェクトファイル名が前と変わっていないので注意してください。

(2011/2/12) WMPで作成したWAVファイルも再生するバージョンをV42として置きます。

***ご注意*** 以下のV41,V42版は、LRがpauseや再生中止のあと逆転するバグがあります。最近の記事にアップロードしたV43をお使い下さい(3/17/2013)

「mLPCM328V41.zip」をダウンロード

「mLPCM328V42.zip」をダウンロード

要望があったので、パラレルLCDを使った1号機のソースコードを下に置きます。形式はこれまでと同じAVRstudioのプロジェクトファイルです(2/6/10)。 下のV42も上のV42と同じです。

「SDPCM328V41.zip」をダウンロード

「SDPCM328V42.zip」をダウンロード

|

« 3号機のソフト改善とSTM32Primer2の改修 | トップページ | 3端子レギュレーターの復讐 »

AVR」カテゴリの記事

コメント

がた老さん、どうもです。

SDのアクセスは、奥が深いです。
MCUが高機能でもSPIの場合は、大丈夫とは言えない場合が多々あります(SDIOでも色々あるようで、ねむいさんが苦労されておられます)。
実際、mbedで経験しましたが、SPI(SSP)のクロックは、48MHzまで上げられますが、手持ちの☆ボードオレンジカードのSDですと、残念ながら12MHzが限界でした。それ以上のクロックですと、SDの認識をしなくなりました。
更に、12MHzでも、メディアによっては、アンダーフローを起こしました(44.1kHz/16bit/stereoのwav音源で)。

実際のところ、高速のMCUを使用するときは、
 SDとマイコンとの配線は極力短くする。
 プルアップ(ダウン)抵抗をきっちりと入れる。
 SDの電源には、コイルを入れる(これは、バッファアンダーフローとは、直接関係ないですけど)
 等の工夫も必要です。

それでも、最終的にはメディア自体の底力になると思います。

蛇足ですが、ベンチマークをすると、SDによって、かなりの差があることが判ります。

投稿: shuji009 | 2013年4月 9日 (火) 00時13分

こんばんは、がた老です。
n_piezoさん、度々のご報告ありがとうございます。
また、shuji009さん、補足説明ありがとうございました。

クロック20MhzのAVRでなく、クロック72MhzあたりのSTM32を
使えば、バッファーのアンダーランを心配する必要は
なく安いSDカードでも使えそうですね。

投稿: がた老 | 2013年4月 8日 (月) 23時17分

shuji009さん
コメントありがとうございます。

実はノイズが出るのはTDK製で、その後、追加で買ってノイズがないの
が東芝製で、正にご指摘どおりです。
いずれもクラス4で、¥600〜¥800程度の安物です。
またTDKのノイズは20〜30秒毎に発生しているように思えます。
勉強になりました。

投稿: n_piezo | 2013年4月 8日 (月) 23時06分

n_piezoさん、はじめまして。

> ところどころでブツ、ボソッという感じ
>でランダムにノイズが出ます。曲の同じところで発生
>することと、別のカードでは改善することから、
>SDカードの欠損と思われます。

おそらく、ブツ、ボソッという音の原因は、バッファ・アンダーフローによるものと思われます。
SDの個体差によって、読む速度が遅くて発生します。
ので、SDカードを選んで、速い速度の物にする必要があります。(SDカードの欠損だと読込みエラーが出ますので、パソコンでコピーしてみれば判断できます。)
SDは、SPIでの、アクセスですので、クラス10とかの数値はあてにはできませんので、色々と試してみる必要があります。
尚、経験上、東芝のものが速いのですが、保証はできません。
また、SDカードのフォーマットは、専用ソフトを使う方が良いようです。まあ、パソコンの標準フォーマットをしない方がいいです。

投稿: shuji009 | 2013年4月 8日 (月) 00時42分

がた老様

n_piezoです。ご無沙汰しています。
LR逆転の件についてはありがとうございました。

あれから3号機を据え置きタイプとして検討しており、かなりの結果が
得られましたので報告します。
この3号機の開発コンセプトであるジッタレスのワードデータはかなりの
音質ポテンシャルがあることが証明できたと思います。

1.音
オーケストラを聴きますと、いままで気がつかなかった音が聴こえ、別の
楽器がかぶせているのも分かります。弦楽器でもコントラバスやチェロの
低音域の分離も明確になり、各パートの奥行感や音色というのかツヤが
感じられます。3号機の特徴は、やはりその分解能ではないでしょうか!
また大音量のときのエネルギー密度はすごいです。歪が無いせいか、音が
大きくても耳障り感がなく、少し古い録音のソフトも聴きやすくなります。
ただしSDカードによるものか、ところどころでブツ、ボソッという感じ
でランダムにノイズが出ます。曲の同じところで発生することと、別の
カードでは改善することから、SDカードの欠損と思われます。

2.改造概要
DAコンバータにはバーブラウンのPCM1795を使用しました。
PCM1795は32bit,192kHzまで対応可能で、その前段にサンプルレート
コンバータを追加し、44.1kHz→176.4kHz、16pit→32bit へ
アップサンプリングしています。サンプルレートコンバータは、
シーラスロジックのCS8421を使用しました。
そしてPCM1795、CS8421いずれもシステムクロックが必要となるので、
ジッタレスのLRCKから512fsのシステムCLK(SCK)をシーラス
ロジックのCS2300CPというPLL_ICにより作成しました。
オシロで確認したところ、LRCKのエッジとSCKの位相は、
全く変化しないので低ジッタになっていると思います。
PCM1795以降のアナログ部は、かなり音に影響しますが電流帰還アンプ
をディスクリートで作製しています。

今回のバグ対策をしていただき、おかげさまで毎日至福の音楽を聞く
ことができるようになりました。ありがとうございました

投稿: n_piezo | 2013年4月 7日 (日) 17時55分

がた老様

最新記事、拝見させていただきました。
そして、アップいただいたソースでLR逆転が修正されていたことは
言うまでもありません。
早速、対応いただき本当にありがとうございました。

最新記事を読ませていただき、申し訳ないと思いましたのは、ソフト
確認用に音源データまで作成いただいていたことです。

私自身も動作確認する際、チェック用の音源データをリッピングして
おり、更にTrack毎の動作を短時間に確認するための編集データまで
作成していました。そして、先のコメントの際にも、これらのデータ
を送付を申し出たほうが良いかとも思いましたが、それは逆に修正を
強要することにもなると思い留めました。
結果的に、がた老様のデバックに手間を掛けさせてしまった事をお許し
ください。

先のコメントにも記述しましたが、この3号機をベースに性能向上を
検討中です。何らかの成果が得られましたら連絡させていただきたいと
思います。
ありがとうございました。

投稿: n_piezo | 2013年3月20日 (水) 22時36分

>n_piezoさん、出だしの逆転もやっぱりソフトが原因でした。
最新記事(3/17/2013)に顛末とバグを修正したソースをアップしました。ご参考にしてください。
n_piezoさんの指摘で、ソフトの質が高くなっていきます。ありがとうございました。

>そらさん、いつもコメントありがとうございます。
ご指摘の通り、強制的にトグルを初期化できませんでしたが、
記事にありますようにごまかしました(笑)。

投稿: がた老 | 2013年3月17日 (日) 17時04分

タイマ0割込み処理の139行目の判定はLRCKの状態を判定してLRデータを振り分けている処理ではないですね。勘違いしました。

とすると、LRCKは一時停止や曲ごとに直前の状態から始まるからLRが入れ替わることがありそうですね。

※ コメント先を間違えたかもしれません。
 間違っている方のコメントを消しておいて下さい。すみません。

投稿: そら。 | 2013年3月13日 (水) 13時37分

こんにちは。
mLPCM328V42のソースを眺めてみました。

A) 一時停止で止まらないことがある
 タイマ1割込み処理(187行目)でタイマ0割込みを一時停止とは無関係に許可していますが、
 たまたまこのタイミングに当たると一時停止しないと言うことはないでしょうか?

B) LRが入れ替わることがある
 ハードウェアのトグル機能は動作開始時に強制的に0または1に設定することは無理そうです。

 タイマ0割込み処理でデータを出力するときにPORTDをリードして
 LRを判定していますが、トグル出力設定にした場合にその状態を本当に読めるのか、
 ATMega328のデータシートを読んでも分かりませんでした。

 トグル設定したOC0A(PD6)がPORTDで読めることは確認済みですか?

投稿: そら。 | 2013年3月13日 (水) 12時56分

がた老様
n_piezoです。色々調べていただき、ありがとうございました。

回答いただいた内容を「LR逆転」に関して整理すると、以下の
ような解釈でよろしいでしょうか。
・SW2(Pause)について無条件にLから始めているのでLR逆転する。
・最初の取り違いについてもバグの可能性が高い。
→つまりPauseのみでなく、連続再生においても「LR逆転」が
 起こり正規な再生が保証できるモードがない。

困りました。私は回路ハードはそれなりですが、ソフトは素人です。
(最近やっとPICマイコンでソフトモードでICを制御することができる
ようになった程度です。)
どなたか助けていただける方がいないでしょうか?

SW2(Pause)については、がた老様の記述のように、1つの
SWで ①一時停止 ②完全な停止 ③一時停止からの再生
④Track最初から再生 と機能が複数あるので難度は高いと思います。
しかし、実際には ②完全な停止 として使用する確率が高く、
再生は連続再生(SW1,3同時オン)が多いのではないでしょうか。
つまり連続再生の最初の取り違いさえ直せれば、と思います。

いずれにしましても、がた老様の多忙が半年から一年程度である
なら、ここまで作製したので気長に待ちたいと思いますので、
一度ご検討いただけるとありがたいです。

私は、この3号機のジッタレスのデータを加工して、176kHz・32ビットのDACで
聴いてみたいと考えています。

投稿: n_piezo | 2013年3月 9日 (土) 09時58分

n_piezoさん、詳細な調査ありがとうございました。
このところ電子工作以外のことで忙しく対応が遅れ申し訳ありません。

久しぶりにソースを読んでわかった結果です。

まず、1-3)は既にこちらでもたまに起きています。押されたSW-Bがpauseなのか、
連続再生中の次ファイル再生なのか、連続再生の終了なのか、
さらにpauseのあとのresumeなのかの判定は結構面倒で、バグが取りきれていません。

次のpauseのあとのLR逆転は、これは完全なバグですね。 _(. .)_
pauseは、デコード割り込みのフラグをマスクして止めていますが、
再開するときLRを確認せず、必ずLから始めているようです。Rで止まったときは、
そこから再開しますので逆転するのかと。

最初の取り違いは、SDカードのI/Oエラーは余り考えられませんね。
一旦大きなバッファーに貯めてからデコードしていますので、これもバグの可能性はあります。

いずれにしても、現在は、とてもこれに手を出せません。
ソースを公開しておりますので、調べていただけるとみなが喜びます。
これがオープンソースの良いところです。

投稿: がた老 | 2013年3月 6日 (水) 11時58分

こんにちは。n_piezoです。
あれから2週間が経過し、左右が逆になる問題について調査
していましたが、以前解決できていません。とほほ・・・
先回の回答をいただき、思い当たる点について調査したところ
詳細な事象がわかってきました。

1.詳細な事象
1)電源オンオフのみでなく、各トラック毎に発生している。
 同じ左右チェックのトラックデータを複数コピーし連続再生
 すると左右ランダムに切り替わります。トラック中に切り替
 わりは発生しないので、おそらく読み始めに切り替わっている。

2)SW2(Pause)のon・offでも左右ランダムに切り替わる。

3)再生中にSW2(Pause)をonするとPauseするはずですが、
 Pauseしないで再生のままの場合もある。しかしLCDは
 Pauseを表示している。更に、この時(SW2(Pause)をon)
 左右が切り替わることもある。マイコンはPauseを認識して
 いるのにデータは勝手に送られてきている?

2.調査したこと
1)SWのノイズ(チャタリング)が懸念されたので、①CRで
 フィルタを付けたり、②oneshot回路を追加しTrのオープン
 コレクタでスイッチとしたり、③SWをマイコン端子最短
 位置に付けたりしましたが、効果なし。発生確率に変化もない
 ので関係ないと思われる。

2)リセット端子がオープンでしたので、念のためプルアップ
 しましたが効果なし。各トラック毎にも発生しているので、
 関係ないと思われる。

3)購入したSDカードのスロットが、基板付きのタイプで
 したので、インターフェイスが微妙に異なっていたので修正。
 プルアップ抵抗が10kΩ、CLK端子もプルアップだったので
 47kΩのプルダウンに変更。いずれも効果なし。

4)AVRのプログラムをV42→V41へ変更してみましたが、
 効果なし。

5)リッピングしたデータについて、PCで再生しても正常
 であり正常と思われる。複数コピーした連続再生でも同様。
 (SDカードで確認。)

私としましては、SW2(Pause)の事象や、各トラック毎に
発生していることから、SDカードとの通信ミスのような気
がするのですが、これ以上、やることも無くなってきている
状況です。

長々と記述してしまいお許しください。
結果的に「クレーマー」になってしまっているのではないか
と反省しています。
がた老様、もし内容を読んでいただき、怪しい部分等ありまし
たら、ご指導お願いします。

投稿: n_piezo | 2013年3月 2日 (土) 11時22分

n_piezoさん、こんにちは。
ブログを見ていただきありがとうございます。

>左右が逆になったりします。
 WAVフォーマットは、LRLRというデータが続いているだけで、
識別するものはないので、最初のLを飛ばすと、左右が逆になる理屈です。
しかし、今までに10台以上作りましたが、こういうことを経験したり
聞いたことはありません(尤もいつも確認しているわけではないですが)。
 SDカードによっては、readエラーが起きて、歪みだらけの音に
なるときがありますが、左右がひっくりかえるような器用なことにはならない。

>もし思い当たる部分がありましたら、
 CDからSDカードにリッピングされているのなら、リッピングソフトを
換えてみてはいかがでしょう。電源の入りきりで変わるという現象は
説明できませんが、このあたりの変更で劇的に音は変わります
(特にダイナミックレンジなど)。もしかすると状況が変わるかもしれません。
私の経験からは、もろぼし☆らむさんのCD2WAV32が一番相性が良いようでした。


投稿: がた老 | 2013年2月19日 (火) 16時59分

がた老様

初めまして、n_piezoと申します。
開示から既に3年程経っているようですが、3号機のLRCKのジッタレスを目指された点に惹かれ、再現してみました。
最終的には、据え置きタイプとして、本格的なDAコンバータに載せ換えてゆきたいと考えています。
現在、オシロにてBU9480の出力波形まで観測できたところで、ほぼ再現は完成というところです。
mLPCM328V42を書き込みました。

ところがオーディオチェック用CDを取り込み、動作確認したところ、問題が発覚しました。

チェック項目の中で、左右のチャネル確認があるのですが(L→Rと順番に片方ずつ出力)、左右が逆になったりします。
AVRのデータ出力も逆になっています。
一度、電源をオフしたり、SDカードを抜き差しすると、戻ったりします。上記の作業以外では、切り替わらないようです。
確率的には50%程度のように思われますが、正直よくわかりません。

私は主にオーケストラものを聞くので、左右逆になるのは残念でなりません。

開発の段階で、このような現象はありましたでしょうか?
また、もし思い当たる部分がありましたら、ご指導いただけませんか?厚かましいお願いとは思いますが、よろしくお願いします。

投稿: n_piezo | 2013年2月18日 (月) 21時59分

eNastyさん、いつもありがとう。
オペアンプの結線?えーどこが、ありゃあーほんとだ。Eagleのオペアンプ騒ぎの時に変な結線をしてしまったようです。

Eagleのファイルはボードファイルまでつながっているので安心していたのですが、これは回路図ファイルだけをいじっていましたね。

今さら始めて気がつきました。ありがとうございました。元記事は直してあります。

投稿: がた老 | 2011年4月15日 (金) 23時37分

今更ですが「リニアPCMプレーヤー」情報開示御礼
 開示から1年以上経っているようですが、生PCMがとても魅力的に見えたので、再現させて戴きました。(何とかUSB充電回路まで押し込めました)ハードは一部変更しましたが、片面ユニバーサル基板の手配線ですので虫眼鏡必須で難渋しました。昨日漸く、完成し、Schumannのピアノ協奏曲やCaribbean系音楽を聞くとやはりそれなりの価値を感じました。
 ハード変更点は以下の通りです。(ファームはmLPCM328V41をそのまま適用させて戴いています)
・SDカードスロットをリバースタイプに変更(3号機タイプでもSDカード表面を上にして挿入可)
・NJM4580DDをOPA2350PAに変更(RAIL-TO-RAIL特性のためか、対比で若干音質が良い感あり)
・出力コンデンサを、オーディオ用470μF/10WV品に変更(背も低いので)
・ボリュームはJunk屋で見つけたメーカ不明品(4.5m-H/20φ)
・レギュレータをTA48M33から48033Fに変更(ノイズは出ていないようです)
他は、基板を除いてアクリル蝶番ケースから0.5Φの燐青銅線まで、ほぼWeb掲載のままですが、EAGLE環境を持たないので回路図は、、「リニアPCMプレーヤー2号機のあとかたづけとソース公開」(09/10/16 公開)のjpegファイルを参考にさせて戴きました。
ここで、LRCKのピン変更はずっと読んでいたので直ぐ解りましたが、OPアンプの結線には一寸騙されました。
アートワークもどきを描いていて何か変だと思ったのですが、そのまま見落とし、最終的には音が出なくて漸く解りました。小生のように戸惑うものも居ると思うので、可能であればjpeg回路図も訂正して戴けると幸いです。
PS.
 娘にも好評で、また低背高のコンデンサを見つけたので、2号機ビジュアルの実装面スケルトン機を彼女用に1台制作するつもりです。
重ねて、情報開示ありがとうございました。

投稿: eNasty | 2011年4月13日 (水) 14時55分

pcm1723さん

シンセアンプラグドを拝見させて頂いております.
深い知識と実装する能力に感嘆しつつ、(1/10も理解しておりませんが)なるほど~~と参考にしております.

今回は測定していただいてありがとうございました.

WaveGenでFFT最適化を行っていなかったので修正し窓関数なしにして、各周波数毎の正弦波のPeakを再測定いたしました.
1kHz -0.00 dB
8kHz -0.81 dB
12kHz -1.55 dB
14kHz -2.57 dB
15kHz -2.86 dB
16kHz -3.09 dB
17kHz -3.59 dB
18kHz -4.77 dB
19kHz -6.93 dB
20kHz -10.28 dB
上記はリニアスウィープでも同様の結果でした.
のこぎり波でもやってみましたが、18kHz以上では目的の周波数以下の周波数が(20kHzでは4kHzが-5dB)が多く検知されてしまいました.

前回書いた測定結果は測定方法の不備によるものが大きいと思いますが、20kHz付近の低下に関しては測定方法を改善しても理論値まではなりませんでした.
入力がノートパソコンのオンボードのラインインなので、20kHz近辺ではそれに引っ張られているということもあると思います.

ARIの15000kHzまでしか聞こえないARIの駄耳に限って言えば、-15kHzまではほぼ理論値と相関しているため、BU9480の性能は出せているということが解りました.

丁寧な説明、ありがとうございました.

投稿: ARI | 2010年3月17日 (水) 14時10分

(正規化) sinc 関数を

sinc(x) = sin(PI * x) / (PI * x)

で定義すると、BU9480 出力の周波数特性は、理論的には

(sinc(f / (2 * fs)) + sinc(3 * f / (2 * fs)) / 2

となると思います。

がた老さんの LPCM プレイヤーではありませんが、STM8S と BU9480 を使った自作の LPCM プレイヤー「STM8SDP」で、出力レベルを実測してみました。 (出力フィルタ/直流カットコンデンサなし)

WaveGen で周波数約 1 kHz (FFT に最適化、サンプリング周波数 44.1 kHz) に設定した、のこぎり波を生成し、96 kHz サンプリングのオーディオ入力で WaveSpectra を使って出力レベルを測定しました。

のこぎり波の n 次高調波のレベルは 1/n になるので、生の出力レベルの測定値を補正して、実質の出力レベルを計算しています。

周波数と理論値と実測値の表を示します。

1 kHz 0 dB 0 dB
8 kHz -0.77 dB -0.8 dB
12 kHz -1.78 dB -1.6 dB
14 kHz -2.45 dB -2.3 dB
15 kHz -2.83 dB -3.1 dB
16 kHz -3.25 dB -3.2 dB
17 kHz -3.69 dB -3.8 dB
18 kHz -4.18 dB -4.3 dB
19 kHz -4.71 dB -4.7 dB
20 kHz -5.28 dB -5.6 dB

これは、ほぼ理論通りの結果と言ってよいと思います。

ちなみに、0 次ホールド特性、つまり、単なる普通の DA コンバータでは、ナイキスト周波数 (fs/2) で約 -4 dB のレベルとなります。

ARI さんの結果では 20 kHz で約 -17 dB と、大きく違っていますので、測定方法に問題があるのかも知れません。

もし log スイープで周波数特性を求めたのなら、高域でゲインが低下する傾向があることが WaveSpectra のドキュメントにも明記されています。

投稿: pcm1723 | 2010年3月12日 (金) 18時49分

2週間かかって、ポータブルで持ち歩けるように作りました。
低音の感じがとても素敵です。
ひとつ気になった点があります。
マイケルジャクソンを聴くと、ベースやドラムは近くで鳴っているのに、遠くで歌っているように感じました。
高音の音量が少ないためかもしれないと思い立ち、
「趣味のオーディオ制作」http://homepage3.nifty.com/softone/ws/wstop.htmを参考にしてWave spectra, Wave geneを使用した周波数特性を測ってみました。
LPFなしで出力にコンデンサ直列に入れた状態で測っても高域が減少しておりました。
コンデンサ容量が減少すると低域が少なくなりますが(コンデンサ+ダミーロードでのHPFのため)、高域はコンデンサ容量とは関係ないようでした。
みなさまのものも同様に高域が減少傾向でしょうか。
これがBU9480の特性なのか、ARIの使い方が間違っているのか、また周辺回路で補正可能なものかどうかわからないために、教えていただけたらと思います。

下記に測定結果を書きます(max=0dBとして補正しています)
20Hz -1.11dB, 100Hz -1.02dB, 1000Hz 0dB,
8000Hz -1.06dB, 12000Hz -1.64dB, 14000Hz -2.8dB,
15000Hz -3.43dB, 16000Hz -4.31dB, 17000Hz -5.51dB,
18000Hz -7.61dB, 19000Hz -11.41dB, 20000Hz -17.31dB
でありました。

投稿: ARI | 2010年3月12日 (金) 14時13分

ARIさん、コメントありがとうございました。
きっと気のせいですよ(笑)、そんなに変わる訳がない。でもスピーカーよりヘッドフォンは臨場感がありますね。室内楽の演奏者が息を合わせて最初の音を出しているところや、ピッチカットの手が板に当たる音などがはっきりわかります。でもこれにこだわりはじめると、私の言う「オーディオの魔力」につかまります。ご注意。

投稿: がた老 | 2010年2月23日 (火) 12時39分

がた老さん

手間のかかる申し出を快く行っていただきありがとうございました.
SDPCM328V41.zip頂きました.
一枚皮がはがれたような気がします.とくに女性歌手の息継ぎの声がゾクゾクする感じです.
「違いがあるかも?」と集中して聴いているからかもしれませんが・・・

ありがとうございました.

投稿: ARI | 2010年2月22日 (月) 23時25分

NPC1さん、ラジオ少年さん、コメントありがとうございます。
>超硬刃使っています。

 そんなに具合が良いですか。値段が高いだけのことはあるということですね。検討してみます。

>LPCM3_0123.schはEAGLEがないと開けませんか

 はい、これはEAGLEの回路図ファイルなのでEAGLEが必要です。回路図だけだったら、このブログの以前の記事、「リニアPCMプレーヤー2号機のあとかたづけとソース公開」(09/10/16 公開)の本文にjpegファイルで出ています。これはV2ですが、V41は、BU9480のLRCKの接続がCPUのPD5につながっているのを隣のPD6に移しただけで他は全く変わっていません。参考にしてください。

投稿: がた老 | 2010年1月27日 (水) 23時03分

LPCM3_0123.schはEAGLEがないと開けませんか?

投稿: ラジオ少年 | 2010年1月27日 (水) 21時48分

ごめんなさい。出力タイミングは思い違いでした。LRCKのエッジでと明記されていますね。

ちなみに、基板のカットですが私は超硬刃を使っています。
基板のほかアルミやプラなどオールマイティに使えて、切断面もダイヤモンドより綺麗(粉が出ない)です。
でも、少し高いのが難点ですが。

投稿: NPC1 | 2010年1月27日 (水) 16時42分

私もBU9480でPCMプレーヤを設計しているところで、
実験データが大変参考になっています。

ところで、BU9480のアナログ出力更新タイミングは、
本当にLRCK同期なのでしょうか? タイミングチャート
からはBCLKで駆動されているように見えますが。

投稿: NPC1 | 2010年1月27日 (水) 16時28分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1089557/33139394

この記事へのトラックバック一覧です: 量産を目指したリニアPCMプレーヤー3号機完成:

« 3号機のソフト改善とSTM32Primer2の改修 | トップページ | 3端子レギュレーターの復讐 »