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