import migen in litex/gen
[litex.git] / litex / soc / misoc / cores / dvi_sampler / decoding.py
1 from migen import *
2 from migen.genlib.record import Record
3
4 from misoc.cores.dvi_sampler.common import control_tokens, channel_layout
5
6
7 class Decoding(Module):
8 def __init__(self):
9 self.valid_i = Signal()
10 self.input = Signal(10)
11 self.valid_o = Signal()
12 self.output = Record(channel_layout)
13
14 ###
15
16 self.sync.pix += self.output.de.eq(1)
17 for i, t in enumerate(control_tokens):
18 self.sync.pix += If(self.input == t,
19 self.output.de.eq(0),
20 self.output.c.eq(i)
21 )
22 self.sync.pix += self.output.d[0].eq(self.input[0] ^ self.input[9])
23 for i in range(1, 8):
24 self.sync.pix += self.output.d[i].eq(self.input[i] ^ self.input[i-1] ^ ~self.input[8])
25 self.sync.pix += self.valid_o.eq(self.valid_i)