forked from M-Labs/artiq-zynq
cxp GW: update docs
This commit is contained in:
parent
ae98a0fab6
commit
799e96c5ad
@ -334,13 +334,13 @@ class CXP_Grabber(Module, AutoCSR):
|
|||||||
cdr = ClockDomainsRenamer("cxp_gt_rx")
|
cdr = ClockDomainsRenamer("cxp_gt_rx")
|
||||||
#
|
#
|
||||||
# 32+8(dchar) 4 pixel
|
# 32+8(dchar) 4 pixel
|
||||||
# HostRXCore ─────/─────> Stream broadcaster ────> buffer ────> Pixel Core ───/───> Roi engines
|
# HostRXCore ─────/─────> stream broadcaster ────> buffer ────> stream2pixel4x ───/───> Roi engines
|
||||||
#
|
#
|
||||||
|
|
||||||
# that drops the K29.7 and mark eop on the crc word
|
# that drops the K29.7 and mark eop on the crc word
|
||||||
self.submodules.broadcaster = broadcaster = cdr(Stream_Broadcaster())
|
self.submodules.broadcaster = broadcaster = cdr(Stream_Broadcaster())
|
||||||
self.submodules.buffer = buffer = cdr(Buffer(word_layout_dchar)) # to improve timinig
|
self.submodules.buffer = buffer = cdr(Buffer(word_layout_dchar)) # to improve timing
|
||||||
self.submodules.conv = conv = cdr(Stream2Pixel4x_Converter(res_width, count_width))
|
self.submodules.stream2pix = stream2pix = cdr(Stream2Pixel4x(res_width, count_width))
|
||||||
# CRC error counter
|
# CRC error counter
|
||||||
self.submodules.crc_reset_ps = crc_reset_ps = PulseSynchronizer("sys", "cxp_gt_rx")
|
self.submodules.crc_reset_ps = crc_reset_ps = PulseSynchronizer("sys", "cxp_gt_rx")
|
||||||
self.comb += crc_reset_ps.i.eq(self.crc_error_reset.re)
|
self.comb += crc_reset_ps.i.eq(self.crc_error_reset.re)
|
||||||
@ -349,7 +349,7 @@ class CXP_Grabber(Module, AutoCSR):
|
|||||||
crc_error_r = Signal()
|
crc_error_r = Signal()
|
||||||
self.sync.cxp_gt_rx += [
|
self.sync.cxp_gt_rx += [
|
||||||
# to improve timinig
|
# to improve timinig
|
||||||
crc_error_r.eq(conv.crc_checker.error),
|
crc_error_r.eq(stream2pix.crc_checker.error),
|
||||||
|
|
||||||
If(crc_reset_ps.o,
|
If(crc_reset_ps.o,
|
||||||
crc_error_cnt_rx.eq(crc_error_cnt_rx.reset),
|
crc_error_cnt_rx.eq(crc_error_cnt_rx.reset),
|
||||||
@ -363,10 +363,10 @@ class CXP_Grabber(Module, AutoCSR):
|
|||||||
self.comb += [
|
self.comb += [
|
||||||
host.rx.source.connect(broadcaster.sink),
|
host.rx.source.connect(broadcaster.sink),
|
||||||
broadcaster.sources[0].connect(buffer.sink),
|
broadcaster.sources[0].connect(buffer.sink),
|
||||||
buffer.source.connect(conv.sink),
|
buffer.source.connect(stream2pix.sink),
|
||||||
]
|
]
|
||||||
|
|
||||||
roi_engines = [cdr(ROI(conv.pixel4x, count_width)) for _ in range(roi_engine_count)]
|
roi_engines = [cdr(ROI(stream2pix.pixel4x, count_width)) for _ in range(roi_engine_count)]
|
||||||
self.submodules += roi_engines
|
self.submodules += roi_engines
|
||||||
|
|
||||||
for n, roi in enumerate(roi_engines):
|
for n, roi in enumerate(roi_engines):
|
||||||
@ -402,15 +402,15 @@ class CXP_Grabber(Module, AutoCSR):
|
|||||||
y_size_rx, y_size_sys = Signal(3*char_width), Signal(3*char_width)
|
y_size_rx, y_size_sys = Signal(3*char_width), Signal(3*char_width)
|
||||||
y_pix_rx, y_pix_sys = Signal(res_width), Signal(res_width)
|
y_pix_rx, y_pix_sys = Signal(res_width), Signal(res_width)
|
||||||
self.sync.cxp_gt_rx += [
|
self.sync.cxp_gt_rx += [
|
||||||
If(conv.header_reader.new_line,
|
If(stream2pix.header_reader.new_line,
|
||||||
new_line_cnt_rx.eq(new_line_cnt_rx + 1),
|
new_line_cnt_rx.eq(new_line_cnt_rx + 1),
|
||||||
),
|
),
|
||||||
|
|
||||||
l_size_rx.eq(conv.header_reader.metadata.l_size),
|
l_size_rx.eq(stream2pix.header_reader.metadata.l_size),
|
||||||
x_size_rx.eq(conv.header_reader.metadata.x_size),
|
x_size_rx.eq(stream2pix.header_reader.metadata.x_size),
|
||||||
y_size_rx.eq(conv.header_reader.metadata.y_size),
|
y_size_rx.eq(stream2pix.header_reader.metadata.y_size),
|
||||||
|
|
||||||
y_pix_rx.eq(conv.pixel4x[0].y),
|
y_pix_rx.eq(stream2pix.pixel4x[0].y),
|
||||||
]
|
]
|
||||||
self.specials += [
|
self.specials += [
|
||||||
MultiReg(new_line_cnt_rx, new_line_cnt_sys),
|
MultiReg(new_line_cnt_rx, new_line_cnt_sys),
|
||||||
|
Loading…
Reference in New Issue
Block a user