2-04 3,4,5層目は係数を4種にしてROMを節約

●FPGAではROM(初期値付きRAM)が使える

 FPGAにおいて係数はROMに格納されます。図2‐15に各層の係数の数を示します。
 1層目と6層目は符号付き9ビットで整数化したので、ROMのビット数は係数の数
×9になります。
 2層目は係数を8種類に限定したのでROMのビット数は係数の数
×3になります。

図2‐15 各層の係数の数。5層目が一番多い

●思い切って4種類に限定

 係数は層が進むにつれて多くなり、特に5層目は262,144個となってROM容量を圧迫します。
 そこで図2‐16のように、3、4、5層目は係数を
4種類にします(*1)。その場合ROMのビット数は係数の数×2となりなります。

(*1)「係数の数が多い」ということは「個々の係数の重要度は低い」ともいえる

図2‐16 -64, -16, +16, +64の4種類

●48以下なら16、超えたら64に整数化

 
図2‐17は5層目を整数化する際のPythonコードです。このように適当に閾値をもうけて4種類に限定します。

図2‐17 w5.csv(小数)を読んで整数化。w5_int.csvにセーブ

●CSVファイルを見てみる

 図2‐18はw5_int.csv(整数化後の5層目の係数)です。-64, -16, +16, +64の4種類になっています。


図2‐18 係数の数は多いが種類は4種のみ

●ROMやビットシフト乗算器の節約になる

 2層目は係数の種類は8種類でしたが、3,4,5層目の重み係数は4種類としました。それだけでROMの容量をだいぶ節約できます。また「ビットシフトによる乗算」の回路もよりシンプルになります。


次のページへ


目次へ戻る