Commit Graph

476 Commits

Author SHA1 Message Date
enjoy-digital 2a8cac96ba
Merge pull request #71 from antonblanchard/gen_tx_rx_slots
liteeth/gen: Allow configuration of nrxslots and ntxslots
2021-08-06 14:58:53 +02:00
Anton Blanchard 7ac3fe681a liteeth/gen: Allow configuration of nrxslots and ntxslots
We might want to increase nrxslots and ntxslots to improve
performance, so allow it to be overriden via the yaml config.
2021-08-06 06:09:49 +10:00
Florent Kermarrec 947ed03720 liteeth_gen: Allow configuring TX/RX delay RGMII PHYs. 2021-07-16 17:50:37 +02:00
Florent Kermarrec 72dd7bf283 mac/core/LiteEthMACCore: Switch CDC to ClockDomainCrossing and reduce buffering. 2021-07-16 14:51:25 +02:00
Florent Kermarrec 66fcad12cf core/udp/get_port: Simplify code by letting CDC/Converter automatically simplify the logic when CDC/Converter are not required. 2021-07-15 19:53:17 +02:00
Florent Kermarrec 7ba5a59e12 core/arp/LiteEthARPTX: Move datapath outside of FSM (minor logic optimization). 2021-07-15 19:53:12 +02:00
Florent Kermarrec a12d3991e5 core/icmp/LiteEthICMPTX: Move datapath outside of FSM (minor logic optimization). 2021-07-15 19:53:07 +02:00
Florent Kermarrec 43a2ea8118 frontend/Etherbone: Use new LiteX's PacketFIFO. 2021-07-15 18:07:15 +02:00
Florent Kermarrec 2b237881d9 core/icmp: Use new LiteX's PacketFIFO. 2021-07-15 18:06:52 +02:00
Florent Kermarrec c294a3848e bench: Add XCU1525 bench (compiles but not yet working on hardware). 2021-07-02 13:00:43 +02:00
Florent Kermarrec 2f4964cf56 phy: Add initial Ultrascale+ 1000BaseX PHY. 2021-07-02 12:59:00 +02:00
Florent Kermarrec 9343889fbd bench: Add KCU105 bench (with KU_1000BASEX on SFP0 and SGMII/RJ45 SFP adapter). 2021-07-02 09:56:55 +02:00
Florent Kermarrec 5ad0e10a72 bench: Update (remove calls to add_csr no longer required). 2021-07-02 09:34:33 +02:00
Florent Kermarrec 435c67dbc7 frontend/stream/LiteEthStream2UDPTX: Simplify logic, add send_level parameter. 2021-05-27 14:12:04 +02:00
Florent Kermarrec 57e018354c mac/sram: Cosmetic cleanups. 2021-05-07 14:39:38 +02:00
Leon Schuermann d2ef10fc03 mac/sram/timestamping: Fix stat_fifo refactoring typo.
Fixes: 392414eef8 ("mac: Review Timestamping, simplify and...")
Signed-off-by: Leon Schuermann <leon@is.currently.online>
2021-05-07 09:39:03 +02:00
Leon Schuermann af29c09ac0 mac/sram/timestamping: Fix stat_fifo.sink.valid refactoring typo.
Fixes a bug which would fill the TX return channel FIFO whenever the
SRAM Reader FSM is in the IDLE state. Instead, the FIFO should be
filled when the FSM reaches the END state, in which it will remain for
exactly a single clock cycle.

Fixes: 392414eef8 ("mac: Review Timestamping, simplify and...")
Signed-off-by: Leon Schuermann <leon@is.currently.online>
2021-05-07 09:34:23 +02:00
Jędrzej Boczar 18b5b2a70d liteeth/phy: add configurable hw reset duration 2021-04-28 13:24:06 +02:00
enjoy-digital e718a9ea5d
Merge pull request #67 from antmicro/jboc/s7rgmii-iodelay
phy/s7rgmii: add configurable iodelay_clk_freq
2021-04-27 19:39:09 +02:00
Florent Kermarrec 6febb1aaab mac/last_be: Simplify LiteEthMACTXLastBE using an FSM, fix sink.ready corner case. 2021-04-27 18:33:29 +02:00
Florent Kermarrec ca82b03e35 mac/LiteEthMACCoreCrossbar: Simplify. 2021-04-27 18:04:06 +02:00
Jędrzej Boczar dbc0b75178 phy/s7rgmii: add configurable iodelay_clk_freq 2021-04-27 10:59:27 +02:00
Florent Kermarrec 392414eef8 mac: Review Timestamping, simplify and make sure CSR mapping is unchanged when Timestamp is disabled.
- Simplify names (timestamp_source --> timestamp, tx/tx_timestamp CSR/Layouts --> timestamp, etc...)
- Simplify the logic a bit.
- Use consistent names for FIFO between Writer and Reader (cmd_fifo and stat_fifo).
- Avoid stat_fifo on Reader when Timestamp is disabled.
- Use EventSourceLevel() on Reader only when Timestamp is enabled.
2021-04-08 14:07:35 +02:00
enjoy-digital 9ac5c592d0
Merge pull request #59 from lschuermann/dev/mac-hw-timestamp
MAC: implement TX return channel & hardware timestamping
2021-04-08 13:04:03 +02:00
Leon Schuermann 2b206b8f7f liteeth MAC: implement TX hardware packet timestamping
This implements optional packet timestamping based on a hardware
timestamp source for outgoing Ethernet packets, as required by
applications such as IEEE 1588 (Precision Time Protocol).
2021-04-01 13:42:57 +02:00
Leon Schuermann e5f713f5a0 liteeth MAC: add a TX return channel
This changes the liteeth SRAM reader to utilize a feedback channel
returning the slot of which a packet has been sent.

The event source is changed from a pulse to a level-based trigger,
such that it will continue asserted if a single packet has been
acknowledged, but additional packets have been sent.

This infrastructure allows to convey additional information about
transmitted packets, such as timestamps or errors.
2021-04-01 13:42:57 +02:00
Leon Schuermann 7ce1085b68 liteeth MAC: implement RX hardware packet timestamping
This implements optional packet timestamping based on a hardware
timestamp source for incoming Ethernet packets, as required by
applications such as IEEE 1588 (Precision Time Protocol).

When a timestamp source is given as an argument, an additonal CSR is
generated containing the packet timestamp.
2021-04-01 13:42:56 +02:00
enjoy-digital 694cc81d77
Merge pull request #65 from shuffle2/master
Revert "phy/ecp5rgmii: remove p_DEL_MODE (not required since we speci…
2021-03-30 10:35:12 +02:00
Shawn Hoffman 17f6dca544 Revert "phy/ecp5rgmii: remove p_DEL_MODE (not required since we specify DEL_VALUE)."
This reverts commit 5247a2008a.
2021-03-29 11:31:54 -07:00
enjoy-digital adf63f3fc0
Merge pull request #64 from mczerski/different_rx_tx_slots
allow for different nrxslots and ntxslots
2021-03-19 08:56:39 +01:00
Marek Czerski 017b457bfc allow for different nrxslots and ntxslots
Background:
When there is a lot of broadcasts in the network, receive buffers
may overflow easly. Especially having onlu 2 of them.
To prevent that you can enlarge nrxslots, but because
nrxslots + ntxslots must be the power of two, you must also
inrease ntxslots. But there is no need to have more than 2 tx
buffers (they work as ping-pong buffer), the CPU will not use
more than two buffers.

So being able to set for example nrxslots=8 and ntxslots=2
is quite reasonable.
2021-03-12 15:03:30 +01:00
Florent Kermarrec 6c3af746e2 mac: Use FullMemoryWE on LiteEthMACWishboneInterface to allow correct block ram inteference on Intel/Altera decices. 2021-03-11 11:55:50 +01:00
enjoy-digital 89b197d1a0
Merge pull request #61 from shenki/is-not
Fix "is not" literal SyntaxWarning
2021-02-16 15:14:39 +01:00
Joel Stanley 6daff12f50 Fix "is not" literal SyntaxWarning
Signed-off-by: Joel Stanley <joel@jms.id.au>
2021-02-16 21:57:53 +10:30
Florent Kermarrec 0c003c8ee7 liteeth/core: handle last_be. 2021-02-10 19:18:55 +01:00
Florent Kermarrec 497d4d6501 liteeth/common: add last_be signal on layouts (required for 32/64-bit datapath support). 2021-02-10 18:43:03 +01:00
Florent Kermarrec 01328813ff liteeth/common: cleanup, add separators. 2021-02-10 18:38:12 +01:00
Florent Kermarrec 9edf5d393f liteeth/gen: remove semi-colon (thanks @davidcorrigan714). 2021-01-27 08:35:38 +01:00
Florent Kermarrec 7448170390 liteth/phy/rmii: add support for ref_clk as input.
In some hardware, ref_clk can be input for both the MAC and the PHY. In this
case, setting refclk_cd to None will make the CRG use ref_clk as the RMII
input reference clock:

Pads:
# RMII Ethernet
("eth_clocks", 0,
    Subsignal("ref_clk", Pins("D17")),
    IOStandard("LVCMOS33"),
),
("eth", 0,
    Subsignal("rst_n",   Pins("F16")),
    Subsignal("rx_data", Pins("A20 B18")),
    Subsignal("crs_dv",  Pins("C20")),
    Subsignal("tx_en",   Pins("A19")),
    Subsignal("tx_data", Pins("C18 C19")),
    Subsignal("mdc",     Pins("F14")),
    Subsignal("mdio",    Pins("F13")),
    Subsignal("rx_er",   Pins("B20")),
    Subsignal("int_n",   Pins("D21")),
    IOStandard("LVCMOS33")
),


PHY:

self.submodules.ethphy = LiteEthPHYRMII(
    clock_pads = self.platform.request("eth_clocks"),
    pads       = self.platform.request("eth"),
    refclk_cd  = None)

Thanks @mwick83 for reporting the use case and for the initial implementation.
2020-12-28 11:32:11 +01:00
Florent Kermarrec dea35908c9 phy/rmii: add refclk_cd parameter (to select reference eth clock domain) and make clock_pads optional. 2020-12-23 11:00:25 +01:00
Florent Kermarrec 617400fe9e test/test_etherbone: disable for now (hanging). 2020-12-17 19:06:11 +01:00
Florent Kermarrec e270956d2d test/test_model: fix test_etherbone. 2020-12-17 18:37:47 +01:00
Florent Kermarrec d901027e5c bench/test_etherbone/speed_test: use burst_size of 255. 2020-11-26 11:36:12 +01:00
Florent Kermarrec d3788cd2bb frontend/etherbone: use new LiteX's PacketFIFO in LiteEthEtherboneRecordSender.
This ensures the full Etherbone packet is available before starting the transmission
and fixes transmission issues with larges bursts or slow sys_clk_freq.
2020-11-26 11:35:51 +01:00
Florent Kermarrec d3ae361748 bench/sim: fix sim ethernet tap ip address. 2020-11-26 11:29:50 +01:00
Florent Kermarrec 3afd62e2e9 bench: add sim (with similar features than hardware targets). 2020-11-25 19:45:22 +01:00
Florent Kermarrec faf78965dd bench/test_etherbone: allow direct CommUDP use with --udp.
Useful to compare performance with RemoteClient and CommUDP.
2020-11-25 15:15:08 +01:00
Florent Kermarrec 5abf44d89a bench/targets: set buffer_depth to 255 (max). 2020-11-25 15:13:55 +01:00
Florent Kermarrec c3e1dad289 bench: reduce buffer_depth/burst_size to 128 (maximum supported by Etherbone protocol is 255). 2020-11-25 09:13:23 +01:00
Florent Kermarrec f97f6b0635 bench/test_etherbone/test_speeed: use bursts. 2020-11-24 19:46:43 +01:00