diff options
Diffstat (limited to 'rtl/bus/ari_ring.sv')
| -rw-r--r-- | rtl/bus/ari_ring.sv | 52 |
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 |
