2014-07-26 06:23:35 +08:00
|
|
|
from migen.fhdl.std import *
|
|
|
|
from migen.genlib.record import Record
|
|
|
|
|
2014-09-05 17:06:41 +08:00
|
|
|
|
2014-09-11 23:09:43 +08:00
|
|
|
def create_rbus(fine_ts_bits, pads, output_only_pads, mini_pads):
|
2014-09-05 12:03:22 +08:00
|
|
|
rbus = []
|
|
|
|
for pad in pads:
|
|
|
|
layout = [
|
|
|
|
("o_stb", 1),
|
|
|
|
("o_value", 2)
|
|
|
|
]
|
|
|
|
if fine_ts_bits:
|
|
|
|
layout.append(("o_fine_ts", fine_ts_bits))
|
2014-09-11 23:09:43 +08:00
|
|
|
if pad not in output_only_pads and pad not in mini_pads:
|
2014-09-05 12:03:22 +08:00
|
|
|
layout += [
|
|
|
|
("oe", 1),
|
|
|
|
("i_stb", 1),
|
2014-09-09 22:02:17 +08:00
|
|
|
("i_value", 1),
|
|
|
|
("i_pileup", 1)
|
2014-09-05 12:03:22 +08:00
|
|
|
]
|
|
|
|
if fine_ts_bits:
|
|
|
|
layout.append(("i_fine_ts", fine_ts_bits))
|
2014-09-11 23:09:43 +08:00
|
|
|
chif = Record(layout)
|
|
|
|
chif.mini = pad in mini_pads
|
|
|
|
rbus.append(chif)
|
2014-09-05 12:03:22 +08:00
|
|
|
return rbus
|
2014-07-26 06:23:35 +08:00
|
|
|
|
2014-09-05 17:06:41 +08:00
|
|
|
|
2014-07-26 06:23:35 +08:00
|
|
|
def get_fine_ts_width(rbus):
|
2014-09-05 12:03:22 +08:00
|
|
|
if hasattr(rbus[0], "o_fine_ts"):
|
|
|
|
return flen(rbus[0].o_fine_ts)
|
|
|
|
else:
|
|
|
|
return 0
|