例のレイトレを動かすの必要なFPGAのスペック
CPUとFPUのリポジトリ
CPU
FPU
必要なスペック
table:必要スペック
項目名 必要スペック 必須/推奨 備考
LUT数 12K 以上 必須
SDRAM または HyperRAM 5MB以上 必須 スタック領域(1MB)+ ヒープ領域(4MB)
ブロックRAMサイズ 250KB以上 推奨 プログラムがブロックRAMに収まらなければローダが必要
LUT数
RISC-V(RV32IF)に必要なLUT数 → 12000程度(12K)のLUTが必要
FPGAボードとLUT数
Tang Nano 9K(LUT 9K) → 入らない
Tang Nano 20K(LUT 20K) → 入る
ULX3S 85F(LUT 85K)→ 余裕で入る
FPU(浮動小数点演算器)が大きい
FPUが無ければ Tang Nano 9K にも収まりそう
以下はCPUビルド時に出力されるLUTの使用率。85K中12KほどLUTを使用してる。
code:text
Info: Logic utilisation before packing:
Info: Total LUT4s: 11260/83640 13%
Info: logic LUTs: 10202/83640 12%
Info: carry LUTs: 1058/83640 1%
Info: RAM LUTs: 0/10455 0%
Info: RAMW LUTs: 0/20910 0%
Info: Total DFFs: 3663/83640 4%
メモリサイズ
table:メモリサイズ
種類 必要容量 置き場所
プログラムメモリ 250Kバイト ブロックRAM または SDRAM
スタックメモリ 1Mバイト SDRAM
ヒープメモリ 4Mバイト SDRAM
プログラムのサイズ(レイトレのバイナリサイズ)は200Kバイトほど。プログラムがブロックRAMに収まるならプログラムローダ等は不要だが、収まらない場合はUARTやSDカードなどからプログラムを読み込むローダが必要になる。
ULX3SのブロックRAM: 400Kバイト
プログラムはブロックRAMに収まる → ローダ不要
Tang Nano 9KのブロックRAM:52Kバイト
プログラムはブロックRAMに収まらず → ローダが必要
また、レイトレを動かす際に必要なスタック領域とヒープ領域のサイズは合わせて5Mバイト。ブロックRAMでは全然足りないため、SDRAMやHyperRAMなどの大容量RAMが必要。
スタック領域(1Mバイト)
ヒープ領域( 4Mバイト)