gen/genlib/cdc/gearbox: add more margin on pointers (for cases where clocks are not perfectly aligned)
This commit is contained in:
parent
4bc6cf6165
commit
ff2a9c2176
|
@ -224,11 +224,12 @@ class Gearbox(Module):
|
||||||
]
|
]
|
||||||
self.clock_domains += cd_write, cd_read
|
self.clock_domains += cd_write, cd_read
|
||||||
|
|
||||||
storage = Signal(lcm(iwidth, owidth))
|
# TODO: optimize storage/resets for lowest ressource usage / lowest latency
|
||||||
|
storage = Signal(2*lcm(iwidth, owidth))
|
||||||
wrchunks = len(storage)//iwidth
|
wrchunks = len(storage)//iwidth
|
||||||
rdchunks = len(storage)//owidth
|
rdchunks = len(storage)//owidth
|
||||||
wrpointer = Signal(max=wrchunks, reset=0 if iwidth > owidth else wrchunks-1)
|
wrpointer = Signal(max=wrchunks, reset=0 if iwidth > owidth else wrchunks//2)
|
||||||
rdpointer = Signal(max=rdchunks, reset=rdchunks-1 if iwidth > owidth else 0)
|
rdpointer = Signal(max=rdchunks, reset=rdchunks//2 if iwidth > owidth else 0)
|
||||||
|
|
||||||
self.sync.write += \
|
self.sync.write += \
|
||||||
If(wrpointer == wrchunks-1,
|
If(wrpointer == wrchunks-1,
|
||||||
|
|
Loading…
Reference in New Issue