微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > Ehternet 1000base-x pcs/pma例化问题

Ehternet 1000base-x pcs/pma例化问题

时间:10-02 整理:3721RD 点击:
本人例化了一个Ehternet 1000base-x pcs/pma想要实现GMII接口道sfp接口的转换(这个核就是为了替代光phy),现在需要读这个IP核的MDIO接口来读里面某个寄存器来确定link_status的状态,但是现在不清楚例化的这个IP核内部的phy的物理地址,应该是有什么地方可以设置,跪求大神指点。

This looks like xilinx IP, so in that set the core interface bits phyad[4:0] to the desired address - I believe you enter this in vivado IDE (last I used this was ISE)
Once you instantiate the IP, and make a template you can see the core signals below, phyad[]

//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
pcs your_instance_name (
  .reset(reset), // input reset
  .signal_detect(signal_detect), // input signal_detect
  .link_timer_basex(link_timer_basex), // input [8 : 0] link_timer_basex
  .link_timer_sgmii(link_timer_sgmii), // input [8 : 0] link_timer_sgmii
  .mgt_rx_reset(mgt_rx_reset), // output mgt_rx_reset
  .mgt_tx_reset(mgt_tx_reset), // output mgt_tx_reset
  .userclk(userclk), // input userclk
  .userclk2(userclk2), // input userclk2
  .dcm_locked(dcm_locked), // input dcm_locked
  .rxbufstatus(rxbufstatus), // input [1 : 0] rxbufstatus
  .rxchariscomma(rxchariscomma), // input [0 : 0] rxchariscomma
  .rxcharisk(rxcharisk), // input [0 : 0] rxcharisk
  .rxclkcorcnt(rxclkcorcnt), // input [2 : 0] rxclkcorcnt
  .rxdata(rxdata), // input [7 : 0] rxdata
  .rxdisperr(rxdisperr), // input [0 : 0] rxdisperr
  .rxnotintable(rxnotintable), // input [0 : 0] rxnotintable
  .rxrundisp(rxrundisp), // input [0 : 0] rxrundisp
  .txbuferr(txbuferr), // input txbuferr
  .powerdown(powerdown), // output powerdown
  .txchardispmode(txchardispmode), // output txchardispmode
  .txchardispval(txchardispval), // output txchardispval
  .txcharisk(txcharisk), // output txcharisk
  .txdata(txdata), // output [7 : 0] txdata
  .enablealign(enablealign), // output enablealign
  .gmii_txd(gmii_txd), // input [7 : 0] gmii_txd
  .gmii_tx_en(gmii_tx_en), // input gmii_tx_en
  .gmii_tx_er(gmii_tx_er), // input gmii_tx_er
  .gmii_rxd(gmii_rxd), // output [7 : 0] gmii_rxd
  .gmii_rx_dv(gmii_rx_dv), // output gmii_rx_dv
  .gmii_rx_er(gmii_rx_er), // output gmii_rx_er
  .gmii_isolate(gmii_isolate), // output gmii_isolate
  .an_interrupt(an_interrupt), // output an_interrupt
  .an_adv_config_vector(an_adv_config_vector), // input [15 : 0] an_adv_config_vector
  .an_adv_config_val(an_adv_config_val), // input an_adv_config_val
  .an_restart_config(an_restart_config), // input an_restart_config
  .phyad(phyad), // input [4 : 0] phyad
  .mdc(mdc), // input mdc
  .mdio_in(mdio_in), // input mdio_in
  .mdio_out(mdio_out), // output mdio_out
  .mdio_tri(mdio_tri), // output mdio_tri
  .configuration_vector(configuration_vector), // input [4 : 0] configuration_vector
  .configuration_valid(configuration_valid), // input configuration_valid
  .status_vector(status_vector), // output [15 : 0] status_vector
  .basex_or_sgmii(basex_or_sgmii) // input basex_or_sgmii
);
// INST_TAG_END ------ End INSTANTIATION Template ---------



   麻烦问下 这个是哪的例化 我例化的IP是gmii2sfp_example_design  gmii2sfp_example_design
   (
      // An independent clock source used as the reference clock for an
     // IDELAYCTRL (if present) and for the main GT transceiver reset logic.
     // This example design assumes that this is of frequency 200MHz.      
      .independent_clock               (clk_200m),//200MHz Independent clock,
      // Tranceiver Interface
      .gtrefclk_p                           (gtrefclk_p),// Very high quality 125MHz clock for GT transceiver.
      .gtrefclk_n                           (gtrefclk_n),
      .rxuserclk2                           (),
      .txp                                  (txp),
      .txn                                  (txn),
      .rxp                                  (rxp),
      .rxn                                  (rxn),
      // GMII Interface (client MAC <=> PCS)
      //---------------
      .gmii_tx_clk                   (gtx_clk), //Transmit clock from client MAC.
      .gmii_txd                      (phy_gmii_tx_dat),/// Transmit data from client MAC.
      .gmii_tx_en                    (phy_gmii_tx_dv),
      .gmii_tx_er                    (phy_gmii_tx_err),
      .gmii_rx_clk                   (), //Transmit clock from client MAC.
//      .gmii_rxd                      (), // Received Data to client MAC.
//      .gmii_rx_dv                    (),
//      .gmii_rx_er                    (),
      .gmii_rxd                      (phy_gmii_rx_dat_sfp), // Received Data to client MAC.
      .gmii_rx_dv                    (phy_gmii_rx_dv_sfp),
      .gmii_rx_er                    (phy_gmii_rx_err_sfp),
      // Management: MDIO Interface
      //---------------------------
//     .mdc                            (),// Transmit data from client MAC.
//     .mdio_i                         (),
//     .mdio_o                         (),
//     .mdio_t                         (),// Received control signal to client MAC.
      .configuration_vector           (5'b0),
  //    .configuration_valid            (1'b1),

      // General IO's
      //-------------
      .status_vector                    (status_vector),
      .reset                            (~reset_n),
      .signal_detect                    (1'b1)
   );

what is your version ISE 14.7 ? or vivado ?
I used ISE 14.7 with IP version gig_eth_pcs_pma:11.5
In coregen make sure to select "MDIO Management Interface"

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top