TK80/BSの

シンセシステムを復活/拡張したい〜

その30

IPの再構成とディレイドLFOの実験
パラメータ入力用MSP430
デジタルシンセの2ch化
2018年
10月13日
ガレージとアパートの双方でFPGAを作成していると、どちらのPCで作成したのが最新のIPか、本体なのか、分からなくなってきます。以下はIPががロックされているという表示です。この状態でもIPの変更はできませんが、合成してビットファイルを生成することはできます。


詳しくみると、IPカタログに所定のIP無いということのようです。左はラダーフィルタで右がエンベロープジェレータです。


IPのロケーションを確認します。


実際にディレクトリを確認するとIPが入っているはずのディレクトリが無いです。本来はIPディレクトリの下にIPのファイルが必要です。原因はVivadoの本体プロジェクトファイルのみをコピーして、HLSで作成したIPのRTLエクスポートファイルが無いためです。


HLSのプロジェクトはUSBメモリにバックアップがあるので、再度HLSで合成して、RTLエクスポートをします。


再度、Vivodoで確認すると、今度はメッセージが変わって、レビジョンが違っているというメッセージになりました。


IPソースのウインドで、右クリックでメニュー表示して、IPをアップグレードを選びます。上の変換の方を選びます。


ロックの表示が消えました。


パラメータ設定用のMSP430ローンチパッドユニバーサル基板ICソケット秋月で購入しました。


こちらはAitendoLCDフレキ変換基板、SPI−ADC用のQFNピッチ変換ボードです。ADCはAD7699を使用する予定です。


10月14日
LFOをディレイド・モジュレーションに修正します。簡単のため、コンデンサの充放電波形ではなく、直線でARを作ります。下はテストベンチの擬似ゲートで確認したシミュレーション波形です。ゲートの立ち上がりで三角波のレベルを0にクリアしてシンクロさせ、アタックに続き、ゲートONの定常、ゲートOFFのリリースです。


波形を矩形波に変更したシミュレーション、右はPWMでパルス幅を短くした状態です。


リソースを圧縮するために、ディレイド・モジュレーションLFOの内部処理はfix12_12にします。


DSP48は1個ですが、LUTの使用数が多いです。右は単純な三角波のLFOのリソースです。ちなみに、内部処理をfix20_12で行うとDSP48の使用量は3個になります。


10月14日
Vivadoで合成後にディレイド・モジュレーションLFOのリソースを確認します。LUTは上に比べて3分の1以下になって772に、DSP48は1つ増えて2個になりました。HLSの使用量はあくまでも見積もりのようです。


LFOデバッグ用にSPI−DACへ出力して確認します。タイミング確認のためにエンベロープジェネレータと合わせてアナログディスカバリに取り込みました。正常動作しています。



10月18日
エンベロープジェネレータのコードを修正しました。リリースの終了値が少し大きくて段が目立つので0.02を0.005に変更しました。


続いて、アタック中ゲートOFFになったときにリリースに移行するように修正します。


同じく、ディケイ中ゲートOFFになったときもリリースに移行します。


続いて、リリース中
ゲートONになったときはアタックに移行します。いずれも、HLSのCシミュレーション結果から波形を作成しました。


リソース圧縮のため、引数と内部処理をfix12_12に変更しました。DSP481個になりました。見積もり上はLUTの使用量が多いです。今週末に合成/インプリして再確認します。



10月21日
合成後のリソースを確認します。LUTは256個に減って、DSP48は2個に増えています。


DDSとデータ入力のラッチは8ch分、その他シンセ部が1chの現状のリソースです。


モノタロウで購入のタカチのCFシリーズ傾斜アルミケースとアマゾンのツマミです。FPGAデジタルシンセのパラメータ設定用です。ケースは正面パネルは単体になるので加工しやすいです。側面はプラスチックです。


ケースのサイズは約A5サイズのユニバーサル基板に合わせました。


ケースの正面パネルは片側だけ黒に塗装されています。パネルに部品を配置してみました。6個のロータリエンコーダのパラメータ表示の7セグLEDは手持ちの部品が数種類あり、全体の配置から部品を決定します。肝心のロータリエンコーダがまだ来ていません。


LFOのゲートシンク機能の不具合です。プラス側から始まる時とマイナス側から始まる時がありました。コードを修正して、必ずプラス側から始まるようにしました。


10月21日
LFOの続きです。ディレイ機能のパラメータをボード上のXADCに接続されているボリュームから調整できるようにしました。下はアタックリリースとも最短の時です。



それぞれ、アタックリリースの時間を延ばした時です。



だいぶ前にるDDSトーンジェネレータに追加した512倍クロックと同じロジックを使ってノコギリ波を生成させます。DDSから512倍のロックを出力させ、新規に波形変換ロジックを追加します。512倍クロックでバイナリカウンタを動作させると、出力はレベルが10ビット、周波数が1倍ノコギリ波になります。下はラダーフィルタDCAから出力です。また、波形変換ロジックからは1倍の方形波を出力します。切り替えはボード上のスライドスイッチで行います。


ラダーフィルタはスルーして、エンベロープジェネレータで変調したDCAの出力です。現状はボード上のスライドスイッチで方形波、ノコギリ波を選択します。次回、ミキシングできるように修正します。



10月29日
この週末は日曜のみの作業です。マルツ経由のDIGIKEYからのArtix−7の100Tの載ったARTYボードが来ました。A7バージョンになって電源周りが変更になっています。USBのVBUSと外部のDCジャックの電源の切り替えショートピンが無くなり、自動になりました。
価格は3万円弱ですが、35Tボードに付属していたVivadoのライセンスは付いてません。WEB版で足りているのでライセンスの有無はあまり関係ありません。


同じく、外部から波形をアナログ入力するSPI−ADCAD7699です。16ビットの8ch入りです。残念ながら、安い評価ボードが無く、AitendoのQFN変換基板に実装して使用します。サイズが4x4mmと小さいので、失くさないようにテープで変換基板に固定しておきます。後でハンダ付けしますが、実体顕微鏡下で行う必要があります。


こちらはマルツ在庫のコパルの非接触ロータリエンコーダです。50パルス/回転、スイッチ付きです。6個の内5個が固定金具付きですが、在庫が無かったため1個だけ金具無しです。出力のピンヘッダは2.54ピッチではないため、金具が無いと基板を固定できません。少し工夫が必要です。


同じく、ロータリエンコーダのA/B相をクロックとディレクション信号に変換する74HC747セグLED点灯用のシリアルパラレル変換の74HC595です。


パネル載せる7セグLEDを決定しました。先週の小さいものは2.54ピッチでないため却下、中くらいの緑色のものはDPセグがないので、これも却下です。大きめの2連の赤に決定しました。また、6個のパラーメータ設定用のツマミは仮に置いてあります。一回り大きいものをアマゾンに発注済みです。


先週の予定では方形波とノコギリ波のミキサーを作るはずでしたが、2ch対応を先に行いました。ラダーフィルタEGLFODCAを1づつ増やして2chに対応させました。


2ch組み込み後のリソースを確認しておきます。DSP48は56個使っています。DDS用に2個使用して、8ch実装済みです。現状のロジックでは1chあたりDSP48を22個使っている計算です。現状のままなら、ぎりぎり4ch分が入ります。新しく購入した100TボードはDSP48が240個入っているので、もう少し機能を追加しても8ch分入ると思われます。


2chに対応させるため、DCOのチューニング用に2つボリュームを追加しました。PCからMSP430のUSB−MIDIパラレル変換を介してテスト録音しました。2chともノコギリ波で少しレゾナンスを掛けています。MP3はこれです。






back