!lowRISC/ibex で遊んでみる git clone https://github.com/lowRISC/ibex.git sudo apt install srecord sudo pip install fusesoc sudo pip3 install -r python-requirements.txt export PATH=~/tools/riscv-gnu-toolchain/bin:$PATH source /tools/Xilinx/Vivado/2020.2/settings64.sh make build-arty-100 program-arty で,ビルドしてFPGAへのプログラムができる. examples/fpga/artya7/rtl/top_artya7.svのMEM_SIZEを parameter int MEM_SIZE = 128 * 1024; // 256 kB と変更すると make build-arty-100 program-arty と,Arty-35向けにもビルドできる. ビルドすると, examples/sw/led がBRAMに書かれたbitファイルが生成されているよう. ボード上のLD[3:0]が,0101(=0x0a)と1010(~0x0a)の交互に点灯する. 合成オプションとしては, -generic {SRAMInitFile ../../../../../examples/sw/led/led.vmem} というのがVivadoのGenralにLanguage Optionsで与えられている. LEDどうやって点灯してるのかと思えば,メモリへの書き込みデータを表示してるだけなのね. // Connect the LED output to the lower four bits of the most significant // byte logic [3:0] leds; always_ff @(posedge clk_sys or negedge rst_sys_n) begin if (!rst_sys_n) begin leds <= 4'b0; end else begin if (data_req && data_we) begin for (int i = 0; i < 4; i = i + 1) begin if (data_be[i] == 1'b1) begin leds <= data_wdata[i*8 +: 4]; end end end end end assign LED = leds; なるほど,面白い.