« December 2006 | Main | February 2007 »

January 26, 2007

RightMark TDA1543 2x2 SRPP Buffer DAC

久しぶりにRightmark Audio Analyzereを試してみました。

前のTDA1543 LR分離実験のときはこんな感じでした。

SRPP-K式I/V と 抵抗式 I/V

今回のDACもLR分離型です。1個の石で1Ch分しか音を出さない贅沢な方式で、2個の石で1Ch分(2パラ)を左右でやってます。なのでTDA1543 2x2 とか省略したり。その構成に、SRPPのカソードをI/V抵抗として使ってTube Bufferも兼ねる方法を取ってます。

比較すると、特にIMD周りで良くなってるのが分かります。実験回路からも大きく改善。とはいえ、実験回路はNOSだったから正確には比較にならない。ノイズ周りはTubeの特性もあるので、誤差範囲の違いかと。でも周波数応答の『こぶこぶ』は何でしょう?SAA7220の特性でしょうか、もしくはLCフィルタ部分がSRPPカソード直だと問題なのか…?まぁ、気にしないでおきます。

クロストークが左右で違うのは恐らくサウンドカードの調子が悪い模様。(SPDIFの口も接触不良を起こすんだよなぁ…接触不良になった瞬間左Chからピー!という音が鳴るのでけっこう怖かったりします)

■ 測定環境

PC -> ECHO-Mia (Digital S/PDIF Out ) -> TDA1543 2x2 SRPP -> ECHO Mia (Analog In) -> PC

■測定情報
Testing chain: External loopback (line-out - line-in)
Sampling mode: 16-bit, 44.1 kHz

■ Summary

Frequency response (from 40 Hz to 15 kHz), dB: +0.10, -0.34 Good
Noise level, dB (A): -85.9 Good
Dynamic range, dB (A): 85.4 Good
THD, %: 0.043 Good
IMD + Noise, %: 0.049 Good
Stereo crosstalk, dB: -85.9 Excellent
IMD at 10 kHz, %: 0.086 Good

General performance: Good

■ Frequency response

Fr_3

Frequency range Response
From 20 Hz to 20 kHz, dB -0.52, +0.10
From 40 Hz to 15 kHz, dB -0.34, +0.10

■ Noise level

Noise_2

Parameter Left Right
RMS power, dB: -83.9 -83.6
RMS power (A-weighted), dB: -85.9 -85.6
Peak level, dB FS: -73.9 -73.8
DC offset, %: -0.00 -0.00

■ Dynamic range

Dynamics_2

Parameter Left Right
Dynamic range, dB: +84.0 +83.9
Dynamic range (A-weighted), dB: +85.4 +85.4
DC offset, %: -0.00 -0.00

■ THD + Noise (at -3 dB FS)

Thd_3

Parameter Left Right
THD, %: 0.0539 0.0428
THD + Noise, %: 0.0555 0.0466
THD + Noise (A-weighted), %: 0.0696 0.0561

■ Intermodulation distortion

Imd_4

Parameter Left Right
IMD + Noise, %: 0.0524 0.0486
IMD + Noise (A-weighted), %: 0.0343 0.0354

■ Stereo crosstalk

Cross_2

Parameter L <- R L -> R
Crosstalk at 100 Hz, dB: -85 -84
Crosstalk at 1 kHz, dB: -85 -84
Crosstalk at 10 kHz, dB: -83 -67

■ IMD (swept tones)

Imdswept_2

Parameter Left Right
IMD + Noise at 5 kHz, %: 0.0803 0.0983
IMD + Noise at 10 kHz, %: 0.0650 0.0790
IMD + Noise at 15 kHz, %: 0.1112 0.1334

| | Comments (0)

January 25, 2007

チリチリノイズ2

やっぱりデジタルでもノイズ出てました。回路ミス。フリップフロップの入りが逆だった。気づかなかったです…。悔しいなぁ。

2007012501

まぁ、これでバグ取りも終わって完成です。SRPPのカソードをI/VにしたのでLCフィルタは大丈夫だろうか?と悩みましたがとりあえずつけたまま敢行。ちょっとデカイ手巻きコイルです。

200701252230000

予想以上に悔しいバグが多かったので、もう一度作り直したい気もする。でも、1品物と最初から決めていたものなので、これで我慢…。

音質はほぼ狙ったとおり。TDA1543なのでTDA1541より少し幅が狭い感じもあるけど雰囲気が良い。もう少しエージングしてみてから再評価。

なお、この基板は一切配布予定とかありません。とか書いてますが、こんなマニアックな代物ほしがる人いないだろう(苦笑)と思います。

| | Comments (0)

January 23, 2007

チリチリノイズ

DAC基板を実験状態の空中配線から本気の配線に切り替えたところなにやらチリチリノイズが聞こえます!ということで、ヒーターかな?と調べて、次にB電源かな?と調べて、デジタル系かな?と、半田をやり直したりSAA7220を外してNOSにしてみたりしたけど治らない(涙)。

    やっぱり独自に基板を作るなんて自分には早かったか、と猛烈に凹み状態

で、投げやり&気分転換に他のソースで音楽を聴く。…と、そっちでも鳴る!?

結局、結論はATTをバラックで組んでいるための誘導ノイズでした。我が家の誘導ノイズってブーンがメインだったのだけど、最近の流行はチリチリノイズなんだ…と勉強、でも貴重な平日の1時間と引き換えなのは痛々しい。

| | Comments (0)

January 22, 2007

SRPP DAC

回路ミスが1点。1つグラウンドに間違って接地してた。ヒータの定電圧のところ

設計ミスが1点。ヒーターをZDとダーリントンのパワトラでいけるか、と思ったらダメで急遽FETに変更。

あとは問題ないようだ。。。鳴ってる。

音は、実験状態から直さないと比べられないけど、なんとなく予定通りっぽい。

200701220018000

| | Comments (0)

January 21, 2007

Olimex届く

大掃除で部屋の整理中なのですがOlimexから基板が届いて大掃除中断。(でも買ってあった部品が片付くので、ある意味片付けと考えれば…)

200701201311000

SRPPのDACに差動プリに実験用基板もろもろ。

早速バグを今後の自分のためにメモ。

Critical
・(自分で自分を呪った画期的なバグ)なぜかSAA7220の部分が20ピンに仕上がってた。確か最後の校正で28ピンに間違っていた(と思った)ので24ピンに減らしたはず。…ということは最後の校正が間違ってたらしい。 ⇒ ゲタ作って解決。
・35サイズのヒートシンクの足幅が狭過ぎ。寸法間違い。足も1つ潰して解決。

Warning
・PADサイズが穴+ドリルずれに対して小さすぎたかも。
・ヒーター電源に用意した整流ダイオードの足の穴が小さ過ぎ。パワトラも一回り大きいサイズで良さそう。
・なぜかシルクがずれてる所がある。後でガーバーを確認。

回路的には今のところ間違いは無さそう。

でも5VのLED電源がなぜか4.5v位しか出ないなぁ、LEDはEPIのときと同じなのだけど電源と抵抗が違うから振る舞いが異なるのかな?

| | Comments (0)

January 12, 2007

リモコンATTプログラム 1.3 ping版

じんそんさんと相談しまして公開することにしました。ご興味がある方はどうぞ~

■ 変更内容

2007/01 いろいろ ver 1.3 by ping
  - 家電協とSONYに対応
  - リノコンコードを48bitまで拡張(64bit化可能)
  - リモコン種別設定追加
  - ロータリエンコーダ対応
  - 17桁以上のLCD対応は削除
  - 操作中のLCD表示を変更
  - LineInごとにMuteOnとAtLevelを記憶
  - ハッシュ関数でリモコンコード検索を高速化
  - IRDataTmpをキャッシュとして利用できる様に変更
  - AtLevelとMuteOn、LineInのEEPROM寿命対策を追加
  - 言語設定を無くして更新間隔の選択に変更

■ 注意事項

・中に英語版と日本語版でファイル名を分けています。違いはコメントアウトの位置だけです。メッセージは簡単に変更できると思いますので、お好みに合わせて変更して下さい。
・初期設定値のEEPROMアドレスを変更しています。初回起動時は、アンプにつながずに設定を行ってから利用してください。
・タイマーの設計は適当です。特にロータリエンコーダとリモコンの操作は待ち時間が短すぎるかもしれません。
・ロータリエンコーダを接続する場合は、A端子 -> U、B端子 -> D、C端子 -> Gの様に行います。
・NECフォーマットのリピートコードを出すリモコンが手元に無いのでリピートコードは未検証です。
・EEPROMの寿命対策はコードを追加しましたが、実際に寿命になったわけでは無いので動くか分かりません。
・チャタ待ちの時間を少し短くしているので、環境によって起動時やライン選択時にノイズが入るかもしれません。ノイズが入る場合は、LineChgサブルーチンのSleep_100を変更・調節して下さい。
・リモコンコードは48bitまで読み込める様にしています。64bit化も簡単に対応可能です。
・プログラムメモリ節約のため、STEP数変更時にリセット的な動作をします。

ダウンロード att_generic_44step_ping.1.3.zip (27.7K)


■ 2007/5/3追記
一部バグがありました。アップしているファイルは変更していません。気になる人は自分で修正してください

| | Comments (8)

リモコンATTのプログラムの画面

Att_200701

| | Comments (0)

January 11, 2007

リモコンATTにロータリエンコーダ7

・時間が取れたので励みましたところ、ほぼ完成。

・よく書き込むメモリはEEPROMメモリ寿命対策(・・・しなくても良いのですが)をしてみる。

・リモコンデータを64bit化したことで検索スピードが若干落ちていたので、IRDataTmpによるキャッシュを作ってみる。満足。

・言語設定は入りきらなかった。プログラムには残してあるので、どっちをコメントアウトするかで変更できるからいいや。

・言語設定が入りきらないので、代わりにATtの更新間隔を1キーで1回更新するか、少し待つかを設定で設けてみる。これは気分的に切り替えることがありそうなので。

・あとは不要な変数とか、細かいバグとか、お掃除したりして終わりにする予定。

(タイトルから大きく間違った方向に進んでいるような。当初の目的から逸脱して、いじり倒してしまった感じ。(笑))

| | Comments (0)

January 09, 2007

リモコンATTにロータリエンコーダ6

・リレーのカチカチは好きだけど一気にボリュームを変える時はカチカチするとリレー寿命がなんとなく気になるのでダイレクトに移動してみたり。

| | Comments (0)

January 07, 2007

リモコンATTにロータリエンコーダ6

・なんとなくSonyフォーマットと家電協に対応して、且つ管理画面からリモコン種別を選択できる様にしてみた。Sonyのとっても古いDATとCD Playerの信号(12bit)は無事に認識しています。家電協はPanasonicとSHARPで試してみたら問題無さそう。

・VICTORのリピートコードはリーダが無い様なので対応するとなると面倒。なのであきらめることに。

・ラインごとにアッテネータレベルとMute On/Offを記憶してみる様にしてみた。

・試しに空調のリモコンを使ってみたら64bit。悔しいので64bit対応に変更。(←これはプログラムメモリをそんなに消費しません。)でも、対応させてから、空調のリモコンは1回のプッシュで3つの信号を出力していたことに気づく。結局、使えなかったです。

・現在、Debug除いて99.8%。ここまで…か。

ということで、明日はお仕事だし、そろそろ打ち切り。

| | Comments (0)

January 06, 2007

リモコンATTにロータリエンコーダ5

・更に入力系を共通のサブルーチンコールでまとめてシェイプアップ

・空いた容量で家電協のテストプログラムを組む…?!と思ったら、パナの独自フォーマットだった。48ビット、リーダのHIGHが約3.5ms、LOWが約1.8msのPPMのところが1のHIGI->LOWが1.2ms、0のHIGH->LOWが0.4msな信号の。タイミングが短いので複雑な計算は後回しでビットで読み込ませて信号を読み終わった後でIRData作るようにした。とりあえず読む。でも、かなりメモリ食う。どうしようかなぁ。。

とか励んでいたら、こんな時間に。眠い…。

| | Comments (0)

January 05, 2007

リモコンATTにロータリエンコーダ4

仕事はじめ。残業。仕事前にコーディングを終わりたかったが…

・メモリ節約のため16桁以上のLCD用の17桁目以降の出力コードを思い切って削除。これ以上節約するには、日本語モード、英語モードを片方のみで実装するしか無いかも。まぁ、それもアリかな。

・セッティング画面でもロータリエンコーダの操作がスムーズになる様に改良

・リモコンがミスリードの確立をより軽減。

・あとは、LineInごとにAttLvを記録させたい。家電協やJVCも認識させたい。とか。今のままだとメモリ量に無理があるなぁ。

ていうか眠い。。。

| | Comments (0)

January 03, 2007

リモコンATTにロータリエンコーダ3

・セッティングモードでもロータリエンコーダを使える様にしてみた。スリムアップ計画のためにセッティングモードはスピードを下げて処理しているのだが、それが仇でエンコーダの反応は少々悪い。

・パナのリモコンをジャンクで入手。家電フォーマットで信号間隔が短いっぽいので、プログラムを書き換えて試してみたが…なぜかどのボタンも同じコードしか取れない。独自フォーマットかな?ジャンク屋のお兄さんは「プ○○○ホテルで使われてたのだよ」と言っていたが、ひょっとして怪しげなSTBのリモコンを兼ねている怪しいやつだったか?

…ということでリピートコードが使えないけどビクターのリモコンを使用。しかし、こちらは信号ビットが16ビットなのだが、稀に15ビットで識別されてしまう。どうにもPBasicの動作が少し重い様なのでIR_Readのプログラムもいじってみる。

ちなみに、NECフォーマットのHIGH->LOWの検出ロジックで全体で1.7msを検出する部分があるけれども、以下の様に書くと、iは2以上でビット1と判断できる模様。
i = 0
While ra.Bit4 = 0
    i = i + 1
    If i < 10 Then Goto hogehoge
Wend
If i > 2 Then ビットは1

家電協フォーマットだとクロック短いので厳しいかも。

・遊び心で…

アッテネータ変更中

Attenuator 13/44
[■■■■         ]

ミュート変更中

     Mute       
  [ON]     OFF   

ラインセレクト中

  Line Select   
  [1]  2   3    

一定時間が立てば普通の表示に戻る。なんてことをしたらDebugで102%、Debug無しで99%。もう少しコードを書き足したいんだけどなぁ…。

| | Comments (0)

リモコンATTにロータリエンコーダ2

とりあえず

・Volume UP と Volume Down はロータリエンコーダとボタンに両対応
アナログちっくにダイアルをまわすと「カチカチカチカチ…」と立て続けにリレーが動くのは何か楽しい(笑。ちなみに設定画面をロータリエンコーダ対応するのは面倒なのでボタンのみ。

・赤外線コード検索ロジックを高速化
外付けメモリを総当りチェックなので遅そうだなぁと思って内部で検索マップを持つ様に変えてみました。速くなってるかは実測してないので分からないけど。

・現状のままだとメモリに収まらないのでスリムアップと高速化を心がけてみた。…のだが、Debugコードを含めると97.5%まで使い切ってしまった。一層のスリム化が課題?でも動作的に問題無さそうなら気にしなくても良いかも。

| | Comments (0)

January 01, 2007

リモコンATTにロータリエンコーダ

じんそんさんのアッテネータプログラムを読んで、ロータリーエンコーダでUP,Downして遊んでみようかと。とりあえず動くのたけど、keyloopの他の処理時間を減らさないとエンコーダの変化を読み取る時間が少なくなって反応悪くなってしまう。もう少し改良が必要か…。うまく行けば、ロータリエンコーダ版でケースを考えたい。

| | Comments (0)

2007年

今年もよろしくお願いします。

| | Comments (0)

« December 2006 | Main | February 2007 »