lib.fifo: fix {r,w}_level in AsyncFIFOBuffered
This commit is contained in:
parent
c7014f84ea
commit
b15f0562a6
2 changed files with 20 additions and 2 deletions
|
|
@ -506,10 +506,15 @@ class AsyncFIFOBuffered(Elaboratable, FIFOInterface):
|
|||
fifo.w_data.eq(self.w_data),
|
||||
self.w_rdy.eq(fifo.w_rdy),
|
||||
fifo.w_en.eq(self.w_en),
|
||||
self.w_level.eq(fifo.w_level),
|
||||
]
|
||||
|
||||
m.d[self._r_domain] += self.r_level.eq(fifo.r_level + self.r_rdy - self.r_en)
|
||||
r_consume_buffered = Signal()
|
||||
m.d.comb += r_consume_buffered.eq(self.r_rdy - self.r_en)
|
||||
m.d[self._r_domain] += self.r_level.eq(fifo.r_level + r_consume_buffered)
|
||||
|
||||
w_consume_buffered = Signal()
|
||||
m.submodules.consume_buffered_cdc = AsyncFFSynchronizer(r_consume_buffered, w_consume_buffered, o_domain=self._w_domain)
|
||||
m.d.comb += self.w_level.eq(fifo.w_level + w_consume_buffered)
|
||||
|
||||
with m.If(self.r_en | ~self.r_rdy):
|
||||
m.d[self._r_domain] += [
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue