シンセ・アンプラグド RSSフィード

2017-02-20

FPGA 版 FM 音源 (72) -- FPGA 版 EG (16)

前々回の記事で述べたように、スロット・アドレスの割り付けには 8 バイト中に 2 バイトの「穴」(未使用領域) があり、これをどう扱うかで次の 3 つの方法が考えられます。

続きを読む

2017-02-18

FPGA 版 FM 音源 (71) -- FPGA 版 EG (15)

Altera の内蔵メモリ・ブロック「M4K」では、名称に「4K」が含まれることから分かるように、ひとつのブロックで 4 K = 4096 ビットの容量を持ち、

  • 1 ビット × 4096 ワード
  • 2 ビット × 2048 ワード
  • 4 ビット × 1024 ワード
  • 8 ビット × 512 ワード
  • 16 ビット × 256 ワード
  • 32 ビット × 128 ワード

の構成がサポートされています。

また、下に示すように、「1 ビット・パリティ付き 8 ビット・メモリ」などとして使える 9 ビットの倍数の幅での構成も可能です。

  • 9 ビット × 512 ワード
  • 18 ビット × 256 ワード
  • 36 ビット × 128 ワード

このとき、メモリの総容量は 9 × 512 = 4608 ビットとなります。

ただし、デュアル・ポート・モードで一方のポートでは 8 ビット幅モードでアクセスし、他方のポートでは 9 ビット幅モードでアクセスするような動作はサポートされていません。

続きを読む

2017-02-15

FPGA 版 FM 音源 (70) -- FPGA 版 EG (14)

今回はスロット・パラメタ・レジスタ・アレイのホスト・インターフェース部についてです。

各スロットの発音パラメタは、継続的に該当タイム・スロットで「タイムリー」に供給される必要があります。

その一方で、ホスト側からのアクセスについてはなるべく制約が少なく、任意のタイミングでできることが望まれます。

「ランダム・ロジック」で実現すれば、最も自由度が高くなりますが、大量にロジック・エレメントを消費してしまうので、Cyclone デバイスが内蔵している M4K RAM メモリ・ブロックを「デュアル・ポート・モード」で使用することにしました。

RAM 自体のスピードは速いので、細かい制御をすれば「シングル・ポート・モード」でも実現はできますが、制御が簡単になるデュアル・ポート・モードの方を選択しました。

続きを読む

2017-02-10

FPGA 版 FM 音源 (69) -- FPGA 版 EG (13)

EG の本体回路だけでなく、周辺回路も含んで (無印) Cyclone にインプリメントした「op3_EG_cyc()」の Verilog ソースを下に示します。 

モジュール名、ファイル名に含まれる「cyc」は「Cyclone」を意味しています。

続きを読む

2017-02-09

2017-02-08

FPGA 版 FM 音源 (67) -- FPGA 版 EG (11)

16 ビット入力 1 次シグマデルタ型 1 ビット DA モジュール「sdm1_16()」の Verilog ソースを下に示します。

続きを読む

2017-02-07