2020/07/14

Use block memory generator in ultra96(zynq)

FPGA   

今日は、block memory generatorを使った。最初は、直接block memory generatorを使おうかと思いましたが、AXI BRAM Controllerを使った方が楽だったので、そちらにしました。

やり方は、簡単で、Add IP から axi bram controllerを追加して、auto connectionを選択するだけ、auto connectionを選択すると、block memory generatorも追加されます。 

 以下、block memory 周辺のモジュール図

次に全体の図になります。
こちらが、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からやり方を知りたい方がいれば、コメントください。解説記事を追加しますー。
« »