今日は、block memory generatorを使った。最初は、直接block memory generatorを使おうかと思いましたが、AXI BRAM Controllerを使った方が楽だったので、そちらにしました。
やり方は、簡単で、Add IP から axi bram controllerを追加して、auto connectionを選択するだけ、auto connectionを選択すると、block memory generatorも追加されます。
全体の図になります。
こちらが、block Memory Generatorのプロパティだけど、Read Widthが、32bitで、Depthが2048に、なっています。つまり、4byte × 2048 = 8192 byte 分のメモリーが用意されているようです。
アドレスでいうと、0x0〜0x2000になります。
次にソフトウェアですが、簡単にCPUから0x0〜0x2000にライトして、リードしてライトした値を確認するソフトウェアを準備します。
————————————–
u32 *ptr;
int i;
for (i=0;i< 0x2000;i+=0x20) {
ptr = (u32*)0xa0000000 + i;
*ptr = i;
xil_printf(“r addr %x val %xnr”, ptr, *ptr);
}
————————————–
これで、block memory generatorの確認ができました。きちんと、ライトした値が保持されているようでした。
プロジェクトを以下においてあります。
0からやり方を知りたい方がいれば、コメントください。解説記事を追加しますー。