DJ総合

2021年10月15日 (金)

無帰還電流駆動ヘッドホンアンプ改良 (基板頒布あり)

Hpa0


【訂正情報】
・2021/10/21
Q9,Q11,Q21,Q23(2SA1020)のHFEが間違っていました。マニュアルおよび回路図の記載を280→240に訂正しました。


以前開発した、無帰還電流駆動ヘッドホンアンプを改良して基板を起こしたので報告する。

無帰還電流駆動ヘッドホンアンプを開発試作したのは2016年のことで、製作記事をこのブログにもアップした
その後、手作りアンプの会2016年冬のお寺大会に出品したところ、ありがたいことに最優秀賞をいただいた
手作りアンプの会での評価は、実際の試聴による音質に重きが置かれていて、評価されたことはとてもうれしかった。
作ってみたいという人が何人かいたため、基板を起こそうとも思ったのだが、いくつか問題点があって、どうしようか考えているうちに5年経ってしまった(^-^;

まず、この無帰還電流駆動ヘッドホンアンプとはどういうものなのか、簡単に説明したい。
通常、スピーカーやヘッドホンは電圧で駆動する。つまり入力信号に比例した出力電圧で負荷を駆動する。この場合、負荷の状態はまったく無関係で、たとえスピーカーがつながっていなくても電圧で音楽信号が出力される。逆にスピーカー端がGNDとショートされていたら、出力電流が無限に流れるので、アンプが壊れるかヒューズが飛ぶ。
対して、電流駆動の場合は、負荷に対して入力信号に比例した電流で負荷を駆動する。たとえ出力がショートされても問題なく出力電流が流れるため、スピーカー出力をショートするタイプの保護回路が使える。出力がオープンの場合は、負荷インピーダンスが無限大になるため、そこに電流を流すように動作して、出力はクリップしてしまう。
通常、スピーカーやヘッドホンは電圧駆動をする前提で、電圧駆動した時にフラットな特性が出るように開発、設計されている。
これを電流駆動するとどうなるかというと、スピーカーやヘッドホンのインピーダンス特性に沿った音圧特性で駆動される。
通常、スピーカーやイヤホンのインピーダンス特性はどのようになっているかというと、最低共振周波数f0で最大になり、その後一旦下がるが、高域では徐々に上昇する。
こういった特性を持ったスピーカーやイヤホンでも、通常の電圧駆動をすることで、フラットな特性を得るわけだが、電流駆動するとインピーダンス特性に沿った音圧特性になるのでインピーダンスが上昇するf0や高域が増強される。
見方を変えれば、インピーダンスが上昇するポイントは、そのスピーカーやヘッドホンが鳴らすのを得意とする帯域なので、その得意な帯域を伸び伸びと鳴らさせてあげる!というアンプだということもできる(こじつけくさくないか?)
そういうわけで、ほとんどのスピーカーやヘッドホンは電流駆動すると、f0付近と高域が持ち上がって、ドンシャリ傾向の音になる。
ただし、もしインピーダンス特性がフラットなスピーカーやヘッドホンなら、電圧駆動、電流駆動で差が出にくいとも考えられる。(もっとも出力インピーダンスがまったく真逆なので、ダンピング特性の差は出るだろうと思われるが)

そもそも無帰還電流駆動ヘッドホンアンプは、その前身となる無帰還電流駆動アンプをヘッドホン用にリメイクしたものだ。
無帰還電流駆動アンプはもともと、オーラトーン5Cを慣らすための専用アンプとして開発したものだ。

さて、上述のように、電流駆動アンプの特徴として出力をショートするタイプの保護回路が組めるので、ミュート&保護回路のリレー接点による音質劣化に悩まされないで済む。ただ、DCが出力されて保護回路が働いたということは、アンプに何か異常がある可能性があるので、その状態で出力をGNDに短絡すれば事故が起きる可能性がある。そのため、無帰還電流駆動アンプでは、保護回路動作時は出力をショートするとともに、SSR(ソリッドステートリレー)を使ってAC100V電源を遮断するという構成にした。

無帰還電流駆動ヘッドホンアンプの場合は、バッテリー駆動ということもあって、そこまでの検討はしていなかった。ショート方式の保護回路には欠点があって、出力にDCを検出したときに出力端をショートすると、検出されていたDCが0になってしまうので、保護回路が解除される。するとまたDCが発生し……ということ繰り返してしまう。つまりひとたび保護回路が働いたらラッチがかかって、リセットしない限り再起動できないような仕掛けが必要になる。そういう意味では上で説明した無帰還電流駆動アンプのACを落としてしまうやり方は合理的だ。
ヘッドホンアンプの場合、バッテリー駆動だし、ヒューズかポリスイッチでも入れとけばいいかな……でもなあ、電源のインピーダンスが上がるのできもちわるいよなあ……やるとしたら±両方の電源を同時に落とす仕掛けも必要だし……うーんうーん……とかやっているうちに5年の歳月が(^-^;

今回はちょっとがんばって±のバッテリー電源を両方遮断する回路を設計して搭載した。
これでいちばん大きな問題点がひとつ解決した(^-^)
ただ、少しスイッチの構成が特殊で、電源ONのタクトスイッチSW1と電源OFFのタクトスイッチSW2が別になっていて、ON時はSW1を長押し、OFF時はSW2を押す、という構成になった。ロジック回路かマイコンを使えばスイッチひとつでもできると思うが、どうもアナログアンプにデジタル回路を積む気になれなかったので、今回のような構成になった。

あとは細々した問題点として、前回の設計では終段に2SA1668/2SC4382を使っていたが、これでは大きすぎて小型化が難しい。今回はこれらを2SA1020/2SC2655に変更することで小型化した。
次に、前回はニッカド電池を8本つかって±4.8Vの構成にしたが、これでは大きくなりすぎる上に電池持ちもよくないので、これを±3.8Vのリチウムイオン電池にした。
動作電圧を下げたことで、保護回路も定数変更した。保護回路は前回同様、±150mV以上のDCを検出すると働く。

最終的な回路を図1,図2に示す。図1がアンプ回路で、図2が電源と保護回路だ。
見やすいきちんとした図面は、この記事の最後に頒布用のマニュアルをリンクするのでそちらを参照してほしい。

Hpac_sch
図1.無帰還電流駆動ヘッドホンアンプ回路(片チャンネル)


Protectsch
図2.電源回路および保護回路


図2の左上にあるJ3,J4がそれぞれマイナス側とプラス側のバッテリー入力で、そのすぐ右側がMOSFETを使った電源ON/OFF回路だ。マイナス側のON/OFFはプラス側に追従するようになっている。
同じ図2の中央より下の回路はDC検出保護回路で、従来トランジスタのVBEに反応して0.6V以上でプロテクトがかかる典型的な回路に対して、ショットキーダイオードを使って基準電圧を底上げすることで0.15Vでプロテクトがかかるようにしている。

このあたりの開発経緯も、前回の無帰還電流ヘッドホンアンプの記事に書かれているので参照してほしい。

今回設計した基板による諸特性を以下に紹介する。

まずはひずみ率雑音特性。左右チャンネルにつき、それぞれ負荷が33Ω、100Ωの場合のTHD+N(%)を図3~図6に示す。

Thdn33_l Thdn33_r
図3.Lch 33Ω負荷 THD+N               図4.Rch 33Ω負荷 THD+N



Thdn100_l Thdn100_r
図3.Lch 100Ω負荷 THD+N              図4.Rch 100Ω負荷 THD+N


ひずみ率雑音特性THD+Nは、ボトムでおよそ0.03%、実用域で0.1%以下で、これは前回とほぼ同じだ。

次に周波数特性。
周波数対ゲインのグラフを図5、図6に示す。L、R同等だったので、Lchのみ。

Ftoku33l Ftoku100l
 図5.周波数ゲイン特性 33Ω負荷(Lch)           図6.周波数ゲイン特性 100Ω負荷(Lch)

100Ω負荷では-3dBポイントが1MHz、33Ω負荷では1MHz超となり、前回よりも改善した。


次は方形波出力波形。
これもL、Rで差がなかったのでLchのみ、33Ω、100Ω負荷に対してそれぞれ10kHz、100kHの波形を図7~図10に示す。

10khz33ohml 100khz33ohml
図7.方形波出力33Ω10kHz(Lch)          図8.方形波出力33Ω100kHz(Lch)

10khz100ohml 100khz100ohml
図9.方形波出力100Ω10kHz(Lch)          図10.方形波出力100Ω100kHz(Lch)

以上のように、オーバーシュートやリンギングは一切ないので、位相補償は行っていない。

次は出力インピーダンス。
今回は1kΩと2kΩ負荷を切り替えてのON/OFF法で測定した。これもL、Rで大差ないので、Lchのみ表1に示す。

表1.出力インピーダンス(Lch)
Impedancel_20211017223901

前回の測定結果は11kΩだったので悪化しているが、測定方法の違いも影響があるかもしれない。
ヘッドホンのインピーダンスが16Ω~100Ω程度だと考えれば十分な値だろう。

最後に主要諸元を表2にまとめておく。

表2.主要諸元
Syogen

音質については電流駆動故に、使用するヘッドホン、イヤホンの個性が非常によく出る。
普段使いのパイオニアHDJ-1500とは相性がよく、低域、高域が若干持ち上がり気味で
メリハリの強い、なおかつクリアな音質となった。
ヘッドホン、イヤホンに対する音質の違いについても前回の記事で書いているので参照してほしい。

2021/10/18追記
3Dプリンタで専用ケースを製作した。単三型(14500)リチウムイオン電池がそのまま入れられるように、電池ホルダを一体形成した。
写真1にケース入りのヘッドホンアンプ(下)とスーパーサンプリングSDプレイヤーSSSDP4490(上)を示す。
写真2はフタを外したところ。

Hpacincase
写真1.今回製作した無帰還電流駆動ヘッドホンアンプ(下)とスーパーサンプリングSDプレイヤー(上)


Hpacincase2
写真2.フタを外したところ。左側の電池は単三型リチウムイオン電池2本。


ケースのstlデータ
ダウンロード - 20211017hpac_top000.zip



【基板頒布のお知らせ】
この記事の無帰還電流駆動ヘッドホンアンプ生基板をご希望の方に頒布します。
生基板1枚と、製作説明書と回路図、部品表等の資料、LTSPICEのシミュレーションファイルをセットで
1880円(税、送料込み)で頒布します。(自力で部品収集、部品選別、調整できる方が対象です。)

ご希望の方は表題に「無帰還電流ヘッドホンアンプ基板頒布」、
本文にお名前、送付先郵便番号、ご住所、電話番号をお書きのうえ、

dj_higo_officialアットhigon.sakura.ne.jp
(アットを@に替えてお送りください)

までメールをお送りください。

代金の振込先のご案内メールをお送りします。入金が確認でき次第発送します。

製作マニュアル、回路図、部品表、その他

| | コメント (0)

2021年10月 9日 (土)

LTspiceでフォノイコライザシミュレーション

以前、フォノイコライザをIIRフィルタで構成してFPGAに実装する記事を書いたが、今回はLTspiceでフォノイコライザのシミュレーションを行ったので、紹介する。

LTspiceでのシミュレーションでは回路に対してトランジェント解析で波形の応答を見ることもできるし、AC解析で周波数特性を見ることもできるが、ほかに非常におもしろい機能があって、WAVファイル(音声データ)を入力して、シミュレーション結果を同じくWAVファイルとして出力することができる。
今回はレコードからフォノイコライザなしでダイレクトリッピングしたWAVファイルを、LTspiceでのフォノイコライザ回路シミュレーションを通してWAVファイルで出力する検証を行った。


1.実際に使用しているフォノイコライザ回路
図1に実際に部屋で使用しているフォノイコライザの回路を示す。使用カートリッジはDL-103。

Usingeqsch
図1.実際に使用しているフォノイコライザ回路
MJの安井章氏の回路を参考にして設計した。

図1の回路ではカートリッジ入力を最初のオペアンプで120倍したあとCRイコライザを通し、次段で100倍増幅して、カップリングコンデンサを通して出力している。電源はエネループを8個使って±4.8Vとしている。


2.シミュレーション用回路
シミュレーションに使う回路は基本的に実使用中の図1の回路と同じだが、オペアンプを電圧制御電圧源に置き換えている。図2にオペアンプの非反転増幅回路と、電圧制御電圧源を使った帰還型増幅回路の置き換えを示す。

Opampvsvdv
図2.オペアンプ非反転増幅回路の、電圧制御電圧源での置き換え
電圧制御電圧源のゲインを1000万倍(140dB)として、負帰還増幅器を構成している。

図2ではオペアンプを使った非反転の10倍アンプを、電圧制御電圧源を使った10倍アンプに置き換えている。
電圧制御電圧源のゲインは1000万倍として、1/10の帰還をかけることでオペアンプ回路と同等の機能を持たせている。

ただ、電圧制御電圧源はゲインが自由に設定できるので、単に図3のようにしてもよい。

Vdv20db
図3.ゲイン10倍の電圧制御電圧源

今回評価するフォノイコライザ回路は、図3のように電圧制御電圧源に直接必要なゲインをもたせるやり方で、オペアンプを置き換えることにする。
今回評価したシミュレーション回路を図4に示す。

Simeq_wav
図4.今回使用したフォノイコライザシミュレーション回路
レコードのダイレクトリッピングゲインを160倍としたため、フォノイコライザのゲインは入力側32倍、出力側2倍のトータル64倍とした。またオフセットは無視できるのでカップリングコンデンサは省略した。

この回路の周波数特性を図5に示す。

Eq_gainphase
図5.今回の回路のAC解析

シミュレーション用のファイルは以下。
ダウンロード

3.WAVファイルを使ったシミュレーション手順
①LTspiceに回路を入力する
・回路の入力に上記wavファイルを割り付けるが、回路入力では単に電圧源(voltage source)を使う。
②実際に使用するwavファイルを用意する。
・今回は44.1kHz16bitステレオのwavファイルを使う。長いとシミュレーションに時間がかかるので、短いものを使う。(40秒の曲を処理するのに30分以上かかる)
・用意したwavファイルをLTspiceの回路(.ascファイル)と同じホルダに入れておく。ファイル名は任意だが、スペースは使えない。
・今回実際に使用したwavファイル名は、"night_in_tunisia_Direct40sec.wav"
③回路に対してwavファイルの入出力設定を記述する
・入力の電圧源(図4ではv4)を右クリックして"advanced"をクリックして詳細設定に入る。
・PWL FILEを選び、BrowseからファイルタイプをAll Files(*.*)として、上で用意したwavファイルを設定する。
●回路に戻ると電圧源のソースが”PWL file=night_in_tunisia_Direct40sec.wav”と表示されているので、これを右クリックして、手入力で編集し、
"wavefile=night_in_tunisia_Direct40sec.wav channel=0"
に変更する。
・同じようにv3に対して"wavefile=night_in_tunisia_Direct40sec.wav channel=1"を設定する。
・.opボタンを押して、".wave soundout00.wav 16 44.1k V(voutL) V(voutR)"と入力して、回路上に貼り付ける。soundout00.wavは出力されるファイル名(任意)。
・SimulateのEdit Simulation CmdのTransientタブで、
 Stop time = 40(今回のwavの長さ)
   Time to start saving data = 0
   Maximum Time step = 0.708u(1411kbpsの逆数)
としてOK。".tran 0 40 0 0.708u"が回路図上に配置される。

以上ができたら、SimulateのRun(走るボタン)を実行すると、しばらく演算した後、同じホルダに出力ファイル"soundout00.wav"が生成される。
※とにかく実行には時間がかかるので、最初は短いファイル(数秒レベル)で確認してみるとよい。

4.シミュレーション結果
上述の通り、DL-103からゲイン160倍でダイレクトリッピングしたファイルと、処理後の出力ファイルは次の通り。

・ダイレクトリッピングファイル
night_in_tunisia_Direct40sec.wav

・フォノイコライザシミュレーション出力ファイル
soundout00.wav

ちなみにこの音源は、
Hot Salsa meets Swedish Jazz
というLPに収録されたお気に入りの一曲です。

順序が前後してしまったが、ダイレクトリッピングに使用した回路を図6に示す。


Directripsch
図6.ダイレクトリッピングに使用した回路


5.まとめ
以上のように、LTspiceを使って、wavファイルの信号処理を行うことができる。
・今回はオペアンプの代わりに電圧制御電圧源を使ったが、もちろんオペアンプを使ったシミュレーションもできる。ただし、シミュレーションの時間が猛烈にかかる。(以前オペアンプでシミュレーションしたら、3分の曲を処理するのに一晩かかった)
・シミュレーションは仮想現実であり、今回の実験は現世のwavファイルを仮想現実世界で処理して、それをまた現世に持って帰ってくる、というような感覚がして非常におもしろいと思う。
・レコードのダイレクトリッピングを今回の方法で処理するやり方は、膨大な時間がかかることから実用的ではないが、ごく短いサンプル音源を使って、エフェクター回路の検証を行うといったような使い方は想定できる。

実際に音が出ると感動するので、ぜひやってみてください(^-^)

| | コメント (0)

2021年5月22日 (土)

16倍 24Bit スーパーサンプリングSDメモリープレイヤーの試作

16x 24Bit Super Sampling SD Memory Player Prototype

Sd_ss4490all 
写真1.試作したスーパーサンプリングSDメモリープレイヤー
photo1. Prototype Super Sampling SD Memory Player


今回はスーパーサンプリングSDメモリープレイヤーを試作したので紹介する。

再生可能なファイルフォーマットは、44.1kHz16bitのwavのみで、これを16倍24bitスーパーサンプリング処理(3次自然スプライン関数によるデータ補間処理)してI2S DACであるAK4490でD/Aして出力する。

32bitマイコンPIC32MX230F064Bを動作クロック11.2896MHz(発振器は22.5792MHz)で動作させSDメモリからWAVを読み出してI2Sに変換し、これをトラ技MAX10基板(10M08SAE144)で受けて16倍24Bitスーパーサンプリング処理を行い、705.6kHzサンプリングのI2SとしてAK4490に送る。
16倍サンプリングでは44.1k x 16でLRCKが705.6kHzとなり、このときBCLKは705.6 x 64 = 45.1584MHzとなる。今回は水晶発振器に22.5792MHzを使い、MAX10で2倍PLLして45.1584MHzを生成している。
MAX10でPLLを行う場合、ソースクロックはCLK0またはCLK1端子に入れる必要があり、トラ技のMAX10基板ではメインのCN1,CN2には接続されておらず、CN5-5に接続されているP28(CLK1n)から入力した。

 

This time, we will introduce a prototype of Super Sampling SD Memory Player.

The supported file format is 44.1kHz 16bit wav, which is 16x 24bit supersampling processing (data interpolation processing by the 3rd order natural spline function) and D/A is output by AK4490 which is an I2S DAC.

The 32-bit microcomputer PIC32MX230F064B is operated with an operating clock of 11.2896 MHz (oscillator is 22.5792 MHz), WAV is read from the SD memory and converted to I2S, and this is received by the Tora Gi MAX10 board (10M08SAE144) to perform 16 times 24-bit supersampling processing. Send to AK4490 as I2S with 705.6kHz sampling.
In 16x sampling, LRCK is 705.6kHz at 44.1k x 16, and BCLK is 705.6 x 64 = 45.1584MHz. This time, 22.5792MHz is used for the crystal oscillator, and 45.1584MHz is generated by double PLL with MAX10.
When performing PLL with MAX10, the source clock must be put in the CLK0 or CLK1 terminal, and P28 (CLK1n) connected to CN5-5, not connected to the main CN1 and CN2 on the MAX10 board. ).



Sd_ss4490_pic32
写真2.PIC32はMAX10の下に配置してある
Photo 2 of PIC32 placed under MAX10 shows the implementation of PIC32.


写真2にPIC32の実装の様子を示す。PIC32はトラ技MAX10基板の下に配置しており、書き込み用のICSPピンヘッダはPIC32の1~6ピンの横に配置した。PIC32の上側の14ピン部品は発振回路に使用した74HCU04で、水晶は22.5792MHz。

The PIC32 was placed under the Tora Gi MAX10 board, and the ICSP pin header for writing was placed next to pins 1 to 6 of the PIC32. The 14-pin component on the upper side of PIC32 is 74HCU04 used for the oscillation circuit, and the crystal is 22.5792MHz.


Sd_ss4490_sdcard
写真3.SDアダプタとOLEDユニット(SSD1306)
Photo 3. SD adapter and OLED unit (SSD1306)


SDカードのホルダは、microSD→SDの変換アダプタを利用した。変換アダプタの接点に直接はんだ付けして各信号線を引き出している。
表示パネルはI2C接続のOLEDユニットSSD1306を使用した。

再生波形は以下のとおり。

The SD card holder used a microSD to SD conversion adapter. Each signal line is pulled out by soldering directly to the contacts of the conversion adapter.
The display panel used an I2C-connected OLED unit SSD1306.

The reproduced waveform is as follows.

 

Sd_ss4490_1khz
図1.スーパーサンプリング1kHz再生波形
Figure 1. Super sampling 1kHz playback waveform

 


Sd_ss4490_10khz_nos
図2.NOS 10kHz再生波形
Figure 2. NOS 10kHz playback waveform

 


Sd_ss4490_10khz
図3.スーパーサンプリング10kHz再生波形
Figure 3. Super sampling 10kHz playback waveform

 


Sd_ss4490tr1khz_nos
図4.NOS 1kHz方形波再生波形
Figure 4. NOS 1kHz square wave reproduction waveform


Sd_ss4490_tr1khz
図5.スーパーサンプリング1kHz方形波再生波形
Figure 5. Super sampling 1kHz square wave reproduction waveform


音質はスーパーサンプリングの良さが出ていて、D/AデバイスにI2S、ΔΣのデバイスを使用する場合は、内部デジタルフィルタをOFFにするため、デバイスの個性は出にくいように思える。

電源は、9VのACアダプタを2個使用し、正負電源を構成した。この場合正負電源の消費電流が、正側約200mA、負側約10mA(オペアンプの負電源のみ)と非常にアンバランスなので、バッテリー駆動にするには検討が必要だ。

The sound quality is good for super sampling, and when using an I2S, ΔΣ DAC device for the super sampling DAC, the internal digital filter is turned off, so it seems that the individuality of the device is hard to come out.

The power supply used two 9V AC adapters to form a positive and negative power supply. In this case, the current consumption of the positive and negative power supplies is very unbalanced, about 200mA on the positive side and about 10mA on the negative side (only the negative power supply of the operational amplifier), so it is necessary to consider how to drive it with a battery.

●20210529追記
・NJW4191による負電圧チャージポンプ回路追加により、単電源に対応
・ランダム選曲機能追加

● 20210529 Addendum
・ Addition of negative voltage charge pump circuit by NJW4191 supports single power supply
・ Addition of random music selection function

●20210530追記
負電圧にチャージポンプを使った単電源回路で、単4(AAA)サイズのリチウムイオン電池ICR10440での動作試験を行った。
回路の消費電流は約200mA、この電池の容量は350mAhなので、

350 / 200 = 1.75h = 105min

つまり1時間45分使える計算になる。
実際に動作させてみたところ、14時45分開始、16時27分終了となったので1時間42分でほぼ計算通りとなった。

● 20210530 Addendum
A single power supply circuit that uses a charge pump for negative voltage, with AAA size lithium-ion battery ICR10440. An operation test was performed.
The current consumption of the circuit is about 200mA, and the capacity of this battery is 350mAh, so

350/200 = 1.75h = 105min

In other words, it is a calculation that can be used for 1 hour and 45 minutes.
When I actually operated it, it started at 14:45 and ended at 16:27, so it was almost as calculated in 1 hour and 42 minutes.

20210530sssd_batt
写真4.リチウムイオン電池による動作試験
Photo 4. Operation test with lithium-ion battery

●20210602追記
・ヘッドホンモニター用にΦ3.5ステレオミニジャックを付けていたが、ボリュームがないと不便なので、ヘッドホンアンプとボリュームを追加した。

● 20210530 Addendum
・I had a Φ3.5 stereo mini jack for the headphone monitor, but it was inconvenient if there was no variable resistor, so I added a variable resistor  and headphone amplifier.

Add_hpa
写真5.ヘッドホンアンプおよびボリュームを追加
Photo 5. Added headphone amplifier and variable resistor


回路図
Schematic
ダウンロード - sd_ss4490_003sch.pdf



| | コメント (0)

2021年5月 7日 (金)

PCM1795 Dual 16倍 24Bit スーパーサンプリングDAC ( 基板頒布あり )

PCM1795 Dual 16x 24Bit Super Sampling DAC (with board distribution)

Ss1795pcbs
写真1.PCM1795をモノラル構成で2個使用した16倍24Bit スーパーサンプリングDAC
photo1. 16x 24Bit Super Sampling DAC Using Two PCM1795 in Monaural Configuration

今回はI2S入力のΔΣ方式DAC、PCM1795をモノラル構成で2個使用した16倍24Bit SSDACを開発したので紹介する。

I2S入力のΔΣDACを使ったスーパーサンプリングDACについては、すでに最初のSS128I2SでAK4490とPCM5102を使って実現している。
今回はバーブラウンのハイエンドDACであるPCM1795を、内部デジタルフィルタなしのモノラルモードで2個使用し、専用のFPGAで16倍24BitスーパーサンプリングDACを構成した。
このデバイスをモノラルモードで使用する場合はI2Sフォーマットではなく、24Bit右詰フォーマットで使用する。これは有名なPCM1704と同じデータフォーマットだ。

再生波形は以下のとおり。

This time, we have developed a delta-sigma DAC with I2S input and a 16x 24Bit SSD AC using two PCM1795 in monaural configuration.

For super-sampling DAC using ΔΣDAC of I2S input, already the first SS128I2S is realized by using the in AK4490 and PCM5102.
This time, two Bar Brown high-end DACs, PCM1795, were used in monaural mode without an internal digital filter, and a 16x 24-bit supersampling DAC was configured with a dedicated FPGA.
When using this device in monaural mode, use it in 24-bit right-justified format instead of I2S format. This is the same data format as the famous PCM1704.

The reproduced waveform is as follows.

Nos10ksin
図1.44.1kHz16Bit入力 NOSモード 10kHz正弦波
補間なしの生データ再生。
Figure 1. 44.1kHz 16Bit input NOS mode 10kHz
Raw data playback without sine wave interpolation.

Ss10ksin
図2.44.1kHz16Bit入力 16倍24bitスーパーサンプリング 10kHz正弦波
きれいな正弦波が再現された。
Figure 2. 44.1kHz 16Bit input 16x 24bit supersampling 10kHz sine wave
beautiful sine wave was reproduced.


Nos1ktr
図3.44.1kHz16Bit入力 NOSモード 1kHz方形波
Fig. 3.  44.1kHz 16Bit input NOS mode 1kHz square wave


Ss1ktr
図4.44.1kHz16Bit入力 16倍24bitスーパーサンプリング 10kHz方形波
オーバーシュートとアンダーシュートが1山ずつ出るSSDACの特徴的な波形。
Fig. 4.  44.1kHz 16Bit input 16 times 24bit super sampling 10kHz square wave 
Characteristic waveform of SSDAC with one overshoot and one undershoot. 


Nos1ksaw
図5.44.1kHz16Bit入力 NOSモード 1kHzのこぎり波
Fig. 5. 44.1kHz 16Bit input NOS mode 1kHz sawtooth wave


Ss1ksaw
図6.44.1kHz16Bit入力 16倍24bitスーパーサンプリング 1kHzのこぎり波
過渡的な応答は方形波と同じようにオーバーシュートとアンダーシュートが出る。
Fig. 6. 44.1kHz 16Bit input 16 times 24bit supersampling 1kHz sawtooth wave
The 
transient response is overshoot and undershoot like a square wave.


音質はこれまでのSSDACの特徴を引き継いでいて、とくに高域がきめ細かく再生される。
またモノラル構成で2個使いとしたことで、チャンネルセパレーションやSNRでも有利で、ヘッドホンで聴いてもノイズはまったく感じられない。
今回採用したPCM1795は入手性もよく、価格も比較的廉価なので、SSDACの入門用としておすすめします。

以下のとおり、基板を頒布します。

The sound quality inherits the characteristics of SSDAC so far, and especially the high frequencies are reproduced in detail.
Also, by using two in a monaural configuration, it is advantageous for channel separation and SNR, and no noise is felt even when listening with headphones.
The PCM1795 adopted this time is easily available and the price is relatively low, so it is recommended as an introduction to SSDAC.

The boards will be distributed as follows.
(Please contact us for overseas shipping.)

【主な仕様】
●Amanero COMBO384互換入力
●NOSおよび16倍24BitスーパーサンプリングΔΣDAC(PCM1795x2)音声差動出力
●入力電源:AC12V~AC15V x2(±電源)
●基板サイズ:112mm x 140mm
回路図、部品表製作マニュアル操作マニュアル電気学会論文

[Main specifications]
● Amanero COMBO 384 compatible input
● NOS and 16x 24 Bit Super Sampling ΔΣ DAC (PCM1795x2) Audio differential output
● Input power supply: AC12V to AC15V x2 (± power supply)
● Board size: 112mm x 140mm
● Circuit diagram, parts Table , production manuals , operation manuals , the Institute of electrical Engineers of paper with

 
次の3種類を頒布します。

①書き込み済みFPGA搭載基板   22000円
・書き込み済みFPGAのみ搭載した基板です。
・納期:1週間~10日程度

②全部品実装基板(動作確認済み) 51000円
・書き込み済みFPGAを含む全部品を搭載した基板です。
・Amanero COMBO384は含まれません。
・すべて手実装です。
・納期:2~3週間程度(受注生産)

③全部品実装基板(動作確認済み)、AmaneroCOMBO384、電源トランスセット 74000円
・すべて手実装です。
・AC電源ケーブルおよび電源スイッチ、ヒューズ等はご用意ください。
・納期:2~3週間程度(受注生産)


購入ご希望の方は表題に「SSDAC1795頒布希望」とお書きのうえ、
dj_higo_officialアットhigon.sakura.ne.jp(アットを@に換えて)までメールにて
お申し込みください。
※ご希望のセット番号と、お名前、ご住所、電話番号をお書きください。
折り返し、代金振込先等のご案内をお送りします。

製造・頒布はSLDJ合同会社が行います。

| | コメント (0)

2021年4月 5日 (月)

SSDAC対応DDコンバーター(USB to I2S)について

About SSDAC compatible DD converter (USB to I2S)


頒布中のSSDAC基板に対応するDDコンバータ(USB to I2S)について、動作確認できているものは次のとおり。
The following DD converters (USB to I2S) that are compatible with the SSDAC board being distributed have been confirmed to work.

Dd_boards
写真1.SSDACで動作確認済みのDDコンバーター
photo1. DD converter that has been confirmed to work with SSDAC

 

①Amanero COMBO384(写真左端)
・SSDACで標準としているDDコンバータ。
・The standard DD converter for SSDAC.

②Amanero COMBO384互換ボード(写真左から2番目)
compatible board (second from the left in the photo)
・amazonやAliexpressなどで廉価で入手できる。
・動作はAmanero COMBO384と同じだが、ファームウェアのアップデートはできない。
・Available at low prices on Amazon and Aliexpress.
・The operation is the same as Amanero COMBO384, but the firmware cannot be updated.

③XMOS U208(写真中央) (center of the photo)
・Amanero COMBO384と同等。
・ Equivalent to Amanero COMBO 384.

④6631PRO(写真右から2番目) (second from the right in the photo)
・CM6631Aを使用したDDコンバータ。
・SSDAC基板上のサンプルレート、ビット深度を示すLEDは点灯しないが、動作は問題なし。
・USB接続有無を示す”PLUG”信号が必要な場合は、コネクタの1pinと10pinをジャンパで接続する。(SSDACでは不要)
・DD ​​converter using CM6631A.
・The LED indicating the sample rate and bit depth on the SSDAC board does not light, but there is no problem in operation.
・If a "PLUG" signal indicating the presence or absence of a USB connection is required, connect pins 1 and 10 of the connector     with a jumper. (Not required for SSDAC)

⑤PCM2706ボード(写真右端) (far right in the photo)
・PCM2706を使用したDDコンバータ。
・SSDAC基板上のサンプルレート、ビット深度を示すLEDは点灯しないが、動作は問題なし。
・USB接続有無を示す”PLUG”信号は無し(SSDACでは不要)。
・44.1kHz,48kHzの16bitのみ対応。
・SSDACへの接続コネクタに電源が供給されていないため、コネクタ 7pinにジャンパで電源を接続する必要がある。
・クロックがUSBと兼用で、I2Sに必要なクロックはPLLで生成されているため、積極的にはおすすめしない。
・DD ​​converter using PCM2706.
・The LED indicating the sample rate and bit depth on the SSDAC board does not light, but there is no problem in operation.
・There is no "PLUG" signal indicating the presence or absence of a USB connection (not required for SSDAC).
・ Only 16bit of 44.1kHz and 48kHz are supported.
・Connecting to SSDAC Since power is not supplied to the connector, it is necessary to connect the power to pin 7 of the         connector with a jumper.
・The clock is also used for USB, and the clock required for I2S is generated by PLL, so we do not actively recommend it.

以上参考にしてください。
Please refer to the above.

| | コメント (0)

2020年12月 8日 (火)

SSDAC(Super Sampling D/A Converter)の新しい可能性について

今回はオーディオ信号をスプライン関数で補間するSSDACについて、自力でFPGAに実装し、新しい可能性について検証を開始したので報告する。


Ssdac_ts 
写真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に示す。

5khz_nss
図1.5kHzサイン波 (NOS→DAC8822)


5khz_32xss
図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矩形波の立ち上がり波形の比較。

Sq1k_fir_nss
図3.1kHz矩形波PCM5102(FIR)、スーパーサンプリングなし
PCM5102のノーマル(FIR)モード。176.3kHzの半分の88.15kHzでプリ・ポストエコーが出ている


Sq1k_fir_ss4x
図4.1kHz矩形波PCM5102(FIR)、4倍スーパーサンプリング
4倍スーパーサンプリングにより、図3に見られたプリ・ポストエコーがなくなっている

Sq1k_iir_nss
図5.1kHz矩形波PCM5102(IIR)、スーパーサンプリングなし
PCM5102のローレイテンシ(IIR)モード。176.3kHzの半分の88.15kHzでポストエコーが出ている


Sq1k_iir_ss4x
図6.1kHz矩形波PCM5102(IIR)、4倍スーパーサンプリング
4倍スーパーサンプリングにより、図5に見られたポストエコーがなくなっている

以上より、スーパーサンプリングでアップサンプリングすることで、プリエコー・ポストエコーを抑える効果があることがわかる。

次に、サイン波の再生波形。

Sin5k_fir_nss
図7.5kHzサイン波PCM5102(FIR)、スーパーサンプリングなし
補間なしでデータが4回に一回しか更新されず、ポストローパスフィルタを付けていないため、段差が観測された


Sq5k_fir_ss4x

図8.5kHzサイン波PCM5102(FIR)、4倍スーパーサンプリング
図7に見られた波形の段差が解消された


Sin5k_iir_nss
図9.5kHzサイン波PCM5102(IIR)、スーパーサンプリングなし
補間なしでデータが4回に一回しか更新されず、ポストローパスフィルタを付けていないため、段差が観測された


Sin5k_iir_ss4x
図10.5kHzサイン波PCM5102(FIR)、4倍スーパーサンプリング
図9に見られた波形の段差が解消された

※通常は、段差が出ないようにポストローパスフィルタを挿入するが、差がわかりやすいようにポストローパスフィルタがない(効きがごく小さい)状態で波形観測した。

次に20kHzサイン波の比較。

Sin20k_fir_nss
図11.20kHzサイン波PCM5102(FIR)、スーパーサンプリングなし
補間なしでデータが4回に一回しか更新されず、ポストローパスフィルタを付けていないため、矩形波に近い波形となった



Sin20k_fir_ss4x
図12.20kHzサイン波PCM5102(FIR)、4倍スーパーサンプリング
44.1kHzの1/3である14.7kHz(3次スプライン計算に使う3点を確保できる周波数)を超えているため振幅が波打つが、なめらかな波形になっている。


Sin20k_iir_nss
図13.20kHzサイン波PCM5102(IIR)、スーパーサンプリングなし
補間なしでデータが4回に一回しか更新されず、ポストローパスフィルタを付けていないため、矩形波に近い波形となった


Sin20k_iir_ss4x
図14.20kHzサイン波PCM5102(FIR)、4倍スーパーサンプリング
44.1kHzの1/3である14.7kHz(3次スプライン計算に使う3点を確保できる周波数)を超えているため振幅が波打つが、なめらかな波形になっている。


注)以上の波形観測では補間なしの場合に段差が出ているが、これは、補間なしの場合にはデータが4サンプリングに一度しか更新されないため、当然といえば当然である。


きょうは評価初日で味見程度の評価だったが、
スーパーサンプリングによるアップサンプリングデータを市販のDACデバイスでD/Aすることで、過渡応答及び波形において再生特性に変化が見られた。
従来、アップサンプリングによってデータ量やデータの分解能は変化しないし、データ値の丸めに起因するデータ歪みの可能性もあることから、アップサンプリングの意義については疑問が多かったが、スーパーサンプリングによるアップサンプリングでは、何らかの効果が期待できることを示唆する結果になったのではないかと思う。

 

| | コメント (0)

2020年10月26日 (月)

RIAAフォノイコライザをIIRデジタルフィルタで実装する ③シミュレーション編

前回まででRIAAイコライザをIIRデジタルフィルタに実装するための係数が計算できた。
今回は計算した係数でRIAAイコライザの特性がちゃんと得られるかどうか、シミュレーションを行い確認する。

まずはEXCELによるシミュレーション結果から。

表5.双一次変換法(上)とインパルス不変変換法(下)による係数のシミュレーション(96kHz)
Bilinear_impulse96_20201026172001

これは前回のブログで紹介したものの再掲だ。96kHzサンプリングで双一次変換とインパルス不変変換それぞれの係数計算結果によるもの。
上の段が各係数、下の段が各周波数ごとの理論値からの誤差だ。振幅特性を見る限りインパルス不変変換のほうがほんの少しだが良い結果になっている。

次に、サンプリング周波数48kHzの場合。

表6.双一次変換法(上)とインパルス不変変換法(下)による係数のシミュレーション(48kHz)
Bilinear_impulse48_20201026172001

サンプリング周波数48kHzでは10kHzを超えたあたりから徐々に振幅特性に誤差が増え始め、20kHzではおよそ+2.3dBの誤差が出ている。デジタルフィルタではナイキスト周波数(サンプリング周波数の半分)に近づくほど誤差が多くなる。これを回避するにはサンプリング周波数を上げるか、補正する特性を持たせる。

こんどはネットで見つけてきた係数。Githubのフォーラムでmoc.liamtoh@0691_ptj氏が投稿したもの。

表7.Githubで見つけた係数によるシミュレーション(上:48kHz 下96kHz)
Github_moc_48_96_20201026172001  

この係数は誤差が非常に優秀で、48kHzサンプリングにおいても20kHz信号の誤差が0.035dBとなっている。係数を見るとb2が存在しているので、特性の補正用に一段追加しているようだ。
補正項を追加すればポールが増えるので位相特性も変わってくるが、そのあたりはどのように考えるのか、今後機会があれば検討してみたい。

経験的に、耳で聴いて変化がわかる最小音圧レベルはおおよそ1.5dB程度なので、2倍の余裕をみても0.8dB程度に収まっていれば問題はないのではないかと、個人的には考えている。

以上の誤差の評価はEXCELでのシミュレーションによるもの。やりかたは次のとおり。
まず、評価したい周波数(20Hz,100Hz,1kHz,10kHz,20kHz)のサイン波のデータを作成する。
今回は4800サンプル分のデータを使用した。サンプリング周波に応じてサイン波を生成する。

①A行に0~4800のセルを用意
②B行にA/サンプリング周波数(たとえば96000)→サンプリング単位時間
③C行に20Hzのサイン波を生成するとすると、SIN(2*PI()*20*B)

これを4800までのセルに順送りすれば、サンプリング周波数に応じた任意の周波数のサイン波のデータが生成される。
これらのデータを今回生成した係数を持つRIAAイコライザに通すには、
Yn ・・・式18
を上で生成したサイン波のデータに対して順次計算すればよい。
x(n)が現在の入力データ、x(n-1)がひとつ過去の入力データ、x(n-2)がふたつ過去の入力データ、y(n-1)がひとつ過去の出力データ、y(n-2)がふたつ過去の出力データで、これらについて上の式の計算を施して、現在の出力y(n)を得る。
注意することは、最初のデータを処理する時点では過去のデータがないので、初期値として過去2つ分のデータとして0を与えてやる。これはハードウェアに実装する場合にも注意が必要だ。値が不定だとエラーになったり誤動作したりする。

簡単なので各自自力で試してみてほしい。

次に、フリーソフトのAudacityをつかったシミュレーションについて説明する。

Audacityは音声編集ソフトだが、デジタルフィルタの係数を入れるとシミュレーションを行い、スペクトル表示や数値のテキスト出力ができる。たとえば上で紹介した96kHzサンプリングの双一次変換法による係数を入れると次のようなシミュレーションができる。

Audacity1
図9.Audacityによるシミュレーション スペクトル表示



Audacity2
図10.Audacityによるシミュレーション テキスト出力

 

使い方は簡単で次のとおり。

①Audacityを起動
②左下ペインでプロジェクトのサンプリング周波数を選ぶ。上記の場合は96kHzなので96000。
③ホワイトノイズを生成する。ジェネレータ→ノイズ→white、Amplitudeは0.1とする。(大きいと係数によっては飽和してしまう)
④ctrl+Aで波形を全部選択
⑤道具箱→Nyquistプロンプトで
(biquad-m s 1 -0.96777105 0 1 -1.866859545 0.86728426)
と入力。数字は係数b0,b1,b2,a1,a2をスペース区切りで入力。スペースとカッコもすべて半角。
⑥OKを押すとシミュレーションされ、波形が変わる。
⑦解析→スペクトル表示で図9のスペクトル表示ができる。
⑧スペクトル表示窓の「書き出し」を押すと、図10のテキスト出力ができる。

注意点は、②のサンプリング周波数設定と④の波形全部選択を必ずやること。
テキスト出力は周波数が整数で出てくれないところがちょっと使いにくいが、それでも非常に便利だ。
各周波数ごとのゲインの理論値は

Riaa_formura_20201017230801・・・式9

なので、この式を使えば、Audacityの出力した周波数のゲインの理論値が計算できるので、EXCELを使えばエラー表が作れる。


「RIAAフォノイコライザをIIRデジタルフィルタで実装する」プロジェクトの理論はこれでおしまいです。
おつかれさまでした。

| | コメント (0)

2020年10月25日 (日)

RIAAフォノイコライザをIIRデジタルフィルタで実装する ②係数計算編

前回はRIAAフォノイコライザの概念と、アナログで実装する場合の復習をした。
今回はいよいよRIAAフォノイコライザをデジタルフィルタに実装するための計算に入る。

 

1.デジタルフィルタとはなにか

アナログ信号が時間的に連続な信号であるのに対して、デジタル信号は時間的に離散している信号だ。つまりアナログでサイン波は時間軸に対してなめらかな正弦波だが、これをデジタルで表現すると、サンプリング周期ごとに値が1つずつ出てくる。たとえばCDに1khzのサイン波が入っているとすれば、CDのサンプリング周波数は44.1kHz、分解能は16bitなので、1/44100秒ごとに-32768(1000000000000000)~32767(0111111111111111)の範囲の値がひとつ出てきて、これを並べてやると飛び飛びの点だけど、1kHzのサイン波が点描されるというわけだ。つまりデジタルで表現されるデータは、サンプリング周期ごとに出てくる数を並べた数列になっている。

毎朝ベランダの温度を記録しているとする。日によっては急に寒くなったり暑くなったりすることがあるので、たとえば半年間、毎朝の温度をプロットしてグラフを描くと、かなり細かくギザギザしてしまう。これを、全体のおおきな変化傾向だけ見たいのでギザギザを減らしたいとしたらどうしたらいいだろうか。たとえば当日を含む過去10日間を足して1/10すれば、常にその日を起点とする過去10日間の平均が得られて、一日の影響度は1/10に抑えられるので、グラフの細かいギザギザが減る。
これを移動平均フィルタといい、デジタルフィルタの考え方の基本だ。(細かなギザギザがなくなったということは、高い周波数成分がカットされたことになるので、これはローパスフィルタだと考えることができる。)
この例を上のサンプリング時間ごとの値という考え方に当てはめれば、一日に1個のデータが出るので、サンプリング周期は一日ということになる。気温のデータ分解能は、-50~50度の範囲を8ビット(0~255)で表わすとすれば、100/256=0.39つまり、0.39度の分解能で表現される。

つまり、CDから16ビットの音楽データが1/44100秒ごとに1個出てくるのも、8ビットのベランダの温度データが一日に1個出てくるのも、現象としては同じなのでとくにむずかしいことはない。

上の移動平均フィルタの例では、最新のデータを起点とする過去10個の入力データを10で割って平均したものを出力とした。言い換えると、過去10個のデータそれぞれを1/10倍して足し合わせているともいえる。過去のデータは10個に限らず何百個でも何千個でもいいし、それぞれにかける係数も1/10に限らず必要に応じて決めてやると、さまざまな特性のフィルタが構成できる。このような構成のフィルタをFIRフィルタという。FIRフィルタの特徴は直線位相特性を持ち、群遅延が全周波数で一定となること、つまりあらゆる信号に対して常にサンプリング時間の遅れでデータが出力されるということだ。

FIRフィルタでは常に過去の入力データのみに係数を掛けて足し合わせているが、そこに過去の出力データにも係数を掛けて足し合わせる、という処理を加えたらどうなるだろうか。これをIIRフィルタといい、FIRにくらべて少ないデータ数で構成でき、アナログで構成したフィルタ回路と等価的に置き換えることができる。もちろん位相特性も再現される。

以上がものすごく大ざっぱなデジタルフィルタの説明だ。くわしくは専門書を参照してほしい。

 

さて今回のミッションは、アナログレーコード再生に使うRIAAイコライザ回路のデジタル化だ。RIAAイコライザも一種のフィルタなので、デジタルフィルタで再現することができる。

前回の記事で書いたが、レコードは逆RIAA特性で録音され、再生時はその逆の特性で再生する。つまり、

Trec・・・式16

Tplay・・・式17

式16で示される逆RIAAの特性で録音されたレコードを式17で示されるRIAA特性で再生されることで、特性が1(フラット)になるということだ。特性というのは振幅特性と位相特性の両方が含まれているので、当然のことながら位相も逆特性になっている。

(注)録音時の式16は、おそらく実際には高域の制限がかかっているので正確ではないが、便宜上このように考える

位相特性も含めて式17と等価なデジタルフィルタを再現するには、IIRフィルタで構成する。

 

2.IIRフィルタの構造

IIRフィルタのブロック図を図8に示す。

Biquad_block

図8.IIR(BiQuad)フィルタブロック図
IIRフィルタの中でも2つ過去までのデータを使う2次IIRフィルタを特にBiQuad回路と呼び、よく使われる

 

図8に示すのは2次IIRフィルタで、現在の入力データをx(n)、現在の出力データをy(n)とすると、2つ過去のデータx(n-2)、y(n-2)まで使用されている。原理的には n-3,n-4…というさらに過去のデータを使用する高次のIIRフィルタも構成可能だが、現実的には図示の2次IIRを必要に応じて多段構成にすることが多い。

図中z-1はz変換の遅延演算子で、z-1を乗じるごとにひとつ過去のデータとなることを示している。x(n)はz-1を一回経るとx(n-1)(ひとつ過去のデータ)、もう一度z-1を経るとx(n-2)となっている。出力データy(n)も同様で、y(n-1)はひとつ過去の出力、y(n-2)はふたつ過去の出力だ。それぞれのデータにそれぞれの係数-a1,-a2,b0,b1,b2が掛けられ、加算されて最新の出力データとして出力される。すなわち出力データy(n)は、

Yn・・・式18

この式はb0~b2、a1,a2が決まればこのままマイコンのプログラムやFPGAに実装できる。その場合、ひとつ過去、ふたつ過去のデータはバッファに格納しておいて、常に最新の入力データx(n)とともに演算して出力データy(n)を演算で求める。この形式の数式を差分方程式という。

式18から伝達関数を求めるには、Z変換を使う。Z変換は次のようになっている。

X_ztransfer

X2_ztransfer_20201024182201

x(n)のz変換をX(z)としたとき、2つ過去のx(n-2)のz変換はX(z)・z-2となる。とりあえずここでは、Z変換はそういう規則の書き換えだと思っておいてほしい。詳しくは専門書を参照のこと。

それでは式18の伝達関数Y(z)/X(z)を求めよう。

Yzxz

上記のように式18の両辺をZ変換して整理し、Y(z)/X(z)を求める。

Yzxz_0・・・式19

これが式18の伝達関数だ。ただし、b0を1に正規化することが多いので、実用的には

Yzxz_1・・・式20

としておくほうが便利かもしれない。
この場合の差分方程式は、

Xysabun_1・・・式21

こうすることで、最新の入力データx(n)をそのまま使えるので、伝達関数やコードが見やすくなる。
この場合、式20右辺の先頭に掛かっているb0は定数なので、省いてしまっても特性に影響はない。

伝達関数は、具体的には

Riaa_iir_ex0_20201025134601 ・・・式22

のように表わされる。これを見れば係数がすべてわかるので、直ちにハードウェアに実装できる。
この例では分子のz-2の項の係数は0なので書いていない。
慣れてくると、「ああこれは96kHzサンプリングのRIAAですね。」と、一瞥しただけでわかるようになる。(嘘)

 

3.フィルタ係数の計算

以上に書いたように、デジタルフィルタの設計とは、各係数を計算して求めることに他ならない。インターネットで探せばRIAAの係数はいろいろなところで拾ってこられるので、計算ができなくても作ることはできる。ただせっかくなので、今回は係数を求める計算もやってみる。

いきなり計算に入る前に、式17のRIAA伝達関数を見てほしい。この式では分母がsの2次式、分子がsの1次式になっている。伝達関数の見方として、分母=0を満たすsを「極」、伝達関数=0を満たすsを「ゼロ点」という。この式を見ると分母が2次式なので極が2つ、分子を評価すると一次式なのでゼロ点が1つだということがわかる。この極とゼロ点の個数はデジタルフィルタに置き換えても継承されるので、これから設計しようとしているIIRによるRIAA回路も分母が2次式、分子が1次式になる。(zの場合はマイナスなので、2次ならz-2だ)
つまりこれから求めようとしているRIAA回路は式22のような形になるはずだ。これを頭に入れておいてほしい。

注)この記事を書いている2020/10/24時点で、理解できていないところがあって、それも含めて以下の文章を書きます。いずれ理解が深まって解決したら、その時に追記する予定です。

 

3-1.双一次S-Z変換による係数計算

 

何度も出てきているようにアナログRIAAイコライザ回路の伝達関数をラプラス演算子で表わすと式17になる。

Tplay・・・式17

これをZ変換のz演算子で表現することが、このミッションの目的だ。
つまりRIAAの伝達関数を、ラプラス変換のsドメインからZ変換のzドメインに置き換えることだ。

Z変換は両側ラプラス変換を離散化したもので、Tをサンプリング周期とすると、Z変換におけるzとラプラス変換sは次のように対応している。

Z_vs_e_1

そしてこの置き換えから、次の式をラプラス変換領域の伝達関数に代入すればZ変換領域に変換できるとされている。

S_z_henkankousiki・・・式23

これは双1次s-Z変換法という、一般的によく使われる方法だという。だがまてよ、

Z_vs_e_2・・・式24

であるならば、

Z_vs_e_3・・・式25

となるはずだ。どうも納得がいかない、とあちこち調べてみたらこれは、e^xのマクローリン展開による近似式だそうだ。つまり

Maclaurin・・・式26

e^xのマクローリン展開は式26だ。そしてこの最初の2項1+xを使うと

Maclaurin_z_s・・・式27

となり、これをsのついて解くと式23になる。
それにしてもe^xのマクローリン展開をたった2項の1+xで打ち切るって、乱暴すぎないだろうか。誤差とかだいじょうぶなのかな。
ちなみに式25に出てくるs=logzは複素数の対数であり、これは多価関数なのでそのまま扱うのが困難なのだそうだ。

それでは教科書どおり式23で話を進める。

式17のRIAA伝達関数に式23を代入して、Z領域の伝達関数に変換してみる。ここではサンプリング周期Tに対し、サンプリング周波数Fsを、Fs=1/Tとして扱う。サンプリング周波数Fsは具体的には44100、48000,96000などのなじみのある数値だ。

Z_fs_s

Tplays_z Riaa_s_z_20201025130501 ・・・式28

かなり恐ろしげな式になってしまったが、恐れることはない。Fs,T1,T2,T3はすべて定数なので、電卓かEXCELで計算できる。
ただここで注目してほしいのは、分子にz-2の項ができてしまっている点だ。この章の冒頭で書いたとおり、いま求めているRIAA特性は極が2つゼロ点が1つの伝達関数になるので、分母が2次式、分子が1次式になるはずだが、上の計算では分子が2次式になってしまっている。これを書いている2020/10/25時点でわからない点だ。
ともあれ、式28で数値計算するとどうなるのか見てみよう。

T1~T3はRIAAの規格、サンプリング周波数は96kHzにしてみる。

Riaa96000input

この定数でEXCELで計算すると、

Zenkeisan0 ・・・式29

理由はわからないが結論だけを示すと、

Z2sakujo

つまり、z-1の項をネグってz-2の項をz-1にシフトすると、正しい伝達関数になる。これはすでに式22として示したのと同じものだ。

確認のためEXCELでシミュレーションしたところ、次のようになった。

 

表3.伝達関数 式22のシミュレーション結果
Simulation0_20201025141901

 

理論値(dB)がRIAAの規格から求めた理論値で、1kHzを0に正規化したもの、正規化(dB)がシミュレーション結果、エラー(dB)が理論値との差分だ。20kHzが最大誤差で0.537dB となっているが、実用許容範囲だと思う。

 

3-2.インパルス不変変換法による係数計算

もう一つ、一般的な変換方法として、インパルス不変変換法がある。

次のような1次ローパスフィルタ(積分回路)があるとする。

Sekibun_dentatsu・・・式30

これをインパルス不変変換法によってS-Z変換するには

Impulse_fuhen_henkan・・・式31

という置き換えを行う。ただしゲイン項(定数項)は省略してある。

今回の課題であるRIAA回路は次のように分解できる。

Riaa_bunkai・・・式32

つまりこれは積分回路2つとその逆数のハイブースト回路の積算であると見れば、式31を使って

Impulse_fuhen_sekisan・・・式33

と表現できる。

サンプリング周波数Fs=96kHz、T1=3180us、T2=318us、T3=75usとして計算すると、

Impulsefuhen_keisuu・・・式34

となる。

EXCELによるシミュレーション結果を表4に示す。

表4.インパルス不変変換、96kHzサンプリング
Impulse_fuhen_error

計算方法はシンプルだが、先ほどの双一次変換法よりも若干誤差が小さくなった。

 

☆次回は計算した係数やネットで入手した係数のシミュレーションなどについて書く予定です。

 

【参考文献】

はじめて学ぶディジタル・フィルタと高速フーリエ変換」 三上直樹 著

実践ディジタル・フィルタ設計入門」 岩田利王 著

 

【参考サイト】

デジタルフィルタードットコム-DIGITALFILTER.COM
理論や実装方法の記事、それに便利なソフトを配布してくれているありがたいサイトです。

Wyne Stegall HomePage
オーディオのページに、インパルス不変変換法によるRIAAイコライザのC言語での実装や、そのほかにもオーディオ技術関係の記事が多数あり、勉強になります。

Familie Beis HomePage
デジタル信号処理の詳しい説明があり、とても勉強になります。無料配布しているデジタルフィルタの設計解析ソフトが便利です。


| | コメント (0)

2020年5月10日 (日)

無帰還A級25Wパワーアンプ(基板頒布あり)

Cimg5979

【20210929訂正情報】
  頒布基板において、Q1、Q4の2SK117BLのシルクの向きが逆になっています。
 正しくはそれぞれの印字面がシルクとは逆の向きとなります。おわびして訂正します。

  ただし、JFETはゲートを中心にソース、ドレインが対称構造となっており、ソース、ドレインは互換性があるため、
 シルク通りの実装でも問題はありません。すでに実装してしまった場合は修正する必要はありません。

以前、無帰還電圧アンプをこのブログで紹介したが、保護回路をどうするか保留にしたまま4年経ってしまった。
通常はスピーカー保護回路をつけて、リレーを使ってDC検出時にスピーカーを切り離すということをするが、リレー接点が入るのがいやなのでどうするか保留にしていたのだった。

この問題を解決するため、フォトボルでMOSFETを駆動してリレーの替わりにするという手段がある。これは一般的に知られたやり方なのでおそらく問題はないだろうと考えていたが、自分でやってみて特性に問題が出ないことを確かめたいと思っていた。今回コロナで自粛生活が続いており時間もあったので検証し、問題がなさそうだったので保護回路入りでアンプ基板を起こして作り直してみた。アンプ回路を図1に示す。

Schematic

図1.無帰還A級25W電圧アンプ
保護回路はベースとエミッタから入力する古いタイプのシンプルなものにした

 

回路は初段ダイヤモンドバッファで受けた後カレントミラーで電流を約2.2倍増幅し、RV2でI/V変換するとともにここでオフセット調整し、この段でバイアス電圧を発生してQ14、Q15以降の終段をドライブする。

全高調波歪+ノイズ(THD+N)の測定結果を図2、図3に示す。

Thd_l

図2.THD+N(Left)

 

Thd_r

図3.THD+N(Right)

 

今回は半導体のペア取りをまじめに行ったためか、あるいはひずみ率測定にwavegeneの「FFTに最適化」を試したためか、
前回の測定よりも若干よい特性になり、図3では一部0.01%を割り込む結果となった。

周波数特性は図4に代表して右チャンネルを示す。
また図5には10kHz矩形波の出力を示す。

Freq_res

図4.周波数特性
-3dB ポイントはおよそ300kHzあたり

 

10krect

図5.10kHz矩形波出力
群遅延によるひずみもないので位相補償なし

 

周波数特性と矩形波も問題なし。

出力インピーダンスと、スピーカープロテクト電圧の実測値を表1,表2に示す。

 

表1.出力インピーダンス
Impedance

 

表2.スピーカープロテクト電圧
Protect

 

出力インピーダンスは前回の測定とほぼ同じだ。むやみに低いよりも若干電流駆動気味になるため、スピーカーの低域と高域の特性がほんの少しだが持ち上がる。

スピーカープロテクトは±で若干非対称だが、問題のないレベルだと思う。

 

今回の実装基板を写真1に、アンプ組み込みの様子を写真2に示す。

Imgp3495

写真1.今回製作した基板

 

Imgp3512

写真2.組み込んだ様子

 

前回に引き続き今回も使用したCincon社のスイッチング電源CFM60S240は小さく安価だが、50Hz系のリップルやノイズが非常に小さく、フェライトコアのみの対策で十分な特性が得られた。

 

部屋では相変わらずauratone 5cをメインのスピーカーとして使っており、以前発表した無帰還電流駆動アンプを普段使いにしていたが、1年ほど前に知人が遊びに来た際に聴き比べをして、それ以来この電圧アンプを(保護回路がない状態で)つないだままになっていた。
通常、音に何か問題があると1~2ヶ月で機材を替えることになる(なぜか替えた瞬間は判断できない)が、この電圧アンプは1年ほど問題なく聴いていたのでスジは良いのだろうと思う。

今回はすんなりうまくいって残りの基板があるので、ご希望の方に頒布します。
生基板2枚ひと組(ステレオ分)と、製作説明書と回路図、部品表等の資料、製作例、LTSPICEのシミュレーションファイルをセットで2000円+レターパック代520円の合計2520円で頒布します。(自力で部品収集、部品選別、調整できる方が対象です。)

ご希望の方は表題に「無帰還電圧アンプ基板頒布」、本文にお名前、送付先郵便番号、ご住所、電話番号をお書きのうえ、

dj_higo_officialアットhigon.sakura.ne.jp
(アットを@に替えてお送りください)

までメールをお送りください。

代金の振込先のご案内メールをお送りします。入金が確認でき次第発送します。


回路図、部品表、製作マニュアル等

| | コメント (0)

2020年3月21日 (土)

危機に備えること

2020年3月21日現在、世界は新型コロナウィルスの脅威にさらされ、未曾有のパニック状態になっている。

新型コロナが発生する以前も、ここ3年ほどは竹島や尖閣諸島の問題があり、北朝鮮もいよいよ追い詰められてきた感があるため、有事を想定して備えておく必要を感じていた。食料は一か月ほどはなんとかしのげる程度の備蓄をしている。

備えとして何を用意しておくかを決めるために、非常事態にはなにが起きてなにが問題になるのか想定してみよう。食料や飲料は当然のこととして、ほかに何が必要だろうか。
まずいちばん問題になるのが、情報網ではないか。ケータイとネットが落ちてしまったらもうほとんどどうしようもない。さらに停電になった場合もかなり致命的な状況となる。電池式のラジオでもあればラジオ放送は聴けるが、そもそも放送局が無事である保証はない。電気と通信インフラがダメになったら手も足も出ない。

そういうわけで、最低限、電源を確保するために、エンジン式の発電機か充電池式の非常用電源を買っておくべきかどうか考えていたが、それを使うべき時が10日後なのか5年後なのかわからない状態では、いざその時に使えるかどうかという問題がある。エンジン式の発電機はガソリンが酸化するとエンジンがかからなくなるので、ガソリンを入れたまま放置しておけば一年後に機能するかどうかは怪しい。充電池式(リチウムイオン電池)の非常用電源は、使わなければ電池劣化の可能性があるため、やはり年単位の備えとしては不安が大きい。

通信網が遮断された場合に威力を発揮しそうなのは無線機だ。前にも書いたがアマチュア無線のトランシーバーを持っているので、いざというときに情報の収集ができそうだ。これなら電話やネットなどの通信インフラとは関係なく運用できるし、電池さえあればいつでも使える。

そういうわけで、きょうは近所のダイソーに予備の電池を買いにいった。6本110円のアルカリ単3電池を5組30本。在庫のエネループも10本ほどあるので、これだけあれば急場はしのげるだろう。ケータイの充電アダプタも単3電池でOKだ。

買い物ついでに撮ってきた写真を何枚か貼っておく。EOSM+EF-M22mm。

6 5 4 9 12

 

| | コメント (2)

より以前の記事一覧