前回の続き。bitファイルが完成したので、boot.binをSDカードコピーして動作させてみた。
本当に動作しているかどうかを確認するために、BlockRAMのデザインに少しだけギミックを入れた。
always @ (posedge s_axi_aclk) begin up_rack_s <= up_rreq_s; blockram_rdata <= reg_mem[up_raddr_s[9:0]]; end always @ (posedge s_axi_aclk) begin up_raddr_s2 <= up_raddr_s; end assign up_rdata_s = (up_raddr_s2 == 14'h0) ? 32'hdeadbeef : blockram_rdata;
つまり、当該ブロックの先頭アドレスにリードアクセスをすると、0xdeadbeefが返されるはずだ。
当該ブロックのアドレスは、design_1_bd.tcl
で定義している。
ad_cpu_interconnect 0x43c00000 axi_blockram
さて、さっそく実行してみた。
まず、当該ブロックの先頭へのリードを実行する。
devmem2 0x43c00000 word
0xdeadbeefが返ってきた。成功だ。
次に、次のワードに対して書き込みを実行する。書き込む値は0x12345678だ。
devmem2 0x43c00004 word 0x12345678
次に同じアドレスに対してリードをする。ちゃんと0x12345678が返ってきた。成功だ。
devmem2 0x43c00000 word