summaryrefslogtreecommitdiff
path: root/rtl/bus/ari_ring.sv
diff options
context:
space:
mode:
authorIan M. <ian@aptel.org>2026-09-26 02:58:16 +0000
committerIan M. <ian@aptel.org>2026-09-26 02:58:40 +0000
commit789c6304aa8ef6c4ed6049c3521cb32809b219ad (patch)
tree1b53a8fa0c7d327f48a98d448523418e756833fa /rtl/bus/ari_ring.sv
parent662c81b33d812a69cdbfa9a1e148ae4b73d43b90 (diff)
bus: ari: Implement ARI interconnect groundwork
Signed-off-by: Ian M. <ian@aptel.org>
Diffstat (limited to 'rtl/bus/ari_ring.sv')
-rw-r--r--rtl/bus/ari_ring.sv52
1 files changed, 52 insertions, 0 deletions
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