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
|
||||
|
||||
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
|
||||
rdchunks = len(storage)//owidth
|
||||
wrpointer = Signal(max=wrchunks, reset=0 if iwidth > owidth else wrchunks-1)
|
||||
rdpointer = Signal(max=rdchunks, reset=rdchunks-1 if iwidth > owidth else 0)
|
||||
wrpointer = Signal(max=wrchunks, reset=0 if iwidth > owidth else wrchunks//2)
|
||||
rdpointer = Signal(max=rdchunks, reset=rdchunks//2 if iwidth > owidth else 0)
|
||||
|
||||
self.sync.write += \
|
||||
If(wrpointer == wrchunks-1,
|
||||
|
|
Loading…
Reference in New Issue