LoginSignup
5
5

More than 5 years have passed since last update.

Atlas-SoC FPGAデータの書き方

Posted at

FPGAの書き込みの仕組み

Atlas-SoCではSDカードからFPGAを書くようだ。
linuxが起動する前のu-bootの起動時に書き込むとログが出ている。
18.png

SDカードのFAT16領域の
ATLAS_SOC_GHRD/output_files/ATLAS_SOC_GHRD.rbf
が読み込まれているようだ。

GUIで作ってみる

CUIのスクリプトを実行した後に出てくる
ATLAS_SOC_GHRD.qpf
をquartusで開き、コンパイルする。
成功するとsofファイルが出てくる。
SDカードにもsofファイルが入ってるけど、sofは使われていないようだ。
ログにあるようにrbfファイルが必要。
File - Convert Programming Files
でsofファイルからrbfに変換する。
16.png
できたファイルをSDカードのFAT16領域に置くと、SDカードからの起動時に読み込まれるようになる。
でも、デフォルトで作るとこんな風にエラーが出る。
19.png

スクリプトでは作られているのでどうやって作っているか調べてみる。
mks/quartus.mkにあった。

$$(QUARTUS_RBF_$1): %.rbf: %.sof
    $(ECHO) $$(QUARTUS_RBF_$1)
    quartus_cpf -c -o bitstream_compression=on $$< $$@ 2>&1 | tee logs/$$(notdir $$@).log   

compressonをかける必要があるようだ。
GUIのPropertiesでcompressonを有効にする。
17.png
これでLinuxが起動するようになった。

FPGAデータを変えてみる

起動するだけでおもしろくないのでLEDが勝手にチカチカするように変更してみる。
ghrd_top.vのLEDに接続している部分の
assign fpga_led_pio = fpga_led_internal;
をコメントアウトして、以下に書き換える。

reg  [31:0] led_test;
assign fpga_led_pio = led_test[31:24];
always @(posedge fpga_clk1_50)
begin
    led_test <= led_test+1;
end

50MHzを分周するので1秒だと25bitぐらい必要。
今回は32bitのカウンタの上位8bitをLEDに表示するようにした。

これをコンパイルして変換したrbfファイルをSDカードに書き込み、
電源を入れ直してu-bootが起動すると勝手にLEDがピコピコするようになる。
AtlasのWebインターフェイスは動かなくなるけどね。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5