2016-10-01から1ヶ月間の記事一覧

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

ほぼ 1 年前 (→2015 年 9 月 20 日の記事) に OPL3 モードに設定した YMF297 で、セルフ・フィードバックの経路に FIR LPF が存在することを確認しました。 そのときから気になっていたのですが、「普通」のモジュレーション入力のパスには LPF がなく、入力…

PSoC UDB 内 PLD/マクロセル キャリー・チェイン・コンポーネント

今回の小ネタは「cy_psoc3_carry()」モジュールの「ラッパー」となる「cy_p3_carry」コンポーネントです。 cy_psoc3_carry() モジュールは、arithmetic / carry-chain モードのマクロセル 1 個分なので、実際の複数ビットの加減算回路を構成するには複数個並…

PSoC UDB 内 PLD/マクロセルによる乗算器

今回も PSoC3/4/5LP の UDB (Universal Digtal Block) 内の PLD/マクロセルによる回路の小ネタです。 LPM (Library of Parameterized Modules) ライブラリの「mmult()」コンポーネントによる乗算回路です。 mmult() は result = (dataa * datab) + sum の「…

PSoC UDB 内 PLD/マクロセルによるアップダウン・カウンタ (6)

OPL3 の AM LFO を構成する要素のうち、周期 210 のアップダウン・カウンタ部を PSoC の UDB (Universal Digital Block) の PLD/マクロセル部で実現してみた回路を下に示します。 この回路全体で、UDB ひとつ (PLD 2 組、マクロセル 8 個) におさまっていま…

PSoC UDB 内 PLD/マクロセルによるアップダウン・カウンタ (5)

実際に 32 ビット・アダーのコンポーネントを作って、キャリー・チェインの中を下から上まで 32 段分キャリーが抜ける時間を測定してみました。 全体の回路図を下に示します。

PSoC UDB 内 PLD/マクロセルによるアップダウン・カウンタ (4)

PSoC Creator がインストールされているフォルダの . . .\PSoC Creator\. . .\warp\lib\lcpsoc3\cpsoc3.vhdの中に arithmetuc / carry-chain モードのマクロセルひとつに「ほぼ」1 対 1 に対応する VHDL コンポーネントが以下のように宣言されています。 com…

PSoC UDB 内 PLD/マクロセルによるアップダウン・カウンタ (3)

PSoC Creator に組み込みの論理合成ソフトウェア「Warp」に関しては、PSoC Creator 付属のドキュメントとしては「小冊子」レベルの "warp_verilog_reference.pdf" しかありませんが、ググっていて Warp のユーザーガイドを見つけました。 Windows 95 や Wind…

PSoC UDB 内 PLD/マクロセルによるアップダウン・カウンタ (2)

論理合成ソフトウェアでは、ゲート・レベルのランダム・ロジックで描いた加算/減算器回路からマクロセルの arithmetic / carry-chain モードを利用する回路に自動的に変換されるようにはなっていないので、ユーザが verilog コードで明示的に示してやる必要…

PSoC UDB 内 PLD/マクロセルによるアップダウン・カウンタ (1)

OPL3 の AM LFO を構成する 7 ビット・アップダウン・カウンタ部分を、 PSoC 5LP の UDB (Universal Digital Block) 内の PLD/マクロセルのみを使う方法で実装したところ 1 UDB 内のリソースで実現することができました。 7 ビット・カウンタなので、本来 UD…

FPGA 版 FM 音源 (44) -- YMF297 (OPN3/OPL3) 測定 (9) -- トレモロ

今回は OPL3 のオペレータ出力レベルを LFO で振幅変調する機能の話です。 シンセ的には LFO による「音量変化」は「トレモロ」(tremolo)と呼ばれていますが、OPL3 関係のドキュメントでは一貫して技術寄りの用語として AM (amplitude modulation) を使って…