2019年05月31日

DACへのデータ転送ルーチンをリファインする

今日はDACの転送スピードの限界を試す実験を行っている。

まず、データ送信ルーティン内でNOPを使ってクロックの幅を調整していた部分を全て撤廃した場合には、データが全く受け付けられないことが判明した。

次の実験では、NOP処理のうちクロックの幅を設定している部分だけを復活させてみたが(ビット・データ送信終了後にワンセンテンスの暇を稼いでいたNOPの方を取除いた)こちらはDACの稼動を確認できた。

WS001842.JPG

MCUのNOP1発が消費する時間は大凡で30から40ns程度と言われているが、概算で30ns×16step=480ns ×3(DAC)=1.5us以上の時間を稼げるわけで、これはそのまま処理時間のマージンに加算される。

処理に時間を割かれるプロセスで一番明瞭なのがDACにデータを転送するルーティンで、DMAを使ってバックグラウンドで送信するのが最もスマートな方法だろう。 

ただし、この手法には問題があって、バックグラウンドで信号を出力できる端子が限られてしまうのと、そもそもメモリーから直接転送を行うためのノウハウが欠けているために、現在は採用を見合わせている状態だ。
posted by Yasuski at 12:59| LaVoixski

2019年05月29日

OLEDオシロスコープの製作



The code is here.

posted by Yasuski at 21:21| AudioElectronics

2019年05月28日

FPUのアクティベーション

SDRの記事を読んでいる過程で、以前行ったはずのFPUのアクティベーションを失敗している可能性に気付き、今一度確認を行ったところ、arm_math.h file の該当する箇所に、#define __FPU_USED 0 と記述されていて、これはFPUのアクティベーションが行われていないことを示しているようだ。 つまり、期待していた浮動小数点演算が効率的に行われていなかったということになる。

作業の内容は、CMSIS v4.5.0 library のなかから該当するファイルをArduinoIDEに導入しつつ、arm_math.h file の記述を一部改変するだけなので、それほど手間は掛からない。

ファイルの導入後、スケッチに #include  を書き加えて実機で試験を行ったところ、96kHzのオーディオクロックでは動作不能だった項目を熟せたことから、処理が確実に行われていることを確認できた。

残念ながら、一番重い処理を完全に熟すことは出来なかったが、それでもモードを選択した瞬間に動作がフリーズしてしまう現象が全てのモード下で回避されるようになった。

導入以前は、低いサンプリングレートで運用している場合であっても「処理時間が足りない」状況が散見されていたが、強制的にインターラプトが掛かって処理が中断されていたところに余裕ができて「辻褄が合うようになった」結果、音質を向上させることが出来た。 この成果は非常に大きなものだ。

FPUによる処理が行われるようになって音質が安定したので、ベーシックな使い方(起動後にアクセスしやすいポイントという意味合いも兼ねて)を例示する動画を作成した。



パラメーターの操作は最小限に、左手の動きで出来る表現をクローズアップした画像で解説したつもり。

ディストーション(非線形処理)の過渡特性はアナログ回路であっても調整が難しいが、これをデジタルで再現するのはそこそこハードルが高い作業で、この動画ではその閾値辺りの運用例を示している。

弱音からの立ち上がりには、非線形処理のアルゴリズムを組む以前に、オシレーターの安定度や周波数検知回路のチューニングが絡んでくる。

難易度が高いオシレーターのチューニング・メソッドをなんとかまとめてみたが、ニュアンスが伝わっているだろうか。



デモジュレートされたPWM波形の周波数と出音の関係がイコールではないことに注意して欲しい。 オシレーターの差分から発生したビートの周波数の幅は、音階にして1オクターヴ程度しかない。 オシレーターの周波数の差分から生成されたビートを、あくまでも制御信号として使用している情況がよく解ると思う。

Transitionは実際に操作を行うと直感的にその効果を体験できる機能だが、殆ど世間では共有されていない概念なので、映像資料からはその動作原理を想像することが難しい。 これは特に波形を視認しないとその効果を理解できない要素かもしれない。



抽象的な動作原理をすこしでも理解できるように、一連の操作を行った時の出力波形の変化を記録した。
posted by Yasuski at 00:06| LaVoixski

2019年05月21日

ID-292の試作機2機を破壊してしまう

在りし日の映像記録。



ID-292の試作機2機をぶっ壊した挙句、MCUを一個昇天させてしまった、、、。

ID-292系の弱点は電源で、何かのキッカケで電源が昇天し、入力と出力が直結した結果、周りのチップに抱きつき心中するという最悪な状況が発生する。 今日はこれを2回もなぞることになった。

原因はアンプから印加される15Vがアウトっぽいのだが、シングル・ボードの場合消費電力に見合った放熱が難しいのかもしれない。

1機は完全にスクラップ、FPGAを引剥して交換した残る1機も何故かアルペジエーターと連携してピッチが揺らぐ案件が再発している。 最初の試作機では全てが上手くコントロールできていたのだが、何故このような症状が発生したのか?原因は謎だが、LEDの消費電流が絡んでいる可能性がある。

例の如く、ジャンクパーツをサルベージして次の試作に備えたいところだが、MCUがぶっ飛んだ場合はリカヴァーのしようがない。 

電圧降下の問題に対処するため、次回製作する基板ではオシレーターとロジック系の電源ラインをレギュレーターICを含めて完全に独立させるべきか。

前述したように、電源が故障する原因は電源投入時に発生するサージ電流と過電圧が原因っぽい。

WS001827.JPG

通算5回以上もMCUを道連れにシステムを破壊していて、その都度対策を講じていたのだが、どれもが微妙にピントを外していたということになる。

ドロップ電圧の問題は認識していたが、15Vが絶対最大定格なので、コラ用に制作された4chアンプへの直結には少々無理があるのは承知していた。 特に放熱が辛いシングルボードには前段に電圧をステップダウンする機能を追加する必要があった。

マニュアルによると、出力に大きなCを配置した状態のレギュレーター回路には保護ダイオードを挿入したほうが良いとのことだが、これはジャンパー配線ですぐに実践できる。

WS001828.JPG

実のところ、製品版で回路を別基盤に分けた理由は、シングルボードで集中していた電源のレギュレーションを分散したいという思惑があった。

IMG_8954.JPG

華奢なシングルボード系はやはり限定生産になるが、ペアで販売する電源に工夫をすれば無用な過電圧を印加する危険性はなくなり、問題は押さえ込めるだろう。

IMG_9030.JPG

ちなみに、TNCコネクターの導入は失敗。 どうやってもクリアランスが取れない。 コネクタに加工を施しつつ、多少でも余裕の取れそうな筐体を選び直してトップパネルをフローティングしてやり過ごしているが、これは放熱が楽になるという利点もあるので、今件に関してはなんとも評価が難しい。 VRTのタッパを抑えるとある程度はクリアランスに貢献できることは判った。

ピッチ側には問題が生じていないので、こちらの採用はアリ。問題はVolume側なのだが、MCUに下駄を履かせてオフセットを取る方法は可能。この場合、端子にはラッピングポストを使用することになる。

ADATチップを使用しない場合、レベル変換ICが不要なことに今更ながら気づいた。 導入した元々の理由は、5V仕様のシールドとTeensyの通信が目的だった。 このチップは結構怖い潰れ方をするので、出来れば導入しないのが吉。

WS001838.JPG

別の失敗基板からサルベージしたFPGAの健在を確認した。

WS001822.JPG

これから、オーディオクロックユニットの健全性を確認する。

いまのところ、アプリやツールをバラバラに使って動作確認を行っている状態だが、そろそろオシレーター/オーディオ/デジタル信号の測定を統合したプラットフォームを製作すべきだろう。

例えば、オシレーターの調整に必要なツールとして、オシレーター間の差分信号を測定する専用のアンテナクリップを準備する一方で、別端子にはD-FFから生成される差分信号のデューティーサイクルを計測できるように専用の端子を製作する。

現状では測定器として使用しているAnalogDiscovery2は剥き身の状態なので、これを使い易いケースに収納した方が作業効率が上がる筈だ。

オーディオボードの試験には、専用のプログラムを書き込んだTeensy装着のボードを準備する。 これにには単純に基準信号をアウトプットするソフトウエアを4ch用意すれば良い。

あとは、LEDの輝度テストを行う装置が欲しい。LEDは個体差が凄まじく、抵抗値の調整が必要になる。

消費電力を抑えるために、LEDの電流制限抵抗の値を精査すべきだが、これは視認性の問題でもあるので、一度細かな検証を行いたい。

基板を再設計する過程で、放熱の問題に気付いた。 表面実装型レギュレーターの放熱は、部品の実装が過密状態でベタな放熱面を展開しにくい2層基板ではどうしても限界が発生してしまう。 ただし、4層化にはそれなりのコストアップが伴うので、これは微妙なところ。 現実的には電源電圧の設定でなんとか対応するのが筋だろう。

安全対策として、アンプと併用するタイプの試作機には9V程度まで電圧を下げるシリーズレギュレーターを外部に設置することにした。 シングルボードの意味合いが薄れてしまうが、スペース的には可能なので、これが即実行が可能な対策としては正解だろうか。

製品版の場合は専用電源の使用で電圧が管理できるために、過度な保護回路を設置する必要はなくなる。 アンプの電源電圧を統一していない現在の開発環境では、よりトラブルが発生しやすくなる。

ジャンク化したボードから取り外したRGBロータリーエンコーダーのウチ、幾つか赤色LEDが焼損寸前になったケースを確認した。 赤色に390Ωは3.3V環境であっても電流値が過剰なので、電源が破壊された時に印加された7V弱の電圧により引導を渡されたものと推測する。 1k程度の抵抗値を設定すべきところを3倍電流を流しているのだから、赤味が勝つのは当たり前だった。

電源回路の再設計を行う過程で、放熱を強化するために大口径のスルーホールを放熱端子裏に追加した。 

WS001829.JPG

WS001830.JPG

WS001831.JPG

WS001832.JPG

WS001833.JPG

WS001834.JPG

WS001835.JPG

WS001836.JPG

WS001837.JPG

制約のある環境で、ひたすらに表面積を上げる事に腐心しているが、多少の効果はあるものと思いたい。
posted by Yasuski at 12:54| LaVoixski

2019年05月14日

ID-292にLaVoixskiを内装する

動かなかった小型筐体用基板のパーツを差し替えて試験を行うことにした。

IMG_9020.JPG

まずは、1ch分のパーツを交換して様子を見る。 怪しいのはオシレーターの回路上でカップリングを行っていたコンデンサーで、これの値を間違えていた可能性がある。

WS001695.JPG

実際、不調の原因はコンデンサーの実装ミスで、470pFのところに間違えて47pFの部品を取り付けていた。
部品を交換した後、小型筐体用シングルボード仕様の4オシレーター分の発振と

Screen Shot 2019-04-20 at 4.42.27.png

D-FFによる復調を確認できた。

Screen Shot 2019-04-20 at 23.53.44.png

次に、ケースにボードを実装してチューニングを行う。 今回は、ID-292に基板を取り付けて周波数を測定した。

IMG_9025.JPG

Pitch側とVolume側でズレの大きさが異なるが、取り敢えずドリフトの大きなVolume側のリファレンス・オシレーターに220pF、ドリフトの小さなPitch側に30pFを追加して様子を見る。 

WS001815.JPG

最終的にリファレンスオシレーターの修正に追加したCの最適値はPitch側が100pF、Volume側が180pFだった。

Screen Shot 2019-05-10 at 12.30.21.png

接点の劣化したVolume側のコネクターの調子が悪く、これは交換する必要がある。

ロジック回路は何故か調整できないVolume表示LEDの挙動を除いて概ね良好だったが、特定色の発色がおかしい。 原因は追加したRの実装場所の間違いで、「赤」に電流を流す電流を調整するRを適正な値に差し替えなければならない。 音声のチェックは、6pコネクタへの配線が外れた為に、この時点ではお預けとなった。 

新しいヴァージョンの基板に対応するようにファームを書換えたが、何処かにバグが潜んでいるかもしれない。

LowerLEDの発色問題に関しては、OrangeとLavenderのポートアサイン(物理)の間違いと判明した。 UpperLEDは赤が強すぎるので、抵抗値を多少大きめな値に変更すべきか。 

Volume側の設定がどうやっても上手く行かない問題は、MCUを交換した後も解決せず。 トップのActivationSWのLEDが点灯しないのは、部品側に問題がありそうだ。

その後に行った作業の過程で、2年以上前に組み上げたID-292のガワは度重なる試作の失敗の過程で配線の疲労が酷く、断線が頻発しだした。 

IMG_6890.JPG

アンテナの結線が怪しく、部品を交換するかコネクタの接続方法を変更してやり直すことを考える。 コネクターのヤレが酷く試運転どころの話ではなくなってきたので、これを機に補器周りの配線を一新することにした。

LEDの発色問題は完全には解決しておらず、抵抗値の検討という現物合わせをしているが、同様の問題が他の基板でも生じていることから、回路設計に根本的な瑕疵が存在する可能性が高くなってきた。 ケースへの実装例が増えて、合理的に配線を取り回す方法がわかってきたが、それにしてもかなりの高集積が要求されるために実装が難しい。

WS001817.JPG

WS001818.JPG

LEDの色味は個体差が大きいので、事前に発色をチェックすべきかもしれない。 色味の問題(緑が異様に強い)は、ダイオードの実装ミスが原因と思われる。 ダイオードの順方向電圧を抵抗の代りに使用しているために、選択をミスると輝度が大きく変わってしまう。 基本、値の低いダイオードは青LEDの専用としている。

IMG_9043.JPG

hfeのバラ付きが懸念されたチップを新しく購入したものと交換した後に周波数を確認したが、Pitch側のリファレンスの周波数が高いほうにドリフトして調整不能になった。 修正には22pFを追加しなければならなかった。 が、実際はこれでもギリギリで、ベスト値は33pF辺り。

発振器の調整後にとりあえず片チャンネルから音を出せたが、左右ともにセンシングがメタメタなのが謎で、やたらとポルタメントが掛かる調整不能な状態に陥った。

そういえば、新型機の開発当初は同じような状況にハマった覚えがあるが、取り敢えずは最新のファームからFTM関連とEMAの設定値を移植するのが手っ取り早い対策だろう。

残り2つのDACはデータラインのアサインをミスってる公算が高いので、ロジアナで信号を確認する。 

WS001813.JPG

アナログ・スイッチ/ディストーション系は問題なく動作していた模様。 これが動けば相当インパクトがあるので、なんとかモノにしたい。

出力波形を確認したところ、MAX5717の片方からの信号が途中で消えていることが判明。天麩羅ハンダの可能性を考えて、怪し気な箇所にハンダを盛り直した結果、全チャンネルからの出力波形を視認できた。

が、ディテクターの動作がおかしい。 稼動状態にあったスケッチからの移植もアウトだった。 なにか根本的な原因があるのかもしれないが、とりあえずセンシングの周波数を落とす方向で対応をすすめる。

音源関連のソフトウエアは問題なく動いているので、ディテクターさえちゃんと動けば超小型テルミンが完成する。 実験に使っている電源ユニット(LiFe)からのノイズが問題を起こしている可能性があるので、電源をAC駆動の安定したものに変えて実験を行うべきか。 製作時のハードルはDACからアナログ系にあると思っていたのだが、予想外のポイントでトラブルが現出している。

IMG_9030.JPG

なにかポカをやっている可能性があるので、怪しいオーディオクロックを調べたところ、10kHz以下と論外に低い周波数が出力されている。 まずは使い回した部品が怪しいということで、FPGAの焼き直しを行ったが、結果は変わらず。

消去法で可能性を潰した結果、水晶発振子とPLLの辺りが非常に怪しい。 PLL601はよく使い回している石だが、それほどヤワではない。 怪しいのは水晶で、原発信は確認できたものの、PLLの入力レベルが異様に低い。 

IMG_8834.JPG

水晶発振子をアクティヴェートするには1番pinに10kを介して電圧を印加しなければならないのだが、どうもこの部分の配線がおかしくなってしまっていたようだ。 SMDの水晶発振子は取り付けが難しいパーツだが、実装時に失敗をやらかしていたということになる。

今更水晶を引っぺがすのも辛いので、ジャンクと化したSMD水晶の上に耐熱両面テープを使って新しい水晶発振子を追加することにした。

マトモなオーディオクロックを供給したところ、今までの苦労がウソのようにディテクターが稼働した。

ということで、最小サイズのテルミンが誕生したが、これは足掛け2年の成果でもある。

IMG_9032.JPG

限定10台位の規模で量産してもよいが、ケースとVRの手配で総数が決まる。

IMG_9039.JPG

IMG_9045.JPG

IMG_9043.JPG

IMG_9052.JPG

運用上の経験から、VRは右側上下に配置するのが正解。 あと、シャフトには「ノブ」を付けない方が扱い易い。 これは不用意な扱いをした場合に設定が狂い難いのと、制御が楽という二重の体験から得た回答だ。  ただし、Copal系のVRはシャフトが金属なので接触時に受ける影響が問題になってくる。

断線が怖いので、内部のアンテナ線は直付が推奨となるだろう。
posted by Yasuski at 04:25| LaVoixski