UDB

PSoC Creator の Verilog-HDL のリダクション演算の不具合 (2)

PSoC Creator のリダクション演算の問題で、回路自体は変更せずに、ゲートを負論理で表現して OR の部分を単項リダクション演算で記述してみたところ、ひとつの式の中に複数のリダクション演算があっても問題なく変換されることが分かりました。 CLA 回路部…

PSoC Creator の Verilog-HDL のリダクション演算の不具合 (1)

PSoC Creator のユーザ・コンポーネントとして、(LS)TTL / HCMOS の 4 ビット ALU である 74181 の内部回路を Verilog-HDL で書いていて、「リダクション演算」に関する不具合があることに気が付きました。 回避する方法も判明しているので、実用上は問題あ…

FPGA 版 FM 音源 (54) -- YMF297 (OPN3/OPL3) 測定 (20) -- EG クロック・プリスケーラ (7)

EG プリスケーラ部の CLK_EN 信号と SFT_SEL 信号の波形写真を示します。 まず、CLK_EN の波形です。

FPGA 版 FM 音源 (54) -- YMF297 (OPN3/OPL3) 測定 (19) -- EG クロック・プリスケーラ (6)

EG をディケイの DR = 13、Rof = 0〜3 の範囲に限りハイレートに対応させました。 アタックに関してはハイレートでは EG アキュムレータ部に (パラレルな実現では) バレルシフタが必要になりますが、ディケイについては EG アキュムレータの増分の定数が「1…

FPGA 版 FM 音源 (53) -- YMF297 (OPN3/OPL3) 測定 (18) -- EG クロック・プリスケーラ (5)

PSoC5LP UDB 上にローレート専用の EG アキュムレータ部分も実装して、連続してアタックとディケイを交互に繰り返す回路を作りました。 回路図を下に示します。 (図をクリックすると拡大します)

FPGA 版 FM 音源 (52) -- YMF297 (OPN3/OPL3) 測定 (17) -- EG クロック・プリスケーラ (4)

前回の psc4 コンポーネントによるプリスケーラ部に加え、バレルシフタ部も実装して EG クロック・イネーブル出力を得る回路全体を PSoC5LP の UDB 上に作成しました。 オシロで出力波形の確認および周波数カウンタでの出力周波数の確認をしてあります。 回…

FPGA 版 FM 音源 (51) -- YMF297 (OPN3/OPL3) 測定 (16) -- EG クロック・プリスケーラ (3)

標準ロジック・ファミリではバイナリ・レート・マルチプライア IC として、TTL の 74 シリーズでは 7497 (6 ビット)、メタルゲート CMOS の 4000B シリーズでは 4089B (4 ビット) などがあります。 それらの機能を一部簡略化し、ほぼ同等の PSoC コンポーネ…

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…