首先給出一篇很好的文章:
Zynq構建SoC系統深度學習筆記-05-PL讀寫DDR3
http://www.eefocus.com/antaur/blog/17-08/423773_0818c.html
這個博主的一系列文章寫的很好,本文是在閱讀了他的博客后,才下定決心查閱相關文檔進一步去研究這個問題
下面給出自己的理解:
一、SoC地址空間分配(查看UG585)
在UG585的第4章第1節給出了ZYNQ的地址分配,如下圖所示:
從上圖可以看到:總的地址空間為4G(32bits地址總線)
1、從0地址開始的1G為DDR與256KB的OCM空間,注意OCM的分配較為復雜,
后續會介紹
2、從0x4000_0000開始的1G為M_GP0的空間
3、從0x8000_0000開始的1G為M_GP1的空間
4、從E000_0000開始的為USB、SPI、IIC、ETH這些外設的空間
5、然后從FFFC_0000開始的256KB中分配給OCM(OCM分配方式有兩種,后面會說到)。
6、剩余的較少用,以此類推
二、ZYNQ中主機、從機、連接
在vivado中打開processing system IP可以看到:
1、外設有兩組:IO Peripheral為一組,flash memory為一組。同一組的共用一個地址空間。
2、接口有四種:M_GP,S_GP,S_HP,S_ACP
3、內部互聯有:Central Interconnect、Programmable Logic to Memory Interconnect、
OCM Interconnect
4、HP接口有四個,但是從Programmable Logic to Memory Interconnect出來到DDR Controller的接口只有兩個。查閱文檔可以知道HP0和HP2共用1個,HP1和HP3共用1個
5、只有PS/PL接口通過內部的互聯有通路到的外設或者存儲,都可以通過這個接口訪問
比如OCM接口可以有四種訪問方式:
a:M_GP->Central Interconnect-> OCM Interconnect->OCM
b: HP->Programmable Logic to Memory Interconnect->OCM Interconnect->OCM
c: ACP->SCU->OCM Interconnect->OCM
d: CPU->SCU->OCM Interconnect->OCM
三、Vivado中的address editor地址分配
1、建立實例工程:確定主機、從機與連接
添加dma和自定義master IP核:紅色圈出的為主機、黑色圈出的為PL中的從設備
使能OCM
總共有3個主設備,分別為:dma、my_master、ps
總共有5個從設備,分別為:DDR、IOP、QSPI、OCM、AXI_GPIO
AXI_BRAM_CONTROLLER
確定接口:
兩個主機都連接到S_GP口
2、進行地址分配地址分配
如下圖所示:進行地址分配時會以主機分組,因此有3組,根據主機是否有對應的連接到從機,從而決定從機是否在這個組里
地址分配時需要注意的事項
1、當prossing system作為主機時,也就是CPU使用M_GP作為主機時,地址分配界面是不會出現DDR、IOP、OCM的。這是因為在zynq中M_GP沒有相應的內部連接到這些設備。M_GP是連接到PL的設備的。工程使用M_GP0,因此這些設備的地址是從0x4000_0000開始。
2、使能S_GP口,可以看到DDR、IOP、QSPI、OCM可以相應的主機訪問被定義地址
3、多個主機可以連接到同一個從設備,訪問同一地址空間,使用interconnect進行交換
4、一個主機可以訪問多個從設備,從設備的地址不能一樣
5、同一主機對同一從設備的訪問不能通過不同的接口,比如dma同時使用GP和HP訪問DDR,會產生沖突
6、系統中作為從設備的任意兩個它們的地址都不能一樣,不管其主機是否相同。一個從設備只有 一個地址,是根據zynq地址空間直接統一編址的。比如,不管使用DDR被什么主機使用什么接口訪問,其地址都是0x0000_0000-0x3FFF_FFFF。
7、如果主機不需要訪問某個從設備,可以使用Exclude Segment功能,如下圖所示,詳細請看UG994的chapter 3.
8、常見的地址分配錯誤
四、可以直接運行程序的存儲設備
五、關於OCM的地址分配
詳細請看UG585的OCM這一章
通過不同的設置來修改OCM的地址分配
六、參考資料
1、UG585-Zynq-7000 All Programmable SoC
Technical Reference Manual
2、UG994-Vivado Design Suite User Guide
Designing IP Subsystems Using IP Integrator
3、http://www.eefocus.com/antaur/blog/17-08/423773_0818c.html