日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ZYNQ PL通过EMIO ETHE1外接PHY由GMII转RGMII

發(fā)布時間:2023/12/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZYNQ PL通过EMIO ETHE1外接PHY由GMII转RGMII 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ZYNQ使用AXI_Ethernet編譯系統(tǒng)擴展多網(wǎng)口:

詳見博客:https://mp.csdn.net/editor/html/104765046

一,硬件簡介

1,3個以太網(wǎng)口,1個在PS,2個在PL;1個PS網(wǎng)口,1個PL網(wǎng)口在LINUX上同時使用,PL的網(wǎng)口掛到EMIO上。

2,從GMII過度到RGMII

GMII:

發(fā)送 gmii_tx_clk gmii_tx_d[7:0] gmii_tx_en gmii_tx_er

接收 gmii_rx_clk gmii_rx_d[7:0] gmii_rx_dv gmii_rx_er

RGMII:

發(fā)送 tx_clk tx_d[3:0] tx_ctrl

接收 rx_clk rx_d[3:0] rx_ctrl

首先數(shù)據(jù)總線從時鐘單邊沿采樣8bit轉(zhuǎn)變?yōu)榱穗p邊沿采樣4bit,從88E1512 Datasheet中時序圖可以直觀看出這一點。RGMII中上升沿發(fā)送一字節(jié)數(shù)據(jù)的低四位,下降沿發(fā)送剩余的高四位數(shù)據(jù)。接收端時鐘雙邊沿采樣,因此125MHZ*8bit = 125MHZ*4bit*2 = 1000Mbit/s。至于GMII中的數(shù)據(jù)有效和數(shù)據(jù)錯誤指示信號被ctrl信號復(fù)用:tx_ctrl在時鐘tx_clk上升沿發(fā)送是tx_en,在下降沿發(fā)送是tx_en ^ tx_er。rx_ctrl在時鐘rx_clk上升沿接收是rx_dv,在下降沿接收是rx_en ^ rx_er。綜上,RGMII接口引腳數(shù)從25個降低到14個。

從上邊的時序圖分析,數(shù)據(jù)在時鐘的邊沿變化。因此如果不做額外處理,接收端無法穩(wěn)定采樣。為了解決這一問題,常見的做法是為時鐘信號添加延時,使其邊沿對準數(shù)據(jù)總線的穩(wěn)定區(qū)間。可以在控制器端、PCB走線以及PHY芯片內(nèi)部添加時鐘偏移,本文使用最后一種方式實現(xiàn)。

3,add clock skew

 在第三階段中添加延遲。數(shù)據(jù)發(fā)送方向,FPGA側(cè)的TX_CLK信號不需要額外處理,也就是說FPGA發(fā)送與數(shù)據(jù)邊沿對齊的時鐘信號。TXD和TX_CLK信號波形如圖。使PHY芯片工作在延遲模式下時,FPGA單不需要添加額外的邏輯來保證穩(wěn)定采樣。發(fā)送方向直接將數(shù)據(jù)驅(qū)動時鐘作為TX_CLK信號發(fā)送,接收方向直接利用RX_CLK對RXD信號采樣。

二,vivado工程搭建配置

1,設(shè)置EMIO方式引出ETHE1

2,IP核設(shè)置

(1)vector unity logic設(shè)置

(2)gmii to rgmii設(shè)置

3,整體vivado設(shè)計方案

使用ZYNQ內(nèi)部的MAC控制器實現(xiàn)數(shù)據(jù)鏈路層功能。但由于其接口為GMII,需要用到GMII_to_RGMII IP Core轉(zhuǎn)換接口邏輯。上層網(wǎng)絡(luò)協(xié)議則通過LWIP開源協(xié)議棧完成。首先配置ZYNQ IP,使能ENET1并以EMIO方式引出。

?

?

4,管教約束示例

FPGA與RGMII接口的PHY芯片之間的時序關(guān)系按照數(shù)據(jù)接口同步和數(shù)據(jù)采樣方式屬于源同步DDR采樣。input delay約束對應(yīng)接收方向,時序關(guān)系是中心對齊。output delay約束對應(yīng)發(fā)送方向,時序關(guān)系是邊沿對齊。前者由于很多時候不知道上游器件Tcko信息,會使用示波器測量有效數(shù)據(jù)窗口來計算。而后者因為是邊沿對齊,通過示波器測量抖動窗口并使用skew based method計算。生成HDL文件之后接著我們從原理圖上找到這些引腳的對應(yīng),做成XDC約束文件:

set_property PACKAGE_PIN K15 [get_ports mdio_rtl_0_mdio_io] set_property IOSTANDARD LVCMOS33 [get_ports mdio_rtl_0_mdio_io] set_property PACKAGE_PIN L16 [get_ports mdio_rtl_0_mdc] set_property IOSTANDARD LVCMOS33 [get_ports mdio_rtl_0_mdc] set_property PACKAGE_PIN K21 [get_ports {rgmii_rtl_0_rd[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {rgmii_rtl_0_rd[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {rgmii_rtl_0_rd[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {rgmii_rtl_0_rd[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {rgmii_rtl_0_rd[0]}] set_property PACKAGE_PIN L21 [get_ports {rgmii_rtl_0_rd[2]}] set_property PACKAGE_PIN L19 [get_ports {rgmii_rtl_0_rd[1]}] set_property PACKAGE_PIN K18 [get_ports {rgmii_rtl_0_rd[0]}] set_property PACKAGE_PIN J18 [get_ports {rgmii_rtl_0_td[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {rgmii_rtl_0_td[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {rgmii_rtl_0_td[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {rgmii_rtl_0_td[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {rgmii_rtl_0_td[0]}] set_property PACKAGE_PIN K19 [get_ports {rgmii_rtl_0_td[2]}] set_property PACKAGE_PIN J21 [get_ports {rgmii_rtl_0_td[1]}] set_property PACKAGE_PIN J22 [get_ports {rgmii_rtl_0_td[0]}] set_property PACKAGE_PIN L17 [get_ports rgmii_rtl_0_rx_ctl] set_property PACKAGE_PIN L18 [get_ports rgmii_rtl_0_rxc] set_property PACKAGE_PIN J16 [get_ports rgmii_rtl_0_tx_ctl] set_property IOSTANDARD LVCMOS33 [get_ports rgmii_rtl_0_rx_ctl] set_property IOSTANDARD LVCMOS33 [get_ports rgmii_rtl_0_rxc] set_property IOSTANDARD LVCMOS33 [get_ports rgmii_rtl_0_tx_ctl] set_property IOSTANDARD LVCMOS33 [get_ports rgmii_rtl_0_txc] set_property PACKAGE_PIN K20 [get_ports rgmii_rtl_0_txc] set_property PACKAGE_PIN P18 [get_ports {reset_rtl_0[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {reset_rtl_0[0]}] set_property SLEW FAST [get_ports rgmii_rtl_0_txc] set_property SLEW FAST [get_ports rgmii_rtl_0_tx_ctl] set_property SLEW FAST [get_ports {rgmii_rtl_0_td[*]}]

三,debian系統(tǒng)配置

把里面的dts文件替換掉/mnt/workspace/osrc-lab/boards/MZ7X/debian/dts下的system-top.dts,然后再把FPGA工程也替換掉。

運行source settings64.sh

進入xilinx路徑,執(zhí)行g(shù)et_hw_description.sh,更新FPGA的硬件

uboot 內(nèi)核的配置文件沒有做修改,我們可以直接執(zhí)行 make_uboot.sh,編譯 uboot。如果做了修改,需要先執(zhí)行 cfg_uboot.sh

因為我們修改了內(nèi)核文件下的 xilinx_mz7x_defconfig,所以需要執(zhí)行 cfg_kernel.sh,進行配置內(nèi)核文件

編譯內(nèi)核:新增加的EMIO擴展的網(wǎng)口需要增加驅(qū)動,所以再進入kernel源碼路徑執(zhí)行執(zhí)行 make menuconfig ARCH=arm

之后保存并且退出,執(zhí)行save_kernel_defconfig.sh保存剛才的配置參數(shù)。每次配置修改內(nèi)核后都要執(zhí)行cfg_kernel.sh。

./save_kernel_defconfig.sh? ,? 然后執(zhí)行./cfg_kernel.sh

再執(zhí)行make_kernel.sh,編譯內(nèi)核。

執(zhí)行 create_image.sh

復(fù)制編譯好的文件到Tf卡的uboot分區(qū)

四,網(wǎng)口測試

插入串口,接口為USB-232 然后接通到虛擬機,使用putty軟件打開

開機后登錄系統(tǒng)???? 用戶名:osrc?? 密碼:root

再進入管理員模式,輸入ifconfig 可以看到有eth0 eth1 兩路以太網(wǎng)

把和 PS-LAN(上圖的eth0)網(wǎng)口連接的電腦網(wǎng)口網(wǎng)絡(luò)IP地址設(shè)置為192.168.0.10

把和PL-LANA(上圖的eth1)網(wǎng)口連接的電腦網(wǎng)口網(wǎng)絡(luò)IP地址設(shè)置為192.168.10.10

然后設(shè)置系統(tǒng)的IP地址

然后分別ping 192.168.0.10,再ping 192.168.10.10

配置成功,兩路以太網(wǎng)都能正常工作

總結(jié)

以上是生活随笔為你收集整理的ZYNQ PL通过EMIO ETHE1外接PHY由GMII转RGMII的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。