Communication over a network
By configuring data frames to be an integer multiple of the receiver's lanes and using null words, the solution addresses asymmetric lane issues in communication links, ensuring efficient and compliant data transmission in SpaceFibre networks.
Patent Information
- Application Number
- GB2023019785
- Authority / Receiving Office
- GB · GB
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2023-12-21
- Publication Date
- 2025-12-19
- Estimated Expiration
- 2043-12-21
AI Technical Summary
Conventional communication links face issues when transmitters and receivers have asymmetric numbers of lanes, leading to buffer overflow, unexpected data structures, and protocol violations due to asymmetry, which are not addressed by existing interfaces designed for symmetric lane configurations.
The proposed solution involves configuring data frames to be an integer multiple of the number of lanes supported by the receiver, using null words to ensure complete filling of buffer rows, and implementing flow control to manage buffer space, thereby maintaining compliance with communication protocols.
This approach reduces processing overheads and prevents protocol violations, ensuring efficient data transmission and reception even with asymmetric lane configurations, particularly in SpaceFibre communication links.
Smart Images

Figure 00000001_0000 
Figure 00000002_0000 
Figure 00000002_0001
Abstract
Description
TECHNICAL FIELD
[0001] The present invention relates to devices and methods for communication over a link, such as a communication link within a network. More particularly, the present invention relates to transmitters, receivers and methods for transmitting and receiving data over one or more lanes, and between transmitters and receivers supporting communication over a different numbers of lanes. The transmitters, receivers and methods disclosed herein may be useful in the implementation of communication networks on-board spacecraft, and may, for example, be implemented with a SpaceFibre communication link. BACKGROUND
[0002] Conventional communication links, may operate by communicating data over one or more lanes, e.g., physical lanes, between a transmitter (e.g., at a near-side of the communication link) and a receiver (e.g., at a far-side of a communication link). It may be that when more than one lane is supported for communication, data may be sent over each of the lanes in parallel (e.g., to provide higher throughput). In such systems, it may be that the communication link utilizes all lanes that are supported by the transmitter and receiver for communication, or it may be that the communication utilizes a number of lanes that is less than the number of supported lanes. For example, while a given number of lanes may be supported by the transmitter and receiver for communication, one or more of the supported lanes may not be used for the communication if, for example, a line fault occurs. As a result, the number of lanes utilized for communication, i.e., active lanes, may be variable, and may be less than the number of supported lanes. While conventional interfaces may be configured to detect line faults and account for such faults, e.g., via graceful degradation, which in response to a line fault spreads the remaining traffic on the link over the active lanes, such conventional interfaces and transmitters / receivers thereof, are only designed for use with a symmetric number of lanes supported for use by each of the respective transmitter / receiver pairs.
[0003] It may be that when conventional transmitters and receivers, which comprise a different number of lanes configured for communication are used for communication, that the difference (e.g., asymmetry) in the number of supported lanes between the transmitter and receiver, results in violations or deviations in the data processing protocols used at the receiver to process the received data. For example, it may be that the difference in the number of supported lanes results in the overflow of buffers of the receiver, unexpected, or non-optimal data structures or data formats of a buffer of a receiver, or the data stored therein. It may be that modifications to the transmitting and / or receiving of data to account for the asymmetry between the number of lanes are required to maintain compliance, e.g., backwards compatibility, with data processing protocols for communication links between transmitters and receivers having the same number of supported lanes. SUMMARY OF INVENTION
[0004] Embodiments of the invention are set out in the appended claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0005] Various features of the present disclosure will be apparent from the detailed description which follows, taken in conjunction with the accompanying drawings, which together illustrate features of the present disclosure, and wherein:
[0006] FIG. lisa schematic diagram of functional blocks of a communication link comprising an example transmitter and a receiver.
[0007] FIG. 2A is a schematic diagram of a portion of a protocol stack for a communication link.
[0008] FIG. 2B is a schematic diagram of an example transmitter.
[0009] FIG. 3 illustrates the filling of a conventional receiver buffer with data from a conventional transmitter with a different number of lanes supported for communication by the transmitter and the receiver.
[0010] FIG. 4A illustrates an example data frame configuration and filling of a receiver buffer, wherein the data frame comprises at least one null word.
[0011] FIG. 4B illustrates a further example data frame configuration and filling of a receiver buffer, wherein the data frame comprises at least one null word.
[0012] FIG. 5A illustrates an example data frame configuration and filling of a receiver buffer, wherein the size of the data frame is an integer multiple of the first number of lanes.
[0013] FIG. 5B illustrates a further example data frame configuration and filling of a receiver buffer, wherein the size of the data frame is an integer multiple of the first number of lanes.
[0014] FIG. 5C illustrates a further example data frame configuration and filling of a receiver buffer, wherein the size of the data frame is an integer multiple of the first number of lanes.
[0015] FIG. 5D illustrates a further example data frame configuration and filling of a receiver buffer, wherein the size of the data frame is an integer multiple of the first number of lanes.
[0016] FIG. 6A illustrates an example data frame configuration and filling of a receiver buffer, wherein the size of the data frame is an integer multiple of the first number of lanes under a simplified case.
[0017] FIG. 6B illustrates a further example data frame configuration and filling of a receiver buffer, wherein the size of the data frame is an integer multiple of the first number of lanes under a simplified case.
[0018] FIG. 6C illustrates a further example data frame configuration and filling of a receiver buffer, wherein the size of the data frame is an integer multiple of the first number of lanes under a simplified case.
[0019] FIG. 7 illustrates a flow control procedure.
[0020] FIG. 8A illustrates an example data frame configuration and filling of a receiver buffer, wherein the configuration of the at least one data frame comprises determining whether the size of the at least one data frame exceeds a maximum data frame size.
[0021] FIG. 8B illustrates a further example data frame configuration and filling of a receiver buffer, wherein the configuration of the at least one data frame comprises determining whether the size of the at least one data frame exceeds a maximum data frame size.
[0022] FIG. 8C illustrates a further example data frame configuration and filling of a receiver buffer, wherein the configuration of the at least one data frame comprises determining whether the size of the at least one data frame exceeds a maximum data frame size.
[0023] FIG. 8D illustrates a further example data frame configuration and filling of a receiver buffer, wherein the configuration of the at least one data frame comprises determining whether the size of the at least one data frame exceeds a maximum data frame size.
[0024] FIG. 8E illustrates an example data frame configuration and filling of a receiver buffer, in a simplified case, wherein the configuration of the at least one data frame comprises determining whether the size of the at least one data frame exceeds a maximum data frame size.
[0025] FIG. 8F illustrates a further example data frame configuration and filling of a receiver buffer, in a simplified case, wherein the configuration of the at least one data frame comprises determining whether the size of the at least one data frame exceeds a maximum data frame size.
[0026] FIG. 8G illustrates a further example data frame configuration and filling of a receiver buffer, in a simplified case, wherein the configuration of the at least one data frame comprises determining whether the size of the at least one data frame exceeds a maximum data frame size.
[0027] FIG. 9 illustrates an example data frame configuration, wherein the data frame comprises a word including at least one null character.
[0028] FIG. 10 is a flow chart illustrating an example method of configuring, by a transmitter, one or more words as at least one data frame for transmission to a receiver.
[0029] FIG. 11 is a flow chart illustrating an example method of configuring, by a transmitter, one or more words as at least one data frame for transmission to a receiver including inserting at least one null word into the data frame.
[0030] FIG. 12 is a flow chart illustrating an example method of configuring, by a transmitter, one or more words as at least one data frame for transmission to a receiver including configuring the size of the at least one data frame to be an integer multiple of the first numbers of lanes.
[0031] FIG. 13 is a flow chart illustrating an example method of configuring, by a transmitter, one or more words as at least one data frame for transmission to a receiver including determining a maximum data frame size for transmission.
[0032] FIG. 14 is a schematic diagram of functional blocks of a second communication link comprising a transmitter and an example receiver.
[0033] FIG. 15 is a schematic diagram of an example receiver.
[0034] FIG. 16 illustrates an example data frame configuration and a configuration of a data frame stored in a buffer of the receiver, wherein the stored data frame comprises at least one inserted null word.
[0035] FIG. 17A illustrates an example data frame configuration and a configuration of a data frame stored in a buffer of the receiver, wherein the receiver is configured to log a location in the buffer in which a last word of a first data frame received by the receiver is stored, and store a first word of a subsequent data frame adjacent the last word of the first data frame.
[0036] FIG. 17B illustrates a further example data frame configuration and a configuration of a data frame stored in a buffer of the receiver, wherein the receiver is configured to log a location in the buffer in which a last word of a first data frame received by the receiver is stored, and store a first word of a subsequent data frame adjacent the last word of the first data frame.
[0037] FIG. 18A illustrates an example buffer of the receiver comprising free space and allocated space.
[0038] FIG. 18B illustrates a further example buffer of the receiver comprising free space and allocated space.
[0039] FIG. 19 is a flow chart illustrating an example method to be performed by a receiver to modify how at least row of a buffer of the receiver is filled.
[0040] FIG. 20 is a flow chart illustrating an example method comprising providing one or more inserted null words in a data frame stored in a buffer of the receiver.
[0041] FIG. 21 is a flow chart illustrating an example method comprising logging a location in the buffer in which a last word of a first data frame received by the receiver is stored and storing a first word of a second data frame, subsequently received by the receiver, at an adjacent location in the buffer.
[0042] FIG. 22 is a flow chart illustrating an example method of signalling a transmitter with an indication of allocated space.
[0043] FIG. 23A is a schematic diagram of a communication interface.
[0044] FIG. 23B is a schematic diagram of a communication network.
[0045] FIG. 23C is a schematic diagram of a computer readable medium. DETAILED DESCRIPTION
[0046] The present disclosure describes methods and devices (e.g., transmitters and receivers) for communication over a link comprising a transmitter and a receiver having a different number of lanes configured (e.g., supported) for communication. The methods and devices described herein may reduce overheads associated with processing of data received by and e.g., stored in a buffer of the receiver, and / or prevent violations imposed by a conventional data processing protocol, or wider communication link standard, in an effort to reduce faults, or error messaging arising during communication over a link with an asymmetric number of supported lanes.
[0047] The term conventional is used herein to describe a transmitter, a receiver, or method performed thereby that is configured to communicate with a respective, corresponding receiver or transmitter that supports the same number of lanes for communication, i.e., a transmitter and / or receiver (or method thereof) that is configured for symmetric single-lane or multi-lane communication.
[0048] The transmitter, receiver and methods disclosed herein may be applicable to any type of communication link, and specifically any type of serial communication link, that is configured to communicate over lanes (e.g., physical lanes). In particular, the present disclosures may be advantageous for communication links used on-board spacecraft. The transmitter, receiver and methods thereof described herein may be part of, or integratable with, for example, any communication link, or interfaces thereof, and may form part of a communication network. For example, the transmitter may be part of an interface at a near-side of a communication link and / or, the receiver may be part of an interface at a far-side of a communication link.
[0049] In the following description, for the purposes of explanation, numerous specific details of certain examples are set forth. Reference in the specification to "an example" or similar language means that a particular feature, structure, or characteristic described in connection with the example is included in at least that one example, but not necessarily in other examples. It should also be understood that examples may be combined in any combination where feasible.
[0050] Figure 1 illustrates a communication link 100 having a receiver 110 comprising logic 112 and a first number of lanes 114 for communication, and a transmitter 102 comprising logic 104 and a second number of lanes 106 for communication, where the first number of lanes 114 is different from the second number of lanes 106, i.e., the transmitter 102 and receiver 110 comprise a non-symmetric (i.e., asymmetric) number of lanes.
[0051] The first number of lanes 114 illustrated in Figure 1 comprises two lanes (lane 116a and lane 116b) and the second numbers of lanes 106 comprises three lanes (lane 108a, lane 108b, lane 108c). However, the first number and second number of lanes may be any asymmetric number of lanes. For example, the transmitter 102 may comprise one lane and the receiver may comprise more than one lane (e.g., two lanes), or vice versa. Alternatively, both the transmitter 102 and the receiver 110 may comprise more than one lane, where the first number of lanes and the second number of lanes are different. For example, the transmitter may comprise between 1 and 16 lanes (inclusive), and the receiver may comprise between 1 and 16 lanes (inclusive).
[0052] It may be that the first number of lanes 114 and / or the second number of lanes 106 are the respective number of lanes of the receiver or transmitter configured for communication, i.e., supported for communication. As described above, and shown in Figure 1 it may be that the number of lanes of the transmitter and / or receiver utilized by the link for communication 118 (i.e., the number of active lanes 118 of the communication link) is equal to, or less than, the lesser of the first number of lanes 114 and the second number of lanes 106. For example, it may be that in the case of a lane fault, the number of active lanes may be less than the lesser of the first number of lanes and the second number of lanes. For example, as illustrated in Figure 1, the number of active lanes 118 may comprise at least one active lane, or may comprise two lanes (the second active lane illustrated in Figure 1 by dashed markings).
[0053] It may be that the one or more communication lanes 118 (e.g., active communication lanes 118) are uni-directional or bi-directional lanes. It may be that, as illustrated in Figure 1, at least one of the one or more communication lanes 118 (e.g., active lanes) is a bi-directional lane. However, the communication link is not so limited.
[0054] It may be that the lanes e.g., the first number of lanes 114 and second number of lanes 106 are physical lanes, for example the lanes may be one or more of electrical and fibre optic cables. For example, it may be that the communication link 100 operates over electrical and / or optical cable.
[0055] It may be that the communication link 100 is a serial communication link, or a serial data-link.
[0056] It may be that the communication link 100 is configured for use on-board spacecraft. For example, it may be that the communication link 100 is configured for use as a spacecraft on-board data-link and may be configured to support a plurality of spacecraft on-board communication applications. In particular, it may be that the communication link 100 is configured to support payloads (e.g., high data-rate payloads) associated with spacecraft instrumentation, such as Synthetic Aperture Radar (SAR) and / or multi-spectral imaging instruments.
[0057] It may be that the communication link 100 is configured for (i.e., configured to provide) quality of service (QoS) (e.g., a predetermined quality of service) and / or fault detection, isolation and recovery (FDIR).
[0058] It may be that the communication link 100 is configured to provide at least lGbps (Gigabits per second) data-rates per lane, e.g., with radiation tolerant technology (e.g., radiation tolerant, or hardened, processors, such as radiation tolerant or hardened FPGAs). It may be that the communication link 100 is configured to provide at least 2.5, or e.g., 3.125 Gbps data-rates, and may, for example, by configured to support communication between a plurality of enabled devices over a single communication link, which may reduce cable harness mass and simplify redundancy strategies. It may also be that when the communication link 100 uses more than one lane (e.g., more than one active lane) it is configured to provide higher data-rates, e.g., data rates of at least lOGbps.
[0059] It may be that the communication link 100 is, or is compatible with, a SpaceFibre communication link, and / or devices configured for use with SpaceFibre. For example, the communication link 100 may be or may be compatible with a SpaceFibre communication link configured to use an asymmetric number of lanes.
[0060] SpaceFibre is a communication standard published and maintained by the European Cooperation for Space Standarization (ECSS). SpaceFibre is established as one of the main data-handling protocols used on-board spacecraft and is used on many ESA (European Space Agency), NASA (National Aeronautics and Space Administration) and JAXA (Japan Aerospace exploration Agency) spacecraft. SpaceFibre is established as a standard that provides a very high-speed serial data-link for high data-rate payloads. SpaceFibre compliments the capabilities of the widely implemented SpaceWire standard.
[0061] For example, the communication link 100 may be, or may be compatible with a SpaceFibre link according to the ECSS standard ECSS-E-ST-50-11C released 15 May 2019, or any future modification thereof. For example, the communication link 100 may be backwards compatible with SpaceFibre and SpaceFibre devices.
[0062] By way of background, Figure 2A illustrates a protocol stack 200 of an interface of a conventional communication link. For example, a (conventional) interface of a conventional SpaceFibre communication link, in accordance with the ECSS-E-ST-50-11C standard. The stack 200 comprises a network layer 202 and a data link layer 204. The data link layer 204 comprises one or more output (or transmitter, e.g., transmitter 102) buffers 206 and one or more input (or receiver) buffers 208. As illustrated in Figure 2A, the transmitter buffer 206 is a Virtual Channel Buffer (VCB) and the receiver buffer 208 is a VCB, however, they are not so limited. It may be that the respective number of transmitter buffers 206 and receiver buffers 208 is equal to the respective number of lanes supported for communication by the respective transmitter and receiver of the communication link. Alternatively, it may be that the respective number of transmitter buffers 206 and receiver buffers 208 corresponds to the number of Virtual Channels (VCs) configured for communication, which may not correspond to (e.g., may be independent of) the number of respective lanes supported for communication. As illustrated in Figure 2A, the respective number of transmitter buffers 206 and receiver buffers 208 is the same, and is equal to N, as may be the case for conventional SpaceFibre communication links. However, the same protocol stack structure may also be adopted by communication link 100, with a different number of transmitter and receiver buffers.
[0063] The network layer 202 may receive packets comprising data written by an external device or user application for transmission over the communication link (e.g., a SpaceFibre link), and may receive packets from the communication link for reading by the external device or user application. A packet may comprise information associated with data to be transmitted, or control information. A packet comprises an arbitrary number of characters (e.g., data characters) terminated by an end-of-packet (EOP) control character or an error end-of-packet (EEP) control character. Data characters, EOPs and EEPs are collectively referred to as N-chars.
[0064] Each transmitter buffer 206 and receiver buffer 208 has a capacity of at least 256 N-chars. Equivalently each transmitter buffer 206 and receiver buffer 208 has a capacity of at least 64 words, where a word is 32-bits wide. A data word may comprise four N-chars, e.g., four data characters. A word may alternatively comprise a combination of N-chars and FILL control characters. One or more FILL control characters can follow an EOP or EEP control character in a data word to ensure that the data word contains a total of four characters e.g. 32-bits.
[0065] Packets in a transmitter buffer 206 are segmented and encapsulated into data frames for transmission over the communication link. This process is referred to in the art as framing.
[0066] Similarly, data frames received over the communication link are separated back into packets, or portions of packets, before being stored in a receiver buffer 208.
[0067] A data frame may contain zero, one, or more packets (i.e., complete packets), and may contain partial packets, e.g., at the start and / or end of the data frame. For example, a data frame may comprise exactly one packet, an initial portion of a first packet, a final portion of a first packet and an initial portion of a second (e.g., subsequent) packet, several packets, or any combination thereof. A data frame is delimited by a start of data frame (SDF) control word and an end of data frame (EDF) control word.
[0068] As described above, a communication link (such as a SpaceFibre communication link) comprises one or more lanes, e.g., physical lanes. When a communication link comprises more than one lane, words may be transmitted over the link in parallel, e.g., simultaneously. It may be that the control or data words transmitted or received simultaneously across all lanes of the communication link form a row of words. Control words in each row are typically duplicated across all lanes, and data words in each row are 'striped' sequentially across each lane.
[0069] In a conventional communication link (such as a conventional SpaceFibre communication link), where the number of lanes supported by the transmitter (e.g., second number of lanes) and the number of lanes supported by the receiver (e.g., first number of lanes) is the same (i.e., symmetric) e.g., both equal N, the number of words in each data frame is an integer multiple of the number of words in each row. In other words, in a conventional communication link each data frame comprises an integer number of rows, and the first word of each data frame is aligned with the first lane of the communication link, while the last word of each data frame is aligned with the last lane of the communication link.
[0070] A data frame in a conventional communication link (such as a conventional SpaceFibre communication link), may therefore contain up to N x 64 data words from less than one, one or more complete packets, where N is less than or equal to the (symmetric) number of lanes supported for communication across the communication link.
[0071] It may be that a communication link (such as a SpaceFibre communication link) uses Virtual Channels (VCs) to provide multiple independent communication channels over a single physical link. The data sent and received over a respective VC is stored in corresponding Virtual Channel Buffers (VCBs), i.e., a transmitter VCB and a receiver VCB. In this case, the transmitter buffers 206 are transmitter VCBs and the receiver buffers 208 are receiver VCBs. Furthermore, each data frame comprises packets, or portions of packets, associated with a single VCB.
[0072] Conventionally transmitter and receiver VCBs are partitioned into rows corresponding to rows of words transmitted and received over the communication link. Thus each VCB row comprises a number of words equal to the (symmetric) number of lanes (N) supported for communication. In other words, each row of the VCBs has a width (in words) equal to the number of lanes (N) supported for communication. Therefore, conventional transmitter and receiver VCBs comprises at least 64 / N rows, where N is the number of lanes supported for communication (otherwise referred to as the communication link width), and each row of a transmitter or receiver VCB comprises N words.
[0073] An external device or user application of a communication link (such as a SpaceFibre communication link) typically writes packets to transmitter VCBs, and reads packets from receiver VCBs, through a user interface. Each transmitter VCB and receiver VCB may have an independent, dedicated user interface. Typically the data width of each user interface corresponds to the link width of the communication link (i.e., the number of supported lanes). This allows the data rate through the user interface to scale with the data rate of the communication link. For example, a communication link with a link width of four e.g., four supported lanes and up to four active lanes, may have a VCB user interface data width of 128-bits (4 x 32-bits). A typical communication link (such as a SpaceFibre communication link) may implement AXI-Stream (AXI-S) VCB user interfaces, which are described in the AMBA AXI4-Stream Protocol specification (ARM IHI 0051A). Thus the data width of the AXI-S user interfaces typically corresponds to the link width of the communication link.
[0074] It is disclosed in the SpaceFibre standard ECSS-E-ST-50-11C that a first multi-lane SpaceFibre interface with a first link width (i.e., utilising a transmitter that comprises a second number of lanes 106) may be linked to a second multi-lane SpaceFibre interface with a second link width (i.e., uitilizing a receiver comprising a first number of lanes), where the first link width is not equal to the second link width (i.e., wherein the first number of lanes and the second number of lanes are different), if the correspondingly numbered lanes of each SpaceFibre interface are connected. The SpaceFibre communication link therefore comprises at most the lesser of the first and second link widths (i.e., the lesser of the first number of lanes and second number of lanes). However, ECSS-E-ST-50-11C does not disclose how this can be achieved. ECSS-E-ST-50-11C also does not disclose means for linking a singlelane SpaceFibre interface to a multi-lane SpaceFibre interface.
[0075] For additional background, Figure 3 shows several packets in a transmitter VCB 302 of a conventional two-lane interface (such as a conventional two-lane SpaceFibre interface), which are framed into a single data frame by the transmitter of the two-lane interface and transmitted across a communication link (e.g., a SpaceFibre communication link) to a conventional four-lane interface (such as a conventional four-lanes SpaceFibre interface). The receiver of the four-lane interface removes the framing control words and places the packets in a receiver VCB 304.
[0076] Figure 3 illustrates that if a receiver VCB 304 of a conventional four-lane interface receives packets over a link from a transmitter VCB 302 of a conventional two-lane interface, a single row of the receiver VCB 304 may contain data words from more than one packet: 306, 308. A second packet 308 in a row is shown in Figure 3 as a cross-hatched portion of receiver VCB 304. In a conventional interface, a single VCB row can contain data words from only a single packet. In other words, in a conventional interface, the first data word of each packet is aligned with the start of a receiver VCB row. More specifically, Figure 3 also illustrates that a single row of the receiver VCB 304 may contain more than one EOP or EEP N-char. The AXI-S user interface of a conventional interface can only signal a single EOP or EEP N-char in any one row of a VCB by asserting the single-bit AXI-S 'TLast' signal.
[0077] Figure 3 further illustrates that if a receiver VCB 304 of a conventional four-lane interface receives packets from a transmitter VCB 302 of a conventional two-lane interface, a single row of the receiver VCB 304 may be only partially filled with received data words 310, 312. A partially filled row is shown in Figure 3 as a dashed portion of receiver VCB 304. In a conventional interface a receiver VCB row that does not contain an EOP or EEP N-char must be completely filled by received data words.
[0078] Thus, Figure 3 illustrates that if a receiver of a conventional single-lane or multi-lane interface (e.g., conventional SpaceFibre interface) receives packets from a transmitter of a conventional singlelane or multi-lane interface (e.g., conventional SpaceFibre interface) with a different number of lanes, a single row of a buffer of the receiver may be only partially filled with received data words or may be filled with data words from more than one data packet. Such an occurrence may violate, or cause additional processing overheads to account for an unexpected event.
[0079] Thus, there exists a need to provide at least a transmitter, or a receiver, for use in a communication link, eg.,a SpaceFibre communication link (or an interface thereof) that mitigates, and / or corrects for, the unexpected deviations in how the rows of the receiver buffer are filled when at least one conventional transmitter (or receiver) that supports a different number of lanes with respect to the corresponding receiver (or transmitter), communicate over a communication link, e.g., a SpaceFibre communication link.
[0080] Such transmitters and receivers, are disclosed herein. A transmitter for use with a conventional receiver is described below with respect to Figures 1 to 9. A receiver for use with a conventional transmitter is described with respect to Figures 14 to 18.
[0081] Returning to Figure 1, the transmitter 102 is for use in the communication link 100 between the transmitter 102 and a receiver 110, where the communication link 100 is configured to communicate over one or more lanes. The receiver 110 comprises a first number of lanes 114 for communication, and the transmitter 102 comprises a second number of lanes 106 for communication. The first number of lanes 114 is different from the second number of lanes 106, i.e., the number of supported lanes is asymmetric. It may be that the receiver 110 is any receiver, such as any conventional receiver. For example, the receiver 110 may be blind to the difference between the first number of lanes and second number of lanes.
[0082] The transmitter 102 further comprises logic 104 configured to receive (from the receiver 110) for a buffer (e.g., 208) of the receiver 110 in which the data transmitted by the transmitter 102 is to be stored, an indication of the first number of lanes 114. The logic 104 is further configured to obtain one or more words associated with one or more data packets for transmission to the receiver 110 over the communication link 100 and configure the words, based on at least the first number of lanes 114, as at least one data frame for transmission to the receiver 110 over the communication link 100. The words are configured as the at least one data frame to modify how at least one row of the buffer of the receiver is filled.
[0083] It may be that the receiver buffer is configured to have a width equal to the first number of lanes. As described above, it may be that the receiver buffer is a VCB buffer, but the buffer is not so limited. It may also be that the communication link is a SpaceFibre communication link, but the communication link is not so limited.
[0084] It may be that the indication of the first number of lanes 114 is received by the transmitter 102 from the receiver 110 by way of a control word sent by the receiver 110. For example, by way of a flow control word sent by the receiver 110. For example, it may be that according to the SpaceFibre standard, the receiver 110 and transmitter 102 are configured to perform a flow control operation to manage the fill level of each input buffer (e.g., VCB) of the receiver 110, to ensure data frames received for a particular input buffer do not overflow that input buffer. It may be that following a reset of a SpaceFibre communication link 100, or as a network layer of receiver 110 of a communication link 100 reads packets from an input buffer (e.g., the buffer of the receiver 110 configured to store the received from the transmitter 102), a data link layer of the receiver 110 sends flow control words to indicate the availability of space in each input buffer (e.g., VCB). A flow control word may indicate that a particular input buffer (e.g., a VCB corresponding to a particular VC) has a given number of words of space to receive further data frames. For example, the flow control word may indicate that a particular input buffer of the receiver 110 may have an integer multiple (M) of a given number of words that the buffer is configured to store per lane of the receiver 110 (e.g., 64). It may be that M is an integer multiplier equal to the number of lanes of the receiver 110 configured for communication, i.e., the first number of lanes 114.
[0085] It may be that the indication of the first number of lanes 114 comprises a field in a symbol of the flow control word. For example, if the communication link is a SpaceFibre communication link, the indication may comprise the first field in the second symbol of the flow control word, e.g., the Multiplier (M) field of the flow control word sent by the receiver 110.
[0086] It may be that the one or more words are one or more data and / or control words. It may be that the transmitter 102 obtains the one or more words from a network layer 202.
[0087] As described above, it may be that the modification of how at least one row of the buffer is filled is configured to account for the asymmetry (i.e., difference in numbers) between the lanes supported for communication by the transmitter 102 and the receiver 110.
[0088] For example, it may be that the modification of how at least one row of the buffer is filled is configured to reduce overheads, e.g., (signal) processing overheads. For example, (signal) processing overheads associated with at least one of: error handling, error messaging, protocol violation avoidance and / or mitigation.
[0089] It may be that the obtained words are configured such that a size of at least a portion of a data frame comprising words associated with a respective data packet, is an integer multiple of the first number of lanes. For example, it may be that the configuring by the transmitter 102, or logic 104 thereof comprises configuring the words as at least one data frame with a size of at least a portion of the data frame comprising words associated with a respective data packet that is an integer multiple of the first number of lanes. This may prevent a row of the buffer of the receiver 110 from comprising words associated with more than one packet, and / or may prevent at least one row being partially filled, which may provide compliance with the signal processing protocol, e.g., the SpaceFibre standard as described above. It may be that without modification, the buffer of the receiver 110 will be filled such that violation of the signal processing protocol occurs.
[0090] For example, in the case that no EOP is included in the words to be transmitted (e.g., only a fraction of a single packet is included) the number of words configured to be sent in the entire data frame may be an integer number of the first number of lanes, and may fill an integer number of rows of the buffer. For example, it may be that the transmitter is configured to determine if at least one of the words to be transmitted is an EOP word (i.e., is a word comprising an EOP character or symbol) and, in response to determining that none of the one or more words are an EOP word, configures the data frame to be sent based on the size of the (entire) data frame being (e.g., configured as) an integer multiple of the first number of lanes.
[0091] In the case that at least one EOP is included in the words to be transmitted (e.g., one or more data packets are to be included), at least the number of words in the data frame associated with that packet will be an integer number of the first number of lanes, and will fill an integer number of rows of the buffer. For example, it may be that the transmitter is configured to determine if at least one of the words to be transmitted is an EOP word (i.e., is a word comprising an EOP character or symbol) and, in response to determining that at least one word is an EOP word, configures the data frame to be sent based on the size of (at least) a portion of the data frame comprising words associated with the respective data packet being (e.g., configured as) an integer multiple of the first number of lanes.
[0092] It may be that without the modification, in the case that the second number of lanes (supported by transmitter 102) is less than the first number of lanes (supported by receiver 110) and either no EOP is included in the words to be transmitted (e.g., only a fraction of a single packet is included), or at least one EOP is included in the words to be transmitted (e.g., one or more data packets are to be included), at least one row of the buffer is not fully filled, and / or that a row of the buffer comprises words associated with more than one packet, against the expectation of the receiver buffer, and the signal processing protocols. Such an unexpected event, or violation, may also otherwise occur in the case that the number of transmitter lanes is larger than the number of receiver lanes and is not an integer multiple of the number of receiver lanes, and where either no EOP is included in the words to be transmitted (e.g., only a fraction of a single packet is included), or at least one EOP is included in the words to be transmitted (e.g., one or more data packets are to be included).
[0093] It may be that the transmitter (e.g., 102) further comprises at least one transmitter buffer. It may be that the at least one transmitter buffer is configured to have width equal to the second number of lanes. It may be that the at least one transmitter buffer is configured to store the obtained one or more words prior to configuration as the at least one data frame. For example, as shown in Figure 2B, in addition to the second number of lanes 212, it may be that the transmitter (e.g., 102, 210) further comprises at least one buffer 214. It may be, that as illustrated, the at least one buffer is a VCB buffer. It may be that the at least one buffer 214 stores the data obtained by the transmitter, to be sent to the receiver. It may be that the number of VCB buffers corresponds to the number of virtual channels (VCs).
[0094] It may be that configuring the words comprises configuring a buffer, e.g., an output buffer, or VCB, of the transmitter 102 to configure the words that are stored in the buffer prior to the contents of the buffer being configured for transmission, e.g., prior to the contents of the buffer being sent from a data layer to a physical layer for transmission to the receiver 110. For example, it may be that the physical layer accesses a transmission medium to transmit data representing the buffer contents to the receiver. It may be that configuring the words comprises configuring the words that are stored in the buffer prior to the contents of the buffer being sent from a data layer through one or more (optional) protocol layers (e.g., lower-level protocol layers, such as multi-lane or lane layers) to a physical layer for transmission to the receiver 110.
[0095] Alternatively, or additionally, it may be that configuring the words comprises configuring the words output from the buffer, but prior to, or during transmission of the data, e.g., on-the-fly. For example, it may be that the configuring of the words, is performed (e.g., is implemented) as the data leaves the data layer, e.g., as the data flows continuously (e.g., without additional buffering) to the physical layer for transmission. Alternatively, it may be that the configuring (e.g., on-the-fly processing) is implemented in a lane layer of the protocol stack. It may be, for example in the case of the insertion of one or more null words (e.g., as trailing null words), that a selection is performed to provide the physical lane with data read from a buffer of the transmitter, or with one or more null words. It may be that the selection is based on at least the data in the buffer and the first number of lanes. It may be that the selection is further based on (or the performing of the selection is based on) a determination of whether at least one word previously read from the buffer is an EOP word.
[0096] It may be that the selection is implemented by a multiplexor. For example, a multiplexor (e.g., implemented as hardware, software, or a combination thereof) may be controlled to select between data read from the buffer of the transmitter and e.g., constant data, equivalent to a null word (e.g., an all-FILL word), for example, based on the first number of lanes. For example, it may be that the multiplexor output is configured (e.g., as default) to be data read from the transmitter buffer. An exception may occur, following an EOP symbol, if a determination based on the data stored in the transmitter buffer (e.g., based on the number of words stored in the buffer associated with a respective packet) and the first number of lanes indicates that a row of the receiver buffer will not be (completely) filled (e.g., if the number of words stored in the transmitter buffer associated with a respective packet is not an integer multiple of the first number of lanes). It may be that the multiplexor (or controller thereof) is configured to perform such a determination and in response to such a determination, the multiplexor is configured (or controlled ) to select one or more null words (e.g., all-FILL words) to provide to the physical layer.
[0097] Various example configurations of the obtained one or more words, based on at least the first number of lanes, as at least one data frame for transmission to the receiver over the communication link, such that the words are configured as the at least one data frame to modify how at least one row of the buffer of the receiver is filled, are disclosed below.
[0098] It may be that the transmitter (e.g., 102, 210) is further configured to transmit the configured data frame to the receiver via (or over) the communication link.
[0099] In an example, the transmitter (e.g., 102) (or logic thereof, e.g., 104) is configured to configure the words as the at least one data frame, wherein configuring the words comprises inserting at least one null word into the data frame, wherein the insertion is based on an end of packet word associated with the respective data packet. For example, the insertion may comprise inserting the at least one null word into a position in the data frame based on the end of packet word associated with the respective data packet.
[0100] It may be that an end of packet word is a word comprising an end of packet symbol. It may be that words associated with respective data packet, are words which, when obtained by the transmitter, are grouped within a single packet.
[0101] It may be that a null word is configured to communicate no data, e.g., a null word may be configured as a word comprising empty values. It may be that a null word indicates the position of data e.g. relative to a word or multiple-word boundary, or allows alignment of data, e,g., data at the start of a packet, relative to a word or multiple-word boundary. It may be that a null word comprises four identical symbols. It may be that, the symbols used in each null word are FILL characters, as described above. Furthermore, it may be that a null word consists of only FILL characters, and for example, may be referred to as an all-FILLs word.
[0102] It may be that inserting the at least one null word into the data frame comprises inserting the at least one null word at a pre-determined position in the data frame based on the end of packet word, i.e., inserting the null word at a predetermined position with respect to the end of packet word associated with the respective packet.
[0103] For example, the at least one null word may be inserted as a trailing word, i.e., it may be inserted adjacent to (e.g., directly following) the end of packet word associated with the data packet.
[0104] Alternatively, or additionally, it may be that the at least one null word is a leading word, i.e., it may be inserted preceding the first word associated with the respective data packet in the data frame, e.g., it may be inserted at the start of the data frame, adjacent to and following a start-of-frame word, or following an end of packet word associated with a preceding packet.
[0105] Alternatively, or additionally, it may be that the at least one null word is interspersed within the words of the data frame following the at least one word associated with the respective data packet (i.e., the first word in the data frame associated with the respective data packet) and the end of packet word associated with the data packet. For example, it may be that the at least one null word is inserted between at least one word associated with the respective data packet and the end of packet word associated with the data packet. It may be that if more than one null word is inserted, at least one null word is inserted as one of: a trailing word, a leading word, and an interspersed word. It may also be that if more than one interspersed null word is inserted, each of the interspersed null words is inserted into the data frame at a predetermined interval.
[0106] It may be that in the case where the transmitter (e.g., 102) or logic (e.g., 104) thereof is configured to configure the words during transmission (e.g., on-the-fly, such as via multiplexing data sent to a physical layer from a data layer, as described above), the at least one null word is inserted as a trailing word. It may also be that if more than one null words are inserted, the plurality of inserted null words are trailing words (i.e., the plurality of null words are inserted following the end of packet word).
[0107] It may be that the number of at least one null words to be inserted into the data frame is selected such that the a size of at least a portion of the data frame comprising words associated with the respective data packet is an integer multiple of the first number of lanes.
[0108] For example, it may be that the number of null words to be inserted into the data frame is equal to an integer number subtracted from the first number of lanes. For example, it may be that the at least one null word is inserted to fill (i.e., completely fill) at least one row of the receiver buffer (e.g., 208). The integer number may be equal to the number of data words in the data frame that are associated with the data packet modulo the first number of lanes. In other words, the integer number of words may be equal to the remainder of the number of words in the data frame associated with the data packet, divided by the first number of lanes.
[0109] In the case where the data frame only comprises words associated with a single packet (i.e., it comprises a single complete data packet, or a fraction of a single packet), the integer number may be equal to the number of data words in the (e.g., entire) data frame modulo the first number of lanes. In other words, the integer number of words may be equal to the remainder of the number of words in the data frame , divided by the first number of lanes.
[0110] In general, a relationship to determine the number of null words (e.g., all-FILLs words) to be inserted into the data frame by the transmitter (e.g., 102) is given by: L(fe) - (F modulo L(fe)), where L(fe) is the first numbers of lanes (i.e., the number of lanes the receiver is configured to support) and F is the size, in words, of the the portion of the data frame comprising words associated with a single packet.
[0111] In the case that the data frame only comprises words associated with a single data packet, F is the (entire) size of the data frame in words.
[0112] It may be that the transmitter (e.g., 102) or logic (e.g., 104) thereof is configured to further configure the one or more words such that the size of the data frame (e.g., the entire data frame) is an integer multiple of the first number of lanes. For example, if the obtained words for transmission comprise words associated with more than one data packet, a further configuration of the one or more words associated with the different packet may be performed. It may be that the further configuration includes at least one of: (e.g., a repetition of) the configuration disclosed above and a (different) configuration as described below. For example, if the obtained words for transmission are associated with more than one complete data packets, or a final portion of a first data packet and one or more additional complete data packets (i.e., where end of packet words associated with each packet are present), then the configuration described above may be repeated for each data packet in the frame. If the obtained words are associated with at least a final portion of a first data packet (i.e., include an end of packet word) and an initial portion of a second data packet (i.e., includes one or more words associated with the second packet, but not an end of packet word for the second data packet), an additional configuration, as described below may be performed by the transmitter (e.g., 102) such that the size of the (entire) data frame is an integer multiple of the first number of lanes.
[0113] It may be that the transmitter (e.g., 102) or logic (e.g., 104) thereof is configured to determine if the one or more obtained words for transmission comprise at least one end of packet word, and in response to the determination, (at least) perform the configuration described above (of inserting at least one null word the into the data frame between at least one word associated with a respective data packet and the end of packet control word associated with said data packet) if the one or more words comprise an end of packet word. This may be the case in both a scenario where the first number of lanes is greater than the second number of lanes, and vice versa. This may also be the case in a scenario where the first number of lanes and the second number of lanes is equal to any 2n number of lanes, where n is zero, or any integer value, i.e., where the first number of lanes and the second number of lanes is any one of 1, 2, 4, 8, or 16 etc., (where the first number of lanes is different from the second number of lanes). This may also be the case in a scenario where the first number of lanes and the second number of lanes is equal to any non-2n number of lanes, where n is zero, or any integer value, i.e., where the first number of lanes and the second number of lanes is any one of 3, 5, 6, 7, or 9 etc., (where the first number of lanes is different from the second number of lanes). The transmitter may also be configured to perform further configurations, as described below. Alternatively, if the one or more words do not comprise an end of packet word, in response to the determination, the transmitter may be alternatively configured to perform the operations described in detail below.
[0114] Figures 4A and 4B show example configurations of data frames comprising the insertion of at least one null word. While a particular number of lanes and widths of buffers are described, these are merely included to aid understanding of the disclosures, and are not intended to be limiting. The data frame (402) transmitted by the transmitter (e.g., 102) as described above, may contain at least one end of packet 404, 406 word that terminates one or more packets in the data frame 402. As described previously, a communication standard, e.g., the SpaceFibre standard, is configured such that (i.e., it expects) each row of a buffer can contain data words from only one packet, but as shown in Figure 3, a receiver buffer 208 can contain data words from more than one packet when it receives data from a transmitter buffer 206 with a different number of supported lanes, i.e., a transmitter with a buffer having a different row width.
[0115] The illustrative examples of Figures 4A and 4B show data frames (402, 420) transmitted by the transmitter (e.g., 102), in which the transmitter (e.g., 102) inserts at least one null word after a word containing an end of packet symbol (i.e., at least one trailing null word), when the data word containing the end-of-packet symbol would not fill a row of a receiver buffer 208. However, Figures 4A and 4B are for illustrative purposes only and the transmitter and data frames disclosed herein are not so limited and may alternatively, or additionally, comprise leading or interspersed null words.
[0116] A receiver buffer 408, data frame 402, and transmitter buffer 410 are shown in Figure 4A. In this illustrated example, the communication link between the transmitter (e.g., 102) and the receiver (e.g., 110) has a single active lane. However, this configuration is shown for illustrative purposes only, and is not intended to be limiting. The link may also contain the lesser of the first number of lanes and the second numbers of lanes, which in this illustrated case may be two lanes.
[0117] The transmitter buffer 410 comprises first and second packets terminated with words (e.g., data words) containing end of packet symbols 404, 406. The words containing end of packet symbols 404, 406 (represented by <EOP> in Figures 4A and 4B) may comprise a single end of packet symbol and zero or more data characters and FILL characters, such that each data word comprises four characters.
[0118] As illustrated in Figure 4A, the first packet of the transmitter buffer 410 comprises four data words (including the data word containing the end of packet symbol, 404), and the second packet comprises six data words including the data word containing the end of packet symbol, 406). Since each row in the receiver buffer 408 is four words wide, the first packet fills an integer number of rows in the receiver buffer 408, because the size of the first packet is an integer multiple of the width of the receiver buffer 408. In other words, the data word containing end of packet symbol 404 is aligned with the end of a row in the receiver buffer 408.
[0119] The second packet does not fill an integer number of rows in the receiver buffer 408, because the size of the second packet is not an integer multiple of the width of the receiver buffer 408. Therefore the transmitter (e.g., 102) inserts two null words, (shown as all-FILLs words) 412, 414 into the data frame 402 after the end of packet word 406. The second packet, with the additional null words 412, 414, then fills an integer number of rows in the receiver buffer 408, since the size of the second packet is now an integer multiple of the width of the receiver buffer 408. In other words, the null words 412, 414 are aligned with the end of a row in the receiver buffer 408.
[0120] Figure 4B shows a further illustrative example of a configuration of words as a data frame, the transmitter buffer 416, data frame 420, and receiver buffer 418. In this illustrative example the communication link between the transmitter (e.g., 102) and the receiver (e.g., 110) has two active lanes. However, this configuration is shown for illustrative purposes only, and is not intended to be limiting.
[0121] The transmitter buffer 416 contains third and fourth packets terminated with data words containing end of packet symbols 422, 424 . The third packet comprises five data words (including the data word containing the end of packet symbol, 422), and the fourth packet comprises seven data words (including the data word containing the end of packet symbol, 424). The third packet would not fill an integer number of rows in the receiver buffer 418, because the size of the third packet is not an integer multiple of the width of the receiver buffer 418. Therefore the transmitter (e.g., 102) inserts three null words 426a, 426b, 426c, illustrated in Figure 4B as all-FlLLs words, into the data frame 420 after the end of packet data word 422. The third packet, with the additional null words, then fills an integer number of rows in the receiver buffer 418, since the size of the third packet is now an integer multiple of the width of the receiver buffer 418. In other words, the additional all-null words 426a, 426b, 426c are aligned with the end of a row in the receiver buffer 418.
[0122] The fourth packet also would not fill an integer number of rows in the receiver buffer 418, because the size of the fourth packet is not an integer multiple of the width of the receiver buffer 418. Therefore the transmitter (e.g., 102) inserts a single null word 428 into the data frame 420 after the end of packet word 424. The fourth packet, with the additional null word 428, then fills an integer number of rows in the receiver buffer 418, since the size of the fourth packet is now an integer multiple of the width of the receiver buffer 418. In other words, the additional null word 428 is aligned with the end of a row in the receiver buffer 418.
[0123] It may be that configuring the data frame with the insertion of at least one null word such that a size of at least a portion of the data frame comprising words associated with a single data packet is an integer multiple of the first number of lanes may completely fill an integer number of rows of a buffer of the receiver with words associated with a single packet and may therefore enable compliance, and compatibility, e.g., backwards compatibility with data processing protocols for communication links between transmitters and receivers having the same number of supported lanes.
[0124] In an alternative, or additional example, it may be that the transmitter (e.g., 102) or logic (e.g., 104) thereof is configured to configure the one or more words such that the size of the at least one data frame is an integer multiple of the first number of lanes. For example, the size of a data frame (e.g., a data frame configured by the transmitter) is an integer multiple of the first number of lanes.
[0125] This may be the case when the one or more words obtained for transmission do not comprise an end of packet word. For example, it may be that the transmitter (e.g., 102) or logic (e.g., 104) thereof is configured to determine if the one or more obtained words for transmission comprise at least one end of packet word, and in response to the determination, (at least) perform the following configuration if the one or more words comprise do not comprise an end of packet word. The transmitter may also be configured to perform further configurations, as described herein.
[0126] This may be the case in both a scenario where the first number of lanes is greater than the second number of lanes, and vice versa. This may also be the case in a scenario where the first number of lanes and the second number of lanes is equal to any 2n number of lanes, where n is zero, or any integer value, i.e., where the first number of lanes and the second number of lanes is any one of 1, 2, 4, 8, or 16 etc., (where the first number of lanes is different from the second number of lanes). This may also be the case in a scenario where the first number of lanes and the second number of lanes is equal to any non-2n number of lanes, where n is zero, or any integer value, i.e., where the first number of lanes and the second number of lanes is any one of 3, 5, 6, 7, or 9 etc., (where the first number of lanes is different from the second number of lanes). An exception may occur in the case where the second number of lanes is greater than the first number of lanes and the second number of lanes is an integer multiple of the first number of lanes. In the case where the second number of lanes is greater than the first number of lanes and is an integer multiple of the first number of lanes, the buffer of the receiver may already (e.g., coincidentally) be filled according to the requirements of the data processing protocol of the communication link. Hence, the transmitter may be further configured to determine whether the second number of lanes meets a criteria that the second number of lanes is greater than the first number of lanes and is an integer multiple of the first number of lanes, and in response to determining that the second number of lanes does not meet (or deviates from) the criteria, performing the configuration of the one or more words to modify how the buffer of the receiver is filled.
[0127] It may be that configuring the words as the at least one data frame comprises determining a data frame size based on determining that the number of words that will be transmitted will fill (e.g., completely fill) an integer number of rows of the receiver buffer. It may be that the data frame size is determined based on a common multiple (e.g., a lowest common multiple) of the first number of lanes and the second number of lanes. For example, it may be that the data frame size is determined based on an integer multiple of a number of rows of a buffer of the transmitter (e.g., a buffer of the transmitter configured with a width equal to the second number of lanes) that are divisible by, or divide, the first number of lanes (or an integer number of rows of the receiver buffer) without a residual and configuring (e.g., matching, or limiting) the data frame size (i.e., the size of the data frame to be transmitted to the receiver) to the determined data frame size. It may be that the buffer of the transmitter is an output buffer, such as an output buffer corresponding to the buffer of the receiver configured to receive the transmitted data and / or corresponding to the VC over which the data is transmitted.
[0128] It may be that the integer multiple of a number of rows of the buffer of the transmitter that are divisible by, or divide, the first number of lanes without a residual is an integer multiple of a minimum number of rows of the buffer of the transmitter that are divisible by, or divide, the first number of lanes without a residual. It may be that the integer multiple, when multiplied by the minimum number of rows of the buffer of the transmitter that are divisible by, or divide, the first number of lanes without a residual, represents at least the minimum number of words that fills an integer number of both transmitter buffer rows and receiver buffer rows.
[0129] It may be that this configuration of the one or more words as at least one data frame results in an integer number of rows of the buffer of the receiver being filled. This may meet the requirements (or expectations) of the signal processing protocols for the communication link.
[0130] It may be that configuring the words as the at least one data frame comprises further determining a data frame size that does not exceed a maximum data frame size. For example, the maximum data frame size may be the maximum data frame size that the receiver buffer is configured to store. For example, the maximum data frame size may equal the first number of lanes multiplied by a number of words the receiver buffer is configured to store per lane (e.g., 64 words). It may be that determining the data frame size comprises determining a data frame size that does not exceed a maximum data frame size (e.g., equals, or is less than, the maximum data frame size) and is an integer multiple of the first number of lanes. For example, it may be that the integer multiple, when multiplied by the number of rows of the buffer of the transmitter that are divisible by, or divide, the first number of lanes without a residual, represents the maximum number of words that fills an integer number of both transmitter buffer rows and receiver buffer rows and does not exceed the maximum data frame size.
[0131] It may be that configuring the data frame size (i.e., the size of the data frame to be transmitted to the receiver) to the determined data frame size comprises truncating the number of the one or more words of the data to be transmitted to the receiver, and transmitting the remaining one or more words in a second (e.g.,, subsequent) data frame. In other words configuring the data frame may comprise splitting the one or more words into two or more data frames to be sent, wherein the size (in words) of at least one (or all of) the data frames is equal to the determined data frame size.
[0132] As described above, it may be that the determination of the data frame size is based on a lowest common multiplier of the first number of lanes and the second number of lanes. For example, such a determination may be applicable in a general case, where the first number of lanes and the second number of lanes may be any 2n number of lanes, where n is zero, or any integer value, i.e., where the first number of lanes and the second number of lanes is any one of 1, 2, 4, 8, or 16 etc., or any non-2n number of lanes, where n is zero, or any integer value, i.e., where the first number of lanes and the second number of lanes is any one of 3, 5, 6, 7, or 9 etc., (where the first number of lanes is different from the second number of lanes).
[0133] It may be that the number of rows of the buffer of the transmitter that are divisible by, or divide, the first number of lanes without a residual is based on the first number of lanes and the second number of lanes. For example, it may be that the number of rows of the buffer of the transmitter that are divisible by, or divide the first number of lanes without a residual is based on a common multiplier (e.g., a lowest common multiplier) of the first number of lanes and the second number of lanes. It may be that the minimum number of rows of the buffer of the transmitter that are divisible by, or divide the first number of lanes without a residual equals the lowest common multiplier of the first number of lanes and the second number of lanes, divided by the second number of lanes.
[0134] In other words, the minimum number of rows of the transmitter that are divisible by, or divide the first number of lanes without a residual, is equivalent to the minimum integer number of transmitter buffer rows that contain a number of words that will fill an integer number of receiver buffer rows.
[0135] In general, the minimum number of rows of the buffer of the transmitter that are divisible by, or divide the first number of lanes without a residual may be described by the following x- \ l.c.m(L(fe),L(ne)). r . equation: n[ Tx ) —-------—•— ---'—-—[equation 1], where n(Tx) is the minimum number of \ / L(ne) rows of the buffer of the transmitter that are divisible by, or divide the first number of lanes without a residual.
[0136] It may be that the integer multiple of the number of rows of the buffer of the transmitter that are divisible by, or divide, the first number of lanes without a residual equals an integer multiplier of the second number of lanes, L(ne) (itself an integer value).
[0137] For example, it may be that equation 1 represents the minimum number of transmitter buffer rows that fill an integer number of receiver buffer rows. It may be that L(ne) multiplied by n(Tx) of equation 1 represents the minimum number of words that fills both an integer number of transmitter buffer rows and receiver buffer rows. Thus, it may be that a data frame size that fulfills the requirement to fill an integer number of rows of the receiver buffer equals an integer multiplier of L(ne), multiplied by n(Tx). It may be that any integer multiplier of L(ne) meets the requirements to fill an integer number of rows of the receiver buffer. However, in order to also meet the requirement not to exceed the maximum data frame size (that the receiver buffer is configured to store), an integer multiplier of L(ne) that limits the data frame size to be equal or less than the maximum data frame size may be determined.
[0138] It may be that said integer multiplier of L(ne) equals the the largest number of integer rows of the receiver buffer that can be filled, without exceeding the maximum data frame size.
[0139] It may be that the integer multiplier of L(ne) equals the second number of lanes multiplied by the nearest, rounded down, integer corresponding to: a number of words that the receiver buffer is configured to store for each lane (e.g., 64), divided by: the lowest common multiplier divided by the first number of lanes. In general, the integer multiplier of L(ne) may be described by the following equation: integer multiplier = INT _ 1. c. m(L(fe), L(ne)) / L(fe) _ [equation 2 ] where W is the number of words that the receiver buffer is configured to store for each lane (e.g., 64), L(fe) is the first number of lanes and L(ne) if the second number of lanes and l.c.m (L(fe), L(ne)) is the lowest common multiplier of the first number of lanes and second number of lanes.
[0140] In general, the determined frame size may equal: data, frame size W I fl.c.m. (L(fe), L(ne))' 1. c. m(L(fe),L(ne)) / L(fe) [ L(ne) [equation 3].
[0141] For example, it may be that n(Tx) of equation 1 represents the minimum number of transmitter buffer rows that will fill an integer number of receiver buffer rows. It may be that L(ne) multiplied by n(Tx) of equation 1 represents the number of words from that minimum number of transmitter rows, which will fill an integer number of receiver buffer rows. It may be that INT ____W____ 1. c. m(L(fe). L(ne)) / L(fe) indicates the maximum number of integer rows of the receiver than can be filled without exceeding the maximum data frame size. Thus, it may be that multiplying L(ne) x n(Tx) by INT 1. c. m(L(fe),L(ne)) / L(fe) _ provides the maximum data frame size that can be transmitted to the receiver which both fills an integer multiple of rows of the receiver buffer and does not exceed the maximum data frame size. Therefore, equation 3 represents the maximum frame size (in words) that may fulfill the requirements to fill an integer number of rows of the receiver buffer, and to not exceed the maximum data frame size.
[0142] Figure 5A shows an example of a configuration of a data frame. While a particular number of lanes and widths of buffers are described, these are merely included to aid understanding of the disclosures, and are not intended to be limiting.
[0143] A transmitter buffer 502 with a link width, i.e., number of lanes supported for communication by the transmitter (i.e., the width of the transmitter buffer, L(ne), or in other words, the second number of lanes) of five is shown in Figure 5A, linked to a receiver buffer 504 with a link width i.e., number of lanes supported by the receiver (i.e., the width of the receiver buffer, L(fe), in other words the first number of lanes) of three. In this illustrative example the width of a 506 on the communication link between the transmitter (e.g., 102) and receiver (e.g., 110) is three, because the width of the link, i.e., the lesser of the first number of lanes L(fe) and the second number of lanes L(ne) is three and all three supported lanes of the link are active.
[0144] The lowest common factor of 5 and 3 is 15, therefore 3 complete rows (15 divided by 5) of the transmitter buffer 502 contains the same number of data words as 5 complete rows (15 divided by 3) of the receiver buffer 504. Thus when the transmitter buffer 502 comprises one or more sets of three rows of data words, these data words can be framed and transmitted to the receiver buffer 504, where they will occupy one or more sets of five rows of data words. This fulfils the requirement that the size of each transmitted data frame is a multiple of the first number of lanes ( in other words, the link width of the far-end interface L(fe)). In the above example, the number of words to be transmitted (i.e., the number of words stored in the transmitter buffer 502) is less than a maximum data frame size that the receiver buffer is configured to receive. It may be that the maximum data frame size is equal to the width of the buffer in words (i.e., the first number of lanes) multiplied by the number of words the buffer is configured to support per lane (e.g., 64).
[0145] It may be that the integer multiple described above, prevents the data frame configured for transmission to the receiver from exceeding a size ( e.g., in words) of a maximum data frame size that the receiver is configured to store. It may be that if the receiver receives a data frame that exceeds the maximum data frame size, a buffer overflow occurs, and for example, error messaging may occur. It may be that the integer multiple limits the size of the data frame configured by the transmitter to be less than or equal to the maximum data frame size. Thereby mitigating signal processing overheads.
[0146] It may be that configuring the data frame comprises configuring (e.g., framing) a number of the obtained words equal to the determined frame size (e.g., from the transmitter buffer) with start-of-frame and end-of-frame words. It may be that any remaining data words obtained by the transmitter (and e.g., stored in the transmitter buffer) (i.e., beyond to the last data word configured in the data frame) are configured (e.g., remain in the transmitter buffer for configuring) (e.g., framing) in a second, subsequent, data frame.
[0147] Figure 5B shows a further example of the configuration of a data frame. In this further illustrative example, the number of words stored in the transmitter buffer 502 (to be transmitted to the receiver) is equal, or close to, a maximum data frame size that the receiver buffer 504 is configured to store. As in Figure 5A, the transmitter buffer 502 has a second number of lanes equal to five and the receiver buffer 504 has a first number of lanes equal to three. The lowest common factor of 5 and 3 is 15, therefore 3 complete rows (15 divided by 5) of the transmitter buffer 502 contains the same number of data words as 5 complete rows (15 divided by 3) of the receiver buffer 504.
[0148] The maximum data frame size expected to be received by the receiver buffer 504 is the first number of lanes multiplied by the number of words the buffer is configured to store per lane, i.e., L(fe) x 64, e.g. 64 rows, where each row comprises L(fe) e.g., three data words. However the greatest multiple of sets of five rows of data words in the receiver buffer that is less than or equal to 64 rows is 60 rows e.g., twelve sets of five rows. Therefore the maximum size of frame that can be configured for transmission by the transmitter to the buffer of the receiver, which fulfils the requirements that the maximum size of data frame is both an integer multiple of the first number of lanes and less than or equal to the maximum data frame size expected by the receiver buffer, is twelve sets of three rows e.g. 12 x 3 x 5 = 180 data words. When the transmitter buffer 502 contains at least 180 data words, the transmitter configures 180 data words as a data frame for transmission. For example, the transmitter configures the 180 words (e.g., from the transmitter buffer) with start-of-frame and end-of-frame words 510, 512 before transmitting the data frame 508 over the link to the receiver buffer. Any remaining data words in the transmitter buffer 502 (i.e., beyond to the last data word configured in the data frame) are configured (e.g., remain in the transmitter buffer for configuring) (e.g., framing) in a second, subsequent, data frame.
[0149] Figure 5C shows a further example configuration of a data frame. Again, while particular number of lanes and widths of buffers are described, these are merely included to aid understanding of the disclosures, and are not intended to be limiting.
[0150] A transmitter buffer 514 with a link width, i.e., number of lanes supported for communication by the transmitter (i.e., the width of the transmitter buffer, L(ne), or in other words, the second number of lanes) of six is shown in Figure 5C, linked to a receiver buffer 516 with a link width i.e., number of lanes supported by the receiver (i.e., the width of the receiver buffer, L(fe), in other words the first number of lanes) of two. In this illustrative example the width of a data frame 518 on the communication link between the transmitter (e.g., 102) and receiver (e.g., 110) is two, because the width of the link, i.e., the lesser of the first number of lanes L(fe) and the second number of lanes L(new) is two and both supported lanes of the link are active.
[0151] The lowest common factor of 6 and 2 is 6, therefore a single complete row (6 divided by 6) of transmitter buffer 514 contains the same number of data words as 3 complete rows (6 divided by 2) of receiver buffer 516. Thus when transmitter buffer 514 contains one or more whole rows of data words, these data words can be framed and transmitted to the receiver buffer 516, where they will occupy one or more sets of 3 rows of data words. This fulfils the requirement that the size of each transmitted data frame is a multiple of the first number of lanes (in other words, the link width of the far-end interface L(fe)).
[0152] Figure 5D shows a further example of the configuration of a data frame. In this illustrative example, the number of words stored in the transmitter buffer 514 (to be transmitted to the receiver) is equal, or close to, a maximum data frame size that the receiver buffer 516 is configured to store. As in Figure 5C, the transmitter buffer 514 has a second number of lanes equal to six and the receiver buffer 516 has a first number of lanes equal to two. The lowest common factor of 6 and 2 is 6, therefore a single complete row (6 divided by 6) of transmitter buffer 514 contains the same number of data words as 3 complete rows (6 divided by 2) of receiver buffer 516.
[0153] The maximum data frame size expected to be received by the receiver buffer 516 is L(fe) x 64 e.g. 64 rows, where each row comprises L(fe) e.g. 2 data words. However the greatest multiple of sets of 3 rows of data words in transmitter buffer 514 that is less than or equal to 64 rows is 63 rows e.g. 21 sets of 3 rows. Therefore the maximum size of frame that can be framed and transmitted from transmitter buffer 514, which fulfils the requirements that the maximum size of data frame is both a multiple of the first number of lanes (i.e., link width of the far-end interface L(fe)) and less than or equal to the maximum data frame size expected by the receiver buffer 516, is 21 single rows e.g. 21x1x6= 126 data words. When the transmitter buffer 514 contains at least 126 data words, the transmitter frames 126 data words with start-of-frame and end-of-frame words 634, 635 before transmitting the data frame 520 over the link to receiver buffer 516. Any remaining data words in the transmitter buffer 514 beyond the last framed data word are configured (e.g., remain in the transmitter buffer 514 for framing) in a second, subsequent data frame.
[0154] In the case where the first number of lanes is larger than the second number of lanes, or vice versa, and where the first where the first number of lanes and the second number of lanes may be any 2n number of lanes, where n is zero, or any integer value, (where the first number of lanes is different from the second number of lanes), the determination of the data frame size may be simplified.
[0155] For example, determining the data frame size may be based on determining a data frame size that is an integer multiple of the lesser of the first number of lanes and the second number of lanes. The integer multiple may be any integer multiple, which is zero modulo the first number of lanes.
[0156] Similarly to the general case described above, it may also be that the simplification of the data frame size comprises further determining a data frame size that does not exceed a maximum data frame size. For example, the maximum data frame size may be the maximum frame size that the receiver buffer is configured to store. For example, the maximum frame size may equal the first number of lanes multiplied by a number of words the receiver buffer is configured to store per lane (e.g., 64 words). It may be that the integer multiple is the largest integer, which when multiplied by the lesser of the first number of lanes and second number of lanes, and further multiplied by the number of words the buffer is configured to store for each lane, does not exceed a maximum data frame size.
[0157] As described above, it may be that configuring the data frame size (i.e., the size of the data frame to be transmitted to the receiver) to the determined data frame size comprises truncating the number of the one or more words of the data to be transmitted to the receiver, and transmitting the remaining one or more words in a second (e.g., subsequent) data frame. In other words configuring the data frame may comprise splitting the one or more words into two or more data frames to be sent, wherein the size (in words) of at least one (or all of) the data frames is equal to the determined data frame size.
[0158] The size of a data frame transmitted by the transmitter (e.g., 102) may, in general, be an integer multiple of L, where L is the number of active lanes in the link. In other words, the size of a data frame transmitted by the transmitter (e.g., 102) may be equal to L x C, where L is the number of active lanes in the communication link and C is an integer.
[0159] The size of each data frame transmitted by the transmitter (e.g., 102) may also a multiple of the link width of the receiver L(fe) e.g. the size of each data frame corresponds to an integer number of rows of a the receiver buffer, i.e., the first number of lanes. Therefore it may be that the value of C includes only specific values which are zero modulo the first number of lanes.
[0160] Figure 6A shows an example of a configuration of a data frame when the first number of lanes and the second number of lanes are powers of 2, e.g. 2n where n is an integer equal to or greater than zero, and the frame size is equal to the maximum data frame size. As above, while a particular number of lanes and widths of buffers are described, these are merely included to aid understanding of the disclosures, and are not intended to be limiting.
[0161] In Figure 6A, a single lane of the communication link is active between the transmitter (which has as second number of lanes equal to two) and the receiver (which has a first number of lanes equal to four). Therefore the maximum frame size is currently 1 x 64 = 64 words. When the transmitter buffer 602 contains at least 64 data words, the transmitter (e.g., 102) configures (e.g., frames) 64 data words (e.g., from the transmitter buffer 702) with start-of-frame and end-of-frame control words 606, 608 before transmitting the data frame 604 over the single active lane. Any remaining data words in the transmitter buffer 602 beyond the last framed data word are configured (e.g., remain in the buffer for framing) in a second, subsequent data frame.
[0162] Figure 6B shows a further example of a configuration of a data frame, where two lanes of the link are active between the transmitter (e.g., 102) and the receiver ( e.g., 110). Therefore the maximum frame size is 2 x 64 = 128 words. When the transmitter buffer 602 contains at least 128 data words, the transmitter configures (e.g., frames) 128 data words from the transmitter buffer 602 with start-of-frame and end-of-frame control words 606, 608 before transmitting the data 610 over the two active lanes. Any remaining data words in the transmitter buffer 602 beyond the last framed data word are configured in (e.g., remain in the transmitter buffer 602 for framing in) a second, subsequent data frame.
[0163] Figure 6C shows a further example of a configuration of a data frame, two lanes of the link are active between the transmitter (e.g., 102) and the receiver ( e.g., 110).
[0164] The transmitter buffer 602 contains a partial packet e.g. data words from an initial portion of a packet not including a terminating end-of-packet symbol. In this example the transmitter buffer 602 contains 34 data words. As described above, the indication contained in control word (e.g., the M parameter in the flow control word) sent by the receiver (e.g., 110) indicates the first number of lanes (i.e., the number of lanes support by the receiver for communication). The transmitter (e.g., 102) thus determines that the 34 data words in transmitter buffer 602 do not correspond to an integer number of rows of a the receiver buffer. Therefore the transmitter (e.g., 102) configures (e.g., frames) 32 data words from the transmitter buffer 602 with start-of-frame and end-of-frame control words before transmitting the data frame 612 over the two active lanes. Any remaining data words in the transmitter buffer 602 beyond the last framed data word are configured in (e.g., remain in the transmitter buffer 602 for framing in) a second, subsequent data frame.
[0165] It may be that configuring the data frame such that the size of the data frame is an integer multiple of the first number of lanes may completely fill an integer number of rows of a buffer of the receiver and may therefore enable compliance, and compatibility, e.g., backwards compatibility with data processing protocols for communication links between transmitters and receivers having the same number of supported lanes.
[0166] In another example, which may be optionally combined with any preceding examples described herein, or any combination of the preceding examples described herein, or may form part of the configuration of any of the preceding examples, configuring the words as the at least one data frame (by the transmitter, e.g., 102 or logic thereof) comprises: determining whether the size of the at least one data frame exceeds a maximum data frame size. As described above, the maximum data frame size may be based on the maximum data frame size that buffer of the receiver is configured to store. It may be that the maximum data frame size is based on the first number of lanes. For example, the maximum data frame size may equal at least one of: a multiple of the first number of lanes; and a multiple of the lesser of the first number of lanes and the second number of lanes. It may be that the multiple equals the number of words (for a maximum data frame size) that the buffer is configured to store for (i.e., per) each lane of the first number of lanes, e.g., 64.
[0167] It may be that the transmitter, e.g., 102 or logic thereof is configured to configure the data frame to be transmitted based on the determined maximum data frame size.
[0168] For example, it may be that in response to a determination that the size of the at least one data frame to be transmitted to the receiver (i.e., the number of the obtained one or more words to be transmitted, or the number of the one or more stored in a transmitter buffer) exceeds the maximum data frame size, the at least one data frame is configured to have a size equal to or less than the maximum data frame size. For example, the data frame to be transmitted may be truncated (e.g., the words of the data frame are truncated, or split, between data frames), such that the number of words exceeding the maximum data frame length are sent in at least one other data frame. For example, a number of the one or more words less than or equal to the maximum data frame size may be configured (e.g., framed) for transmission in a first data frame, and the remaining one or more words (e.g., in the transmitter buffer) may be configured (e.g., framed) in a second, subsequent data frame.
[0169] It may be that this configuration is performed by the transmitter subsequent, prior to, or during the example configurations described above. For example, subsequent to, prior to, or during at least one of the configurations of the transmitter to insert at least null word, or to size the data frame to an integer multiple of the first number of lanes.
[0170] It may be that the determination of whether the size of the data frame exceeds the maximum frame size prevents, or mitigates against overflow of a buffer of the receiver.
[0171] By way of background, in accordance with convention communication links (e.g., in accordance with the SpaceFibre ECSS-E-ST-50-11C standard), a flow control method is used to prevent the transmitter from transmitting to the receiver a data frame with a size that exceeds the maximum data frame that a buffer of the receiver configured to store the received data (e.g., a VCB) is configured to store. Thus, preventing buffer overflow of conventional receiver buffers. Such a flow control method may also be implemented by the transmitters and receivers disclosed herein.
[0172] A conventional flow control method (i.e., a flow control method performed between a receiver and a transmitter configured to support the same number of lanes for communication) may comprise a receiver (e.g., 110) sending to a transmitter (e.g. 102) a flow control word comprising an indication of space in the (e.g., VCB) that is available to store a data frame to be received from the transmitter. The indication of space that is available in the buffer to store a data frame to be received from the transmitter may be equal to (at least) the number of lanes supported by the buffer of the receiver that is configured to store the received data (e.g., VCB) multiplied by the number of words the buffer is configured to store per lane. For example (e.g., according to the SpaceFibre ECSS-E-ST-50-11C standard), the receiver 110 may send an indication (i.e., a flow control token) in the flow control word equal to M time 64, where M is the Multiplier (M) field of the flow control word and indicates the number of supported lanes, i.e., where M is equal to the number of lanes the receiver supports for communication. It may be that in a conventional flow control method, the transmitter only determines the amount of space that is available in the buffer of the receiver to store a data frame to be received from the transmitter, and does not determine M separately. Such a conventional flow control method may be performed by the transmitters and receivers described herein.
[0173] Figure 7 shows a protocol stack of a communication link., which illustrates a transmitter 702(in accordance with transmitter 102) connected by a link 704 to a receiver 706 (in accordance with receiver 110). While a particular number of lanes and widths of buffers are described, these are merely included to aid understanding of the disclosures, and are not intended to be limiting. The number of lanes supported by the transmitter 702 (e.g., the second number of lanes), and represented as L(ne) is two, and the number of lanes supported by the 706 (e.g., the first number of lanes), and represented as L(fe) is four, but in other examples, the number of supported lanes L(ne) or L(fe) may be different. As shown in Figure 7, the communication link 704 has two active lanes (represented as L, and equal to the number of lanes supported by the transmitter L(ne), but the link may also function with a single active lane.
[0174] As shown in Figure 7, the transmitter 702 comprises two (output) buffers 708 (e.g., VCBs) and the receiver 706 comprises two (input) buffers 710 (e.g., VCBs) , but in other examples either the transmitter or receiver may comprise fewer or more buffers respectively.
[0175] It may be that the receiver 710 periodically signals the transmitter 702 with flow control information, which may comprise flow control words which indicate space in receiver buffers 710 that has been allocated to store a data frame to be received from the transmitter. The transmitter 702 may process this information to control the transmission of data frames transmitted by the 702, for example to ensure that a buffer 710 of the receiver 706 has sufficient free space to contain the next transmitted data frame.
[0176] As described above, the flow control information may provide an indication of the number of lanes supported by the receiver L(fe) e.g. the first number of lanes, which typically also corresponds to the number of words in each row of receiver buffers 710 (e.g., VCBs). It may be that the flow control words sent by the 706 comprise a parameter, e.g., VC, which indicates a specific receiver buffer (e.g., VCB), and a parameter M which encodes the first number of lanes, i.e., M equals L(fe).
[0177] It may be the transmitters disclosed herein may further use (e.g., re-use) the conventional flow control words. For example, the transmitters disclosed herein, e.g., (702 or 102) may use (i.e., explicitly use) the parameter M to ensure that the size of each data frame transmitted by the transmitter is a multiple of the first number of lanes L(fe) and may further optionally use M to determine a maximum data frame size.
[0178] However, it may be that the receiver buffer configured to store the transmitted data (e.g., VCB) is configured to have a size greater than the maximum frame size that it is configured to store. It may be that the width of the buffer is (still) equal to the number of supported lanes (e.g., is still equal to M). For example, the receiver buffer (e.g., VCB) may have a size greater than one maximum frame size, and for example, may be configured to store one or more data frames of a maximum data frame size. For example to improve latency etc.,. For example, the buffer of the receiver (e.g., VCB) may be configured to store MxY words, where Y is greater than 64 and may be an integer or non-integer multiple of 64 corresponding, respectively, to an integer number or partial number of maximum data frame sizes. In this case, it may be that the receiver signals to the transmitter ( e.g., by way of the flow control information) space that has been allocated to store a data frame to be received from the transmitter corresponding to free space in the buffer that exceeds the maximum data frame size the receiver is configured to receive. In this case, it may be that the transmitter may send a data frame with a size larger than the maximum frame size that the receiver is configured to receive, but less than or equal to the indicated allocated space in the receiver buffer. Thus the receiver buffer may be able to store the received data frame, e.g., without an overflow error.
[0179] However, it may be that a cyclic redundancy check, (CRC) buffer of the receiver 110 is not similarly sized (with respect to the e.g., VCB buffer), and for example, may be sized to store only one maximum data frame size. Thus, it may be that based on the received flow control information , i.e., allocated space in the e.g., VCB buffer, the size of the data frame sent by the transmitter may exceed the size that the CRC buffer of the receiver is configured to store. In this case, it may be that the CRC buffer overflows and / or error conditions are generated.
[0180] It may be that by determining a maximum data frame size based on the first number of lanes (i.e., based directly on M, as opposed to based on the signalled allocated free space, e.g., MxY), CRC buffer overflow may be prevented. For example, determining a maximum data frame size equal to Mx64 may prevent the CRC buffer overflow.
[0181] Figures 8A to 8G show examples of the maximum sizes of data frames determined (and transmitted) by the transmitter (e.g., 102, 702). Again, while a particular number of lanes are described, these are merely included to aid understanding of the disclosures, and are not intended to be limiting. As described above, the maximum size of a data frame determined (and transmitted) by the transmitter (e.g., 102, 702) is equal to the first number of lanes multiplied by the number of words (for a maximum data frame size the buffer is configured to store) that the receiver buffer is configured to store per lane, e.g., L(fe) x 64, where L(fe) is the number of lanes supported by the receiver, and may be indicated by M in the flow control word. Thus, the transmitter (e.g., 102, 702) may determine the first number of lanes from flow control information (e.g., flow control word) received from receiver ( e.g., 110, 706). For example, as shown in Figure 8A, the maximum size of a data frame 802a determined (and transmitted) by the transmitter (e.g., 102, 702) over a communication link with two active lanes, when the receiver (e.g., 110, 706) has a first number of lanes of four is 256 words, as shown in Figure 8A.
[0182] In the case of the link having only a single active lane, the maximum size of data frame 802b is still 256 words, as shown in Figure 8B, since the first number of lanes is still four.
[0183] Figure 8C shows a further example in which a receiver ( e.g., 110, 706) has a first number of lanes, L(fe), of five, the maximum size of a data frame is 5 x 64, which is 320 words. A maximum size data frame 804a determined (and transmitted) to the receiver over a link with four active lanes, and a maximum size data frame 804b determined (and transmitted) by the transmitter (for transmitting) to the receiver over a link with two active lanes is shown in Figure 8D.
[0184] It is to be noted that the link shown in Figure 8C has a width of four, which implies that the second number of lanes, L(ne) is four, since the width of the link e.g. the maximum number of active lanes L is the lesser of L(ne) and L(fe). Similarly in the case of the link shown in Figure 8D, which has a width of three, the second number of lanes, L(ne) is also three.
[0185] While a particular number of lanes have been described in the examples above, it is to be understood that the general principles illustrated in these specific examples can be extended to different numbers of lanes.
[0186] In a simplified case, where the link widths (i.e., number of supported lanes) of both the transmitter (e.g., 102, 702) L(ne) and the receiver (110, 706) L(fe) are powers of 2, e.g., 2n where n is an integer equal to or greater than zero, the maximum size of a data frame 806 determined by (and transmitted by) the transmitter (e.g., 102, 702), may be L x the number of words the receiver is configured to store per lane (for a maximum data frame size, e.g., 64), where L is the number of active lanes. This may enable the transmitter to make an estimate, for example a conservative estimate, of the maximum data frame size, e.g., to prevent receiver buffer overflow. It may be, as shown in Figure 8E, that after (e.g., immediately or soon after) reset of the transmitter, or after (e.g., immediately or soon after) reset of the communication link, the maximum data frame size determined (and transmitted) by the transmitter may be equal to the number of words that the receiver is configured to store per lane e.g., 64 words, for example because the number of active lanes may be one.
[0187] It may be that as the number of active lanes L in the link increases, the maximum size of a data frame that is (determined and) transmitted also increases. For example, the maximum size of a data frame determined (and transmitted) by the transmitter may be L x 64, where L is the number of active lanes. The maximum number of active lanes L is, at most, the lesser of the first number of lanes, L(fe) and the second number of lanes L(ne). For example, the maximum size of a data frame 808 determined by (and transmitted by) the transmitter (e.g., 102, 702) when the link has two active lanes may be 128 words, as shown in Figure 8F.
[0188] It may be that when the first number of lanes L(fe) and the second number of lanes L(ne) are powers of 2, the maximum size of a data frame determined (and transmitted) by the transmitter (e.g., 102, 702) is based on the number of active lanes of the link. Thus, in another (illustrative) example, shown in Figure 8G, in which the first numbers of lanes and second numbers of lanes is equal to or greater than four, and the link comprises four lanes, of which three lanes are active, the maximum size of a data frame 810 determined (and transmitted) by the transmitter is 192 words.
[0189] Determining the maximum data frame size, and configuring the data frame size to the determined maximum data frame size ( e.g., limiting the size of the at least one data frame to the maximum data frame size) may ensure that each transmitted data frame can be contained in a buffer of the receiver (e.g., 110, 706). For example may ensure that each transmitted data frame can be contained, respectively, in at least one of: a VCB and a CRC buffer of the receiver.
[0190] Determining the maximum data frame size, and configuring the data frame size to the determined maximum data frame size ( e.g., limiting the size of the at least one data frame to the maximum data frame size) to either L(fe) x 64, or L x 64, where L is less than or equal to the first number of lanes of the second number of lanes, may ensure that the maximum size of a data frame transmitted by the transmitter (e.g., 102, 702) is less than or equal to the maximum size of data frame expected by the receiver (e.g., 110, 706). Thus, it may prevent buffer overflow, and may therefore enable compliance, and compatibility, e.g., backwards compatibility with data processing protocols for communication links between transmitters and receivers having the same number of supported lanes.
[0191] It may be that the transmitter (e.g., 102), optionally also performs further configuration of the obtained one or more words into the data frame, e.g., prior to or during transmission (on-the-fly).
[0192] For example, the transmitter may insert at least one null character (e.g., null control character), such as a FILL character into a word. For example, to configure (e.g., 'frame') the word to contain four characters, e.g., to ensure that each word transmitted to the receiver contains four characters. It may be that the at least one null character is inserted as a trailing character, e.g., following the last character of the word obtained by the transmitter for transmission.
[0193] Figure 9 shows an example configuration of words as a data frame, and a transmitter buffer 902 comprising a single packet comprising four words. As above, while a particular number of lanes are described, these are merely included to aid understanding of the disclosures, and are not intended to be limiting. According to Figure 9, the four words are configured, or framed, into a single data frame 904 for a single-lane communication link. The transmitter buffer 902 has stored therein three data words: Data 0, Data 1, Data 2, and one final data word comprising an end of packet character. As illustrated in Figure 9, a single null control character 906a (e.g., a FILL control character) is added to ensure that the final data word of the packet contains four characters. As illustrated in Figure 9, the null control character is added as a trailing character, i.e., adjacent to and directly following the final character of the word stored in the transmitter buffer 902.
[0194] Various methods to be performed by a transmitter (e.g., transmitter 102) for use in a communication link (e.g., 100) between the transmitter (e.g., 102) and a receiver (e.g., 110) are described below.
[0195] The communication link may be the communication link (e.g., 100) described above, and, for example, may be a SpaceFibre communication link. As described above, the receiver may comprise a first number of lanes for communication, and the transmitter may comprise a second number of lanes, different from the first number of lanes.
[0196] In the following description of the figures, the methods of Figures 10 to 13 share several features in common. Corresponding features in Figures 10 to 13 are referred to using similar reference numerals.
[0197] Figure 10 is a flow chart illustrating an example method to be performed by the transmitter,
[0198] In block 1002 the method comprises receiving, from the receiver, for a buffer of the receiver in which the data transmitted by the transmitter is to be stored, an indication of the first number of lanes.
[0199] It may be that the indication of the first number of lanes is received by the transmitter from the receiver by way of a control word sent by the receiver. For example, by way of a flow control word sent by the receiver, such as a flow control word according to the SpaceFibre standard, as described above.
[0200] In block 1004 the method comprises obtaining one or more words associated with one or more data packets for transmission to the receiver over the communication link. It may be that one or more words are one or more data and / or control words. It may be that obtaining the one or more words comprises obtaining, e.g., receiving, the words from a network layer of the transmitter, (or interface comprising the transmitter).
[0201] In block 1006 the method comprises configuring the words, based on at least the first number of lanes, as at least one data frame for transmission to the receiver over the communication link, wherein the words are configured as the at least one data frame to modify how at least one row of the buffer is filled. As described above, it may be that modifying how at least one row of the buffer is filled is configured to account for the asymmetry (i..e, difference in numbers) between the lanes supported for communication by the transmitter and the receiver.
[0202] It may be that the configuring the words comprises configuring the words as at least one data frame with a size of at least a portion of the data frame comprising words associated with a respective data packet that is an integer multiple of the first number of lanes.
[0203] It may be that the method further comprises (not shown) determining if at least one of the words to be transmitted is an EOP word (i.e., is a word comprising an EOP character or symbol) and, in response to determining that none of the one or more words are an EOP word, configuring the data frame to be sent, based on the size of the (entire) data frame, as an integer multiple of the first number of lanes. Alternatively, in response to determining that at least one word is an EOP word, the method may comprise configuring the data frame to be sent based on the size of (at least) a portion of the data frame comprising words associated with the respective data packet being (e.g., configured as) an integer multiple of the first number of lanes.
[0204] It may be that configuring the words comprises configuring a buffer, e.g., an output buffer, or VCB, of the transmitter to configure the words that are stored in the buffer prior to the contents of the buffer being configured for transmission, e.g., prior to the contents of the buffer being sent to a physical layer for transmission to the receiver 110. Alternatively, or additionally, it may be that configuring the words comprises configuring the words output from the buffer, but prior to, or during transmission of the data, e.g., on-the-fly.
[0205] It may be that the method further comprises transmitting the configured data frame to the receiver via (or over) the communication link.
[0206] Figure 11 is a flow chart illustrating an example method to be performed by the transmitter, wherein in block 1106 configuring the words as the at least one data frame comprises inserting at least one null word into the data frame, wherein the insertion is based on an end of packet word associated with the respective data packet. For example, the insertion may comprise inserting the at least one null word into a position in the data frame based on the end of packet word associated with the respective data packet. It may be that the preceding blocks of Figure 11 are the same as the correspondingly numbered blocks of Figure 10.
[0207] As described above, it may be that the at least one null word is an all-FILLS word.
[0208] It may be that inserting the at least one null word into the data frame comprises inserting the at least one null word at a pre-determined position in the data frame based on the end of packet word, i.e., a predetermined position with respect to the end of packet word associated with the respective packet. For example, inserting the at least one null word as a trailing word, i.e., inserting the at least one null word adjacent to (e.g., directly following) the end of packet word associated with the data packet.
[0209] Alternatively, or additionally, as described above, it may be that inserting the at least one null word comprises inserting the at least one null word as a leading word, i.e., inserting the at least one null word preceding the first word associated with the respective data packet in the data frame, e.g., inserting the null word at the start of the data frame, adjacent to and following a start-of-frame word, or following an end of packet word associated with a preceding packet.
[0210] Alternatively, or additionally, as described above, it may be that inserting the at least one null word comprises inserting the at least one null word interspersed within the words of the data frame following the at least one word associated with the respective data packet (i.e., the first word in the data frame associated with the respective data packet) and the end of packet word associated with the data packet. For example, it may be that inserting the at least one null word comprises inserting the at least one null word between at least one word associated with the respective data packet and the end of packet word associated with the data packet. It may be that the method comprises inserting more than one null word. For example, at least one null word may be inserted as one of: a trailing word, a leading word, and an interspersed word. It may also be that if more than one interspersed null word is inserted, each of the interspersed null words is inserted into the data frame at a predetermined interval.
[0211] It may be that inserting the at least one null word comprises inserting a number of null words selected such that the size of at least a portion of the data frame comprising words associated with the respective data packet is an integer multiple of the first number of lanes. It may be the method optionally comprises determining, or selecting the number, and inserting the determined (or selected) number.
[0212] For example, it may be that the method comprises determining a number of null words to be inserted into the data frame that is equal to an integer number subtracted from the first number of lanes. The integer number may be equal to the number of data words in the data frame that are associated with the data packet modulo the first number of lanes.
[0213] It may be that the method comprises inserting a number of null words (and optionally determining a number of null words) equal to: L(fe) - (F modulo L(fe)), where L(fe) is the first numbers of lanes (i.e., the number of lanes the receiver is configured to support) and F is the size, in words, of the portion of the data frame comprising words associated with a single packet, or in the case that the data frame only comprises words associated with a single data packet, F is the (entire) size of the data frame in words.
[0214] It may be that the method optionally comprises further configuring the one or more words such that the size of the data frame (e.g., the entire data frame) is an integer multiple of the first number of lanes. For example, if the obtained words for transmission comprise words associated with more than one data packet, a further configuration of the one or words may be performed.
[0215] For example, if the obtained words for transmission are associated with more than one complete data packets, or a final portion of a first data packet and a further one or more complete data packet (where an EOP word for each respective data packet is present in the words obtained for transmission) then the method of inserting at least one null word described above may be repeated for each data packet in the frame.
[0216] If the obtained words are associated with at least a final portion of a first data packet (i.e., include an end of packet word) and an initial portion of a second data packet (i.e., includes at least one word associated with the second packet, but not an end of packet word for the second data packet), an additional configuration of the words of the second data packet, as described below, may be performed such that the size of the (entire) data frame is an integer multiple of the first number of lanes.
[0217] It may be that method optionally comprises (not shown) determining if the one or more obtained words for transmission comprise at least one end of packet word, and in response to the determination, (at least) perform the methods of Figure 11 described above. Alternatively, if the one or more words do not comprise an end of packet word, in response to the determination, the method may comprise the operations described in detail below with respect to Figure 12.
[0218] Figure 12 is a flow chart illustrating an example method to be performed by the transmitter for configuring the words as the at least one data frame comprises configuring the words as at least one data frame having a size that is an integer multiple of the first number of lanes. For example, configuring the one or more words such that the at least one data frame has a size that is an integer multiple of the first number of lanes.
[0219] It may be that the method optionally further comprises determining if the one or more obtained words for transmission comprise at least one end of packet word, and in response to the determination, (at least) perform the following operations if the one or more words comprise do not comprise an end of packet word.
[0220] It may be that the method optionally further comprises determining whether the second number of lanes meets a criteria that the second number of lanes is greater than the first number of lanes and is an integer multiple of the first number of lanes, and in response to determining that the second number of lanes does not meet (or deviates from) the criteria, performing the operations described below.
[0221] In block 1206 size of at least one of the stored one or more data frame the method comprises determining a data frame size that is an integer multiple of a number of rows of a buffer of the transmitter that are divisible by, or divide, the first number of lanes without a residual.
[0222] In block 1208 the method comprises configuring (e.g., matching, or limiting) the data frame size (i.e., the size of the data frame to be transmitted to the receiver) to the determined data frame size. It may be that the preceding blocks of Figure 12 are the same as the correspondingly numbered blocks of Figure 10 and / or Figure 11.
[0223] As described elsewhere herein, it may be that the integer multiple of the number of rows of the buffer of the transmitter that are divisible by, or divide, the first number of lanes without a residual is an integer multiple of a minimum number of rows of the buffer of the transmitter that are divisible by, or divide, the first number of lanes without a residual. It may be that the integer multiple, when multiplied by the minimum number of rows of the buffer of the transmitter that are divisible by, or divide, the first number of lanes without a residual, represents at least the minimum number of words that fills an integer number of both transmitter buffer rows and receiver buffer rows. For example, the integer multiple may an integer multiple of the second number of lanes (i.e., the width of the transmitter buffer, L(ne)). It may be that the method further comprises determining said integer multiple.
[0224] It may be that the determination of the data frame size is based on a lowest common multiplier of the first number of lanes and the second number of lanes.
[0225] It may be that configuring the words as the at least one data frame further comprises determining a data frame size that does not exceed a maximum data frame size. For example, determining a data frame size that is both less than or equal to a maximum data frame size and an integer multiple of the first number of lanes. For example, as described elsewhere herein the maximum data frame size may be the maximum data frame size that the receiver buffer is configured to store. For example, it may be that the integer multiple, when multiplied by the number of rows of the buffer of the transmitter that are divisible by, or divide, the first number of receiver lanes without a residual, represents the maximum number of words that fills an integer number of both transmitter buffer rows and receiver buffer rows and does not exceed the maximum data frame size.
[0226] As described above, it may be that the integer multiple of the number of rows of the buffer of the transmitter that are divisible by, or divide, the first number of receiver lanes without a residual equals an integer multiplier of the second number of lanes, L(ne) (itself an integer value).
[0227] For example, it may be that the integer multiplier of L(ne) equals the largest multiplier of integer rows of the receiver buffer that can be filled, without exceeding the maximum data frame size.
[0228] For example, it may be that the integer multiplier of L(ne) equals the second number of lanes multiplied by the nearest, rounded down, integer corresponding to: a number of words that the buffer is configured to store for each lane (e.g., 64), divided by: the lowest common multiplier divided by the first number of lanes.
[0229] In general, the integer multiplier of L(ne) may be given by equation 2, described above.
[0230] It may be that the minimum number of rows of the buffer of the transmitter that are divisible by, or divide the first number of lanes without a residual equals the lowest common multiplier divided by the second number of lanes. In general, the minimum number of rows of the buffer of the transmitter that are divisible by, or divide the first number of lanes without a residual may be given by equation 1 described above. It may be that the method further comprises determining said minimum number of rows of the transmitter that are divisible by, or divide the first number of lanes without a residual. It may be that the method further comprises determining said integer multiplier of L(ne).
[0231] It may be that the method comprises determining the data frame size, based on, or using equation 3, described above.
[0232] It may be that configuring the data frame size (i.e., the size of the data frame to be transmitted to the receiver) to the determined data frame size comprises truncating the number of the one or more words of the data to be transmitted to the receiver, and transmitting the remaining one or more words in a second (e.g., subsequent) data frame. In other words configuring the data frame may comprise splitting the one or more words into two or more data frames to be sent, wherein the size (in words) of at least one (or all of) the data frames is equal to the determined data frame size.
[0233] It may be that configuring the data frame comprises configuring (e.g., framing) a number of the obtained words equal to the determined frame size (e.g., from the transmitter buffer) with start-of-frame and end-of-frame words. It may be that any remaining data words obtained by the transmitter (and e.g., stored in the transmitter buffer) (i.e., beyond to the last data word configured in the data frame) are configured (e.g., remain in the transmitter buffer for configuring) (e.g., framing) in a second, subsequent, data frame.
[0234] As described above, it may be that when the first number of lanes is larger than the second number of lanes, or vice versa, and where the first when the first number of lanes and the second number of lanes may be any 2n number of lanes, where n is zero, or any integer value, (where the first number of lanes is different from the second number of lanes), the determination of the data frame size may be simplified.
[0235] For example, determining the data frame size may comprise determining a data frame size that is an integer multiple of the lesser of the first number of lanes and the second number of lanes. The integer multiple may be any integer multiple, which is zero modulo the first number of lanes. It may be that the determination, as above, further comprises determining a data frame size that does not exceed a maximum data frame size (i.e., in addition to being an integer multiple of the first number of lanes).
[0236] Figure 13 is a flow chart illustrating a further example method, which may be optionally combined with any preceding example method described herein, or any combination of the preceding example methods described herein, or may form part of any of the preceding example methods described herein. In block 1308 the method comprise determining whether the size of the at least one data frame exceeds a maximum data frame size.
[0237] As described above, the maximum data size may be based on the maximum data frame size that buffer of the receiver is configured to store. It may be that the maximum data frame size is based on the first number of lanes. For example, the maximum data frame size may equal at least one of: a multiple of the first number of lanes; and a multiple of the lesser of the first number of lanes and the second number of lanes.
[0238] In block 1310 the method optionally comprises configuring the data frame to be transmitted based on the determined maximum data frame size.
[0239] For example, it may be that the method comprises (not shown), in response to a determination that the size of the at least one data frame to be transmitted to the receiver (i.e., the number of the obtained one or more words to be transmitted, or the number of the one or more stored in a transmitter buffer) exceeds the maximum data frame size, configuring the at least one data frame to have a size equal to or less than the maximum data frame size.
[0240] For example, the method may comprise truncating the data frame to be transmitted (e.g., the words of the data frame may be truncated, or split, between data frames), such that the number of words exceeding the maximum data frame length are sent in at least one other data frame. For example, a number of the one or more words less than or equal to the maximum data frame size may be configured (e.g., framed) for transmission in a first data frame, and the remaining one or more words (e.g., in the transmitter buffer) may be configured (e.g., framed) in a second, subsequent data frame.
[0241] It may be that the preceding blocks of Figure 13 are the same as the correspondingly numbered blocks of any one of Figures 10, 11 or 12.
[0242] Although blocks 1308 and 1310 are shown as separate from the preceding blocks, and following blocks 1302 to 1306, it may be that the operations of blocks 1308 and 1310 are performed by an example method subsequent to, prior to, or as part of any of the preceding blocks, or any of the blocks of Figures 10 to 12.
[0243] It may be that any of the example methods to be performed by the transmitter, described above, may optionally further comprise inserting a null character into a word, as described above.
[0244] Figure 14 illustrates a communication link 1400, similar to communication link 100, having a receiver 1410 comprising logic 1412 and a first number of lanes 1414 for communication, and a transmitter 1402 comprising logic 1404 and a second number of lanes 1406 for communication, where the first number of lanes 1414 is different from the second number of lanes 1406, i.e., the transmitter 1402 and receiver 1410 comprise a non-symmetric (i.e., asymmetric) number of lanes.
[0245] The transmitter 1402 may comprise one lane and the receiver 1410 may comprise one or more lanes (e.g., two lanes), or vice versa. Alternatively, both the transmitter 1402 and the receiver 1410 may comprise more than one lanes. For example, the transmitter may comprise between 1 and 16 lanes (inclusive), and the receiver may comprise between 1 and 16 lanes (inclusive).
[0246] It may be that, similar to communication link 100, the first number of lanes 1414 and / or the second number of lanes 1406 are the respective number of lanes of the receiver or transmitter configured for communication, i.e., supported for communication. As described above, and shown in Figure 1, it may be that the number of lanes of the transmitter and / or receiver utilized by the link for communication 1418 (i.e., the number of active lanes of the communication link) is equal to, or less than, the lesser of the first number of lanes 1414 and the second number of lanes 1406. For example, it may be that in the case of a lane fault, the number of active lanes may be less than the lesser of the first number of lanes and the second number of lanes.
[0247] It may be that, similar to communication link 100, the one or more communication lanes 1418 (e.g., active communication lanes) are uni-directional or bi-directional lanes. It may be that, as illustrated in the communication link 100 of Figure 1, at least one of the one or more communication lanes 1418 (e.g., active lanes) is a bi-directional lane. However, the communication link is not so limited.
[0248] It may be that, similar to communication link 100, the lanes e.g., the first number of lanes 1414 and second number of lanes 1406 are physical lanes, for example the lanes may be one or more of electrical and fibre optic cables. For example, it may be that the communication link 1400 operates over electrical and / or optical cable.
[0249] It may be that the communication link 1400 is a serial communication link, or a serial data-link.
[0250] It may be that the communication link 1400 is, similar to communication link 100, configured for use on-board spacecraft. For example, it may be that the communication link 1400 is configured for use as a spacecraft on-board data-link and may be configured to support a plurality of spacecraft onboard communication applications. In particular, it may be that the communication link 1400 is configured to support payloads (e.g., high data-rate payloads) associated with spacecraft instrumentation, such as Synthetic Aperture Radar (SAR) and / or multi-spectral imaging instruments.
[0251] It may be that the communication link 1400 is configured for (i.e., configured to provide) quality of service (QoS) (e.g., a predetermined quality of service) and / or fault detection, isolation and recovery (FDIR).
[0252] It may be that the communication link 1400 is configured to provide at least lGbps (Gigabits per second) data-rates per lane, e.g., with radiation tolerant technology (e.g., radiation tolerant, or hardened, processors, such as radiation tolerant or hardened FGPAs). It may be that the communication link 1400 is configured to provide at least 2.5, or e.g., 3.125 Gbps data-rates, and may, for example, by configured to support communication between a plurality of enabled devices over a single link, which may reduce cable harness mass and simplify redundancy strategies. It may also be that when the communication link 1400 uses more than one lane (e.g., more than one active lane) it is configured to provide higher data-rates, e.g., data rates of at least lOGbps.
[0253] It may be that the communication link 1400 is, or is compatible with, a SpaceFibre communication link, and / or devices configured for use with SpaceFibre. For example, the communication link 1400 may be or may be compatible with a SpaceFibre communication link configured to use an asymmetric number of lanes. SpaceFibre is a communication standard (published and maintained by the European Cooperation for Space Standarization (ECSS). SpaceFibre is established as one of the main data-handling protocols used on-board spacecraft and is used on man ESA (European Space Agency), NASA (National Aeronautics and Space Administration) and JAXA (Japan Aerospace exploration Agency) spacecraft. SpaceFibre is established as a standard that provided a very high-speed serial data-link for high data-rate payloads. SpaceFibre compliments the capabilities of the widely implemented SpaceWire standard.
[0254] For example, the communication link 1400 may be, or may be compatible with a SpaceFibre link according to the ECSS standard ECSS-E-ST-50-11C released 15 May 2019, or any future modification thereof. For example, the communication link 1400 may be backwards compatible with SpaceFibre and SpaceFibre devices.
[0255] As described above with respect to Figures 2 and 3, it may be that if a receiver of a conventional single or multi-lane interface (e.g., SpaceFibre interface) receives one or more data frames from a transmitter of a conventional single or multi-lane interface with a different number of lanes, a single row of the conventional receiver buffer may be only partially filled with received data words, or may be filled with data words corresponding to one or more data packets. Such an occurrence may violate, or cause additional signal processing overheads to account for an unexpected event. Thus, there is also a need for a receiver, for use in a communication link (or an interface thereof) that mitigates, and / or corrects for, the unexpected deviations in how the rows of the receiver buffer are filled when a conventional transmitter that supports a different number of lanes with respect to a the receivers, communicates with the receiver over a communication link, such as a SpaceFibre communication link. Such a receiver, is described below.
[0256] The receiver 1410 is for use in the communication link 1400 between the transmitter 1402 and a receiver 1410, where the 1400 is configured to communicate over one or more lanes. The receiver 1410 comprises a first number of lanes 1414 for communication, and the transmitter 1402 comprises a second number of lanes 1406 for communication. The first number of lanes 1414 is different from the second number of lanes 1406, i.e., the number of supported lanes is asymmetric. It may be that the transmitter 1402 is any transmitter, such as any conventional transmitter. For example, the transmitter 1402 may be blind to the difference between the first number of lanes and second number of lanes.
[0257] As shown in Figure 14, the receiver 1410 further comprises logic 1412 configured to receive, from the transmitter 1402, one or more data frames to be stored in a buffer of the receiver 1410, wherein each of the one or more data frames comprises words associated with one or more data packets. The receiver 1410, or logic 1412 thereof is further configured to provide, based on at least the received one or more data frames and the first number of lanes, one or more data frames stored in the buffer, wherein the logic 1412 is configured to modify how at least one row of the buffer is filled based on at least the first number of lanes.
[0258] It may be that the receiver buffer is configured to have a width equal to the first number of lanes. As described elsewhere herein, it may be that the receiver buffer is a VCB buffer, but the buffer is not so limited. It may also be that the communication link is a SpaceFibre communication link, but the communication link is not so limited. It may be that the transmitter 1402 also comprises at least one buffer (e.g., an output buffer), the at least one buffer configured to have a width equal to the second number of lanes.
[0259] As also described elsewhere herein, it may be that the modification (i.e., the modifying by logic 1412) of how at least one row of the buffer of the receiver is filled, is configured to account for the asymmetry (i.e., difference in numbers) between the lanes supported for communication by the transmitter 1402 and the receiver 1410.
[0260] For example, it may be that the modification of how at least one row of the buffer is filled is configured to reduce overheads, e.g., signal processing overheads. For example, signal processing overheads associated with at least one of: error handling, error messaging, protocol violation avoidance and / or mitigation.
[0261] It may be that a size of at least a portion of a data frame stored in the buffer comprising words associated with a respective data packet is an integer multiple of the first number of lanes. For example, it may be that the providing by the receiver 1410, or logic 1412 thereof comprises providing a data frame stored in the buffer with a size of at least a portion of the data frame stored in the buffer comprising words associated with a respective data packet that is an integer multiple of the first number of lanes. This may prevent a row of the buffer of the receiver 110 from comprising stored words associated with more than one packet, and / or may prevent at least one row being partially filed, which may provide compliance with the signal processing protocol, e.g., the SpaceFibre standard as described above. It may be that without modification, the buffer of the receiver 1410 will be filled such that violation of the signal processing protocol occurs.
[0262] For example, in the case that at least one EOP is included in the words received by the receiver 1410 from the transmitter 1402 (e.g., one or more data packets are to be included), at least the number of words of the stored data frame associated with that packet may be an integer number of the first number of lanes, and may fill an integer number of rows of the buffer. For example, it may be that the receiver is configured to determine if at least one of the words transmitted in the data frame by the transmitter is an EOP word (i.e., is a word comprising an EOP character or symbol) and, in response, determining that at least one word is an EOP word, provides the data frame stored in the receiver buffer based on the size of (at least) a portion of the data frame stored in the buffer comprising words associated with the respective data packet being (e.g., configured as) an integer multiple of the first number of lanes.
[0263] In another example, in the case that no EOP is included in the words received by the receiver 1410 (e.g., only a fraction of a single packet is included) a location of the last word of a first data frame received by the receiver may be stored (or logged) and the receiver may be configured to, based on the logged word (or position in the buffer thereof) store a first word of a second received data frame adjacent to the last word of the first received data frame such that at least one row of the buffer is filled (e.g., entirely) filled with received words. This may avoid gaps or (empty) spaces in the buffer once filled, which may violate signal processing protocols, or be an unexpected / non-optimal signal processing event. For example, it may be that the receiver is configured to determine if at least one of the words transmitted in the data frame by the transmitter is an EOP word (i.e., is a word comprising an EOP character or symbol) and, in response to determining that none of the one or more words are an EOP word, logs a location of the last word of a first data frame received by the receiver, and, based on the logged word (or position in the buffer thereof) store a first word of a second received data frame adjacent to the last word of the first received data frame. It may be that the second received data frame is a second received data frame for a respective VC, and for example, may not be an immediately subsequent (in time) data frame received by the receiver.
[0264] It may be that providing the one or more data frames stored in the buffer comprises configuring, or modifying (e.g., supplementing), the words of the data frame received from the transmitter (e.g., 1402) prior to the words being stored in the buffer, and for example subsequently storing the configured words in the buffer. For example, modifying the received data frame (or words thereof) via signal processing prior to the storage of the data in the buffer. For example by inserting null words, e.g., trailing words.
[0265] Alternatively, or additionally, providing the one or more data frames stored in the buffer may comprise configuring, or modifying, the data frame once it has been stored in the buffer. For example, modifying the stored data frame. For example, by inserting null words, e.g., trailing words into a row of the buffer, and / or interspersed and / or leading words.
[0266] It may be that, as shown in Figure 15, the receiver (e.g., 1410, 1502) comprises at least buffer 1504 that is a VCB buffer. It may be that the receiver comprises a number of VCB buffers corresponding to a number of VCs used by the receiver.
[0267] It may be that the receiver (e.g., 1410, 1502) further comprises at least one additional buffer. For example, at least one additional buffer configured to store different information, such as Cyclic Redundancy Check information. For example, the receiver (e.g., 1410, 1502) may further comprise at least one CRC buffer. It may be that the number of CRC buffers also corresponds to the number of VCs the receiver uses for communication.
[0268] Various example data frames stored in the buffer provided by the receiver, based on at least the first number of lanes, such that how at least one row of the buffer is filled, are disclosed below.
[0269] In an example, the receiver (e.g., receiver 1410) or logic (1412) thereof is configured to provide the one or more data frames stored in the buffer, wherein providing the one or more data frames stored in the buffer comprises inserting at least one null word into a data frame stored in the buffer (i.e., into a data frame when stored in the buffer), wherein the insertion is based on an end of packet word associated with the respective data packet. It may be that the insertion of the at least one null word performed by the receiver is similar to, or the same as, the insertion performed by the transmitter (e.g., 102), as described above.
[0270] For example, the insertion may comprise inserting the at least one null word into a position in the data frame stored in the buffer based on the end of packet word associated with the respective data packet. It may be that an end of packet word is a word comprising an end of packet symbol. It may be that words associated with respective data packet, are words which, when obtained by the transmitter for transmission to the receiver, are grouped within a single packet.
[0271] Similarly to described above with respect to the transmitter 102, it may be that the null words are configured to not communicate information, e.g., a null word may be configured as a word comprising empty values. It may be that a null word comprises four identical symbols. It may be that the symbols used in each null word are FILL characters, as described above. Furthermore, it may be that a null word consists of only FILL words, and for example, may be referred to as an all-FlLLs word.
[0272] It may be that inserting the at least one null word into the data frame stored in the buffer comprises inserting the at least one null word at a pre-determined position in the data frame stored in the buffer based on the end of packet word, i.e., a predetermined position with respect to the end of packet word associated with the respective packet. For example, the at least one null word may be inserted as a trailing word, i.e., it may be inserted adjacent to (e.g., directly following) the end of packet word associated with the data packet.
[0273] Alternatively, or additionally, it may be that the at least one null word is a leading word, i.e., it may be inserted preceding the first word associated with the respective data packet in the data frame, e.g., it may be inserted at the start of the data frame, adjacent to and following a start-of-frame word, or following an end of packet word associated with a preceding packet.
[0274] Alternatively, or additionally, it may be that the at least one null word is interspersed within the words of the data frame stored in the buffer following the at least one word associated with the respective data packet (i.e., the first word in the data frame associated with the respective data packet) and the end of packet word associated with the data packet. For example, it may be that the at least one null word is inserted into the data frame stored in the buffer between at least one word associated with the respective data packet and the end of packet word associated with the data packet. It may be that if more than one null word is inserted, at least one null word is inserted as one of: a trailing word, a leading word, and an interspersed word. It may also be that if more than one interspersed null word is inserted, each of the interspersed null words is inserted into the data frame stored in the buffer at a predetermined interval.
[0275] It may be that in the case where the words are configured by the logic (e.g., logic 1412) of the receiver 1410 to configure the words after receiving the words from the transmitter, prior to storing the words in the buffer, the at least one null word is inserted as a trailing word. It may also be that if more than one null words are inserted, the plurality of inserted null words are trailing words (i.e., the plurality of null words are inserted following the end of packet word).
[0276] As described above, with respect to the transmitter 102 it may be that the number of at least one null words to be inserted into the data frame is selected such that the a size of at least a portion of the data frame stored in the buffer comprising words associated with the respective data packet is an integer multiple of the first number of lanes.
[0277] For example, similarly to as described above with respect to the insertion of null words performed by the transmitter 102, it may be that the number of null words to be inserted into the data frame stored in the buffer is equal to an integer number subtracted from the first number of lanes. For example, it may be that the at least one null word is inserted to provide to fill (i.e., completely fill) at least one row of the receiver buffer. The integer number may be equal to the number of data words in the data frame received from the transmitter that are associated with the data packet modulo the first number of lanes. In other words, the integer number of words may be equal to the remainder of the number of words in the data frame received from the transmitter associated with the data packet, divided by the first number of lanes.
[0278] In the case where the data frame received from the transmitter only comprises words associated with a single packet (i.e., it comprises a single complete data packet, or a fraction of a single packet), the integer number may be equal to the number of data words in the received data frame modulo the first number of lanes. In other words, the integer number of words may be equal to the remainder of the number of words in the received data frame , divided by the first number of lanes.
[0279] In general, a relationship to determine the number of null words (e.g., all-FILLs words) to be inserted into the data frame stored in the buffer is given by: L(fe) - (F modulo L(fe)), where L(fe) is the first numbers of lanes (i.e., the number of lanes the receiver is configured to support) and is the F is the size, in words, of the portion of the received data frame comprising words associated with a single packet.
[0280] In the case that the data frame only comprises words associated with a single data packet, F is the (entire) size of the received data frame in words.
[0281] Figure 16 illustrates example data frames configurations received by the receiver (e.g., 1410), in which the receiver inserts at least one null word in the data frame when stored in the buffer.
[0282] As shown in Figure 16, a null word is inserted into the data frame stored in the receiver buffer after (i.e., adjacent to and following) a word containing an end-of-packet symbol, when the data word containing the end-of-packet symbol would not fill a row of the buffer of the receiver. In this example, the at least one inserted null word comprises four identical symbols. Also in this example, the symbols used in each null word are FILL characters. In other words, each inserted null word is an all-FILLs word.
[0283] A buffer 1602 of the transmitter (e.g., 1402), data frame 1604 transmitted by the transmitter and data frame stored in the buffer of the receiver 1606 are shown in Figure 16. In this example the link between the transmitter and receiver has a single active lane. While a particular number of lanes and buffer row widths are described, these are merely included to aid understanding of the disclosures, and are not intended to be limiting.
[0284] The transmitter buffer 1602 contains first and second packets terminated with data words containing end-of-packet symbols 1610a, 1610b. The first packet comprises four data words (including the data word containing the end-of-packet symbol), and the second packet comprises six data words. Since each row in the receiver buffer 1606 is four words wide, the first packet will fill an integer number of rows in the receiver buffer 1606, because the size of the first packet is an integer multiple of the width of the input buffer. In other words, the end-of-packet data word 1610a is aligned with the end of a row in the receiver buffer 1606.
[0285] The second packet will not fill an integer number of rows in the receiver buffer 1606, since the size of the second packet is not an integer multiple of the width of the receiver buffer 1606. Therefore the receiver (e.g., 1410), or logic (e.g., 1412) thereof, inserts two null words (e.g., all-FILLs words) 1608a, 1608b after the end-of-packet data word 1107. The second packet, when stored in the receiver buffer with the inserted null words, then fills an integer number of rows in the receiver buffer 1606, because the size of the second packet is now an integer multiple of the width of the receiver buffer 1606. In other words, the inserted null words 1608a, 1608b are aligned with the end of a row in the receiver buffer 1606.
[0286] In an alternative, or additional example, it may be that the receiver (e.g., 1410) or logic (e.g., 1412) thereof is configured to log (or store) a location in the buffer in which a last word of a first data frame received by the receiver is stored, and is configured to store a first word of a second data frame, subsequently received by the receiver, at an adjacent location in the buffer. It may be that the adjacent location is a directly adjacent location in the row of the receiver in which the last word of the first frame is stored.
[0287] In other words, the second data frame may be contiguous with the first data frame when stored in the receiver buffer.
[0288] It may be that the receiver logs a location in the buffer for each data frame stored in the buffer.
[0289] It may be that the receiver comprises more than one buffers for storing the received data (e.g., more than one VCBs). It may be that the receiver logs (or stores) the last data word positions e.g. offsets for each buffer (e.g., each VCB). It may be that the receiver logs (or stores) the last data word positions e.g. offsets, for each buffer independently.
[0290] It may be that the first and second data frames are received data frames associated with the same VC.
[0291] This may be the case when the one or more words received in the data frame transmitted by the transmitter (e.g., 1402) do not comprise an end of packet word. For example, it may be that the receiver (e.g., 1410) or logic (e.g., 1412) thereof is configured to determine if the one or more received words at least one end of packet word, and in response to the determination, (at least) perform the following configuration if the one or more words comprise do not comprise an end of packet word. The receiver may also be configured to perform further configurations, as described herein.
[0292] As described above, if a conventional receiver buffer receives a data frame from a transmitter with a different row width, the number of words in each data frame may not correspond to an integer number of rows in the receiver buffer. In other words, the end of each data frame may not completely fill a row in the receiver buffer.
[0293] Figure 17A shows an example data frame stored in a receiver buffer configuration, with receiver buffer 1702 being partially filled with data frames 1704, 1706, 1708, e.g., data frames transmitted by a conventional transmitter. The link used for communication in Figure 17A, has a single active lane between the transmitter and the receiver. While a particular number of lanes and buffer row widths are described, these are merely included to aid understanding of the disclosures, and are not intended to be limiting.
[0294] Three data frames 1704, 1706, 1708 are shown on the link to be received into receiver buffer 1702. The first data frame contains seven data words, so only partially fills a row of receiver buffer 1702. The receiver (e.g., 1410) saves (or logs) the position e.g. offset of the last data word 1710 of the first data frame 1704 within the partially filled row of receiver buffer 1702. In this example, the receiver comprises two buffers for storing the received data (e.g., two VCBs) and the receiver saves (or logs) the last data word positions e.g. offsets of both buffers independently. In other examples, the receiver may contain more or fewer buffers. It may be that the receiver saves the last data word positions e.g. offsets for all buffers.
[0295] The second data frame 1706 shown in Figure 17A contains five data words, shown shaded in receiver buffer 1702. The second data frame is written into the receiver buffer 1702 after, i.e., directly adjacent, the last data word 1710 of the first data frame 1704. In other words, the second data frame 1704 is contiguous with the first data frame 1702 in the receiver buffer 1702. The second data frame 1704 completely fills a row of the receiver buffer 1702. The receiver may optionally again save the position e.g. offset, of the last data word 1712 of the second data frame 1706 within a row of the receiver buffer 1702, in the same manner as for the first data frame 1704.
[0296] The third data frame 1708 shown in Figure 17A contains two data words, and is written into receiver buffer 1702 after the last data word 1712 of the second data frame 1706. In other words, the third data frame 1708 is contiguous with the second data frame 1706 in the receiver buffer 1702. The third data frame 1708 only partially fills a row of the receiver buffer 1702. The receiver may again save the position e.g. offset of the last data word 1714 of the third data frame 1708 within the partially filled row of receiver buffer 1702.
[0297] Figure 17B shows a further example data frame stored in a receiver buffer configuration, with receiver buffer 1702 being partially filled with data frames 1704, 1706, 1708, e.g., data frames transmitted by a conventional transmitter. The link used for communication in Figure 17b, has two active lanes between the transmitter and the receiver. While a particular number of lanes and buffer row widths are described, these are merely included to aid understanding of the disclosures, and are not intended to be limiting.
[0298] Two data frames 1716, 1718 are shown on the link to be received into receiver buffer 1722. The first data frame 1716 contains six data words, so only partially fills a row of the receiver buffer 1722. The receiver (e.g., 1410) saves the position e.g. offset of the last data word 1724 of the first data frame 1716 within the partially filled row of the receiver buffer 1722.
[0299] The second data frame 1718 shown in Figure 17B contains ten data words, shown shaded in the receiver buffer 1722. The second data frame 1718 is written into the receiver buffer 1722 after the last data word 1724 of the first data frame 1716. In other words, the second data frame 1718 is contiguous with the first data frame 1716 in the receiver buffer 1722. The second data frame 1718 completely fills a row of the receiver buffer 1722, but the receiver may optionally save the position e.g. offset of the last data word 1726 of the second data frame 1718 within a row of the receiver buffer 1722 in the same manner as for the first data frame 1716.
[0300] It may be that when the receiver (e.g., 1410) receives data frames from the transmitter (e.g., 1402), data is stored in at least one buffer ( e.g., an input buffer, for example a VCB) of the receiver before being read by a device or user application connected to an interface comprising the receiver. As described above, it may be that the receiver (e.g., 1410) periodically signals the transmitter (e.g., 1402) with flow control information. For example, it may be that the flow control method described above performed by receiver (e.g., 110), for example a conventional receiver (e.g., configured for symmetric lane communication, such as receiver 110), is also performed by the receiver (e.g., 1410) configured for asymmetric lane communication.
[0301] As described above with respect to the conventional flow control method, it may be that the flow control information sent, or signalled, by the receiver (e.g., 110, 1410) to the transmitter ( 102, 1402) comprises at least one flow control word (e.g., a flow control token), which indicates free space in the receiver buffer (e.g., 1504) for storing a data frame to be received from the transmitter. A conventional transmitter (e.g., 1402) may processes this information to control the transmission of data frames transmitted by the transmitter, for example to ensure that a buffer of the receiver to which the data is to be transmitted (e.g., receiver 1410, or receiver 110) has sufficient free space to store the next transmitted data frame. It may be that the free space in the receiver buffer is determined by the receiver (e.g..,1410) or logic thereof based on the number of words read out from the buffer. For example, the free space in the buffer may correspond to the amount of data (i.e., number of words) read from the buffer.
[0302] In a conventional flow control method, the buffer of the receiver may infer the free space in the buffer (into which data can be stored) based on the data read out from the buffer (i.e., the free space inferred by the receiver into which data can be read directly corresponds to the amount of space freed when data is read out from the buffer). In a conventional flow control method, when the amount of free space in the buffer becomes equal to, or exceeds the space indicated a flow control token (e.g., a predetermined number of words), a flow control token is sent by the receiver to the transmitter to indicate that the transmitter may transmit the indicated amount of data to the receiver (without causing buffer overflow at the receiver).
[0303] It may be that the buffer of the receiver (e.g., 1410) similarly comprises free space into which words (e.g., received in the at least one data frame). However, the receiver (e.g., 1410) may also be configured to allocate at least a portion of the free space for storing a data frame to be received from the transmitter. It may be that the receiver (e.g., 1410) or logic (e.g., 1412), is optionally also configured to compare a difference between the free space and allocated space in the receiver buffer with a threshold value. The receiver may be configured in response to the comparison, to update the allocated space with a further portion of space corresponding to space for storing words of a subsequently received data frame and signal the transmitter with an indication of the further portion of allocated space corresponding to the space for storing words of the subsequently received data frame.
[0304] For example, the free space in a buffer (e.g., VCB) of the receiver (1410) may be the space which is not filled by words. It may be that the free space comprises both available space and allocated space. For example, the free space may be the sum of available space and allocated space. Allocated space is the portion of free space in the buffer which the receiver has allocated (or e.g., reserved) for a data frame that is to be received from the transmitter. Available space may be the portion of free space within the buffer that is still available to be allocated, i.e., is yet un-allocated and so may still be available for allocation. It may be that when the receiver allocates allocated space in the buffer for a data frame to be sent from the transmitter, the receiver issues / signals an indication of this allocated space to the transmitter, for example by way of the flow control method (e.g., in a flow control word, such as a flow control token). It may be that the available space decreases when a portion of free space is allocated. It may be that the available space increases when data is read from the buffer.
[0305] In contrast to a conventional receiver (e.g., configured for symmetric lane communication, such as receiver 110), the receiver disclosed herein configured for asymmetric lane communication (e.g., with a conventional transmitter) (e.g., receiver 1410) may insert at least null word (e.g. all-FlLLs word) into a data frame stored in the buffer of the receiver. Such null words are not passed to any device or user application connected to the interface comprising the receiver, which reads data from the buffer (e.g., VCB) of the receiver. Therefore it may be that the size of data (e.g., number of words) read from a buffer (e.g., VCB) of the receiver may be less than the combined size of data words and any null words stored in the buffer. Thus it may be that the size of data read from a buffer of the receiver does not equate to an increase in available space in the buffer for further data frames transmitted by the transmitter. In the case where the transmitter transmits at least one data frame that is sized based on the conventional flow control method, i.e., based on the indication from the flow control word of the available space in the buffer, a buffer overflow may occur. Thus, there is a need to account for the insertion of at least one null word by the receiver (e.g., 1410) when signalling space in the buffer to the transmitter. This may be thought of as an update to conventional flow control.
[0306] It may be that the receiver (e.g., 1410), or logic thereof, is configured to prevent the available space from reaching zero. In this way, it may be that at least one null word can be stored in the buffer without causing a buffer overflow.
[0307] It may be that the threshold value against which the receiver is configured to compare the difference between the free space and allocated space in the receiver buffer (i.e., previously allocated space in the receiver buffer) is a minimum number of data words. It may be that in response to determining that the difference between the free space and allocated space in the receiver buffer is greater than the minimum number of data words, the receiver is configured to allocate the further portion of space and signal the transmitter. It may be that in response to determining that the difference between the free space and allocated space in the receiver buffer is less than the minimum number of data words, the receiver is configured not to allocate further space (or signal the transmitter).
[0308] It may be that the minimum number of data words is based on at least the one or more null words that can be inserted into a row of the buffer. For example, the minimum number of data words may be based on the maximum number of null words that can be inserted into the buffer in addition to the number of words indicated in a flow control token (FCT), i.e., M times the number of words the buffer is configured to support per lane (e.g., Mx64 ). This may take into account the space allocated after an FCT has been issued, but before the transmitter sends the data, and the number of null words inserted into the buffer. It may be that, the maximum number of null words that can be inserted into the buffer is based on the first number of lanes (i.e., the width of the respective rows of the buffer) minus 1. It may be that the minimum number of data words is selected (i.e., is selectable by the receiver) to ensure that buffer overflow does not occur when null words are stored in the buffer. For example, it may be that the minimum number of words equals the number of words (i.e., space) indicated in the FCT, plus the first numbers of lanes minus 1.
[0309] Figures 18A and 18B illustrate an example receiver buffer with respect to which the updated flow control method described above regulates transmission of data frames transmitted by the transmitter.
[0310] A buffer 1802 of a receiver (e.g., 1410), is shown in Figure 18A, which in this example has a capacity of 128 words. The buffer 1802 may initially be empty, so may have 128 words of free space 1804. In this example, the receiver 1410 allocates 64 words of the buffer 1802 to receive data from the transmitter (e.g., 1402) and issues a first flow control word to indicate to the transmitter (e.g., 1402) that the buffer 1802 may receive up to 64 data words. The allocated space 1806 comprising 64 words is shown in Figure 18A as a dashed portion of the buffer 1802.
[0311] The difference between the free space 1804 and the allocated space 1806 is available space 1808. In other words, the available space 1808 is the allocated space 1806 subtracted from the free space 1804; alternatively, the free space 1804 is the sum of the allocated space 1806 and the available space 1808.
[0312] The free space 1804 is all portions of the buffer 1802 that do not contain data words. The available space 1808 comprising 64 words is shown in Figure 18A as a cross-hatched portion of the buffer 1802. When the available space 1808 is greater than or equal to the space indicated by a flow control word (in this example, 64 words), the receiver (e.g., 1410) may allocate at least a portion of the available space 1808 for receiving a further data frame from the transmitter and issue a further (second) flow control word.
[0313] Figure 18B illustrates the buffer 1802 after the receiver has issued the second flow control word and the input buffer contains a data frame 1810 received from the transmitter.
[0314] A device or user application connected to an interface comprising the receiver has also read the first eight data words of the data frame 1812 from the buffer 1802. The free space was initially reduced by the size of the complete data frame 1810, but then increased when the first eight data words of the data frame were read from the buffer 1802. The free space now comprises two portions 1812, 1814 of the buffer 1802 adjacent to the remaining words of data frame. The allocated space 1816 has increased due to the second flow control word issued by the receiver and now comprises 108 words shown in Figure 18B as a dashed portion of the buffer 1802. The available space is the difference between the free space 1812, 1814 and the allocated space 1816, which in Figure 18B corresponds to the eight data words 1812 of the data frame received from the transmitter which have been read from the buffer 1802. The available space 1812 comprising eight data words is shown in Figure 18B as a cross-hatched portion of the buffer 1802.
[0315] As data from further data frames is received from the transmitter, and then read by a device or user application connected to an interface comprising the receiver, the available space will increase.
[0316] A conventional receiver, may determine when the available space is greater than or equal to the space indicated by a flow control word (in this example, 64 words), and the receiver may issue a further flow control word to allow the transmitter to transmit further data frames.
[0317] The receiver disclosed herein (e.g., for use in a communication link with a transmitter supporting a different number of lanes) may prevent an overflow of the buffer in response to allocating space for a subsequent frame by e.g., delaying, allocation of space for a subsequent data frame to be received, and sending a flow control word until the available space is greater than a minimum number of words.
[0318] It may be that the above described operations of the receiver to modify how the buffer of the receiver is filled may be implemented in the case where the first number of lanes is greater than the second number of lanes, or vice versa.
[0319] However, in the case where the second number of lanes (used by an e.g., conventional transmitter, for example a transmitter configured to communicate with a receiver that supports the same number of lanes) is greater than the first number of lanes, it may be that the receiver is not able to modify the data frame received from the transmitter such that a CRC buffer overflow does not occur, for example, if the size of the data frame transmitted by the (conventional) transmitter exceeds the maximum data frame size that a CRC buffer of the receiver is configured to store. As described above with respect to the transmitter, this scenario may occur when the buffer of the receiver configured to store the received data frame (e.g., VCB) is sized to store more than one data frame of a maximum data frame size, but the CRC buffer is not so sized.
[0320] It may be that in order to avoid CRC buffer overflow the receiver (e.g., 1410) comprises at least one (or each) CRC buffer sized to store more than one data frame of the maximum data frame size. For example, the at least one CRC buffer may be configured to store up to a maximum lane size x the number of words the buffer of the receiver (e.g., VCB) is configured to store per lane, e.g., 16x64 words, where a maximum lane size of a receiver is 16 lanes.
[0321] Alternatively, a CRC buffer of the receiver may not be used when it is determined that it will overflow. For example, a CRC for a received data frame (or data frame stored in the VCB) may be calculated without buffering, e.g., on-the-fly. In another example, a CRC for the frame may be calculated directly from the data frame stored in the VCB.
[0322] It may also be that in the scenario where the second number of lanes is greater than the first number of lanes, a conventional transmitter may send a data frame of a size greater than the maximum data frame size (e.g., when the receiver is configured to send a flow control word indicating available space which is more than one maximum data frame size). Upon receiving a data frame of the size greater than the maximum data frame size, a conventional receiver may be configured to flag an event, e.g., a 'frame error'. It may be that the receiver (e.g., 1410) may be configured (e.g., to reduce overheads) in response to receiving a data frame of size greater than the maximum data frame size, compare the size of the received frame to a threshold and only in response to the comparison flag a 'frame error'. It may be that the threshold is one of: the maximum sized frame capable from being transmitted from the interface comprising the transmitter (for example based on the M multiplier in received FCTs from said interface); or a maximum sized frame capable of being transmitted from any interface (or transmitter thereof) e.g. the maximum sized frame expected from the largest supported transmitter, e.g., a 16-lane transmitter.
[0323] Various methods to be performed by a receiver (e.g., receiver 1410) for use in a communication link (e.g., 1400) between the transmitter (e.g., transmitter 1402) and a receiver (e.g., 1410) are described below.
[0324] The communication link may be the communication link (e.g., 1400) described above, and, for example, may be a SpaceFibre communication link. As described above, the receiver may comprise a first number of lanes for communication, and the transmitter may comprise a second number of lanes, different from the first number of lanes.
[0325] In the following description of the figures, the methods of Figures 19 to 22 share several features in common. Corresponding features in Figures 19 to 22 are referred to using similar reference numerals.
[0326] Figure 19 is a flow chart illustrating an example method to be performed by the receiver.
[0327] In block 1902 the method comprises receiving, from the transmitter, one or more data frames to be stored in a buffer of the receiver, wherein each of the one or more data frames comprises words associated with one or more data packets.
[0328] In block 1904 the method comprises providing, based on at least the received one or more data frames and the first number of lanes, one or more data frames stored in the buffer, wherein how at least one row of the buffer is filled is modified based on at least the first number of lanes.
[0329] The providing may be as described above with respect to the configuration of the receiver in Figures 14 to 18.
[0330] It may be that, as described above, the modification of how at least one row of the buffer is filled is configured to account for the asymmetry (i..e, difference in numbers) between the lanes supported for communication by the transmitter 1402 and the receiver 1410.
[0331] It may be that the method comprises configuring a size of at least a portion of the data frame stored in the buffer comprising words associated with a respective data packet is an integer multiple of the first number of lanes.
[0332] It may be that providing the one or more data frames stored in the buffer comprises configuring, or modifying (e.g., supplementing), the words of the data frame received from the transmitter (e.g., 1402) prior to the words being stored in the buffer, and for example subsequently storing the configured words in the buffer. For example, modifying the received data frame (or words thereof) via signal processing prior to the storage of the data in the buffer. For example by inserting null words, e.g., trailing words.
[0333] Alternatively, or additionally, providing the one or more data frames stored in the buffer may comprise configuring, or modifying, the data frame once it has been stored in the buffer. For example, modifying the stored data frame.
[0334] Figure 20 is a flow chart illustrating an example method to be performed by the receiver, wherein in block 2004 providing the one or more data frames stored in the buffer comprises inserting at least one null word into the data frame (e.g., when stored in the buffer), wherein the insertion is based on an end of packet word associated with the respective data packet.
[0335] The inserting of the at least one null word may be as described above with respect to the configuration of the receiver in Figures 16A and 16B and the insertion performed by the transmitter (e.g., 102). For example, the insertion may comprise inserting the at least one null word into a position in the data frame based on the end of packet word associated with the respective data packet. The insertion may further comprise determining a number of null words to insert, for example based on any or more of equations 1, 2 and 3.
[0336] As described above, it may be that the at least one null word is an all-FILLS word.
[0337] It may be that the method further comprises determining whether at least one EOP is included in the words received by the receiver 1410 from the transmitter 1402 (e.g., one or more data packets are to be included), and in response to determining that at least one word is an EOP word, providing the data frame stored in the receiver buffer based on the size of (at least) a portion of the data frame stored in the buffer comprising words associated with the respective data packet being (e.g., configured as) an integer multiple of the first number of lanes.
[0338] It may be that the preceding blocks of Figure 20 are the same as the correspondingly numbered blocks of Figure 19.
[0339] Figure 21 is a flow chart illustrating an example method to be performed by the receiver, wherein in block 2104 providing the one or more data frames stored in the buffer comprises logging a location in the buffer in which a last word of a first data frame received by the receiver is stored.
[0340] In block 2106 the method further comprises storing a first word of a second data frame, subsequently received by the receiver, at an adjacent location in the buffer, i.e., at a location adjacent to the position logged for the last word of the first data frame.
[0341] The logging and storing may be as described above with respect to the configuration of the receiver in Figures 17A and 17B.
[0342] As described above, it may be that the first word of the second data frame is stored directly adjacent, subsequent to the last word of the first data frame.
[0343] It may be that the method comprises logging a location in the buffer for each data frame stored in the buffer.
[0344] It may be that the method comprises logging (or storing) the last data word positions e.g. offsets for each buffer (e.g., each VBC) of the receiver. It may be that the method comprises logging (or storing) the last data word positions e.g. offsets, for each buffer of the receiver independently.
[0345] It may be that the method comprises determining that the one or more words received in the data frame from the transmitter do not comprise an end of packet word, and logging the position of the last word of the data frame in response to the determination.
[0346] It may be that the preceding blocks of Figure 21 are the same as the correspondingly numbered blocks of Figure 19 and / or Figure 20.
[0347] Figure 22 is a flow chart illustrating a further example method, which may be optionally combined with any preceding example method performed by the receiver described herein, or any combination of the preceding example methods performed by the receiver described herein, or may form part of any of the preceding example methods performed by the receiver described herein.
[0348] In block 2204 the method comprises comparing a difference between the free space and allocated space in the receiver buffer with a threshold value.
[0349] In block 2206 the method comprises, in response to the comparison, updating the allocated space with a further portion of space corresponding to space for storing words of a subsequently received data frame.
[0350] In block 2208, the method comprises, signalling the transmitter with an indication of the further portion of allocated space corresponding to the space for storing words of the subsequently received data frame.
[0351] The allocation and signalling may be as described above with respect to the configuration of the receiver in Figures 18A and 18B.
[0352] As described above, it may be that by performing these operations, the receiver may insert at least one null word in the data frame stored in the buffer without causing a buffer overflow.
[0353] As described above, it may be that the threshold value against which the receiver is configured to compare the difference between the free space and allocated space in the receiver buffer (i.e., previously allocated space in the receiver buffer) is a minimum number of data words.
[0354] It may be that the method comprises, in response to determining that the difference between the free space and allocated space in the receiver buffer is greater than the minimum number of data words, allocating the further portion of space and signal the transmitter.
[0355] As described above, it may be that the minimum number of data words corresponds to one or more null words that can be inserted into a row of the buffer. For example, the minimum number of data words may be based on the first number of lanes (i.e., the width of the respective rows of the buffer) minus 1. It may be that the method comprises selecting the minimum number of data words is selected to ensure that buffer overflow does not occur when null words are stored in the buffer.
[0356] Although blocks 2206 and 2208 are shown as separate from the preceding blocks, and following blocks 2202 and 2204, it may be that the operations of blocks 2206 and 2208 are performed by an example method subsequent to, prior to, or as part of any of the preceding blocks, or any of the blocks of Figures 19 to 21.
[0357] In a further example method, which may be optionally combined with any preceding example method performed by the receiver described herein, a CRC buffer of the receiver may not be used when it is determined that it will overflow. For example, the method may comprise calculating a CRC for a received data frame (or data frame stored in the VCB) without buffering, e.g., on-the-fly. In another example method, a CRC for the frame may be calculated directly from the data frame stored in a VCB of the receiver.
[0358] In a further example method, which may be optionally combined with any preceding example method performed by the receiver described herein comprises, in response to receiving a data frame of size greater than the maximum data frame size, compare the size of the received frame to a threshold and in response to the comparison flag a 'frame error'. It may be that the threshold is one of: the maximum sized frame capable from being transmitted from the interface comprising the transmitter (for example based on the M multiplier in received FCTs from said interface); or a maximum sized frame capable of being transmitted from any interface (or transmitter thereof) e.g. the maximum sized frame expected from the largest supported transmitter, e.g., a 16-lane transmitter.
[0359] It may be that transmitter disclosed herein (e.g., transmitter 102, 2304) for communication with a receiver of a different number of lanes, may be implemented in a communication interface (2302), such as a SpaceFibre communication interface.
[0360] It may be that receiver disclosed herein (e.g., receiver 1410, 2306) for communication with a transmitter of a different number of lanes, may be implemented in a communication interface (2302), such as a SpaceFibre communication interface. It may be that the transmitter (e.g., 102) and the receiver (e.g., 1410) are implemented in the same interface, or different interfaces (as illustrated in communication interface 2302 of Figure 23A).
[0361] For example, it may be that the transmitter (e.g., 102) is implemented in a first interface of a communication link, which communicates with a conventional interface (and receiver thereof). Alternatively, or additionally it may be that the receiver (e.g., 1410) is implemented in the first interface of a communication link, which communicates with a conventional interface (and transmitter thereof). It may be these implementations enable an interface with a different number of lanes to be utilised for, and provide backwards compatibility in, a communication link comprising a conventional interface. It may be that an interface comprising the transmitter (e.g., 102) and the receiver (e.g., 1410) is particularly advantageous when used in a communication link with a conventional interface.
[0362] As a further example, it may be that the transmitter (e.g., 102) is implemented in a first interface of a communication link, which communicates with a second interface that also implements (comprises) the transmitter (e.g., 102). Alternatively, it may be that receiver (e.g., 1410) is implemented in a first interface of a communication link, which communicates with a second interface also comprising the receiver (e.g., 1410). It may be that such implementations enable asymmetric single or multi-lane functionality across the link.
[0363] Thus, a communication network (e.g., communication network 2308 illustrated in Figure 23B) such as a communication network comprising SpaceFibre interfaces and / or devices, may comprise a first communication interface (2310) comprising the transmitter (e.g., 102) and / or receiver (e.g., 1410) disclosed herein, and a second communication interface (2312). It may be that the second communication interface is a conventional interface, or comprises at least one of the transmitter (e.g., 102) and receiver (e.g., 1410) disclosed herein.
[0364] The various methods and operations performed by the transmitters and receivers disclosed herein can be implemented in various forms, or combinations of hardware, software, firmware, and / or special purpose processors. For example, it may be that the logic described herein (e.g., any of logic 104, 112, 1404, 1412) may comprise processing circuitry, such as general purpose processing circuitry (e.g., at least one processor or microprocessor) configured to implement software, gate level logic such as a field-programmable gate array (FPGA), a purpose-built semiconductor such as an applicationspecific integrated circuit (ASIC), integrated circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), logic gates, registers, semiconductor devices and the like.
[0365] Configuration of the processing circuitry to perform a specified function may be entirely in hardware, entirely in software or using a combination of hardware modification and software execution. Instructions (such as program instructions) may be used to configure logic gates of general purpose or special-purpose processing circuitry to perform a processing function.
[0366] The aforementioned instructions may be provided on at least one computer readable medium. For example, as illustrated in Figure 23C, instructions 2316 may be provided on computer readable medium 2314.
[0367] For example, at least one computer readable medium may comprise instructions which, when executed, implement the methods disclosed herein. For example, the at least one computer readable medium may comprise instructions which, when executed by processing circuitry (e.g., at least one processor), cause the processing circuitry to implement the methods disclosed herein.
[0368] It may be that the medium is a transitory, e.g., transmission medium, or non-transitory, e.g., storage medium.
[0369] The aforementioned computer readable medium may be any suitable medium for storing digital information, such as a hard drive, a server, a flash memory, and / or random-access memory (RAM), a compact disc read only memory (CD-ROM), or a combination of memories.
[0370] In this application, the phrase "at least one of A or B" and the phrase "at least one of A and B" should be interpreted to mean any one or more of the plurality of listed items A, B, etc., taken jointly and severally in any and all permutations.
[0371] It is not intended that the order in which the methods are described in this application is to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the methods or an alternate method. Additionally, individual blocks may be deleted from the methods without departing from the scope of the subject matter described herein.
[0372] Within the scope of this application it is expressly intended that the various examples and alternatives set out in the preceding paragraphs, in the claims and / or in the description and drawings, and in particular the individual features thereof, may be taken independently or in any combination. That is, all examples and / or features of any example can be combined in any way and / or combination, for example it may be that apparatus features correspond to method features or vice versa, unless such features are incompatible.
[0373] In the above description, for purposes of explanation, specific examples and details thereof are set forth in order to better explain the present invention, as claimed. It is to be understood that such detail is solely for that purpose, and that the appended claims are not limited to the disclosed examples, but, on the contrary, are intended to cover modifications and equivalents that are within the scope of the disclosed examples.
[0374] It will be apparent to one skilled in the art that the claimed invention may be practiced using different details than the exemplary ones described herein. Other examples may incorporate structural, logical, method, and other changes. Portions and features of some examples may be included in, or substituted for, those of other examples. In other instances, well-known features are omitted or simplified to clarify the description of the examples.
[0375] The applicant reserves the right to change any originally filed claim or file any new claim accordingly, including the right to amend any originally filed claim to depend from and / or incorporate any feature of any other claim although not originally claimed in that manner.
[0376] The disclosure also extends to the following examples.
[0377] Example 1. A transmitter, for use in a communication link between the transmitter and a receiver, the communication link configured to communicate over one or more lanes, wherein the receiver comprises a first number of lanes for communication, and the transmitter comprises a second number of lanes for communication, wherein the first number of lanes is different from the second number of lanes, the transmitter further comprising logic configured to: receive, from the receiver, for a buffer of the receiver in which the data transmitted by the transmitter is to be stored, an indication of the first number of lanes; obtain one or more words associated with one or more data packets for transmission to the receiver over the communication link; and configure the words based on at least the first number of lanes, as at least one data frame for transmission to the receiver over the communication link, wherein the words are configured as the at least one data frame to modify how at least one row of the buffer is filled.
[0378] Example 2. A method to be performed by a transmitter for use in a communication link between the transmitter and a receiver, the communication link configured to communicate over one or more lanes, wherein the receiver comprises a first number of lanes for communication, and the transmitter comprises a second number of lanes for communication, wherein the first number of lanes is different from the second number of lanes, the method comprising: receiving, from the receiver, for a buffer of the receiver in which the data transmitted by the transmitter is to be stored, an indication of the first number of lanes; obtaining one or more words associated with one or more data packets for transmission to the receiver over the communication link; and configuring the words, based on at least the first number of lanes, as at least one data frame for transmission to the receiver over the communication link, wherein the words are configured as the at least one data frame to modify how at least one row of the buffer is filled.
[0379] Example 3. The transmitter of example 1 or the method of example 2, wherein a size of at least a portion of a data frame comprising words associated with a respective data packet is an integer multiple of the first number of lanes.
[0380] Example 4. The transmitter or method of any preceding example, wherein configuring the words as the at least one data frame comprises inserting at least one null word into the data frame, wherein the insertion is based on an end of packet word associated with the respective data packet. For example, inserting the at least one null word into a position (e.g., a pre-determined position) in the data frame based on the end of packet word associated with the respective data packet.
[0381] Example 5. The transmitter or method of example 4, wherein the number of null words to be inserted into the data frame is equal to an integer number subtracted from the first number of lanes, wherein the integer number is equal to the number of data words in the data frame associated with the data packet modulo the first number of lanes.
[0382] Example 6. The transmitter or method of example 4 or example 5, wherein the at least one null word is adjacent to, and following, the end of packet word. For example, the at least one null word is a trailing null word.
[0383] Example 7. The transmitter or method of any preceding example, wherein the size of a data frame is an integer multiple of the first number of lanes.
[0384] Example 8.The transmitter or method of any preceding example, wherein configuring the words as the at least one data frame comprises: determining a data frame size that is an integer multiple of a number (e.g., a minimum number) of rows of a buffer (e.g., an output buffer) of the transmitter that are divisible by, or divide, the first number of lanes (i.e., the number of receiver lanes) without a residual; and configuring the data frame size to the determined data frame size.
[0385] Example 9. The transmitter or method of example 8, wherein the determination of the data frame size is based on a lowest common multiplier of the first number of lanes and the second number of lanes.
[0386] Example 10. The transmitter or method of example 8 or example 9, wherein: the integer multiple equals the second number of lanes, multiplied by the nearest, rounded down, integer corresponding to: a number of words that the buffer is configured to store for each lane, divided by: the lowest common multiplier divided by the first number of lanes; and the minimum number of rows of the buffer of the transmitter that are divisible by, or divide the first number of lanes without a residual equals the lowest common multiplier divided by the second number of lanes.
[0387] Example 11. The transmitter or method of any one of examples 8 to 10, wherein determining the data frame size comprises determining a data frame size that is an integer multiple of the lesser of the first number of lanes and the second number of lanes. For example, where the first and second number of lanes correspond to any values of 2N, where N is any integer, including zero.
[0388] Example 12.The transmitter or method of example 11, wherein the integer multiple is the largest integer, which when multiplied by the lesser of the first number of lanes and second number of lanes, and further multiplied by the number of words the buffer is configured to store for each lane, does not exceed a maximum data frame size.
[0389] Example 13. The transmitter or method of any preceding example, wherein configuring the words as the at least one data frame comprises: determining whether the size of the at least one data frame exceeds a maximum data frame size, the maximum data frame size based on the first number of lanes.
[0390] Example 14. The transmitter or method of example 13, wherein the maximum data frame size equals at least one of: a multiple of the first number of lanes; and a multiple of the lesser of the first number of lanes or the second number of lanes. Optionally, wherein the multiple equals the number of words the buffer is configured to store for each lane of the first number of lanes, e.g., 64.
[0391] Example 15. The transmitter or method of any one of examples 12 to 14, wherein in response to a determination that the size of the at least one data frame to be transmitted exceeds the maximum data frame size, configuring the at least one data frame to be equal or less than the maximum data frame size. For example, truncating the data frame to be transmitted, such that the number of words exceeding the maximum data frame length are sent in at least one other data frame.
[0392] Example 16. The transmitter or method of any preceding example, wherein configuring the words as the at least one data frame for transmission to the receiver over the communication link comprises: modifying a buffer of the transmitter configured to store the data (e.g., words) to be transmitted to the receiver; or modifying the data to be transmitted during transmission (such as, based on multiplexing data to be provided from a data layer to a physical layer).
[0393] Example 17. The transmitter or method of any preceding example, wherein the indication of the first number of lanes is received by the transmitter by way of a flow control word. For example, the indication of the first number of lanes comprises a field (e.g., the first field) in a symbol (e.g., the second symbol) of the flow control word, e.g., the Multiplier (M) field of the FCT.
[0394] Example 18. A receiver, for use in a communication link between a transmitter and the receiver, the communication link configured to communicate over one or more lanes, wherein the receiver comprises a first number of lanes for communication, and the transmitter comprises a second number of lanes for communication, wherein the first number of lanes is different from the second number of lanes, the receiver further comprising logic configured to: receive, from the transmitter, one or more data frames to be stored in a buffer of the receiver, wherein each of the one or more data frames comprises words associated with one or more data packets; providing ding, based on at least the received one or more data frames and the first number of lanes, one or more data frames stored in the buffer, wherein the logic is configured to modify how at least one row of the buffer is filled based on at least the first number of lanes.
[0395] Example 19 . A method to be performed by a receiver, for use in a communication link between a transmitter and the receiver, the communication link configured to communicate over one or more lanes, wherein the receiver comprises a first number of lanes for communication, and the transmitter comprises a second number of lanes for communication, wherein the first number of lanes is different from the second number of lanes, the method comprising: receiving, from the transmitter, one or more data frames to be stored in a buffer of the receiver, wherein each of the one or more data frames comprises words associated with one or more data packets; providing, based on at least the received one or more data frames and the first number of lanes, one or more data frames stored in the buffer, wherein how at least one row of the buffer is filled is modified based on at least the first number of lanes.
[0396] Example 20. The receiver or method of example 18 or example 19, wherein a size of at least a portion of a data frame stored in the buffer comprising words associated with a respective data packet is an integer multiple of the first number of lanes.
[0397] Example 21. The receiver or method of any one of examples 18 to 20, wherein providing the one or more data frames stored in the buffer comprises inserting at least one null word into a data frame stored in the buffer, wherein the insertion is based on an end of packet word associated with the respective data packet. For example, inserting the at least one null word into a position (e.g., a pre determined position) in the data frame based on the end of packet word associated with the respective data packet.
[0398] Example22. The receiver or method of example 21, wherein the number of null words to be inserted into the data frame is equal to an integer number subtracted from the first number of lanes, wherein the integer number is equal to the number of data words in the data frame associated with the data packet modulo the first number of lanes.
[0399] Example 23. The receiver or method of example 21 or example 22, wherein the at least one null word is adjacent to, and following, the end of packet word. For example, the at least one null word is a trailing null word.
[0400] Example 24. The receiver or method of any one of examples 18 to 23, wherein providing the one or more data frames stored in the buffer, comprises one of modifying the received one or more words prior to storing the one or more words in the buffer, and modifying the buffer storing the one or more words, i.e., after storing the one or more words.
[0401] Example 25. The receiver or method of any one of example 18 to 24, wherein the logic of the receiver is configured to, or the method comprises, log[ging] a location in the buffer in which a last word of a first data frame received by the receiver is stored, and the receiver is configured to, or the method comprises store[ing] a first word of a second data frame, subsequently received by the receiver, at an adjacent location in the buffer.
[0402] Example 26. The receiver or method of any one of examples 18 to 25, wherein the buffer comprises free space, into which words can be stored, and the logic of the receiver is configured to, or the method comprises, compare[ing] a difference between the free space and allocated space in the receiver buffer with a threshold value; in response to the comparison, update[ing] the allocated space with a further portion of space corresponding to space for storing words of a subsequently received data frame; and signal [ling] the transmitter with an indication of the further portion of allocated space corresponding to the space for storing words of the subsequently received data frame.
[0403] Example 27. The transmitter, receiver or method of any preceding example, wherein the buffer of the receiver is configured to store words in a number of rows of a given width, and the width equals the first number of lanes.
[0404] Example 28. The transmitter, receiver or method of any preceding example, wherein the buffer of the receiver is configured to store a given number of words for each column of the buffer (e.g., 64 words). Optionally, where the number of words comprises at least one of: data words and control words.
[0405] Example 29. The transmitter, receiver or method of any preceding example, wherein the buffer is configured to store at least a maximum data frame of a size (e.g., in words) equal to the first number of lanes (i.e., the number of lanes supported by the receiver for communication) multiplied by the number of words the buffer is configured to store for each lane, e.g., 64. For example a CRC buffer of the receiver is configured to store the maximum data frame size. For example, a VCB buffer is configured to store one or more maximum data frames.
[0406] Example 30. The transmitter, receiver or method of any preceding example, wherein the communication link is configured to communicate the data over a virtual channel, VC, and the buffer of the receiver is a virtual channel buffer, VCB, associated with the VC.
[0407] Example 31. The transmitter, receiver, or method of any preceding example, wherein the first number of lanes and the second number of lanes are physical lanes.
[0408] Example 32.The transmitter, receiver, or method of any preceding example, wherein the communication link operates over electrical and / or fibre optic cable. For example, the physical lanes are electrical and / or optical fibres.
[0409] Example 33. The transmitter, receiver or method of any preceding example, wherein the communication link is configured for use as a spacecraft on-board data-link.
[0410] Example 34. The transmitter, receiver, or method of any preceding example, wherein the communication link is configured for quality of service (QoS) (e.g., a predetermined quality of service) and / or fault detection, isolation and recovery (FDIR).
[0411] Example 35. The transmitter, receiver, or method of any preceding example, wherein the communication link is configured to provide at least lGbps (or at least 2.5Gbps) data-rates with radiation tolerant technology (e.g., radiation tolerant, or hardened, processors, such as radiation tolerant or hardened FGPAs).
[0412] Example 36. The transmitter, receiver, or method of any preceding example, wherein the communication link is configured for use with Synthetic Aperture Radar (SAR) and / or multi-spectral imaging instruments.
[0413] Example 37. The transmitter, receiver, or method of any preceding example, wherein the communication link is a SpaceFibre communication link, wherein SpaceFibre is a communication standard (published and maintained by the European Cooperation for Space Standarization (ECSS). For example, the communication link a SpaceFibre link according to the SpaceFibre standard ECSS standard ECSS-E-ST-50-11C released 15 May 2019, or any future modification thereof.
[0414] Example 38. A communication interface comprising the transmitter of any one of examples 1, 3 to 17 or 27 to 37 and / or the receiver of any one of examples 18 or 20 to 37.
[0415] Example 39. A communication network comprising at least a first communication interface as described in example 38 and at least a second communication interface.
[0416] Example 40. The communication network of example 39, wherein each of the first communication interfaces comprises a transmitter according to any one of examples 1, 3 to 17 or 27 to 37, and a receiver according to any one of examples 18, or 20 to 37.
[0417] Example 41. The communication network of example 39, wherein each of the first and second communication interfaces comprise a transmitter according to any one of examples 1, 3 to 17 or 27 to 37, or each of the first and second communication interfaces comprise a receiver according to any one of examples 18 or 20 to 37.
[0418] Example 42. A computer readable medium comprising instructions which, when executed, implement the methods of any one of examples 2 to 17 or 19-37.
Claims
12 08 24What is claimed is:
1. A transmitter, for use in a communication link between the transmitter and a receiver, the communication link configured to communicate over one or more lanes, wherein the receiver comprises a first number of lanes for communication, and the transmitter comprises a second number of lanes for communication, wherein the first number of lanes is different from the second number of lanes, and wherein the communication link comprises at most the lesser of the first number of lanes and the second number of lanes, the transmitter further comprising logic configured to:receive, from the receiver, for a buffer of the receiver in which the data transmitted by the transmitter is to be stored, an indication of the first number of lanes, wherein the buffer of the receiver is configured to store words in a number of rows of a given width, and the width equals the first number of lanes;obtain one or more words associated with one or more data packets for transmission to the receiver over the communication link; andconfigure the words, based on at least the first number of lanes, as at least one data frame for transmission to the receiver over the communication link, wherein the words are configured as the at least one data frame to modify how at least one row of the buffer is filled.
2. The transmitter of claim 1, wherein a size of at least a portion of a data frame comprising words associated with a respective data packet is an integer multiple of the first number of lanes.
3. The transmitter of claim 1 or 2, wherein configuring the words as the at least one data frame comprises inserting at least one null word into the data frame, wherein the insertion is based on an end of packet word associated with the respective data packet.
4. The transmitter of any one of claims 1 to 3, wherein the size of a data frame is an integer multiple of the first number of lanes.
5. The transmitter of any one of claims 1 to 4, wherein configuring the words as the at least one data frame comprises:determining a data frame size that is an integer multiple of a number of rows of a buffer of the transmitter that are divisible by, or divide, the first number of lanes without a residual; andconfiguring the data frame size to the determined data frame size.
6. The transmitter of claim 5, wherein the determination of the data frame size is based on a lowest common multiplier of the first number of lanes and the second number of lanes.12 08 247. The transmitter of any one of claims 1 to 6, wherein configuring the words as the at least one data frame comprises:determining whether the size of the at least one data frame exceeds a maximum data frame size, the maximum data frame size based on the first number of lanes.
8. The transmitter of claim 7, wherein the maximum data frame size equals at least one of: a multiple of the first number of lanes; and a multiple of the lesser of the first number of lanes and the second number of lanes.
9. A method to be performed by a transmitter for use in a communication link between the transmitter and a receiver, the communication link configured to communicate over one or more lanes, wherein the receiver comprises a first number of lanes for communication, and the transmitter comprises a second number of lanes for communication, wherein the first number of lanes is different from the second number of lanes, and wherein the communication link comprises at most the lesser of the first number of lanes and the second number of lanes, the method comprising:receiving, from the receiver, for a buffer of the receiver in which the data transmitted by the transmitter is to be stored, an indication of the first number of lanes, wherein the buffer of the receiver is configured to store words in a number of rows of a given width, and the width equals the first number of lanes;obtaining one or more words associated with one or more data packets for transmission to the receiver over the communication link; andconfiguring the words, based on at least the first number of lanes, as at least one data frame for transmission to the receiver over the communication link, wherein the words are configured as the at least one data frame to modify how at least one row of the buffer is filled.
10. The method of claim 9, wherein a size of at least a portion of a data frame comprising words associated with a respective data packet is an integer multiple of the first number of lanes.
11. The method of claim 9 or 10, wherein configuring the words as the at least data frame comprises inserting at least one null word into the data frame, wherein the insertion is based on an end of packet word associated with the respective data packet.
12. The method of any one of claims 9 to 11, wherein the size of a data frame is an integer multiple of the first number of lanes.
13. The method of any one of claims 9 to 12, wherein configuring the words as the at least one data frame comprises:determining a data frame size that is an integer multiple of a number of rows of a buffer of the transmitter that are divisible by, or divide, the first number of lanes without a residual; andconfiguring the data frame size to the determined data frame size.12 08 2414. The method of claim 13, wherein determining the data frame size is based on determining a lowest common multiplier of the first number of lanes and the second number of lanes.
15. A receiver, for use in a communication link between a transmitter and the receiver, the communication link configured to communicate over one or more lanes, wherein the receiver comprises a first number of lanes for communication, and the transmitter comprises a second number of lanes for communication, wherein the first number of lanes is different from the second number of lanes, and wherein the communication link comprises at most the lesser of the first number of lanes and the second number of lanes, the receiver further comprising logic configured to:receive, from the transmitter, one or more data frames to be stored in a buffer of the receiver, wherein each of the one or more data frames comprises words associated with one or more data packets, and wherein the buffer of the receiver is configured to store words in a number of rows of a given width, and the width equals the first number of lanes;providing, based on at least the received one or more data frames and the first number of lanes, one or more data frames stored in the buffer,wherein the logic is configured to modify how at least one row of the buffer is filled based on at least the first number of lanes.
16. The receiver of claim 15, wherein a size of at least a portion of a data frame stored in the buffer comprising words associated with a respective data packet is an integer multiple of the first number of lanes.
17. The receiver of claim 15 or 16, wherein providing the one or more data frames stored in the buffer comprises inserting at least one null word into a data frame stored in the buffer, wherein the insertion is based on an end of packet word associated with the respective data packet.
18. The receiver of any one of claims 15 to 17, wherein the providing the one or more data frames stored in the buffer comprises:logging a location in the buffer in which a last word of a first data frame received by the receiver is stored, andstoring a first word of a second data frame, subsequently received by the receiver, at an adjacent location in the buffer.
19. The receiver of any one of claims 15 to 18, wherein the buffer comprises free space, into which words can be stored, and the logic of the receiver is configured to:compare a difference between the free space and allocated space in the receiver buffer with a threshold value;in response to the comparison, update the allocated space with a further portion of space corresponding to space for storing words of a subsequently received data frame; and12 08 24signal the transmitter with an indication of the further portion of allocated space corresponding to the space for storing words of the subsequently received data frame.
20. A method to be performed by a receiver, for use in a communication link between a transmitter and the receiver, the communication link configured to communicate over one or more lanes, wherein the receiver comprises a first number of lanes for communication, and the transmitter comprises a second number of lanes for communication, wherein the first number of lanes is different from the second number of lanes, and wherein the communication link comprises at most the lesser of the first number of lanes and the second number of lanes, the method comprising:receiving, from the transmitter, one or more data frames to be stored in a buffer of the receiver, wherein each of the one or more data frames comprises words associated with one or more data packets, and wherein the buffer of the receiver is configured to store words in a number of rows of a given width, and the width equals the first number of lanes;providing, based on at least the received one or more data frames and the first number of lanes, one or more data frames stored in the buffer,wherein how at least one row of the buffer is filled is modified based on at least the first number of lanes.
21. The method of claim 20, wherein a size of at least a portion of a data frame stored in the buffer comprising words associated with a respective data packet is an integer multiple of the first number of lanes.
22. The method of claim 20 or 21, wherein providing the one or more data frames stored in the buffer comprises inserting at least one null word into a data frame stored in the buffer, wherein the insertion is based on an end of packet word associated with the respective data packet.
23. A computer readable medium comprising instructions which, when executed, implement the method of any one of claims 9 to 14 or the method of any one of claims 20 to 22.
24. A communication interface comprising the transmitter of any one of claims 1 to 8 and / or the receiver of any one of claims 15 to 19.
25. A communication network comprising at least a first communication interface as claimed in claim 24 and at least a second communication interface.
Citation Information
Patent Citations
Multi-lane communication
US20210105180A1