ZYNQ中BRAM的使用

BRAM用来传输命令很方便,不管是在linux系统下还是裸跑。

第一步:在PL端添加IP后,一般默认设置。

第二步:在addr中设置大小,这里设置64k

          这里设置完后,再打开IP会发现大小并没有改变,这是因为没有综合。

第三步:添加io,把BRAM的输出设置为IO,并双击,设置为READ WRITE.   

第四步:综合

综合我们的IP,结束后,再打开,会发现深度变化了。

第五步:SDK设计

 不管是裸跑中还是系统中读写BRAM都可以用下面函数:

Xil_Out32(((BaseAddr)+(u32)RegOffset),(u32)(Data))

 

Xil_In32((BaseAddr)+(u32)RegOffset)

需要注意的是这里的地址大小为8bit,所以当数据单位为32bit时候需要将地址乘以4. 

地址映射如下:

fd = open("/dev/mem", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
    if (fd < 0)
    {
        printf("err open \r\n");
        return ;
    }
    baseaddr = (int *)mmap(NULL, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, DEBUG_REG_ADDR); 

其中     MAP_SIZE为大小,DEBUG_REG_ADDR为PL中申请的物理地址。

发布了11 篇原创文章 · 获赞 5 · 访问量 8025
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章