ZYNQ中BRAM的使用
BRAM用来传输命令很方便,不管是在linux系统下还是裸跑。第一步:在PL端添加IP后,一般默认设置。第二步:在addr中设置大小,这里设置64k这里设置完后,再打开IP会发现大小并没有改变,这是因为没有综合。第三步:添加io,把BRAM的输出设置为IO,并双击,设置为READ WRITE.第四步:综合综合我们的IP,结束后,再打开,会发现深度变...
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中申请的物理地址。
更多推荐
所有评论(0)