一文讀懂如何使用FPGA驅動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

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