気分転換

現在位置のナビ

トップコンピュータの国雑記帳趣味趣味音響 → 気分転換

説明

気分転換に作成したものを、公開します。

説明

普段PDMアンプの試作品ばかり作っていると、煮詰まってきます。 気分転換に別のDACを作ってみました。

オーディオ制作の気分転換にオーディオを制作しているところが病んでいますが、趣味人なんてそんなものです。

PCM5102アンプ

PCM2704みたいに気軽に使えて、もう少し音の良いオーディオがほしかったので作りました。

PCM5102Aを使ったUSB DAC

使った基板は、以下です。

バスパワーで動作します。 ビデオ会議の時ヘッドフォンを駆動するのに重宝しています。

2023年4月22日追記

真面目に聴き込むと、高音に少々歪感があります。 PDMでバスパワーのヘッドフォンアンプを作ったので、PCM5102アンプは引退しました。

AD1856アンプ

昔DIYINHKから買ったAD1856基板が余っていたので、XMOSとつないでみました。

AD1856を使ったUSB DAC

使った基板は、以下です。

DIYINHKの基板は、生産が終わってしまってもう手に入りません。 無改造でもXMOSに直結できますが、そのときはサンプリング周波数96kHz以下しか再生できません。 384kHzまで対応したかったので、Tang Nanoを使いました。

山本式電流帰還ヘッドフォンアンプのおかげでいい音がします。 PDMアンプに匹敵するくらい。

2023年4月22日追記

低音は迫力あるのですが、高音の伸びでは負けてますね。 ES9018SとかPDMアンプに負けます。

PCM2704アンプ

PDMアンプをデモンストレーションするとき、オーディオを聞き慣れない人から「比較対象が欲しい」と言われます。 そこで、AmazonでPCM2704基板を買って、ストックしておいた秋月電子のBTLワンチップアンプキットと組み合わせてみました。 見事に電圧駆動の音がします。

PCM2704を使ったUSB DAC

失敗作 TDA2822を使った山本式電流帰還アンプ

OPアンプ6回路とTDA2822を2個使って、単一電源のステレオ山本式電流帰還アンプが作れないか、試してみました。 結論から言うと失敗です。 動作はするのですが、TDA2822の出すノイズが大きすぎます。

TDA2822を使った山本式電流帰還アンプ

過去作 ⊿Σ信号でスピーカーを駆動したアンプ

不要品を選別していたら、2015年頃に試作していたアンプの成れの果てが出てきました。 エレキ工房No.5のキットと同様にNXPのマイコンでUSB入力を受けて、⊿Σ信号でヘッドフォンやスピーカーを駆動したものです。 スピーカー駆動回路は、外してあります。

⊿Σ信号でスピーカーを駆動したアンプ

技術的には、以前SHARPが作っていて、今リリック社が作っている1bitアンプと同じものです。 D級アンプと同様に出力にLC回路によるローパスフィルターがあります。 出音は、D級アンプとPDMアンプの中間でした。

失敗 S/PDIFインタフェース

A/D コンバーターの出力を、S/PDIFに出力しようと考えました。 Raspberry Pi用のS/PDIF出力基板を買えば、I2SをS/PDIFに変換できると思ったのですが、失敗でした。

HiFiBerry digi コンパチ基板

買ったのはHiFiBerry digiコンパチ基板です。 この基板にはWM8804が乗っていますが、I2Cで制御しなければ動きません。

また、I2Sのマスターモードで動作します。 A/DコンバーターをI2Sのスレーブモードで動作させるにはI2S以外にシステムクロックが必要なのですが、コネクタに出ていません。

WM8804をスレーブモードで動作させるためには、未確認ですがクリスタルを外して外からシステムクロックを入れないといけないようです。

また、同じ基板を2枚買ったのですが、片方はコネクタ内部に接触不良があり、I2S信号がコネクタの半田部分まで届いていません。

ATtiny13A

マイコンATtiny13Aを使ってみました。

ATtiny13Aは便利なチップです。 8ピンでROMもRAMも小容量だから大したことはできません。 でもLSIに電源投入から遅れてリセットパルスを送るようなとき、今までNE555を使っていたところでATtinyが使えます。 NE555だと時定数を決める外付け部品が必要ですが、ATtinyはクロック内蔵で電源さえ与えれば動作します。 安いです。 電源は5Vでも3.3Vでも動作します。

ATtiny書き込みアダプタとLチカ基板

Webmasterの手元には10年以上前に購入したAVR ISP mkIIの本物があります。 ATtinyに書き込むためのアダプタ基板を作ってみました。

2023年6月23日の愚痴

今更ですが、秋葉原でOPA2134が高くなっているのに気づきました。 以前は秋月電子で400円で買えたのに、千石電商で1680円します。 2019年にTIが日本国内の2次代理店を切り捨てたのですね。 困ったものです。 仕方がないので、代わりにMUSES8920を使ってみます。

DIYINHKでキットを買おうとしたら、カード決済できません。 カード決済代行のSTRIPE社がVISAのブラックリストに乗っているのでしょうか。

エレキ工房No.5の記事で使用したLPC4330 Xplorer基板は、Amanero Combo384が出てくるまでwebmasterの自作機器で活躍していました。 当時の自作 USB DAC が動かなくなっています。 どうも、LPC4330 Xplorer基板に乗っている3.3V LDO が次々と故障しているようです。

2023年8月5日 DAC作り直し

2014年にDIYINHKのES9018k2m基板とLPC4330XplorerでUSB DACを作りました。 最近になってLPC4330Xplorerが故障したので、代わりにXMOSとRaspberry Pi picoを使って作り直しました。

作り直したUSB DAC

2023年11月6日 Raspberry Pi用I2SDAC

DIYINHKのES9018k2m基板を追加購入して、Raspberry PiのI2Sにつなぎました。

I2S接続のDAC

Raspberry PiとES9018k2m基板の間にFPGAがいるのは、⊿ΣのI2S伝送をしているからです。 I2SのMSBをLチャネルのデータにして、LチャネルとRチャネルを交互に1ビットづつ送ります。 FPGAでES9018k2mが受け取れるDSDフォーマットに整形しています。

これでUSB DACを買わなくてもRaspberry PIからPCMと⊿Σ両方を送ることができます。 切り替えはGPIOを1本使います。 Hifiberry-dacのデバイスドライバでPCMは354.8kHzfsまで、⊿Σは11.2MHzfsまで送れることを確認しました。

ALSAの癖で、PCMデータの前後にはPCMのゼロデータが付加されます。 そのせいで⊿ΣモードとPCMモードを切り替える瞬間にポップノイズが入りますが、気にしません。

FPGAの Verilog HDLファイルは大した内容ではないので、公開します。

module main_logic (
    input wire i2s_data,
    input wire i2s_lrck,
    input wire i2s_clock,
    input wire ds_on,
    output wire out_i2s_data,
    output wire out_i2s_lrck,
    output wire out_i2s_clock,
    output wire out_led_r,
    output wire out_led_g,
    output wire out_led_b
);

reg is_left;
reg lrck_remember;
reg ds_remember;
reg ds_left;
reg ds_right;
reg ds_clock;

assign out_i2s_data = (i2s_data & ~ds_on) | (ds_right & ds_on);
assign out_i2s_lrck = (i2s_lrck & ~ds_on) | (ds_left & ds_on);
assign out_i2s_clock = (i2s_clock & ~ds_on) | (ds_clock & ds_on);
// LEDs are active low
assign out_led_g = ~ds_on;
assign out_led_r = 1;
assign out_led_b = ds_on;

always @(posedge i2s_clock) begin
	lrck_remember <= i2s_lrck;
	if (lrck_remember != i2s_lrck) begin
		is_left <= 1;
	end else begin
		is_left <= is_left ^ 1;
	end
	if (is_left) begin
		ds_remember <= i2s_data;
		ds_clock <= 1;
	end else begin
		ds_left <= ds_remember;
		ds_right <= i2s_data;
		ds_clock <= 0;
	end
end

endmodule

2024年2月27日 RATOC KEB02iP

今度は完成品の話です。

KEB02iP

Webmasterは、各種OS向け音声再生アプリを配布しています。 今までDoPの動作確認には、エレキ工房No.5で作ったUSB DAC/ADCを使ってきました。 このキットで使用しているUSBマイコン基板が、経年劣化で動かなくなりました。

代わりにDoPを受け付けるDACを探して、このKEB02iPを見つけました。 今どきの中華USB DACはインターフェースにAmaneroかXMOSを使っています。 AmaneroもXMOSも、webmasterのLinux向け再生アプリではDSDをnative転送してしまいます。 どちらでもないインターフェースを使った安いDACを探していて、ハードオフで見つけました。

早速再生アプリをチェックして、アプリにDoP再生時のバグを見つけました。 デバッグしてからLinuxで再生したら、11.2MHzfsのDoPが再生できました。

Windowsでの再生は調子悪いです。 11.2MHzfsのDoP再生は可能なのですが、44.1kHzのPCM再生でも音が途切れます。 おそらく、アシンクロナスのフロー制御に問題があるのでしょう。

2024年3月1日追記

音が途切れる原因がわかりました。 ボリュームを絞ると、ときどき音が途切れます。 おそらく、ヘッドフォン駆動回路が単一DC電源で、出力にDCオフセットがあるのでしょう。 DCオフセットをキャンセルするDCデカップリングのコンデンサーが入っていて、再生条件によってチャージが0になってしまうのだと思います。

LinuxでもWindowsでもボリュームを絞ったら、音が途切れました。

2024年3月7日 8bit ⊿Σ Discrete DAC

8bit ⊿Σ Discrete DACを試作しました。

動いた試作品

仕様を書きます。

XMOSの出力するPCMとDSDからアナログライン出力を作ります。 PCM入力のときは、64倍オーバーサンプリングして階段状のデータとして8bit⊿Σ変調して出力します。 DSD入力のときは、そのまま8bit全部が同じ信号出力になります。

8bit出力は、おなじみのラダー抵抗を経てOPアンプに入ります。 ラダー抵抗は、FPGA基板の下に秋月電子通商で購入した誤差0.1%の抵抗を配置しています。 OPアンプは2回路あって、1段目はラダー抵抗出力のボルテージフォロワーです。 2段目でDCオフセットをとりながら、バタワース特性の弱いLPFを通します。

お気楽オーディオキット資料館にも、マルチビット Discrete DACを製作した記事があります。 そこで読んだ情報にこういうものがありました。

8bitのDiscrete DACを作ると、普通はゼロレベルの出力が0x80で、-1の出力が0x7fになります。 0と-1で出力8bit全部が反転するので、ここで出力電圧のギャップになりやすいです。

このギャップの対策を組み込みました。 8bitの出力が0x80になるときを『出力0.5』とし、0x7fになるときを『出力−0.5』とします。 FPGAの中で⊿Σ変調しているので、入力がずっとゼロだと出力は0x80と0x7fが交互に出ます。 ギャップが無くなるわけではありませんが、影響が減ったと思います。

詳細は こちらで。

2024年3月22日追記

ここではR-2Rラダー抵抗を使いました。 実はMHz帯の周波数で動作する12bitDACとしてAD668が存在します。 R-2Rの代わりにAD668を使うこともできるのですが、DigiKeyで購入して片チャンネルで9000円もするので、躊躇しています。

掲載日

初出 2021年10月17日

追記 2024年3月22日


back button 趣味趣味音響へ