dvisampler: character synchronization
[litex.git] / milkymist / dvisampler / __init__.py
index d20880a026f27af16bc20ef56f1c322ffa205051..0f338fcecaa952843dc56980f50d255dc9dfe8cc 100644 (file)
@@ -5,6 +5,7 @@ from migen.bank.description import *
 from milkymist.dvisampler.edid import EDID
 from milkymist.dvisampler.clocking import Clocking
 from milkymist.dvisampler.datacapture import DataCapture
+from milkymist.dvisampler.charsync import CharSync
 
 class DVISampler(Module, AutoReg):
        def __init__(self, inversions=""):
@@ -18,13 +19,18 @@ class DVISampler(Module, AutoReg):
                for datan in "012":
                        name = "data" + str(datan)
                        invert = datan in inversions
+                       
+                       signame = name + "_n" if invert else name
+                       s = Signal(name=signame)
+                       setattr(self, signame, s)
+
                        cap = DataCapture(8, invert)
                        setattr(self.submodules, name + "_cap", cap)
-                       if invert:
-                               name += "_n"
-                       s = Signal(name=name)
-                       setattr(self, name, s)
                        self.comb += [
                                cap.pad.eq(s),
                                cap.serdesstrobe.eq(self.clocking.serdesstrobe)
                        ]
+
+                       charsync = CharSync()
+                       setattr(self.submodules, name + "_charsync", charsync)
+                       self.comb += charsync.raw_data.eq(cap.d)