SSDAC(Super Sampling D/A Converter)の新しい可能性について
今回はオーディオ信号をスプライン関数で補間するSSDACについて、自力でFPGAに実装し、新しい可能性について検証を開始したので報告する。
写真1.試作したSSDAC基板
基板上、左からAmanero基板、CQ出版社のMAX10ボード、DAC8822チップ、出力オペアンプ
下側に見える小基板はI2Sで外付けされたPCM5102。
9月頃から開始した、FPGAを使ったRIAAフォノイコライザの試作は、実はこのSSDAC実装のための準備だった。SSDACの原理は理解しているものの、自力でFPGAに実装するには練習が必要だったのだ。今回は32倍スーパーサンプリングをオリジナルのコーディングでMAX10に実装することができて、マルチプライングDAC、DAC8822からの出力信号も確認できたので、いよいよその先の応用の検討に入る。
【SSDACとは】
SSDAC(Super Sampling D/A Converter)は東京大学講師の小林芳直氏が発明した技術で、デジタルデータ列(たとえば音楽データ)をスプライン関数で補間するものだ。従来、オーディオ用DAC(D/Aコンバータ)はオーバーサンプリングデジタルフィルタによるものが主流で、この方式ではプリエコー、ポストエコーという付帯音(ノイズ)がついて回るため問題視されていた。それならばいっそのことNOS(Non Over Sampling Digital Filter)つまりオーバーサンプリングを一切しない、素のデータのまま聴いた方が良いのではないかという考え方があって、2020年現在も議論されている。
SSDACは、基本的にNOSを拡張したものだといえる。つまり、データ点とデータ点間をスプライン関数で補間し、オーバーサンプリングデジタルフィルタを通すことなくDACで処理をする。その結果、従来のNOSにくらべてよりきめ細かい波形が得られ、なおかつプリエコー、ポストエコーが発生しない。
スプライン関数でデータ補間するというものがどうしてこれまでなかったのか。実はフルーエンシ理論というものが従来から存在し、実際に製品化もされた。フルーエンシ理論では、2次関数によって補間することにより、2次微分までの連続性が確保されないため、波形が歪んでしまうことがある。
それならば3次の自然スプラインで補間すればいいだろうということは、おそらく多くの人が考えたと思うが、3次スプライン曲線を計算するには、先にすべてのデータ点を確定する必要がある。つまりあらかじめ曲の始めから終わりまで全部を解析しないと、スプライン曲線が決定できないのだ。
ところが、個々のデータが、特定区間のスプライン関数に与える影響は、注目するデータ区間から遠ざかるほど小さくなり、たとえば24bit分解能の場合は、前後13個より遠くのデータの影響はビット分解能以下になるため無視できることがわかった。つまり24ビットのデジタルデータであれば、たかだか13個のデータを先読みして計算すれば、スプライン関数が求められるのだ。
詳しく知りたい人は、トランジスタ技術2018年10月号をご覧いただくか、次の論文をお読みください。
ダウンロード - ect18093.pdf
ダウンロード - icd201728.pdf
さて、SSDACの基板回路図やVHDLのソースコードはすでにトランジスタ技術で発表されているので、誰でも試作することができるようになっている。(トランジスタ技術への記事掲載は2018年10月号、回路やVHDLソースコードは2018年11月号付録に収録)
公開されているVHDLソースコードは小林芳直氏によるもので、これはデータ間を63点で補間する64倍スーパーサンプリングDACだ。
今回は今後の応用研究も視野に入れて、独自にVHDLコーディングした。
5kHzサイン波、44.1kHz16bitサンプリングのNOS波形と、今回試作した32倍スーパーサンプリングの波形を図1、図2に示す。
図1.5kHzサイン波 (NOS→DAC8822)
図2.5kHzサイン波の32倍スーパーサンプリング波形(DAC8822出力)
波形を比較すれば一目瞭然で、データがなめらかにつながっているのがわかるだろう。図1ではデータが飛び飛びで階段状になっているが、これをスプライン関数で各データ間に31点の補間点を入れることでなめらかなサイン波になっている。
理屈では、スプライン関数が求まってしまえば、あとはクロック周波数とDACデバイスのスピードの許す限りいくらでも補間点を増やすことができる。
実際、SSDACで音楽を聴くと、スーパーサンプリングなしのNOSにくらべて高域のハイハットの音などがよりリアルに聞こえる。
ここまではすでに発表されている技術だ。
今回は新たな試みとして、SSDACをアップサンプリングに応用してみた。
SSDACの技術でオーディオデータを4倍スーパーサンプリングし、サンプリング周波数を4倍にした状態でTI社のPCM5102で再生する。
つまりスプラインで4倍補間すれば、データ数は4倍に増えるので、クロックを4倍にしてやればアップサンプリングができる。
具体的には、サンプリング周波数44.1kHzのオーディオデータに対し4倍スーバーサンプリングしてデータ数を4倍にし、11.2896MHzのSCLKと176.3kHzのLRCKを生成して同期させれば、4倍のアップサンプリングとなる。
まずは1kHz矩形波の立ち上がり波形の比較。
図3.1kHz矩形波PCM5102(FIR)、スーパーサンプリングなし
PCM5102のノーマル(FIR)モード。176.3kHzの半分の88.15kHzでプリ・ポストエコーが出ている
図4.1kHz矩形波PCM5102(FIR)、4倍スーパーサンプリング
4倍スーパーサンプリングにより、図3に見られたプリ・ポストエコーがなくなっている
図5.1kHz矩形波PCM5102(IIR)、スーパーサンプリングなし
PCM5102のローレイテンシ(IIR)モード。176.3kHzの半分の88.15kHzでポストエコーが出ている
図6.1kHz矩形波PCM5102(IIR)、4倍スーパーサンプリング
4倍スーパーサンプリングにより、図5に見られたポストエコーがなくなっている
以上より、スーパーサンプリングでアップサンプリングすることで、プリエコー・ポストエコーを抑える効果があることがわかる。
次に、サイン波の再生波形。
図7.5kHzサイン波PCM5102(FIR)、スーパーサンプリングなし
補間なしでデータが4回に一回しか更新されず、ポストローパスフィルタを付けていないため、段差が観測された
図8.5kHzサイン波PCM5102(FIR)、4倍スーパーサンプリング
図7に見られた波形の段差が解消された
図9.5kHzサイン波PCM5102(IIR)、スーパーサンプリングなし
補間なしでデータが4回に一回しか更新されず、ポストローパスフィルタを付けていないため、段差が観測された
図10.5kHzサイン波PCM5102(FIR)、4倍スーパーサンプリング
図9に見られた波形の段差が解消された
※通常は、段差が出ないようにポストローパスフィルタを挿入するが、差がわかりやすいようにポストローパスフィルタがない(効きがごく小さい)状態で波形観測した。
次に20kHzサイン波の比較。
図11.20kHzサイン波PCM5102(FIR)、スーパーサンプリングなし
補間なしでデータが4回に一回しか更新されず、ポストローパスフィルタを付けていないため、矩形波に近い波形となった
図12.20kHzサイン波PCM5102(FIR)、4倍スーパーサンプリング
44.1kHzの1/3である14.7kHz(3次スプライン計算に使う3点を確保できる周波数)を超えているため振幅が波打つが、なめらかな波形になっている。
図13.20kHzサイン波PCM5102(IIR)、スーパーサンプリングなし
補間なしでデータが4回に一回しか更新されず、ポストローパスフィルタを付けていないため、矩形波に近い波形となった
図14.20kHzサイン波PCM5102(FIR)、4倍スーパーサンプリング
44.1kHzの1/3である14.7kHz(3次スプライン計算に使う3点を確保できる周波数)を超えているため振幅が波打つが、なめらかな波形になっている。
注)以上の波形観測では補間なしの場合に段差が出ているが、これは、補間なしの場合にはデータが4サンプリングに一度しか更新されないため、当然といえば当然である。
きょうは評価初日で味見程度の評価だったが、
スーパーサンプリングによるアップサンプリングデータを市販のDACデバイスでD/Aすることで、過渡応答及び波形において再生特性に変化が見られた。
従来、アップサンプリングによってデータ量やデータの分解能は変化しないし、データ値の丸めに起因するデータ歪みの可能性もあることから、アップサンプリングの意義については疑問が多かったが、スーパーサンプリングによるアップサンプリングでは、何らかの効果が期待できることを示唆する結果になったのではないかと思う。
| 固定リンク | 0
コメント