FPGA 版 FM 音源 (45) -- YMF297 (OPN3/OPL3) 測定 (10) -- モジュレーション入力

ほぼ 1 年前 (→2015 年 9 月 20 日の記事) に OPL3 モードに設定した YMF297 で、セルフ・フィードバックの経路に FIR LPF が存在することを確認しました。
そのときから気になっていたのですが、「普通」のモジュレーション入力のパスには LPF がなく、入力値が計算にダイレクトに寄与することを、実チップ出力をキャプチャしたものとプログラムでシミュレーションした結果をつき合わせて実際に確認しました。

続きを読む

新版FM音源プログラム (12)

2016 年 1 月 1 日付けの記事 (→こちら) の 4 K エントリの場合と同様に、テーブル・インデクスを「マスク」する方法により、テーブル・サイズを 3.75 K (3840) エントリまで削減することができました。
また、4 K エントリの場合と同様に、符号の操作も併用すると、3 K (3072) エントリまで減らすことができました。
3.75 K エントリのウェーブテーブル全体をプロットしたものを下に示します。

続きを読む

新版FM音源プログラム (11)

2016 年 1 月 1 日付けの記事 (→こちら) の 8 K (8192) エントリの「ウェーブテーブル」を用いる方式で、波形の一部を共有するすることによりテーブル容量を 6 K (6144) エントリまで減らすことができました。
サンプルごとの処理では、8 K エントリ方式と同様にインデクス 0 から 1023 までの 1024 エントリをアクセスします。 ただし、アクセス範囲の先頭が「位相ゼロ」とは限らなくなるので、ノート ON によるアタック開始時の「初期位相」として、ゼロではない値をロードする必要が生じます。
これはアタック開始時のみ必要であり、サンプルごとの処理には影響を及ぼしません。
ウェーブテーブルをインデクス順に読みだして、「波形」としてプロットしたものを下に示します。

続きを読む

DAC 用 ディジタル・フィルタの特性測定 (3)

イオニア PD00601 の測定を行ないました。
PD00601 は 2 DAC 出力モードのみをサポートする 8 倍オーバーサンプリング・ディジタル・フィルタで、

  • 阻止域減衰量 53 dB
  • 通過域リプル -0.046 ±0.023 dB
  • SOP (1.27 mm ピッチ) 16 ピン・パッケージ

というスペックになっています。
出力データ・ビット長は 16/18/20 の中から選択でき、16/18 ビットの場合は 1 次ノイズシェーピングが行なわれます。 今回は、ノイズシェーピングの影響のない 20 ビット出力モードでキャプチャしました。
なお、PD00601 は現在でも秋月で販売されています。
インパルス応答を下に示します。

続きを読む

DAC 用 ディジタル・フィルタの特性測定 (2)

イオニア PD00601 の前に、NPC 製 SM5807ES の測定を行なうことにしました。
SM5807 も古い AV 機器から外してきたものですが、それが何の機器だったかは覚えていません。
SM5807 は 4 倍オーバーサンプリング用ディジタル・フィルタで、fs = 44.1 kHz に対して、

  • 通過域 (0 〜 20 kHz) リプル ±0.05 dB
  • 阻止域減衰量 45 dB (24.1 〜 40 kHz)
  • 阻止域減衰量 55 dB (40 kHz 以上)

という、「普及」クラスのスペックとなっています。
出力ディジタル・データのキャプチャと、その後のデータ処理については前回の記事と同様に行いました。
得られたインパルス応答を下に示します。

続きを読む

DAC 用 ディジタル・フィルタの特性測定 (1)

単体の (単純な) DAC と組み合わせてオーバーサンプリング DAC を構成するための、単体のディジタル・フィルタ IC の特性を測定してみました。
対象は YAMAHA の YM3434 で、昔の AV 機器 (MUSE-NTSC コンバータ) から外してきたものです。
昔、秋月で YM3434 と PCM58 のセットを購入した覚えがあるのですが、こちらの方は現在行方不明です。
YM3434 は 8 倍または 4 倍のオーバーサンプリング・ディジタル・フィルタで、特性としては高級な方に属しており、理論値で

  • 通過域内リプル ±0.0001 dB 以内
  • 阻止域レベル -100 dB 以下

となっています。
周波数特性の測定方法としては、単純にフィルタ入力にインパルス (列) を加え、フィルタ出力からインパルス応答をキャプチャして FFT を施し求めることにしました。

続きを読む

新版FM音源プログラム (10)

FM 音源の「オペレータ」のフェーズ・ジェネレータ部、EG 部を除く、波形生成部分の計算量を見積もる作業をしています。
以下のような、波形テーブルのサイズの違う 3 種類のプロトタイプのプログラムを作ってみました。

  • 8 K (8 × 1024 = 8192) エントリのテーブル (16 K バイト)
  • 4 K (4 × 1024 = 4096) エントリのテーブル (8 K バイト)
  • 256 (1024 / 4 = 256) エントリのテーブル (512 バイト)

当然、テーブル・サイズの大きい方が処理時間が短く、同時発音数を多くできます。
オペレータ間の相互変調はなし、すべてのオペレータでフィードバック用の LPF 処理をすると言う条件で、STM32F4-Discovery (168 MHz Cortex-M4F) で実行させて、サンプリング周波数 48 kHz でのオペレータ数の限界を探ってみると、

テーブル・
エントリ数
オペレータ数 clk/OP
8 K 108 32
4 K 93 37
256 79 44

となりました。

続きを読む