トップ 一覧 Farm 検索 ヘルプ RSS ログイン

Diary/2021-11-28の変更点

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