One Enterprise, Aliso Viejo,
CA 92656 USA
Within the USA: +1 (800) 713-4113
Outside the USA: +1 (949) 380-6100
Sales: +1 (949) 380-6136
Fax: +1 (949) 215-4996
Email: sales.support@microsemi.com
Microsemi makes no warranty, representation, or guarantee regarding the information contained herein or the suitability of
its products and services for any particular purpose, nor does Microsemi assume any liability whatsoever arising out of the
application or use of any product or circuit. The products sold hereunder and any other products sold by Microsemi have
been subject to limited testing and should not be used in conjunction with mission-critical equipment or applications. Any
performance specifications are believed to be reliable but are not verified, and Buyer must conduct and complete all
performance and other testing of the products, alone and together with, or installed in, any end-products. Buyer shall not
rely on any data and performance specifications or parameters provided by Microsemi. It is the Buyer’s responsibility to
independently determine suitability of any products and to test and verify the same. The information provided by Microsemi
hereunder is provided “as is, where is” and with all faults, and the entire risk associated with such information is entirely
with the Buyer. Microsemi does not grant, explicitly or implicitly, to any party any patent rights, licenses, or any other IP
rights, whether with regard to such information itself or anything described by such information. Information provided in this
document is proprietary to Microsemi, and Microsemi reserves the right to make any changes to the information in this
document or to any products and services at any time without notice.
About Microsemi
Microsemi, a wholly owned subsidiary of Microchip Technology Inc. (Nasdaq: MCHP), offers a comprehensive portfolio of
semiconductor and system solutions for aerospace & defense, communications, data center and industrial markets.
Products include high-performance and radiation-hardened analog mixed-signal integrated circuits, FPGAs, SoCs and
ASICs; power management products; timing and synchronization devices and precise time solutions, setting the world's
standard for time; voice processing devices; RF solutions; discrete components; enterprise storage and communication
solutions, security technologies and scalable anti-tamper products; Ethernet solutions; Power-over-Ethernet ICs and
midspans; as well as custom design capabilities and services. Learn more at www.microsemi.com.
The revision history describes the changes that were implemented in the document. The changes are
listed by revision, starting with the most current publication.
1.1Revision 3.0
The following is a summary of changes made in this revision.
•Updated the document for Libero SoC v12.1.
•The design uses a new IP PF_IOD_CDR_CCC. For more information, see PF_IOD_CDR_CCC_C0,
page 10.
1.2Revision 2.0
The following is a summary of changes made in this revision.
Microsemi PolarFire® FPGAs support 1G (1000BASE-T) Ethernet solutions for various networking
applications. In PolarFire devices, 10/100/1000 Mbps (1G) Ethernet is implemented using the CoreTSE
media access control (MAC) soft IP core. The CoreTSE IP implements a serial gigabit mediaindependent interface (SGMII) with an Ethernet PHY. This Ethernet interface can be implemented in the
FPGA by using either a transceiver or a GPIO with clock and data recovery (CDR) capability. Both these
features are provided by the PF_XCVR and PF_IOD_CDR IP cores, respectively.
GPIOs in PolarFire devices operate at speeds of upto 1.066 Gbps for single-ended standards and 1.25
Gbps for differential standards. Each I/O has an I/O digital (IOD) logic block that supports gearing up of
the output data rate and gearing down of the input data rate. The IOD block with CDR circuitry
(PF_IOD_CDR IP) deserializes high-speed Ethernet input data and transfers it to the FPGA fabric at
lower speeds. It also serializes the lower-speed Ethernet data from the FPGA fabric and transfers to the
high-speed Ethernet PHY.
This document describes how to run the 1G Ethernet loopback demo design, which is a reference design
created to demonstrate 1G Ethernet loopback using GPIO on a PolarFire Evaluation Board. The demo
design is built using the PF_IOD_CDR_CCC, PF_IOD_CDR, CoreTSE, and Mi-V soft processor IP
cores. The reference design is for a single SGMII lane (single RJ45 cable). For information about how to
build a multi-lane (multiple links) design, see Appendix: Multi-Lane 1G IOD CDR Design, page 31.
The demo design can be programmed using either of the following options:
•Using the pre-generated .job file: To program the device using the .job file provided along with the
demo design files, see Programming the Device Using FlashPro Express, page 23.
•Using Libero SoC: To program the device using Libero SoC, see Libero Design Flow, page 17.
A license is required to use the CoreTSE IP core. To request a license, contact
soc_marketing@microsemi.com.
2.1Design Requirements
The following table lists the hardware and software requirements for running the demo design.
Table 1 • Design Requirements
RequirementVersion
Hardware
PolarFire Evaluation Kit (POLARFIRE-EVAL-KIT)
– PolarFire Evaluation Board
– 12 V/5 A AC power adapter and cord
– USB 2.0 A to mini-B cable for UART and programming
RJ45 cable to connect the board with the host PC
Host PCWindows 7 or 10
Software
Cat Karat (Ethernet packet generator)Install the v1.51.200
Wireshark (network protocol analyzer)Install the v1.12.4
3.The latest versions of ModelSim and Synplify Pro are included in the Libero SoC PolarFire
installation package. Make sure you have a Libero Gold license for design evaluation on MPF300
device. A one year Gold software License is included with the Evaluation kit.
4.If you already purchased a Gold license and received a Software ID from Microsemi, generate your
Gold License using the following link:
https://soc.microsemi.com/portal/default.aspx?r=1
5.Download Cat Karat and Wireshark.
2.3Demo Design
The following is the data flow for the 1G Ethernet loopback demo design:
1.PF_CCC_0 provides the clock to the Mi-V processor and other APB peripherals.
2.PF_IOD_CDR_CCC_C0 generates:
•The fabric transmit clock ((TX_CLK_G)) for the CoreTSE block.
•The high-speed bank clocks, and drives the high-speed clocks (HS_IO_CLKs) of the
PF_IOD_CDR_C0 block for clock recovery.
3.PF_IOD_CDR_CCC_C0 also generates Delay codes for the PVT compensation.
4.Mi-V performs the following functions:
•Executes the application from LSRAM (PF_SRAM IP).
•Configures the ZL30364 clock generation hardware through the CoreSPI IP to generate
reference clocks for the VSC PHY and the IOD CDR fabric module.
•Configures the Management registers of CoreTSE and VSC PHY.
•Sends a request to the CoreTSE IP to negotiate with the on-board VSC8575 PHY.
5.CoreTSE IP implements 1G Ethernet MAC and is configured in ten bit interface mode (TBI) to
interface with the PF_IOD_CDR_C0. The CoreTSE IP has an inbuilt MDIO interface to exchange
control and status information with the VSC PHY.
6.PF_IOD_CDR IP does the following:
•Interfaces with the on-board VSC8575 PHY and forms the SGMII link.
•Recovers the data and clock from the incoming RX_P and RX_N ports.
•Sends the recovered clock (RX_CLK_R) to the CoreTSE block.
•Deserializes the recovered data and sends 10-bit parallel data to CoreTSE.
•Receives Ethernet data via the RX_P and RX_N input pads, gears down the receive data rate,
and deserializes the data.
•The deserialized data is sent from PF_IOD_CDR_C0:RX_DATA[9:0] to CoreTSE IP: RCG[9:0].
•The received data is looped back at the CoreTSE IP, and CoreTSE IP:TCG[9:0] is sent to
PF_IOD_CDR_C0:TX_DATA[9:0].
•PF_IOD_CDR_C0 serializes the data, gears up the transmit data rate, and transmits the data to
the on-board VSC PHY via the TX_P and TX_N output pads.
Figure 1, page 4 shows the hardware implementation of the demo design.
The PF_IOD_CDR IP core provides an asynchronous receive and transmit interface that supports upto
1.6 Gbps speed for serial data transfers. It supports the SGMII interface. PF_IOD_CDR uses the DDRX5
IO gearing mode for the SGMII interface with a 10:1 digital ratio to provide the 10-bit data width for both
transmit and receive. The clock recovery circuit, which is part of this PF_IOD_CDR, keeps the receive
clock centered in the data eye.
The PF_IOD_CDR interface is compatible with the CoreTSE, CoreTSE_AHB, and CoreSGMII IP cores
configured in TBI mode. In this demo, the CoreTSE (Non-AMBA) MAC is used in the TBI mode to
transmit and receive the Ethernet packets.
2.3.1.1Receive interface
The PF_IOD_CDR IP includes the clock recovery block, which is used to generate the recovered clock
for sampling the incoming data stream. This IP uses the four clocks of phases 0, 90,180 and 270
degrees for the clock recovery. The recovered clock (RX_CLK_R) is used by the fabric for sampling the
Rx data from the PF_IOD_CDR IP. The CoreTSE logic also uses this clock.
2.3.1.2Transmit Interface
For more information PF_IOD_CDR and its blocks, see UG0686: PolarFire FPGA User I/O User Guide.
The PF_IOD_CDR transmit interface receives the parallel data (TX_DATA[9:0]), converts it into a serial
data stream using the IOD interface, and then transmits it via the I/O ports TX_P and TX_N. The 625
MHz clock generated by the PF_IOD_CDR_CCC is used by PF_IOD_CDR transmit interface to transmit
the data serially on the TX_P/TX_N ports.
For more information about PF_IOD_CDR, see UG0686: PolarFire FPGA User I/O User Guide.
REF_CLK_SEL OutputReference clock speed pin of the VSC PHY. Held high for
selecting the 125 MHz reference clock speed.
RD_BC_ERROROutputCoreTSE receive error signal. This LED signal indicates the
receive code group error. This signal is synchronous to
RX_CLK_R and mapped to LED4 on the board.
When the LED is ON, there is an error in the received code
group.
When the LED is OFF, there is no error.
SPISCLKO, SPISS,
SPISDO, SPISDI
TDOOutputJTAG test data output. Serial data output to tap.
OutputSPI controller signals to interface with the ZL30364 clock
generation hardware.
2.3.3IP Configuration
This section describes the IP blocks and user-defined blocks instantiated in the demo design.
2.3.3.1PF_IOD_CDR_C0_0
The PF_IOD_CDR_C0_0 (PF_IOD_CDR) block is configured for 1250 Mbps. The data rate is set to
1250 Mbps because the SGMII interface operates at this speed. The Enable BITSLIP port check box is
not selected because the CoreTSE IP has a built-in word alignment logic.
Figure 3 • PF_IOD_CDR Configurator
The Advanced tab includes the Jump step size option that specifies the precision of the clock adjustment
during clock recovery. The supported step sizes are 2 or 3, this demo uses a step size of 3. Figure 3,
page 6 shows the configuration of the PF_IOD_CDR_C0 block.
2.3.3.2CORETSE_0
The CORETSE_0 (CoreTSE) block is used to implement the Ethernet MAC. This block is configured in
the ten-bit interface (TBI) mode to interface with the VSC PHY using the SGMII interface, as shown in
Figure 4, page 7. The MDIO PHY Address value is used by the Mi-V soft processor to read and write to
the Management registers of the CoreTSE IP. The Include receive slip logic option is not selected
because the CoreTSE IP has a built-in word alignment logic in TBI mode.
The pf_init_monitor_0 (PF_INIT_MONITOR) block is used to issue a reset signal to the user logic
(FABRIC_RESET_N). To ensure a glitch-free reset, the DEVICE_INIT_DONE signal is connected to the
CORERESET_PF IP with a lock signal from the PF_CCC macro. The AUTOCALIB_DONE signals the
completion of I/O calibration after which the I/Os can be used. Hence, the AUTOCALIB_DONE and
PLL_LOCK are ANDed and used to reset PF_IOD_CDR_C0_0 and CORETSE_0.
This IP retains the default configuration.
2.3.3.4Core_reset_pf_0
The Core_reset_pf_0 (CORERESET_PF) block handles the sequencing of reset signals in the PolarFire
device. The CORERESET_PF block synchronizes the reset of all the blocks to which it is connected
when the PolarFire device is powered up.
2.3.3.5core_jtag_debug_0
The CoreJTAGDebug IP is used to debug the Mi-V soft processor. This IP retains the default
configuration.
The Mi-V soft processor supports RISC-V processor-based designs. The Mi-V soft processor executes
the application from the LSRAM mapped at 0x80000000. It configures the ZL30364 clock generation
hardware through the CoreSPI IP and the VSC PHY through the CoreTSE MDIO interface. It also
configures the CoreTSE registers using the AHB interface.
The following figure shows the Mi-V soft processor configuration, where the Reset Vector Address is
set to 0x8000_0000. This is because in the Mi-V processor memory map, the memory range used for the
AHB memory interface is 0x8000_0000 to 0x8FFF_FFFC, and the memory range used for the AHB I/O
interface is 0x6000_0000 to 0x7FFF_FFFF.
Figure 5 • Mi-V Configurator
2.3.3.7pf_sram_0
The pf_sram_0 block (PF_SRAM_AHBL_AXI) is used to access the fabric RAMs (LSRAMs). The
pf_sram_0 is connected to Mi-V as an AHB slave. At device power-up, the LSRAM blocks are initialized
with the user application code from sNVM.
The processor uses the SRAM memory to execute the application. Figure 6, page 8 shows the LSRAM
depth and the interface settings. The Fabric Interface type is selected AHBLite because the fabric
interfaces with the AHB-based Mi-V processor. The memory depth can be selected based on the
application size. This design uses 64 KB of memory.
Figure 6 • pf_sram_0 Configurator
2.3.3.8PF_CCC_0
The PF_CCC_0 (PolarFire Clock Conditioning Circuitry) generates the fabric reference clock that drives
the soft processor and the APB peripherals (CoreTSE and CoreSPI). The PF_CCC_0 IP is configured to
generate one output fabric clock from an on-board 50 MHz crystal oscillator.
Figure 7, page 9 shows the PF_CCC_0 input clock configuration.
Figure 8, page 10 shows the PF_CCC_0 output clock configuration. This design uses an 80-MHz system
clock for configuring the APB peripherals.
Figure 8 • PF_CCC_0 Output Clock Configuration
2.3.3.9PF_IOD_CDR_CCC_C0
The PF_IOD_CDR_CCC IP used for generating high-speed bank clocks for PF_IOD_CDR. This IP is in
PLL-DLL cascaded mode to generate high-speed bank clocks of four phases 0, 90, 180, 270 from a 125
MHz input. The CDR requires four phases of the HS_IO_CLK running at half the frequency of the serial
data rate. Therefore, the HSIO clock frequency is selected as 625 MHz with four phases.
PF_IOD_CDR_CCC also generates the fabric Tx interface clock (TX_CLK_G) for the CoreTSE block by
dividing the bank clock by the ratio of 5. The DLL is needed to control the clock position (delay) with DLL
codes when the data is active on the Rx interface (RX_P/RX_N). A glitch-less DLL can adjust the clock
delay setting when the data is active.
Figure 9, page 10 shows the PF_IOD_CCC_C0_0 configuration.
The CORESPI_0 (CoreSPI) block is a controller IP, which implements SPI communication. Mi-V
configures the ZL30364 clock generation hardware using the CORESPI_0 block. The following points
describe the CoreSPI_0 configuration, as shown in Figure 10, page 11.
•APB Data Width is selected as 32 because the design uses an APB data width of 32 bit.
•The default serial protocol mode, Motorola mode is retained to interface with ZL30364.
•Frame size is set to 16 to match the read/write cycles supported by ZL30364.
•FIFO depth is set to 32 to store maximum frames (TX and RX) in FIFO.
•Clock rate for the SPI master clock is selected as 7. This is used to generate the SPI clock of 5 MHz
(SPICLK = PCLK/(2*(clock rate+1) = 80/(2*(7+1)) = 5 MHz).
•The Keep SSEL active check box is enabled to keep the slave peripheral active between back-to-
back data transfers.
Figure 10, page 11 shows the CoreSPI configuration.
Figure 10 • CoreSPI_0 Configurator
2.3.3.11CoreUARTapb_0
The CoreUARTapb_0 block is a serial communication controller with a flexible serial data interface. It is
used for UART communication between the device and host PC. This IP retains the default configuration.
Figure 11, page 12 shows the Mi-V processor bus interface memory map.
Figure 11 • Mi-V Processor Bus Interface Memory Map
2.3.3.13CoreAHBLite_0
CoreAHBLite_0 is configured as shown in Figure 12, page 13 to interface the PF_SRAM for accessing
the LSRAM at memory address 0x8000_0000. This configuration is required because the Mi-V processor
executes the code from 0x8000_0000.
CoreAPB3 is configured as shown in Figure 14, page 15 to connect the peripherals CoreTSE, CoreSPI,
and CoreUARTapb as slaves.
•APB Master Data bus width: 32 bit
•Number of address bits driven by master: 16. The Mi-V processor addresses slaves using 16-bit
addressing, so the final address for these slaves translates to 0x6000_0000, 0x6000_1000, and
0x6000_2000
•Enabled APB Slave Slots: S0, S1, and S2 (for CoreTSE, CoreUARTapb, and CoreSPI, respectively).
In the demo design, there are two clock sources—the on-board 50 MHz oscillator and the on-board
ZL30364 clock generation hardware.
•On-board 50 MHz oscillator: This oscillator drives the PLL that generates an 80-MHz clock for the
Mi-V soft processor and peripherals. In this design, Mi-V processor runs at 80 MHz.
•On-board ZL 30364 clock generation hardware: This hardware generates the reference clocks for
the VSC PHY, the IOD CDR fabric module, and CoreTSE.
Figure 15, page 16 shows the clocking structure of the demo design.
1.On the Design Flow tab, double-click Synthesize.
When the synthesis is successful, a green tick mark appears next to Synthesize, as shown in
Figure 16, page 17.
2.Right-click Synthesize and select View Report to view the synthesis report and log files in the
Reports tab.
We recommend viewing the top.srr and top_compile_netlist.log files for debugging synthesis and compile errors.
3.2Place and Route
The demo project includes the IO PDC file and the floor planner PDC constraint files. The Place and
Route process uses these PDC files to place the I/Os and CCC macros.
To place and route the design:
1.On the Design Flow tab, double-click Place and Route.
When place and route is successful, a green tick mark appears next to Place and Route, as shown
in Figure 16, page 17.
2.Right-click Place and Route and select View Report to view the place and route report and the log
files in the Reports tab.
We recommend viewing the top_place_and_route_constraint_coverage.xml file for
place and route constraint coverage.
3.2.1PLL, DLL, and Lane Controller Placement
PolarFire FPGA I/O pairs are grouped into lanes. Each I/O bank has multiple lanes. Each lane consists of
twelve I/Os (six I/O pairs), a lane controller, and a set of high-speed, low-skew clock resources.
All associated I/Os must be placed in one lane. For example, RX_P and RX_N must be placed in the
same lane. For more information, see UG0686: PolarFire FPGA User I/O User Guide. The IO Editor
shows the placement of the components and I/Os. The PLL of PF_CCC and the PLL, DLL, and Lane
Controller of PF_IOD_CDR_CCC_C0 are auto placed by Libero SoC.
3.2.2Resource Utilization
The resource utilization report is written to the top_layout_log.log file in the Reports tab under
iog_cdr_1Gbps reports > Place and Route. Table 3, page 18 lists the resource utilization of the design
after place and route. These values may vary slightly for different Libero runs, settings, and seed values.
1.On the Design Flow tab, double-click Verify Timing.
When the design successfully meets the timing requirements, a green tick mark appears next to Ver-ify Timing, as shown in Figure 16, page 17.
2.Right-click Verify Timing and select View Report to view the verify timing report and log files in the
Reports tab.
3.4Generate FPGA Array Data
On the Design Flow tab, double-click Generate FPGA Array Data.
When the FPGA array data is successfully generated, a green tick mark appears next to Generate FPGA Array Data, as shown in Figure 16, page 17.
3.5Configure Design Initialization Data and Memories
The fabric RAM blocks must be initialized with the user application to configure the PHY and
management registers of CoreTSE. The user application (HEX file) is generated using SoftConsole. This
step is used to select the fabric RAM client (HEX file), its storage location (sNVM/µPROM/SPI Flash),
and generate the fabric RAM client. The non-volatile memory is programmed with this client and at
device power-up, the fabric RAM blocks are initialized with the content from the selected NVM.
The Configure Design Initialization Data and Memories option creates the LSRAM initialization client.
When the PolarFire device powers up, the LSRAM memory is initialized with the sNVM contents.
To create the LSRAM initialization client:
1.On the Design Flow tab, double-click ConfigureDesign Initialization Data and Memories, as
shown in Figure 17, page 20.
Figure 17 • Configure Design Initialization Data and Memories Option
2.In the Fabric RAMs tab, configure the pf_sram instance and to ensure that the fabric LSRAM
contents are stored in sNVM, set the Storage Type as sNVM as shown in Figure 18, page 20.
Figure 18 • Fabric RAMs Tab
3.Import the hex file (iog_cdr.hex)from:
mpf_dg0799_eval_liberosocv12p1_df\Libero_Project.
The iog_cdr.hex file is an application file generated using SoftConsole v6.0 that configures the
ZL clock generation hardware, the CoreTSE registers, and the VSC PHY. The application code is initially stored in sNVM. On device power-up, the system controller copies the code to LSRAM, and the
Mi-V processor executes the code from LSRAM.
5.On the Design Flow tab, double-click Generate Design Initialization Data.
When the LSRAM initialization client is successfully generated in sNVM, a green tick mark appears
next to Generate Design Initialization Data, as shown in Figure 16, page 17.
When the device is programmed, the LSRAM block is initialized from the sNVM.
3.6Generate Bitstream
To generate the bitstream:
1.On the Design Flow tab, double-click Generate Bitstream.
When the bitstream is successfully generated, a green tick mark appears next to Generate Bit-stream, as shown in Figure 16, page 17.
2.Right-click Generate Bitstream and select View Report to view the corresponding log file in the
Reports tab.
3.7Run PROGRAM Action
After generating the bitstream, the PolarFire device must be programmed. The programming procedure
involves setting up board and invoking the programming command from Libero.
Follow these steps:
Note: If you want to program the board using the .job file instead, see Programming the Device Using
FlashPro, page 26.
1.Ensure that the jumper settings on the board are as listed in the following table.
Table 4 • Jumper Settings
JumperSetting
J18, J19, J20, J21,
and J22
J28Close pins 1 and 2 for programming through the on-board FlashPro5.
J4Close pins 1 and 2 for switching the power manually using SW3.
J12Close pins 3 and 4 for 2.5 V.
2.Connect the power supply cable to the J9 connector on the board.
3.Connect the USB cable from the host PC to J5 (FTDI port) on the board.
4.Connect the RJ45 cable from the host PC to the J15 connector (RJ45-PORT 0) on the board. This is
required for the Ethernet link after programming.
The following figure shows the board setup for programming the device.
Figure 20 • Board Setup
5.Power up the board using the SW3 slide switch.
6.On the Libero Design Flow tab, double-click Run PROGRAM Action.
When the device is successfully programmed, the LEDs 6, 7, 8, 9, 10, and 11 on the board glow, and
a green tick mark appears, as shown in Figure 16, page 17.
7.Right-click Run Program Action and select View Report to view the corresponding log file in the
Reports tab.
The demo is ready to be run. For information about how to run the demo, see Running the Demo,
page 25.
This chapter describes how to program the PolarFire device with the job file using Flashpro Express. The
job file is available at the following design files folder location:
mpf_dg0799_eval_liberosocv12p1_df\Programming_Job
Follow these steps:
1.Connect the jumpers and set up the PolarFire Evaluation Kit Board as described in steps 1 to 5 of
Run PROGRAM Action, page 21.
2.On the host PC, start the FlashPro Express software from
<$Installation Directory>\Microsemi\Libero_SoC_v12.1\Designer\binfp.
3.Select New or New Job Project from FlashPro Express Job from Project menu to create a new
job project, as shown in Figure 21, page 23.
Figure 21 • FlashPro Express Job Project
4.Enter the following in the New Job Project from FlashPro Express Job dialog box:
•Programming job file: Click Browse, and navigate to the location where the job file is located
and select the file. The default location is:
mpf_dg0799_eval_liberosocv12p1_df\Programming_Job
•FlashPro Express job project location: Select Browse and navigate to the location where
you want to save the project.
Figure 22 • New Job Project from FlashPro Express Job
5.Click OK. The required programming file is selected and ready to be programmed in the device.
6.The FlashPro Express window appears as shown in Figure 23, page 24. Confirm that a programmer
number appears in the Programmer field. If it does not, confirm the board connections and click
Refresh/Rescan Programmers.
Figure 23 • Programming the Device
7.Click RUN to program the device. When the device is programmed successfully, a RUN PASSED
status is displayed as shown in Figure 24, page 24. See Running the Demo, page 25.
This section describes how to run the 1G loopback demo. The procedure involves transmitting packets
from the network card of the host PC to the board using Cat Karat and verifying the packets transmitted
to and received from the board using Wireshark.
The following procedure assumes that:
•The PolarFire FPGA is programmed with the demo design programming file (.job). For more
information, see Programming the Device Using FlashPro Express, page 23.
•The Cat Karat and the Wireshark softwares are installed on the host PC.
To run the demo:
1.Ensure that the RJ45 cable is connected from the host PC to the J15 connector on the board.
2.Power up the board using the SW3 slide switch.
3.Confirm that LED 7 is glowing, indicating the Ethernet PHY link is up and running.
4.Open the Cat Karat software from Start menu of the host PC.
The Cat Karat Packet Builder window opens, as shown in Figure 25, page 25.
5.From the control panel of the host PC, note the name of Ethernet Network connection, as shown in
Figure 26, page 26. On a Windows 10 machine, this connection is Ethernet.
Figure 26 • Host PC Ethernet Network Connection
6.In the Cat Karat Packet Builder window > Interfaces pane, double-click the Ethernet Network
connection noted in the previous step to select that interface, as shown in Figure 27, page 26.
12. Verify that 10 packets have been captured (transmitted and received), as shown in Figure 34,
page 30.
Figure 34 • Transmitted and Looped Back Packets
The preceding figure highlights five packets that were transmitted from the host PC to the board,
looped back at the CoreTSE IP, and sent back to the host PC. All packets transmitted from host PC
network are looped back in the same way.
13. Select different burst rate and data pattern, and transmit packets to the board.
14. Power down the board, and close the Cat Karat and the Wireshark software.
In a multi-lane design, Ethernet traffic from multiple RJ45 cables, comes into the FPGA via PHY. In such
cases, multiple RX and TX ports must be assigned from the PolarFire GPIO Banks to form multiple
SGMII links with the PHY. The following figure shows the placement of I/O Banks and PLLs in a PolarFire
device (MPF300).
Figure 35 • I/O Banks and PLL placement in MPF300
Each Bank has multiple I/O Lanes and each I/O Lane includes 6 I/O pairs. The lane controller available in
each I/O lane has a clock recovery unit, which is used for the Clock recovery of that lane. Hence, only
one SGMII link can be realized from an I/O lane.
For an 8-lane design, 8 I/O Lanes are used to form 8 SGMII links. To enable sharing of the
PF_IOD_CDR_CCC, the selection of these I/O Lanes must be made in any of the following ways:
•Lanes of the same Bank can be selected vertically upto half of the side
•Lanes of the same Bank can be selected horizontally upto half of the side
•Lanes from vertical and horizontal Banks can be selected
Note: In Libero SoC, when I/O lanes are selected from Bank 5 or 2, or from both and placed, the
PF_IOD_CDR_CCC selects the SW PLL and is placed SW. If all I/O lanes are selected from Bank 4,
PF_IOD_CDR_CCC selects the NW PLL and is placed NW.
When the reference clock for all the links is same:
•PF_IOD_CDR_CCC can be shared across all IOD blocks (PF_IOD_CDR) for the HSIO BANK
clocks and transmit clock (TX_CLK).
•PF_IOD_CDR_CCC uses an internal lane controller to generate the DLL delay code and shares it
with all IOD blocks. The DLL delay code is required for phase tuning/adjustment.
To conclude, the following IOD resources are used to create an 8-lane design in a PolarFire MPF300
device:
•One PF_IOD_CDR_CCC with a lane controller for DLL delay update
•8 I/O Lanes and lane controllers for clock recovery
•
The following figure shows the high-level block diagram of an 8-lane design implemented using Libero
SoC PolarFire.
Figure 36 • 8 Lane 1G IOD CDR Design in PolarFire
As shown in Figure 36, page 32, eight PF_IOD_CDR instances are instantiated from GPIO Banks 5 and
2 to form eight links. The clock conditioning circuit (CCC) available in the South-West corner, is
configured in the PLL-DLL cascaded mode for the clock recovery and DLL delay update.
Apart from 8 lane controllers for clock recovery, an additional lane controller from the
PF_IOD_CDR_CCC is inferred during synthesis for sharing the DLL delay update. This optimizes the
utilization of lane controllers in the device.
Appendix: 1G Ethernet BASE-T and BASE-X Using Transceiver
1G Ethernet BASE-T
Link
Partner
XCVR
MAC
(CoreTSE/
CoreSGMII)
Mi-V
Soft
Processor
User Interface
Copper
PHY
FPGA Board
FPGA
Auto-negotiation
By PHY
Auto-negotiation By MAC
SGMII
TBI
MDIO Interface
1G Ethernet BASE-X
Link
Partner
XCVR
MAC
(CoreTSE/
CoreSMII)
Mi-V
Soft
Processor
User Interface
Optical SFP
Pluggable
Module
FPGA Board
FPGA
Auto-negotiation By MAC
TBI
SGMII
7Appendix: 1G Ethernet BASE-T and BASE-X
Using Transceiver
The PolarFire FPGA family includes multiple embedded low-power, performance-optimized transceivers.
Each transceiver has both the physical medium attachment (PMA), protocol physical coding sub-layer
(PCS) logic, and interfaces to the FPGA fabric. The transceiver has a multi-lane architecture with each
lane natively supporting serial data transmission rates from 250 Mbps to 12.7 Gbps. For more
information, see UG0677: PolarFire FPGA Transceiver User Guide.
This section describes how 1G Ethernet BASE-T and BASE-X designs are implemented in PolarFire
FPGAs using the transceivers.
7.11G Ethernet BASE-T and BASE-X
Figure 37, page 33 shows the typical FPGA design for 1G Ethernet BASE-T.
Figure 37 • 1G BASE-T Design
Figure 38, page 33 shows the typical FPGA design for 1G Ethernet BASE-X.
Appendix: 1G Ethernet BASE-T and BASE-X Using Transceiver
The following points summarize the 1G Ethernet BASE-T and BASE-X designs:
•The Mi-V soft processor is used to configure the PHY registers (using MDIO interface), MAC
Configuration and Management registers. User can also implement a fabric logic or any other soft
processor to implement these functions.
•The MAC IP is configured in the ten bit interface mode (TBI).
•In BASE-T, the management block of the MAC IP auto-negotiates with the on-board PHY as per
Clause 28 of the IEEE802.3z standard. The PHY auto-negotiates with the link partner.
•In BASE-X, the management block of the MAC IP auto-negotiates with the link partner as per
Clause 37 of the IEEE802.3z standard.
•The auto-negotiation (AN) functions are defined in the MAC Management registers 04h to 08h. The
bit field formats of these registers are different for BASE-T and BASE-X. For more information about
the bit field formats of the AN registers, see HB0549: CoreTSE v3.1 Handbook or HB0627:
CoreSGMII v3.2 Handbook. The following table lists the AN registers.
Table 5 • AN Registers
RegisterDescription
04hAN Advertisement
05hAN Link Partner
Base Page Ability
06hAN Expansion
07hAN Next Page
Transmit
08hAN Link Partner
Ability Next Page
The following registers are common in BASE-T and BASE-X modes:
•Control register at address 0x00
•Status register at address 0x01
Registers 0x04, 0x05, 0x06, 0x07, and 0x08 are based on the configuration.
•XCVR is configured to operate at 1250 Mbps. For more information about XCVR configuration, see
Transceiver Configuration, page 34.
•The user data from MAC (CoreTSE non-AHB) is provided on a 32-bit parallel bus.
7.2Transceiver Configuration
For 1G Ethernet BASE-T and BASE-X, the transceiver block is configured for 1.25 Gbps data rate.
Figure 39, page 35 shows the configuration of the transceiver block in Libero SoC design suite. The
following table lists the transceiver configuration.
receiver management logic
Can be sourced from the on-chip 160
MHz RC oscillator through a clock
divider
or
Can be connected to the output fabric
clock of CCC
signal from the XCVR_INIT_DONE
signal of the PF_INIT_MONITOR
component.
Appendix: 1G Ethernet BASE-T and BASE-X Using Transceiver
Table 7 • XCVR Port Connections (continued)
Port NameInput or OutputConnection Description
CLKS_FROM_TX_PLLXCVR transmit clock sourced from the
LANE0_RXD_N
LANE0_RXD_P
LANE0_CDR_REF_CLK125 MHz reference for clock and data
LANE0_PCS_ARST_NAsynchronous active-low reset signal
LANE0_PMA_ARST_NAsynchronous active-low reset signal
LANE0_RX_DATA[9:0]The 10-bit RX data from XCVR to
LANE0_TXD_N
LANE0_TXD_P
LANE0_RX_CLK_RRecovered regional receive clock from
LANE0_TX_DATA[9:0]The 10-bit TX data from
TX PLL.
Differential receive input pads for
receiving the Ethernet data.
recovery.
used to reset the PCS module of
XCVR lane.
used to reset the PMA module of
XCVR lane.
CoreTSE:RCG[9:0].
Differential transmit output pads.
XCVR to the fabric logic and
CoreTSE:TBI_RX_CLK.
CoreTSE:TCG[9:0] to XCVR.
For other XCVR ports, see UG0677: PolarFire FPGA Transceiver User Guide.
This section lists documents that provide more information about and about the IP cores used in the 1G
loopback demo design and about PolarFire 1G Ethernet Solutions in general.
•For more information about PF_IOD_CDR_CCC and PF_IOD_CDR, see UG0686: PolarFire FPGA
User I/O User Guide.
•For more information about CoreTSE, see HB0549: CoreTSE Handbook.
•For more information about PF_CCC, see UG0684: PolarFire FPGA Clocking Resources User
Guide.
•For more information about PF_SRAM_AXI_AHBL, see UG0680: PolarFire FPGA Fabric User
Guide.
•For more information about CoreAHBLite, see CoreAHBLite Handbook.
•For information about COREAHBTOAPB3, see COREAHBTOAPB3 Handbook.
•For more information about CoreAPB3, see CoreAPB3 Handbook.
•For more information about CoreUARTapb, see CoreUARTapb Handbook.
•For more information about CoreSPI, see HB0089: CoreSPI Handbook.
•For more information about PF_INIT_MONITOR, see UG0725: PolarFire FPGA Device Power-Up
and Resets User Guide.
•For more information about Mi-V soft processor, see MIV_RV32IMA_L1_AHB Handbook from the
Libero Catalog.
•For general information about PolarFire 1G Ethernet Solutions, see UG0687: PolarFire FPGA 1G
Ethernet Solutions User Guide.
•For more information about the PolarFire Evaluation board, see UG0747: PolarFire FPGA