Zynq與PC間的以太網通信實驗(一)——方案確定


目標:將PL側的數據通過以太網接口傳給PC。

Zynq板卡選用的是ZC706,上面有板載的以太網PHY芯片,因此需要在Zynq上(至少)實現一個MAC層的功能。

最初的想法是直接用vivado的IP核(Tri mode Ethernet MAC)在PL側實現一個以太網的MAC層功能,這樣實時性比較高,如果使用千兆以太網協議的話,應該可以達到接近於1Gbps的傳輸速率。

但是后來發現我所使用的板卡ZC706應該是不支持PL側的以太網接口的。因為原理圖上可以看出,ZC706將PHY芯片的相關引腳直接連接到了PS側的MIO:

所以只能通過在PS側編寫程序來實現與PC機的以太網通信。

因此方案更改為:

將PL側的數據通過DMA傳輸到DDR中,然后PS側從DDR中讀取數據,再通過以太網協議傳輸到PC機,PC上通過網絡調試助手(因此這就需要在PS側形成完整的以太網幀)來接收數據。其中,為了防止DDR的讀寫沖突,在DDR中開辟一段雙緩沖存儲結構,DMA向其中一塊緩沖寫數據的同時,以太網應用程序從另一塊緩沖里讀數據。

本次設計主要來自於米聯客教學視頻。

PL側設計:

 

 ctrl是數據產生模塊,將產生的數據寫入FIFO中,然后通過DMA寫入到DDR中,PS側可以通過GP接口控制GP通過GPIO開啟數據的產生。

PS側參照了SDK自帶的LWIP例程,對應PS側設計的思想應該是:

初始化DMA和LWIP,使能DMA中斷,開啟數據產生,開啟DMA傳輸。

在DMA傳輸完成中斷產生時,啟動以太網傳輸,然后再開啟另一段緩沖的DMA傳輸……

 

參考:

米聯客視頻教程及《Zynq SOC修煉秘籍》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM