FPGA 版 FM 音源 (85) -- TX7 (OPS) 測定 (12)
FM音源 EGS/OPSのレジスタ解析
と題された、作者不明の web ページが見つかります。
このページには、TX7 のファームウェアを解析して EGS/OPS のレジスタの仕様を探った結果が示されています。
その中で、EG のレートに関して、音色パラメタの 0 〜 99 の 100 段階の値から 5 ビット幅のレジスタに設定する 0 〜 63 の 64 段階の値へとマッピングする計算式が示されています。
ここで、100 段階の値を rate99、64 段階の値を rate63 と表現すると、
rate63 = (rate99 × 164) / 256
と表されます。 この除算は「整数除算」で、「小数部」に相当する部分は切捨てます。
100 段階の値を 64 段階にマッピングするには、最も単純には 64/100 = 0.64 (実数値) を掛けることに相当する演算を行なえばいいのですが、TX7 に内蔵されているマイコンは 8 ビットの HD63A03X で、除算はソフトウェアで実現する必要があり、避けていると思われます。
8 ビット符号なし乗算に関しては、アキュムレータ A とアキュムレータ B とを掛けて、結果を A と B を連結したアキュムレータ D に格納する MUL 命令があり、問題ありません。
除算の除数が 256 = 28 であれは、除算は乗算結果の上位バイトを持ってくるだけで済みますから、
0.64 × 256 = 163.84
より、164/256 で 0.64 を近似しているものと思われます。
2018 年 6 月 20 日付けの記事 (→こちら) での rate99 表現で 40 〜 46 は、
rate99 | rate63 | rate63/4 | rate63 下位 2 ビット |
EGクロック・ プリスケーラ |
レート・ マルチ プライア |
---|---|---|---|---|---|
40 | 25 | 6 | 1 | 1/32=1/25 | 5/8 |
41 | 26 | 6 | 2 | 1/32=1/25 | 6/8 |
42 | 26 | 6 | 2 | 1/32=1/25 | 6/8 |
43 | 27 | 6 | 3 | 1/32=1/25 | 7/8 |
44 | 28 | 7 | 0 | 1/16=1/24 | 4/8 |
45 | 28 | 7 | 0 | 1/16=1/24 | 4/8 |
46 | 29 | 7 | 1 | 1/16=1/24 | 5/8 |
となります。 (2018 年 7 月 12 日追記: 表の第 3 カラム、第 4 カラムのラベルが間違っていたのを修正しました。)
これらは、「ロー・レート」、つまり、EG アキュムレータの計算回路の「トポロジ」を買えずに EG クロックのレートのみを変更して EG レートを変化させている領域での動作です。
次回は、ロー・レートでの動作の上限の、rate99 = 69 〜 74 の測定結果を示します。