soc/interconnect/avalon: add description

This commit is contained in:
Florent Kermarrec 2019-04-19 11:43:15 +02:00
parent fa95608694
commit 5a8115d9e1
1 changed files with 12 additions and 1 deletions

View File

@ -1,10 +1,20 @@
"""Avalon support for LiteX"""
from migen import * from migen import *
from litex.soc.interconnect import stream from litex.soc.interconnect import stream
# AvalonST to/from Native -------------------------------------------------------------------------- # Avalon-ST to/from native LiteX's stream ----------------------------------------------------------
# In native LiteX's streams, ready signal has no latency (similar to AXI). In Avalon-ST streams the
# ready signal has a latency: If ready is asserted on cycle n, then cycle n + latency is a "ready"
# in the LiteX/AXI's sense) cycle. This means that:
# - when converting to Avalon-ST, we need to add this latency on datas.
# - when converting from Avalon-ST, we need to make sure we are able to store datas for "latency"
# cycles after ready deassertion on the native interface.
class Native2AvalonST(Module): class Native2AvalonST(Module):
"""Native LiteX's stream to Avalon-ST stream"""
def __init__(self, layout, latency=2): def __init__(self, layout, latency=2):
self.sink = sink = stream.Endpoint(layout) self.sink = sink = stream.Endpoint(layout)
self.source = source = stream.Endpoint(layout) self.source = source = stream.Endpoint(layout)
@ -23,6 +33,7 @@ class Native2AvalonST(Module):
class AvalonST2Native(Module): class AvalonST2Native(Module):
"""Avalon-ST Stream to native LiteX's stream"""
def __init__(self, layout, latency=2): def __init__(self, layout, latency=2):
self.sink = sink = stream.Endpoint(layout) self.sink = sink = stream.Endpoint(layout)
self.source = source = stream.Endpoint(layout) self.source = source = stream.Endpoint(layout)