Signal arbiter
11494315 · 2022-11-08
Assignee
Inventors
Cpc classification
H03K19/20
ELECTRICITY
International classification
H03K19/00
ELECTRICITY
G06F9/448
PHYSICS
Abstract
An arbiter for use with a plurality of request signals is presented. The arbiter includes a sequence identifier to identify an order between the plurality of request signals. The arbiter provides a plurality of output signals in which each output signal is associated with a request signal. When the request signals are provided in a sequential order the output signals are provided in the identified sequential order. When the request signals are provided substantially at the same time the output signals are provided in an arbitrary sequential order. A corresponding signal arbitration method and an electronic circuit comprising the arbiter are also presented.
Claims
1. An arbiter for use with three or more request signals, wherein each request signal is generated by a separate request signal generator; the arbiter comprising a sequence identifier adapted to identify an order between the three or more request signals; wherein the sequence identifier comprises three or more memory cells arranged in parallel, each memory cell being configured to identify and store an order between two requests among the three or more request signals; the arbiter being adapted to provide three or more output signals each output signal being associated with a request signal among the three or more request signals, wherein when the three or more request signals are provided in a sequential order the three or more output signals are provided in the identified sequential order, and when the three or more request signals are provided substantially at the same time the three or more output signals are provided in an arbitrary sequential order.
2. The arbiter as claimed in claim 1, comprising an input stage to receive the three or more request signals, wherein the input stage comprises three or more filter cells to filter the three or more request signals.
3. The arbiter as claimed in claim 2, wherein each filter cell is adapted to receive a dedicated lock signal to lock the filter cell for a required duration.
4. The arbiter as claimed in claim 2, wherein the input stage comprises an AND gate coupled to the output of a filter cell.
5. The arbiter as claimed in claim 1, wherein each memory cell is adapted to receive two input logic signals and hold one of the signals high and the other low based on their order of arrival.
6. The arbiter as claimed in claim 1, wherein the three or more memory cells comprise three or more mutual exclusion cells.
7. The arbiter as claimed in claim 1, wherein each memory cell is coupled to two different filter cells to receive two different filtered request signals.
8. The arbiter as claimed in claim 1, wherein the sequence identifier comprises a logic circuit coupled to the three or more memory cells to identify the sequential order.
9. The arbiter as claimed in claim 8, wherein the logic circuit comprises a plurality of AND gates, each AND gate being coupled to the outputs of at least two memory cells for receiving logic signals associated with a same request.
10. The arbiter as claimed in claim 8, further comprising a second feedback loop adapted to prevent an overlap between one or more output signals.
11. The arbiter as claimed in claim 10, wherein the second feedback loop comprises a plurality of NOR gates, each NOR gate being coupled to the logic circuit of the sequence identifier.
12. The arbiter as claimed in claim 1, further comprising a forbidden state circuit adapted to identify the occurrence of a forbidden state, and upon identification to arbitrarily select a pending request signal to provide a corresponding output signal.
13. The arbiter as claimed in claim 12, wherein the forbidden state circuit is adapted to disable momentarily at least one request signal upon identifying the occurrence of the forbidden state.
14. The arbiter as claimed in claim 12, wherein the forbidden state is a state in which several request signals arrive at substantially the same time.
15. The arbiter as claimed in claim 12, wherein the forbidden state circuit includes a first feedback loop comprising a plurality of OR gates coupled to a timing circuit, the timing circuit being adapted to prevent a false detection of a forbidden state.
16. The arbiter as claimed in claim 15, wherein each OR gate is coupled to a corresponding memory cell of the sequence identifier, and wherein the output of the timing circuit is coupled to an input stage to receive the three or more request signals.
17. The arbiter as claimed in claim 15, wherein the timing circuit comprises a NAND gate having a first input coupled to a first path, and a second input coupled to a second path, wherein the first path comprises a NOR gate adapted to receive the output signals, and wherein the second path comprises an AND gate adapted to receive the outputs of the OR gates and the inverted output signals.
18. A signal arbitration method comprising the steps of receiving three or more request signals, wherein each request signal is generated by a separate request signal generator; identifying an order between the three or more request signals using a sequence identifier; wherein the sequence identifier comprises three or more memory cells arranged in parallel, each memory cell being configured to identify and store an order between two requests among the three or more request signals; providing three or more output signals each output signal being associated with a request signal among the three or more request signals, wherein when the three or more request signals are provided in a sequential order the three or more output signals are provided in the identified sequential order, and when the three or more request signals are provided substantially at the same time the three or more output signals are provided in an arbitrary sequential order.
19. An electronic circuit comprising an arbiter, wherein the arbiter comprises a sequence identifier adapted to identify an order between three or more request signals, wherein each request signal is generated by a separate request signal generator; wherein the sequence identifier comprises three or more memory cells arranged in parallel, each memory cell being configured to identify and store an order between two requests among the three or more request signals; the arbiter being adapted to provide three or more output signals each output signal being associated with a request signal among the three or more request signals, wherein when the three or more request signals are provided in a sequential order the three or more output signals are provided in the identified sequential order, and when the three or more request signals are provided substantially at the same time the three or more output signals are provided in an arbitrary sequential order.
20. The electronic circuit as claimed in claim 19, the electronic circuit further comprising an arbiter controller, the arbiter controller being adapted to generate a plurality of lock signals, each lock signal being associated with a corresponding filter cell of the arbiter.
21. The electronic circuit as claimed in claim 20 further comprising a switching converter coupled to the arbiter, the switching converter being adapted to provide the three or more request signals.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) The disclosure is described in further detail below by way of example and with reference to the accompanying drawings, in which:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
DETAILED DESCRIPTION
(17)
(18) The operation of MUTEX cells is also described in section 2.4.1 of Phd Thesis titled “Variation Tolerant Design of Arbiters and Synchronizers” by Mohammed Saleh Abdullah Alshaikh, University of Newcastle upon Tyne, School of Electrical, Electronic and Computer Engineering, January 2014.
(19)
(20) In operation, the rising edge of the logic signals R1 and R2 may occur at different times. If R1 rises before R2, then the output signal G1 goes high (for instance logic 1) and G2 is held low (logic 0). Conversely, if R2 rises before R1, then the output signal G2 goes high (for instance logic 1) and G1 is held low (logic 0).
(21) If R1 and R2 rise at the same time, then the MUTEX cell selects either G1 or G2. Stated another way, only one of G1 and G2 goes high, while the remaining signal is held low.
(22) As a result a MUTEX cell can be used to prevent a circuit to be trapped in a state that is neither a stable 0 nor a stable 1, also referred to as metastable state. A metastable state can lead to the circuit behaving in an unpredictable way and potentially to system failure.
(23)
(24)
(25)
(26)
(27) In operation, the filter cells W.sup.1, W.sup.2, W.sup.3 are used to filter glitches on the request signals v0_req, v1_req and v2_req, respectively. The filter cells remain set until the go_shared signal is lowered. When the go_shared signal goes low, for instance from logic 1 to logic 0, the cell W.sup.1 is cleared and the output of W.sup.1 goes low. Conversely when the go_shared signal goes high, the output of W.sup.1 is v0_req. The same occurs for W.sup.2 and W.sup.3. The go_shared signal is cleared after a channel is serviced and is used to trigger a new decision round.
(28) The MUTEX cells M.sup.1, M.sup.2 and M.sup.3 are used to deal with metastability and mutual exclusivity of the granted signals. For instance if the two inputs provided to M.sup.1 both rise at the same time, the MUTEX cell will randomly select one of the two inputs to ripple through towards the output. If an output was already set due to its corresponding input, the other output will be held low.
(29)
(30) In this example, the signal v2_req is never addressed because v0_req and v1_req demand too much bandwidth. In case more than one request is active, the arbiter will select randomly any of the pending requests. This might be an unfair decision due to internal delays that are depending on operating conditions or because the MUTEX cell is not properly balanced.
(31)
(32)
(33)
(34) The input stage 710 is adapted to receive a plurality of request signals in a sequential order. The request signals are digital signals each one having a specific rise time and on-time duration, however two or more signal could rise at the same time or within a short time window.
(35) Several request signals may be considered to arrive at substantially the same time if they arrive within a time window of less than a threshold value. The threshold value may vary depending on the type of logic circuit being used. Typically, the threshold value may be less than about 1 nanosecond. The request signals are filtered and passed to the sequence identifier 720. The sequence identifier 720 is adapted to identify the sequential order of the request signals, and to provide a plurality of output signals. Each output signal is associated with a given request signal and may be referred to as a granted signal. The output or granted signals are provided in the same sequential order previously identified.
(36) The first feedback loop 730 also referred to as forbidden state circuit, is adapted to disable at least one request signal upon identifying the occurrence of a forbidden state also referred to as a stuck state. The forbidden state may be a state in which several request signals arrive at substantially the same time. For instance for three request signals all request signals arrive at substantially the same time. For four request signals three or four request signals may arrive at substantially the same time. More generally considering N request signals (with N≥3), a forbidden state may be a state in which if N=3 the 3 request signals arrive at substantially the same time and if N is greater than 3, N or N−1 request signals may arrive at substantially the same time. For instance, a forbidden state may be a state in which all the request signals arrive at substantially the same time and no output signal is provided by the arbiter. A probability of occurrence of a stuck state is relatively small, however the first feedback loop permits to avoid the arbiter being trapped in such a state.
(37) The forbidden state circuit 730 may be implemented in various fashions and not necessarily as a feedback loop. For instance, a forbidden state circuit may be used in series with the sequence identifier.
(38) The second feedback loop 740, also referred to as second feedback stage, is adapted to prevent an overlap between one or more output signals. The second feedback loop is optional.
(39) The asynchronous arbiter 700 permits to ensure that all requests get serviced equally and in the original order.
(40)
(41) The input stage 810 includes three filter cells, labelled W.sup.1, W.sup.2 and W.sup.3 for filtering the request signals. In this example the filter cells W.sup.1, W.sup.2 and W.sup.3 may be implemented as described in
(42) The sequence identifier 820 includes three memory cells. Each memory cell is adapted to receive two input logic signals and hold one of the signals high and the other low based on their order of arrival. In this example the memory cells are implemented using the MUTEX cells M.sup.1, M.sup.2, and M.sup.3. Each MUTEX cell has a pair of inputs (first input at the top and second input at the bottom) and a pair of outputs (first output at the top and second output at the bottom). For instance, the MUTEX cells may be implemented as described in
(43) These MUTEX cells M.sup.1, M.sup.2, and M.sup.3 are therefore provided in a parallel arrangement in which every possible combination between two channels is captured: M.sup.1 identifies and stores the order between v0 and v1, M.sup.2 identifies and stores the order between v0 and v2, M.sup.3 identifies and stores the order between v1 and v2. The order between request signals is updated when a request is translated into a grant signal. For instance, with reference to M.sup.1, the v0_granted signal (output of A.sup.0) goes high at time t2. The corresponding go_v0 signal can only go low after t2. When g0_v0 goes low the output of W.sup.1 is also lowered and the relative order between v0 and v1 is lost. The MUTEX cells M.sup.1, M.sup.2 and M.sup.3 operate in parallel to identify and store the order of the request signals.
(44) The logic circuit 822 includes three AND gates A.sup.0, A.sup.1, and A.sup.2. Each AND gate is associated with a specific channel. In this example A.sup.0, A.sup.1, A.sup.2 are 3-inputs AND gates associated with the channels v0, v1 and v2 respectively. The AND gate A.sup.0 has a first input to receive a first feedback signal from the second feedback loop 840, a second input to receive the first output of M.sup.1 and a third input to receive the first output of M.sup.2. The AND gate A.sup.1 has a first input to receive a second feedback signal of the second feedback loop 840, a second input to receive the second output of M.sup.1 and a third input to receive the first output of M.sup.3. The AND gate A.sup.2 has a first input to receive a third feedback signal of the second feedback loop 850, a second input to receive the second output of M.sup.2 and a third input to receive the second output of M.sup.3. The outputs of the logic circuit 822 are coupled to the first feedback loop 830, to the second feedback loop 840 and to the output of the arbiter for providing the granted signals v0_granted, v1_granted, and v2_granted.
(45) The first feedback loop 830 includes three OR gates O.sup.1, O.sup.2 and O.sup.3 coupled to a timing circuit 832. The OR gate O.sup.1 has a first input to receive the first output of M.sup.1 and a second input to receive the second output of M.sup.1. Similarly, the OR gate O.sup.2 has a first input to receive the first output of M.sup.2 and a second input to receive the second output of M.sup.2. The OR gate O.sup.3 has a first input to receive the first output of M.sup.3 and a second input to receive the second output of M.sup.3.
(46) The timing circuit 832 includes a NAND gate having a first input coupled to a first path, and a second input coupled to a second path. The first path also referred to as fast path extends from the output of the MUTEX cells to the first input of the NAND gate and comprises the AND gates 822 and a NOR gate adapted to receive the output signals v0_granted, v1_granted and v2_granted. The second path also referred to as slow path extends from the output of the MUTEX cells to the second input of the NAND gate and comprises the OR gates O.sup.1, O.sup.2, O.sup.3 and a 6-inputs AND gate adapted to receive the outputs of the OR gates and the inverted output signals. Taking into account the logic gates present in each path and the wiring connecting the logic gates together, the first path introduces a shorter delay than the second path.
(47) The AND gate has six inputs. The three inverters are provided at the first, second and third inputs respectively coupled to the output of the first, second and third AND gates A.sup.0, A.sup.1, A.sup.2. The remaining three inputs are coupled to the outputs of the OR gates O.sup.1, O.sup.2 and O.sup.3.
(48) The NOR gate has three inputs to receive the output of the first, second and third AND gates A.sup.0, A.sup.1, A.sup.2 respectively. The NAND gate has a first input coupled to the output of the NOR gate and a second input coupled to the output of the AND gate via a buffer. The output of the NAND gate is coupled to the AND gate A of the input stage 810.
(49) The second feedback loop 840 includes three NOR gates N.sup.0, N.sup.1, N.sup.2 to provide the first, second and third feedback signals. The NOR gate No has a first input coupled to the output of A.sup.1 and a second input coupled to the output of A.sup.2. The NOR gate N.sup.1 has a first input coupled to the output of A.sup.0 and a second input coupled to the output of A.sup.2. The NOR gate N.sup.2 has a first input coupled to the output of A.sup.0 and a second input coupled to the output of A.sup.1.
(50) In operation, the input stage 810 is used to filter glitches on the request signals v0_req, v1_req and v2_req, respectively. In contrast with the circuit of
(51) The filtered request signals v0_req, v1_req and v2_req are then passed to the sequence identifier 820 to identify the sequence of the request signals. The MUTEX cell M.sup.1 is used to identify if the request signal v0_req is before or after v1_req. If v0_req rises before v1_req, then the first output signal goes high (for instance logic 1) and the second output signal is held low (logic 0). On the contrary if v1_req rises before v0_req rises, then the second output signal goes high and the first output signal is held low. If v0_req and v1_req rise at substantially the same time, then the MUTEX cell selects either v0_req and v1_req. Similarly M.sup.2 is used to identify if the request signal v0_req is before or after v2_req. The MUTEX cell M.sup.3 is used to identify if the request signal v1_req is before or after v2_req. The MUTEX cells then store the exact order of requests. The outputs of the MUTEX cells M.sup.1, M.sup.2 and M.sup.3 are then passed to the logic circuit 822 and to the first feedback loop 830.
(52) The logic circuit 822 is configured to determine whether any request signal arrived first, compared to all others. For instance, v0_req can only be first if it was before v1_req and v2_req. The two MUTEX cells that have those combinations should have chosen in favour of v0_req. In this example this is achieved using AND gates, however other implementations could be envisaged. The AND gates A.sup.0, A.sup.1, A.sup.2 of the logic circuit 822 provide a high output only if all the inputs signals are high. The output of A.sup.0 is high when the first output of M.sup.1, the first output of M.sup.2 and the output of N.sup.0 are all high (for instance logic 1). This can only happen when v0_req is before v1_req and before v2_req. The output of A.sup.1 is high when the second output of M.sup.1, the first output of M.sup.3 and the output of N.sup.1 are all high. This can only happen when v1_req is before v0_req and before v2_req. Similarly, the output of A.sup.2 is high when the second output of M.sup.2, the second output of M.sup.3 and the output of N.sup.2 are all high. This can only happen when v2_req is before v0_req and before v1_req.
(53) The AND gates A.sup.0, A.sup.1, A.sup.2 provide the output signals v0_granted, v1_granted and v2_granted. These output signals are provided to the timing circuit 832 of the first feedback loop 830, the second feedback loop 840, and the output of the arbiter.
(54) The first feedback loop 830 is designed to prevent the arbiter being trapped in a forbidden or stuck state. If the three requests occur at the same time, there is a possibility that all MUTEX cells choose to serve a different signal, leading to a form of uncertainty. In this scenario the arbiter ends up in a so-called stuck state. Considering the example of 3-inputs there are two possible stuck states as follows: i) M.sup.1 serves v0, M.sup.2 serves v2 and M.sup.3 serves v1. ii) M.sup.1 serves v1, M.sup.2 serves v0 and M.sup.3 picks v2.
(55) In case of additional inputs the number of stuck states grows exponentially.
(56) The three OR gates O.sup.1, O.sup.2, O.sup.3 detect the situation that all MUTEX cells decided. The OR gates O.sup.1, O.sup.2, O.sup.3 provide a high output (logic 1) if at least one input is high. Therefore, when M.sup.1 serves v0 or v1 the output of O.sup.1 is 1; when M.sup.2 serves v0 or v2 the output of O.sup.2 is 1 and when M.sup.3 serves v1 or v2 the output of O.sup.3 is 1.
(57) A stuck state occurs if all MUTEX cells made a decision and none of the output signals v0_granted, v1_granted and v2_granted are set, that is only if these signals are held low (logic 0).
(58) To identify the occurrence of a potential stuck state, the outputs of the OR gates are combined into the 6-input AND gate together with the three outputs signals of the arbiter. The six-inputs AND gate receives two sets of signals.
(59) The first set includes the outputs of O.sup.1, O.sup.2, O.sup.3. The second set includes the inverted signals v0_granted, v1_granted and v2_granted.
(60) The 3-input NOR gate receives the signals v0_granted, v1_granted and v2_granted. The NOR gate and the 6-inputs AND gate both indicate if no request signal was granted. The difference is that the timing path through the NOR gate should be much faster than the timing path through the 6-inputs AND gate. Only if both inputs (first and second paths) of the NAND gate are true (logic 1), a stuck state is entered, and the NAND gate provides a logic 0. This can only happen if three requests came at the same time and before no request was pending. In that case any of the pending requests could be served.
(61) To leave this stuck state, the v2_req signal is temporary disabled such that a grant of request v0 or v1 will ripple through. This is achieved by the AND gate A of the input stage 810. When A receives a logic 0 its output can only be 0. When the stuck state disappears the v2_req signal is re-entered back into the queue. The overall order is irrelevant as the stuck state can only occur if all three requests arrive at the same time. It will be appreciated that the first feedback loop 830 may be implemented using different logic circuitry.
(62) During a transition from one granted request to the next, it might happen that there is overlap depending on internal delays and different cell sizes. The second feedback loop 840 is used to prevent an overlap between two granted requests and therefore enable systematic mutual exclusivity of the granted signals.
(63) Each NOR gate N.sup.0, N.sup.1, N.sup.2 provides a feedback signal to a corresponding AND gate A.sup.0, A.sup.1, A.sup.2, respectively. As a result, any signal grant can only occur when the other grants have been lowered. For instance N.sup.0 receives v1_granted and v2_granted and provides a first feedback signal to A.sup.0. If the signals v1_granted and v2_granted are both low (logic 0) then the first feedback is high (logic 1). If at least one of the v1_granted signal and the v2_granted signal is high (logic 1) then the first feedback is low (logic 0). Similarly N.sup.1 receives v0_granted and v2_granted and provides a second feedback signal to A.sup.1. The NOR gate N.sup.2 receives v0_granted and v1_granted and provides a third feedback signal to A.sup.2. It will be appreciated that the second feedback loop 840 may be implemented using different logic circuitry.
(64)
(65) At an initial time t0, the go signals go_v0, go_v1, and go_v2 rise from logic 0 to logic 1. At time t1, the v0_req signal goes high, M.sup.1 serves v0_req and M.sup.2 serves v0_req. At time t1′ the v0_req is low and shortly after the go_v0 signal goes low, hence clearing the filter cell W.sup.1 and lowering one input request of the MUTEX cells M.sup.1 and M.sup.2. Similarly the go_v1 signal goes low after time t2′ once v1_req has been served, hence clearing the filter cell W.sup.2 and lowering one input request of the MUTEX cells M.sup.1 and M.sup.3. The go_v2 signal goes low after time t3′ once v2_req has been served, hence clearing the filter cell W.sup.3 and lowering one input request of the MUTEX cells M.sup.2 and M.sup.3.
(66) It will be appreciated that the arbiter will also operate when v0_req is not lowered. In this scenario the v0_req will be set back in the queue without disrupting any pending requests.
(67) The signals v0_granted, v1_granted and v2_granted are provided in the same order as the request signals. The signal v0_granted goes high between the times t1 and t2 and stays on for a duration Ton. Then the signal v1_granted goes high at time t4 and stays on for a duration Ton. Then the signal v2_granted goes high at time t5 and stays on for a duration Ton. Then the signal v1_granted goes high again at time t6 and stays on for a duration Ton. Then signal v0_granted goes high again at time t7 and stays on for a duration Ton.
(68) The Ton duration may be the same for each output signal or may vary for different output signals. In general the request signal goes low before the go signal goes low. However this is not an absolute requirement and the go signal may go low while the corresponding request signal remains high.
(69) As a result, the v2_granted signal is no longer starved and new requests are always placed back in line. In addition, the arbiter of the disclosure ensures that the 4.sup.th and 5.sup.th requests are keeping the correct order while being queued as the 3.sup.rd request has not finished yet.
(70) The arbiter of
x=n(n−1)/2.
(71)
(72) The arbiter 1000 has an input stage 1010, a sequence identifier 1020, a first feedback loop 1030 and a second feedback loop 1040.
(73) The input stage 1010 has four filter cells W.sup.1, W.sup.2, W.sup.3, W.sup.4 and two AND gates provided at the output of W.sup.3 and W.sup.4. The output of each filter cell is received by three Mutex cells. For instance, the output of W.sup.1 is received by M.sup.1, M.sup.2 and M.sup.3.
(74) The sequence identifier 1020 has six MUTEX cells M.sup.1-M.sup.6 and four 4-inputs AND gates A.sup.0-A.sup.3. Each AND gate receives the output of three MUTEX cells and a feedback signal from the second feedback loop 1040. For instance, A.sup.0 receives the first output of M.sup.1, M.sup.2 and M.sup.3 as well as the feedback signal from N.sup.0.
(75) The first feedback loop 1030 has six OR gates O.sup.1-O.sup.6 coupled to the timing circuit 1032. The second feedback loop 1040 has four NOR gates N.sup.0-N.sup.3.
(76) Although the number of digital elements has changed the general principle of operation remains similar as described with respect to
(77) The arbiter of the disclosure could be used as part of various electronic systems, including asynchronous controllers. The arbiter circuit of the disclosure is also particularly useful in applications in which the order of request should be preserved.
(78)
(79) Each output of the Buck converter is provided with a comparator for comparing the output voltage with a reference value, and to output a request signal. In this example the Buck converter has four outputs for providing the output voltages v0, v1, v2 and v3, and four comparators Comp0, Comp1, Comp2 and Comp3 for generating the request signals v0_req, v1_req, v2_req and v3_req respectively.
(80) In operation, when the system is ready the arbiter controller 1124 generates and send the go signals to the input stage of the arbiter 1122. The arbiter controller also receives the grant signals from the arbiter 1122 as a feedback. If the voltage v0 is below a reference value, then the comparator Comp0 may provide the request signal v0_req as a high logic signal. Then the main controller 1126 controls the operation of the buck converter to increase the voltage v0. When the output voltage v0 is back to a level above the reference value, the arbiter controller lowers the corresponding go signal. The same control operation applies for the channels v1, v2 and v3.
(81) The arbiter of the disclosure is advantageous for arbitration during high loads. In situations in which the number of requests exceeds the capacity of the converter, it is important to preserve the order of request. This permits to distribute the requests consistently, and not just to a few requests while excluding others. If priority is always given to the same request, for instance the first request, then the system may fail or starve. The arbiter of the disclosure permits to serve each request in the same order of incoming requests, hence preserving the operation of the whole system. In addition, the arbiter can operate even when multiple requests arrive at sensibly the same time or within a short time window, hence preventing the system being stuck in a deadlock or forbidden state.
(82) A skilled person will appreciate that variations of the disclosed arrangements are possible without departing from the disclosure. Accordingly, the above description of the specific embodiments is made by way of example only and not for the purposes of limitation. It will be clear to the skilled person that minor modifications may be made without significant changes to the operation described.