From 789c6304aa8ef6c4ed6049c3521cb32809b219ad Mon Sep 17 00:00:00 2001 From: "Ian M." Date: Sat, 26 Sep 2026 02:58:16 +0000 Subject: bus: ari: Implement ARI interconnect groundwork Signed-off-by: Ian M. --- rtl/bus/ari_ring.sv | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 rtl/bus/ari_ring.sv (limited to 'rtl/bus/ari_ring.sv') diff --git a/rtl/bus/ari_ring.sv b/rtl/bus/ari_ring.sv new file mode 100644 index 0000000..48062c7 --- /dev/null +++ b/rtl/bus/ari_ring.sv @@ -0,0 +1,52 @@ +// +// Copyright (c) 2026, Apollo Telephone Laboratories. +// Provided under the BSD-3 clause. +// + +`include "bus/ari.svh" + +// +// Represents a ring of ARI segments which forms a single +// bus channel. +// +// @clk_i: Clock input +// @reset_i: Reset input +// @tap_i: Segment taps +// +module ari_ring ( + input wire clk_i, + input wire reset_i, + input AriFrame tap_i[0:ARI_SEGMENT_COUNT-1] +); + // Segment feeders + AriFrame seg3_feed; + AriFrame seg2_feed; + AriFrame seg1_feed; + + // Segment 0 + ari_segment seg0 ( + .clk_i(clk_i), + .reset_i(reset_i), + .ingress_i(seg3_feed), + .tap_i(tap_i[0]), + .egress_o(seg1_feed) + ); + + // Segment 1 + ari_segment seg1 ( + .clk_i(clk_i), + .reset_i(reset_i), + .ingress_i(seg1_feed), + .tap_i(tap_i[1]), + .egress_o(seg2_feed) + ); + + // Segment 2 + ari_segment seg2 ( + .clk_i(clk_i), + .reset_i(reset_i), + .ingress_i(seg2_feed), + .tap_i(tap_i[2]), + .egress_o(seg3_feed) + ); +endmodule -- cgit v1.2.3