2024.2.22
ソフト名
  pico_1bit_dac_v2.10
  ラズパイPico DACファームウェア (Raspberry Pi Pico用)
  I2S Controller/Target(Master/Slave)両対応版  (HAT DAC利用時)

概要
  本ソフトは CQ出版社Interface誌連載※で紹介している自作オーディオ
  USB/HAT DAC(D-Aコンバータ)，通称「ラズパイPico DAC基板」の
  Raspberry Pi Pico(RP2040)ファームウェアです。

  このUSB/HAT DAC基板は，いわゆる市販のオーディオDAC IC を搭載して
  いません．その代わり，RP2040のハードウェア機能をフル活用して
  オーバサンプリングやΔΣ変調をソフトウェア実装し，アナログLPF
  (ローパス・フィルタ)回路と組み合わせることでオーディオDACを実現
  しています．市販のDACに頼らず，ハードウェアとソフトウェアの創意
  工夫でDACそのものをDIYすることが，この連載のコンセプトです．

  ぜひ，新/旧PicoDAC基板をDIYして，RP2040マイコンが奏でる音楽を
  楽しんでみてください．詳細/技術/利用方法は誌上で紹介しています．

対応基板
  pico 1bit dac Rev1.x (USB DAC専用)
  pico diy dac V2.x    (I2S HAT DAC / USB DAC兼用)

入力対応
  USB入力: 24bit 44.1/48/88.2/96kHz  
           16bit 44.1/48/88.2/96/176.4/192kHz
  I2S入力: ビット長: 16/24/32bit(Target時), 16/32bit(Controller時)
           fs : 44.1/48/88.2/96/176.4/192/352.8/384kHz

動作確認環境 ※注
  1. RaspberryPi4B + moOde 8.3.7 https://moodeaudio.org/ 
  2. RaspberryPi4B + Volumio 3.616 https://volumio.com/
  3．RaspberryPi5  + Volumio 3.616 (検証中) 

  DAC設定:
     a. I2Sターゲット動作: RPI-DAC
     b. I2Sコントローラ動作: HifiberryDAC+PRO

　※注：
  I2Sコントローラ動作の視聴は、1．moOde環境をお勧めします。
  2024/2/22現在、2. の Volumio 3.616 はI2Sコントローラ動作未対応です。
  b.のI2Sコントローラ設定を行ってもI2Sターゲット動作となります。
  なお、以下のファイルを書き換えることでI2Sコントローラ動作が可能
  ですが、安定性に課題があるためお勧めいたしません。

  /boot/config.txt
    変更前
    dtoverlay=hifiberry-dacplus,slave
    ↓
    変更後(,slaveを削除)
    #dtoverlay=hifiberry-dacplus,slave
    dtoverlay=hifiberry-dacplus

　参考:
  https://community.volumio.com/t/3-616-i2s-dac-master-mode-no-longer-available-with-rpi3b-4b-hifiberry-dac-pro/65551/4

  Raspberry Pi 5動作は検証中です。安定性や再生ピッチに課題があります。
　現在I2Sコントローラ動作は未対応で、将来のドライバリリースを待つ必要があります

記事サポートURL
  https://interface.cqpub.co.jp/pico_dac/

主要構成ファイルと概略仕様
pico_1bit_dac_v2/      # プロジェクトフォルダ
  # Core0/1共用:
    audio_state.h      # USB/I2S受信・再生パラメタ共有構造体定義
    simple_queue.c/h   # Core0->Core1 PCMデータキュー管理
    bsp.c/h            # ボード依存処理・GPIO定義・初期化
  # Core0用:
    main.c             # 初期化, USB/I2S処理ブランチ, USB/I2S共通再生処理
                       # 例: .fs,.bit_depth:入力サンプルレート、ビット長
      dsp.c/h          # 音量, 前段x1~x8オーバーサンプリング, ASRC
        dsp_asm.S      # 高速演算ライブラリ
      i2c_target.c/h   # I2C(スレーブ) I2S Controller/Target/Volume制御用
      i2s_rx.c/h/pio   # I2S 初期化, I2S Controller/Target受信処理
      usb_audio.c/h    # USB 初期化, USB 受信処理
      parameter.c/h    # パラメータ管理・DSP変数処理
      uart_command_interface.c/h   # UART初期化・CLI処理・各コマンド処理
      system_def.h     # システム定義(バージョン番号等)
  # Core1用:
    pdm_output.c/h     # 後段x8オーバーサンプリング、ΔΣ、PWM出力
      pdm_output_asm.S # ΔΣ変調処理本体(アセンブラ記述)
      pdm_output.pio   # PIO 差動PWM出力処理(PIOASM記述)
  # その他:
    CMakeLists.txt     # CMake用ビルド環境設定
    changelog.txt      # 変更履歴
    readme.txt         # 本ファイル
