這里寫自定義目錄標題
- 如何使用FPGA驅動PHY芯片
- 前言
- 必要的硬體知識
- 如何確定PHY芯片的物理地址?
- 如何確定PHY芯片的作業模式?
- 如何驅動PHY芯片?
- MDIO的通訊協議是什么?
- PHY芯片怎么收發資料?
如何使用FPGA驅動PHY芯片
前言
筆者因為作業的原因接觸到使用FPGA驅動PHY芯片進行通信,期間接觸到了德州儀器的dp83849,博通公司的B50610,裕太車通的YT8512等芯片,下面以裕太車通的芯片YT8512為例來講解如何使用和驅動PHY芯片,
必要的硬體知識
對于嵌入式軟體開發來說,不講硬體就講軟體構架的行為都是耍流氓,
如何確定PHY芯片的物理地址?
首先讀者要明確一點,PHY芯片的物理地址是什么?這個東西有什么意義? 假如在你使用的電路板子上存在多個PHY芯片,為了區分每個不同的PHY芯片,給定PHY芯片一個獨有的地址,從而確定我發送的的控制信號是給哪個PHY芯片的,而這個地址就是PHY芯片的物理地址,根據MDIO的協議,PHY的物理地址是5Bit資料,則理論上來說一根總線最多可以驅動2的5次方,即32個PHY芯片,但是實際上一般不會這么使用,首先在一般的工程中用不到這么多芯片,其次就是FPGA的引腳往往有很多,也不會如此的節省引腳,
那么如何給定PHY芯片的物理地址呢?一般來說,PHY芯片的物理地址都是通過PHY芯片管腳連接的電阻的上拉下拉決定的,即當你板子焊接好后,PHY的物理地址就確定了,除了改變硬體連接之外,沒有其它辦法改變PHY芯片的物理地址,
裕太車通的芯片YT8512有一個POS(英語原文叫PowerOnStrapping ,筆者也不知道對應的中文名詞是什么)的程序,即PHY芯片在上電的程序中,通過硬體的連接確定PHY芯片的物理地址,作業模式等等,
如何確定PHY芯片的作業模式?
以使用的裕太車通的PHY芯片YT8512為例,此芯片支持兩種介面:MII和RGMII,在上文提到的POS程序中,根據控制引腳的電阻上拉下拉決定,
如何驅動PHY芯片?
以MII為例
讀者可以把PHY芯片的介面簡單的理解為兩部分,其一為控制介面,包括MDC, MDIO兩個管腳;其二為通訊管腳,包括TXCLK, TXD, TXEN, RXCLK, RXD, RXDV等信號,
控制管腳用于了解和控制PHY芯片的作業狀態,通過讀取和寫入暫存器資料的方式了解當前PHY芯片的作業狀態,MDIO是一種串行通訊方式,每次讀取或者寫入16位資料,至于每一位資料代表什么,就請各位讀者去看對應芯片的器件手冊了,其中MDC起到的是同步時鐘的作用,其每個周期應該發送和接收MDIO一個bit資料,以筆者使用的,裕太車通的YT8512的MII規定為例:根據作業模式的不同,如果作業在100M作業模式下,MDC應該為25MHz的時鐘,如果作業在10M作業模式下,MDC應該是2,5MHz的時鐘,
通訊管腳就更好理解了,就是發送和接收資料的管腳,當發送信號的時候TXEN作為發送信號的使能位,將其置為高電平后只需按照TXCLK時鐘把要發送的資料賦給TXD埠就行了;同理,當接收信號的時候當RXDV置為高電平意味著發送的資訊已經開始到達PHY芯片,只需按照RXCLK時鐘把RXD信號存盤起來就好,
MDIO的通訊協議是什么?
所謂MDIO總線通信即FPGA和PHY芯片之間控制介面的通訊方式,根據FPGA讀和寫操作的不同,又分為兩種不同幀格式,這個幀都是FPGA發送給PHY芯片的,分為以下幾個部分:
前導碼(PRE):
器件手冊上為Preameble,一般是32個或者32個以上bit的高電平,用來提醒PHY芯片資料將要來臨,
起始碼(ST):
器件手冊上為Start Of Frame,以0,1作為發送幀的起始位,即先發送一個低電平,和前面32個高電平分隔開,再發送一個高電平,
操作碼(OP):
Opration Code,用來使PHY芯片區分這幀資料是讀操作還是寫操作,如果是讀指令,發送1,0;如果是寫指令,發送0,1;
PHY的物理地址(PHYAD):
PHY Address,PHY芯片的物理地址,用于區分特定的PHY芯片,在原則上講,一條MDIO總線可以驅動32個PHY芯片,但是實際上往往不會這么做,如果讀者朋友們使用的是FPGA開發板的話,往往只有幾個PHY芯片,因為FPGA的并行操作特點,還有很可能是每個PHY芯片單獨有一根MDIO總線連接,但是值得說明的是,這個5Bit資料是不可或缺的,請讀者朋友們仔細讀器件手冊,弄清楚相應的PHY芯片對應的物理地址,
暫存器地址(REGAD):
Register Address, PHY芯片往往有很多暫存器用于配置相應的作業模式,或者監視芯片的作業狀態,期存器中的資料便是下文中的Data資料,往往是16Bit的,
轉換碼(TA):
Turn Around,根據讀寫操作的不同,TA也會有不同的輸入,這很好理解,在寫操作狀態下,FPGA只需不停地輸入便可;但是在讀操作狀態下,PHY會向FPGA回傳資料,所以需要兩個時鐘的時間作為緩沖,讀操作下TA為Z,0;寫操作下為1,0,
資料(DATA):
讀出或者寫入的資料,至于這16bit資料每一位代表什么意思,就需要各位讀者去看相應器件的器件手冊了,

圖為博通芯片的MII介面
PHY芯片怎么收發資料?
//TODO
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/240883.html
標籤:其他
上一篇:致敬2020——打工人的成長故事
下一篇:2020-12-26
