前言
我们在做SOC开发时总是少不了AXI建立的网络,毕竟PU的网口有限,但是此IP又非常复杂,我们先从应用开始学习,让它不那么难懂。
开发环境:
vivado 2020.1
vitis 2020.1
开发板硬件:
黑金AXU4EV-P开发板,也可以用正点原子的ZU2CG的MPSOC的开发板,只是一个硬件而已。
建立工程:
我们先建立一个工程(此部分不针对入门者):
整体工程如下:
1.1 配置中断和 AXI HP0 FPD
看BLOCK DESIGN我们可以知道此部分和AXI DMA数据强相关。
中断有四路进来
1.2. 添加 AXI 1G/2.5G Ethernet Subsystem 模块
1.3. 配置速度为 1Gbps,PHY 接口为 RGMII
1.4. 时钟调整至300MHz, 点击 OK
原因如下:
全部参数性能要至最大,为了iperf 性能。
1.5.关于refclk
1.6自动生成
1.7 绑定引脚,并生成 bitstream,导出硬件信息,主要是约束了。
RGMII的例子:
set_property PACKAGE_PIN A6 [get_ports {mdio_mdc }]
set_property PACKAGE_PIN C8 [get_ports {mdio_mdio_io }]
set_property PACKAGE_PIN D5 [get_ports {phy_reset_n }]
set_property PACKAGE_PIN E5 [get_ports {rgmii_rxc }]
set_property PACKAGE_PIN B8 [get_ports {rgmii_rx_ctl }]
set_property PACKAGE_PIN A5 [get_ports {rgmii_rd[0] }]
set_property PACKAGE_PIN B5 [get_ports {rgmii_rd[1] }]
set_property PACKAGE_PIN F8 [get_ports {rgmii_rd[2] }]
set_property PACKAGE_PIN C9 [get_ports {rgmii_rd[3] }]
set_property PACKAGE_PIN A7 [get_ports {rgmii_txc }]
set_property PACKAGE_PIN B9 [get_ports {rgmii_tx_ctl }]
set_property PACKAGE_PIN E9 [get_ports {rgmii_td[0] }]
set_property PACKAGE_PIN D9 [get_ports {rgmii_td[1] }]
set_property PACKAGE_PIN A9 [get_ports {rgmii_td[2] }]
set_property PACKAGE_PIN A8 [get_ports {rgmii_td[3] }]
set_property IOSTANDARD LVCMOS18 [get_ports {mdio_mdc }]
set_property IOSTANDARD LVCMOS18 [get_ports {mdio_mdio_io }]
set_property IOSTANDARD LVCMOS18 [get_ports {phy_reset_n }]
set_property IOSTANDARD LVCMOS18 [get_ports {rgmii_rxc }]
set_property IOSTANDARD LVCMOS18 [get_ports {rgmii_rx_ctl }]
set_property IOSTANDARD LVCMOS18 [get_ports {rgmii_rd[0] }]
set_property IOSTANDARD LVCMOS18 [get_ports {rgmii_rd[1] }]
set_property IOSTANDARD LVCMOS18 [get_ports {rgmii_rd[2] }]
set_property IOSTANDARD LVCMOS18 [get_ports {rgmii_rd[3] }]
set_property IOSTANDARD LVCMOS18 [get_ports {rgmii_txc }]
set_property IOSTANDARD LVCMOS18 [get_ports {rgmii_tx_ctl }]
set_property IOSTANDARD LVCMOS18 [get_ports {rgmii_td[0] }]
set_property IOSTANDARD LVCMOS18 [get_ports {rgmii_td[1] }]
set_property IOSTANDARD LVCMOS18 [get_ports {rgmii_td[2] }]
set_property IOSTANDARD LVCMOS18 [get_ports {rgmii_td[3] }]
set_property UNAVAILABLE_DURING_CALIBRATION TRUE [get_ports mdio_mdio_io]
#idelay
set_property DELAY_VALUE 500 [get_cells design_1_i/axi_ethernet_0/inst/mac/inst/tri_mode_ethernet_mac_i/rgmii_interface/delay_rgmii_rx_ctl]
set_property DELAY_VALUE 500 [get_cells {design_1_i/axi_ethernet_0/inst/mac/inst/tri_mode_ethernet_mac_i/rgmii_interface/rxdata_bus[0].delay_rgmii_rxd}]
set_property DELAY_VALUE 500 [get_cells {design_1_i/axi_ethernet_0/inst/mac/inst/tri_mode_ethernet_mac_i/rgmii_interface/rxdata_bus[1].delay_rgmii_rxd}]
set_property DELAY_VALUE 500 [get_cells {design_1_i/axi_ethernet_0/inst/mac/inst/tri_mode_ethernet_mac_i/rgmii_interface/rxdata_bus[2].delay_rgmii_rxd}]
set_property DELAY_VALUE 500 [get_cells {design_1_i/axi_ethernet_0/inst/mac/inst/tri_mode_ethernet_mac_i/rgmii_interface/rxdata_bus[3].delay_rgmii_rxd}]
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property IOSTANDARD DIFF_SSTL12 [get_ports sys_clk_clk_p]
set_property PACKAGE_PIN AE5 [get_ports sys_clk_clk_p]
set_property PACKAGE_PIN AF5 [get_ports sys_clk_clk_n]
set_property IOSTANDARD DIFF_SSTL12 [get_ports sys_clk_clk_n]
create_clock -period 5.000 -name sys_clk_clk_p -waveform {0.000 2.500} [get_ports sys_clk_clk_p]