- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!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;
なるほど,面白い.