Skip to content
Snippets Groups Projects
Commit bb65f12c authored by BRONES Romain's avatar BRONES Romain
Browse files

Add documentation, update RDL

* Add version register.
* Add registers decription.
* Ad a small documentation.
parent 398218e6
No related branches found
No related tags found
No related merge requests found
include::doc/main.adoc[]
This diff is collapsed.
= COMCELLNODE ETHERNET module documentation
// ================================================================================
== Description
This module instantiate the Xilinx Ethernet Subsystem for 10 GbE communication.
The GT wizard core is separated from the Ethernet Subsystem, to allow different transceivers form one quad to run different communication type (ie Gbe and COMBPM).
// ================================================================================
== Overview
=== Main operation: Top level
This module is mainly structural, connecting the IP blocks with the control and status of the AXI-MM interface.
The QPLL core shall be instanciated by the application, providing a 156.25 MHz clock ref.
.Basic overview of comcell ethernet module
image::images/overview.svg[]
// ================================================================================
== Registers map
include::regmap.adoc[]
// ================================================================================
== TODO/Future of this module
.Register
[.tab-addr-reg,cols="5,1,1,2,1,9"]
|===
|Name | N | bits | type | RW | Description
| VERSION | 1 | 32 | uint | RO | +++Module version.+++
| GT_CONTROL | 1 | 9 | uint | RW | +++GT core control.+++ +
- RST_TX_CLK [0:0] sw:RW uint : +++Reset transmitter clock.+++ +
- RST_RX_CLK [1:1] sw:RW uint : +++Reset receiver clock.+++ +
- RST_TX_DATA [2:2] sw:RW uint : +++Reset transmitter datapath.+++ +
- RST_RX_DATA [3:3] sw:RW uint : +++Reset receiver datapath.+++ +
- RST_TX [4:4] sw:RW uint : +++Global reset on transmitter.+++ +
- RST_RX [5:5] sw:RW uint : +++Global reset on receiver.+++ +
- LOOPBACK [8:6] sw:RW uint : +++Loopback on the GT. See Xilinx doc.+++
| GT_STATUS | 1 | 7 | uint | RO | +++GT core status.+++ +
- CDR_STABLE [0:0] sw:RO uint : +++Clock Data Recovery is stable.+++ +
- SFP_RX_LOS [1:1] sw:RO uint : +++Receiver loss indicator on the SFP module.+++ +
- SFP_MOD_ABS [2:2] sw:RO uint : +++SFP module is absent.+++ +
- SFP_TX_FAULT [3:3] sw:RO uint : +++Transmitter fault on the SFP module.+++ +
- TX_CLK_ACTIVE [4:4] sw:RO uint : +++Transmitter clock is active.+++ +
- RX_CLK_ACTIVE [5:5] sw:RO uint : +++Receiver clock is active.+++ +
- POWERGOOD [6:6] sw:RO uint : +++Powergood on GT core.+++
|===
.External address maps
[.tab-addr-ext,cols="3,1,1,1,7"]
|===
|Name | size | address | interface | Description
| ETH | 2336 | 0x00001000 | AXI4L | +++Xilinx Ethernet Subsystem registers.+++
|===
...@@ -6,6 +6,8 @@ library desyrdl; ...@@ -6,6 +6,8 @@ library desyrdl;
use desyrdl.common.all; use desyrdl.common.all;
use desyrdl.pkg_comcellnode_ethernet.all; use desyrdl.pkg_comcellnode_ethernet.all;
use work.pkg_comcellnode_ethernet_version.all;
entity top_comcellnode_ethernet is entity top_comcellnode_ethernet is
port( port(
aresetn : in std_logic; aresetn : in std_logic;
...@@ -75,6 +77,8 @@ begin ...@@ -75,6 +77,8 @@ begin
po_addrmap => addrmap_o po_addrmap => addrmap_o
); );
addrmap_i.version.data <= C_VERSION;
-------------- --------------
-- ETHERNET -- -- ETHERNET --
-------------- --------------
......
...@@ -8,23 +8,46 @@ addrmap comcellnode_ethernet { ...@@ -8,23 +8,46 @@ addrmap comcellnode_ethernet {
xilinx_ethsubsyst ETH @0x1000; xilinx_ethsubsyst ETH @0x1000;
reg { reg {
field {hw=r; sw=rw;} RST_TX_CLK; desc="Module version.";
field {hw=r; sw=rw;} RST_RX_CLK; field {hw=w;sw=r;} data[32];
field {hw=r; sw=rw;} RST_TX_DATA; } VERSION;
field {hw=r; sw=rw;} RST_RX_DATA;
field {hw=r; sw=rw;} RST_TX;
field {hw=r; sw=rw;} RST_RX;
field {hw=r; sw=rw;} LOOPBACK[3];
} ETH_GT_CONTROL;
reg { reg {
field {hw=w; sw=r;} CDR_STABLE; desc="GT core control.";
field {hw=w; sw=r;} SFP_RX_LOS; default hw=r;default sw=rw;
field {hw=w; sw=r;} SFP_MOD_ABS; field {desc="Reset transmitter clock.";
field {hw=w; sw=r;} SFP_TX_FAULT; } RST_TX_CLK;
field {hw=w; sw=r;} TX_CLK_ACTIVE; field {desc="Reset receiver clock.";
field {hw=w; sw=r;} RX_CLK_ACTIVE; } RST_RX_CLK;
field {hw=w; sw=r;} POWERGOOD; field {desc="Reset transmitter datapath.";
} ETH_GT_STATUS; } RST_TX_DATA;
field {desc="Reset receiver datapath.";
} RST_RX_DATA;
field {desc="Global reset on transmitter.";
} RST_TX;
field {desc="Global reset on receiver.";
} RST_RX;
field {desc="Loopback on the GT. See Xilinx doc.";
} LOOPBACK[3];
} GT_CONTROL;
reg {
desc="GT core status.";
default hw=w;default sw=r;
field {desc="Clock Data Recovery is stable.";
} CDR_STABLE;
field {desc="Receiver loss indicator on the SFP module.";
} SFP_RX_LOS;
field {desc="SFP module is absent.";
} SFP_MOD_ABS;
field {desc="Transmitter fault on the SFP module.";
} SFP_TX_FAULT;
field {desc="Transmitter clock is active.";
} TX_CLK_ACTIVE;
field {desc="Receiver clock is active.";
} RX_CLK_ACTIVE;
field {desc="Powergood on GT core.";
} POWERGOOD;
} GT_STATUS;
}; };
...@@ -3,6 +3,8 @@ addrmap xilinx_ethsubsyst { ...@@ -3,6 +3,8 @@ addrmap xilinx_ethsubsyst {
desyrdl_generate_hdl = false; desyrdl_generate_hdl = false;
desyrdl_interface = "AXI4L"; desyrdl_interface = "AXI4L";
desc="Xilinx Ethernet Subsystem registers.";
//=================== //===================
reg { reg {
field { field {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment