cores/prbs: Define PRBS_CONFIG constants and use them in code. Also simplify PRBSGenerator data selection.
This commit is contained in:
parent
ccd3ab17be
commit
162231fb8f
|
@ -12,6 +12,13 @@ from migen import *
|
||||||
from migen.genlib.misc import WaitTimer
|
from migen.genlib.misc import WaitTimer
|
||||||
from migen.genlib.cdc import MultiReg
|
from migen.genlib.cdc import MultiReg
|
||||||
|
|
||||||
|
# Constants ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
PRBS_CONFIG_OFF = 0b00
|
||||||
|
PRBS_CONFIG_PRBS7 = 0b01
|
||||||
|
PRBS_CONFIG_PRBS15 = 0b10
|
||||||
|
PRBS_CONFIG_PRBS31 = 0b11
|
||||||
|
|
||||||
# PRBS Generators ----------------------------------------------------------------------------------
|
# PRBS Generators ----------------------------------------------------------------------------------
|
||||||
|
|
||||||
class PRBSGenerator(Module):
|
class PRBSGenerator(Module):
|
||||||
|
@ -69,15 +76,12 @@ class PRBSTX(Module):
|
||||||
|
|
||||||
# PRBS Selection.
|
# PRBS Selection.
|
||||||
prbs_data = Signal(width)
|
prbs_data = Signal(width)
|
||||||
self.comb += [
|
self.comb += Case(self.config, {
|
||||||
If(config == 0b11,
|
PRBS_CONFIG_OFF : prbs_data.eq(0),
|
||||||
prbs_data.eq(prbs31.o)
|
PRBS_CONFIG_PRBS7 : prbs_data.eq(prbs7.o),
|
||||||
).Elif(config == 0b10,
|
PRBS_CONFIG_PRBS15 : prbs_data.eq(prbs15.o),
|
||||||
prbs_data.eq(prbs15.o)
|
PRBS_CONFIG_PRBS31 : prbs_data.eq(prbs31.o),
|
||||||
).Else(
|
})
|
||||||
prbs_data.eq(prbs7.o)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
|
|
||||||
# Optional Bits Reversing.
|
# Optional Bits Reversing.
|
||||||
if reverse:
|
if reverse:
|
||||||
|
@ -161,21 +165,23 @@ class PRBSRX(Module):
|
||||||
prbs31 = PRBS31Checker(width)
|
prbs31 = PRBS31Checker(width)
|
||||||
self.submodules += prbs7, prbs15, prbs31
|
self.submodules += prbs7, prbs15, prbs31
|
||||||
self.comb += [
|
self.comb += [
|
||||||
prbs7.i.eq(prbs_data),
|
prbs7.i.eq( prbs_data),
|
||||||
prbs15.i.eq(prbs_data),
|
prbs15.i.eq(prbs_data),
|
||||||
prbs31.i.eq(prbs_data)
|
prbs31.i.eq(prbs_data),
|
||||||
]
|
]
|
||||||
|
|
||||||
# Errors count (with optional saturation).
|
# Errors count (with optional saturation).
|
||||||
self.sync += [
|
self.sync += [
|
||||||
If(config == 0,
|
If(config == PRBS_CONFIG_OFF,
|
||||||
errors.eq(0)
|
errors.eq(0)
|
||||||
).Elif(~self.pause & (~with_errors_saturation | (errors != (2**32-1))),
|
).Elif(~self.pause & (~with_errors_saturation | (errors != (2**32-1))),
|
||||||
If(config == 0b01,
|
If(config == PRBS_CONFIG_PRBS7,
|
||||||
errors.eq(errors + (prbs7.errors != 0))
|
errors.eq(errors + (prbs7.errors != 0))
|
||||||
).Elif(config == 0b10,
|
),
|
||||||
|
If(config == PRBS_CONFIG_PRBS15,
|
||||||
errors.eq(errors + (prbs15.errors != 0))
|
errors.eq(errors + (prbs15.errors != 0))
|
||||||
).Elif(config == 0b11,
|
),
|
||||||
|
If(config == PRBS_CONFIG_PRBS31,
|
||||||
errors.eq(errors + (prbs31.errors != 0))
|
errors.eq(errors + (prbs31.errors != 0))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue