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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章