phy/utils: ConstBitSlip: allow for different bitrate relation of CA vs CS
This commit is contained in:
parent
da769094fd
commit
13cdbc0ed9
|
@ -201,6 +201,9 @@ class CommandsPipeline(Module):
|
||||||
|
|
||||||
# Number of phases (before the current one) we need to check for overlaps
|
# Number of phases (before the current one) we need to check for overlaps
|
||||||
n_previous = cmd_nphases_span - 1
|
n_previous = cmd_nphases_span - 1
|
||||||
|
# Number of bits to slip CA per phase (how many CA output bits are equivalent to 1 CS output bit)
|
||||||
|
assert ca_ser_width % cs_ser_width == 0, f"Non-integer CA:CS output width ratio: {ca_ser_width % cs_ser_width}"
|
||||||
|
ca_phase_slip = ca_ser_width // cs_ser_width
|
||||||
|
|
||||||
# Create a history of valid adapters used for masking overlapping ones
|
# Create a history of valid adapters used for masking overlapping ones
|
||||||
valids = ConstBitSlip(dw=nphases, slp=0, cycles=1, register=False)
|
valids = ConstBitSlip(dw=nphases, slp=0, cycles=1, register=False)
|
||||||
|
@ -230,7 +233,7 @@ class CommandsPipeline(Module):
|
||||||
# For CA we need to do the same for each bit
|
# For CA we need to do the same for each bit
|
||||||
ca_bits = []
|
ca_bits = []
|
||||||
for bit in range(ca_nbits):
|
for bit in range(ca_nbits):
|
||||||
ca_bs = ConstBitSlip(dw=ca_ser_width, slp=phase, cycles=1)
|
ca_bs = ConstBitSlip(dw=ca_ser_width, slp=phase*ca_phase_slip, cycles=1)
|
||||||
self.submodules += ca_bs
|
self.submodules += ca_bs
|
||||||
ca_bit_hist = [ca[bit] for ca in adapter.ca]
|
ca_bit_hist = [ca[bit] for ca in adapter.ca]
|
||||||
ca_mask = Replicate(allowed, len(ca_bs.o))
|
ca_mask = Replicate(allowed, len(ca_bs.o))
|
||||||
|
|
Loading…
Reference in New Issue