Mailbox message exchange between daisy chain nodes in synchronous communication network
By introducing full-duplex link and mailbox tunnel mechanisms in the daisy chain communication system, flexible message exchange between any nodes is allowed, which solves the problem of insufficient flexibility in message exchange in the existing system and realizes efficient and flexible inter-node communication.
Patent Information
- Application Number
- CN202411442177.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-01-30
- Filing Date
- 2024-10-16
- Publication Date
- 2025-04-18
AI Technical Summary
The existing daisy chain communication system lacks flexibility in message exchange between nodes, cannot automatically adjust response time and phase alignment, and only allows limited mailbox exchange between the master and child nodes.
A daisy chain communication system using full duplex link allows any node to address other nodes or broadcasts, performs flexible payload message exchange through mailbox tunnels, supports multiple parallel mailbox tunnels, and includes error detection and retransmission mechanisms.
It realizes flexible message exchange between nodes, eliminates the need for additional communication links, supports flexible message sizes and destinations, and improves system flexibility and efficiency.
Smart Images

Figure CN119854258A_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims priority to U.S. Non-Provisional Application No. 18 / 427,280, filed on January 30, 2024, entitled “Mailbox Message Exchange Between Daisy-Chain Nodes in a Synchronous Communication Network,” which claims priority to Indian Provisional Application No. 202341070824, filed on October 18, 2023, entitled “Mailbox Message Exchange Between Daisy-Chain Nodes in a Synchronous Communication Network,” both of which are assigned to the assignee of the present invention and are incorporated herein by reference in their entirety. Technical Field
[0003] The present disclosure relates to wired communication systems, and more particularly to synchronous, full-duplex daisy-chain communication systems. Background Art
[0004] Audio communications within vehicles have moved from analog signals (one or two analog wires per signal) to digital communications (multiple audio streams on a single wire or wire pair). An example digital audio communications technology may use a unidirectional ring topology. Other technologies, such as Ethernet, use point-to-point technology, requiring an Ethernet switch between each link and expensive audio clock regeneration at each node.
[0005] A2B is a true daisy-chain network with low latency because it does not require store and forward between nodes. A2B uses line coding and is time-division multiplexed. Although A2B is the most mature low-latency audio communication in cars today, improvements in bandwidth may help support future applications. Summary of the invention
[0006] A simplified summary of one or more aspects is presented below in order to provide a basic understanding of these aspects. This summary is not an extensive overview of all contemplated aspects, and is neither intended to identify key or important elements of all aspects, nor to describe the scope of any or all aspects. Its sole purpose is to present some concepts of one or more aspects in a simplified form as a prelude to a more detailed description presented later.
[0007] In some aspects, the technology described herein relates to a node connected in a daisy-chain to one or more connected nodes via a full-duplex link, the node comprising: a mailbox register configured to store a message header and one or more words of a current message for one or both of a sending direction or a receiving direction; a message buffer configured to store one or more messages including the current message for sending or receiving; and a tunnel controller configured to communicate a current message from or arriving as one or more mailbox data packets to one or more connected nodes participating in a mailbox tunnel via the daisy-chain, the current message having a flexible message size or a flexible destination defined by the message header.
[0008] In some aspects, the technology described herein relates to a method for a node to transmit a mailbox message to one or more connected nodes in a daisy chain via a full-duplex link, the method comprising: writing a message header and multiple payload words of a new message as a current message to a mailbox register, the current message having a flexible message size or a flexible destination defined by the message header; loading the current message into a message buffer, the message buffer being configured to store one or more messages including the current message for transmission; and sending the current message as one or more mailbox data packets from the message buffer to one or more connected nodes participating in a mailbox tunnel through the daisy chain.
[0009] To accomplish the above and related ends, one or more aspects include the features hereinafter fully described and particularly pointed out in the claims. The following description and the accompanying drawings set forth in detail certain illustrative features of one or more aspects. However, these features are indicative of only a few of the various ways in which the principles of the various aspects may be employed, and this description is intended to include all such aspects and their equivalents. BRIEF DESCRIPTION OF THE DRAWINGS
[0010] For a more complete understanding of the present disclosure and its features and advantages, reference may be made to the following description taken in conjunction with the accompanying drawings, in which like reference numerals represent like parts, and in which:
[0011] Figure 1 is a diagram of nodes in a daisy chain according to one aspect of the present disclosure;
[0012] Figure 2 is a timing diagram of synchronous communication of nodes in a daisy chain according to one aspect of the present disclosure;
[0013] Figure 3 is a schematic diagram of a synchronization process of nodes in a daisy chain according to one aspect of the present invention;
[0014] Figure 4 is a diagram of an example of a frame structure according to one aspect of the present disclosure;
[0015] Figure 5 is a block diagram of an example mailbox via a daisy chain according to one aspect of the present disclosure;
[0016] Figure 6 is a block diagram of example components of a transmitting node and a receiving node according to one aspect of the present disclosure;
[0017] Figure 7 is a schematic diagram of an example mailbox register according to one aspect of the present disclosure;
[0018] Figure 8 is a diagram of an example mailbox data packet according to one aspect of the present disclosure;
[0019] Fig. 9 is a flow chart of an example method of sending a mailbox message performed by a node in a daisy chain according to one aspect of the present disclosure;
[0020] Fig.10 is a flow diagram of an example method performed by a node in a daisy chain to receive a mailbox message. DETAILED DESCRIPTION
[0021] Current daisy chain communication systems provide discovery of nodes in the chain. Typically, daisy chains follow a fixed frame schedule. One problem with having a flexible number of nodes in a daisy chain and unknown cable lengths is related to timing relative to the frame schedule. For example, A2B discovery does not automatically adjust response times or automatically phase align nodes. Additionally, mailbox exchanges on such systems may only allow mailbox exchanges between a master node and child nodes, as indicated by the master node using only header data (not payload) in the A2B frame. This approach may be limited to a limited number of active messages, and messages may be limited to the same fixed size.
[0022] In one aspect, the present disclosure uses a completely different approach that allows any node to address any other node participating in a mailbox tunnel, or to address all nodes participating in a mailbox channel (broadcast). It also allows multiple parallel mailbox tunnels separated from each other in a daisy-chained flexible payload. The present disclosure describes tunnel packets and their message commands, message signaling, and protocols, including error detection / signaling and retransmission.
[0023] In one aspect, mailbox communication in full-duplex serial synchronous daisy chain communication allows microcontrollers (MCUs) on different nodes to asynchronously exchange messages with each other through a synchronous network with a unique communication protocol that allows node-to-node and node-to-multiple (broadcast) mailbox message exchanges. This eliminates the need for other additional communication links in the system, such as a controller area network (CAN) bus.
[0024] The present disclosure describes a flexible register-based mailbox (MBX) messaging system that allows point-to-point and point-to-many message exchange over a communications network. MCUs participating in the network require little (destination node number) or no (broadcast) network knowledge. From the MCU's perspective, messages disappear with failed delivery interrupt requests (IRQs). Each message supports flexible message payload sizes, such as from 0 to 63 words. General purpose input / output (GPIO), IRQ, and register-based mailbox tags can be used for send (Tx) and receive (Rx) message management. FIFO-based message queues can be implemented to allow multiple simultaneous incoming and outgoing messages.
[0025] Messages may be broken up into multiple CRC protected packets that are sent over the mailbox tunnel. The mailbox tunnel is assigned to a portion of the flexible payload in serial, synchronous upstream, and downstream communication frames. Transmissions are tolerant to bus errors as they are acknowledged by the receiving node via acceptance or rejection and can be retried until acknowledged. The mailbox tunnel is arbitrated by the nodes themselves. Each node waits until it sees an idle packet on the current and previous incoming upstream and downstream packets before sending a Tx message. If multiple nodes start transmitting in the same frame, the message with the shortest cycle wins and sees a valid receive response. Any node that does not receive a valid response can continue to transmit until a valid response is received. The node that starts transmitting can continue to transmit until the complete message is sent. All other nodes can wait until the bus is idle again before they can start transmitting. Nodes can otherwise send new messages back to back with at least one idle frame in between.
[0026] The head node and tail node have additional transmit responsibilities. The head node may send valid idle packets when not sending Tx messages or responses on a downstream mailbox tunnel. The tail node may send valid idle packets when not sending Tx messages or responses on an upstream mailbox tunnel. Invalid mailbox tunnel packets may be interpreted as a busy tunnel for bus arbitration purposes. The head node and tail node may be the only nodes that respond to a broadcast transmit.
[0027] Figure 1 1 is a diagram of nodes in a daisy chain 102. In the daisy chain 102, each node is connected to a subsequent node via a bus link 104. For example, the bus link 104 can be a twisted pair. As shown, the daisy chain 102 includes a master node 110, one or more intermediate child nodes 120, and an end child node 130. In some embodiments, each node is a device including one or more modems.
[0028] Each node 110, 120, 130 includes a corresponding frame buffer 112, 122, 132. The frame buffer 112, 122, 132 is configured to store information of one or more frames to be sent in the downstream direction (from the master node 110 toward the end child node 130) and the upstream direction (from the end child node 130 toward the master node 110) through the bus link 104. For example, the frame buffer 112 of the master node 110 may include an upstream receive buffer (US RX Buff) and a downstream transmit buffer (DS TX Buff). The frame buffer 122 of the intermediate child node 120 may include a US RX Buff and a DS TX Buff as well as a downstream receive buffer (DS RXBuff) and an upstream transmit buffer (US TX Buff). The frame buffer 132 of the end child node 130 may include a DS RXBuff and a US TX Buff.
[0029] Each node 110, 120, 130 also includes one or more transceivers 106 (TX / RX). Each transceiver 106 is configured to generate a signal on the corresponding bus link 104 based on the content of each frame buffer 112 or 132, or based on an input signal from another link in an intermediate sub-node, and the input signal has content to be selectively replaced by each frame buffer 122 position. In one aspect, the transmission on the bus link 104 is full-duplex. That is, the bus link 104 can carry downlink signals and uplink signals at the same time. In some embodiments, the communication utilizes a carrier-based modulation scheme with echo cancellation to achieve full duplex. For example, the signal can use binary phase shift keying (BPSK), quadrature phase shift keying (QPSK) or quad amplitude modulation (QAM).
[0030] In one aspect, daisy chain 102 can provide low latency due to bypassing or abandoning the storage and forwarding function at each node. Data from the direction of the master node 110 can be forwarded to the end child node 130 immediately. Data from the direction of the end child node 130 can be forwarded to the master node immediately. For example, data arriving at the bus link 104 at the transceiver 106a can be copied by the transceiver 106b to be sent on the bus link 104. When the data passes through the node, each node selectively reads the data. Each node also selectively changes the data without storing and forwarding the entire frame or part of the frame. For example, at the child node 120, the transceiver 106a receives the downstream signal 150 and selectively reads the data to the DS RX buffer. The transceiver 106b selectively changes the data in the downstream signal 150 (e.g., based on the DS TX buffer) and immediately forwards the downstream signal 150 to the end child node 130. At the same time, the transceiver 106b receives the uplink signal 152 and selectively reads the data to the US RX buffer. The transceiver 106a selectively changes the data in the upstream signal 152 and immediately forwards the upstream signal 152 to the master node 110. Therefore, the frame buffer 122 does not store the entire frame before forwarding the frame to the next node, thereby providing low-latency communication. For example, data can be forwarded from the master node 110 to the end child node 130 in less than half of a sampling period, which can be, for example, 10.4 microseconds (μs).
[0031] In one aspect, communications are synchronized according to a superframe structure. For example, superframes may be sent at a period of 48 kHz, with each superframe being 20.82 μs. For a data rate of 98.304 Mbps, the payload in each frame may be 256 bytes. Further details of synchronization and frame structure are described below.
[0032] In addition, each node may include a corresponding memory 114, 124, 134 for storing configuration information of the node. In some embodiments, the memory 114, 124, 134 is an addressable register, a one-time programmable (OTP) memory, or an electrically erasable programmable memory (EEPROM) storing a node identifier. In some embodiments, the order of the nodes is flexible, and the position of the node within the daisy chain 102 can be determined during the discovery process based on the stored identifier.
[0033] In some embodiments, one or more nodes may include or be connected to a corresponding microcontroller, microprocessor, or DSP (MCU) 116, 126, 136. For example, the MCU 116, 126, 136 may be connected to the node via a time division multiplexing (I2S / TDM) connection, an inter-integrated circuit (I2C), or a serial peripheral interface (SPI). The MCU 116, 126, 136 may configure the corresponding node and communicate with other nodes via the daisy chain 102. For example, in an audio system, the audio source may originate from a DSP (MCU) in the master node 110. Some child nodes 120 (such as a smart amplifier) may include an MCU, but other nodes (such as a subwoofer or microphone node) may not include an MCU.
[0034] Figure 2 1 is a timing diagram of synchronous communication of nodes in the daisy chain 102. Communications may be sent together with a superframe within a sampling period including a first sampling period 202, a second sampling period 204, a third sampling period 206, and a fourth sampling period 208. For example, the nodes include a master node 110, an intermediate child node 120, and an end child node 130. The downstream and upstream signals of each node are divided into a header (e.g., a synchronization control header (SCH) or a synchronization response header (SRH)), a flexible payload byte, and a footer (FTR) in each superframe.
[0035] In some embodiments, one or more nodes, such as the master node 110 and the end child node 130, may include a communication interface 210 (eg, I 2 For example, if the node is an audio node such as a microphone or a speaker, the audio signal can be transmitted through the I 2 S / TDM interface input or output to daisy chain 102. The on-chip I 2 The S / TDM interface pins or other pins may alternatively be used as general purpose input / output (GPIO) pins at the node. The daisy chain 102 may also be connected to the I / O pins at the master node. 2 The S / TDM interface 210 is synchronized and the corresponding I 2 Synchronization is provided at the S / TDM interface 210 to the subnodes.
[0036] In one aspect, the master node 110I 2The S / TDM samples may be synchronized with the superframe. For example, the master node 110 may send the SCH 220 at the beginning of each sampling period. Due to the transmission delay and processing of each node, each subsequent node may send the corresponding SCH slightly later in the sampling period. The end child node 130 may receive the superframe ending with the FTR 230 and send the upstream frame starting with the SRH 240 in the same sampling period. The upstream frame may be sent in the upstream direction at each node so that the SRH 240 is received at the master node 110 in the same sampling period. Therefore, synchronization can provide control and response within one sampling period.
[0037] The communication with the TDM interface can be synchronized and use additional superframes. For example, as shown in the figure, the master node 110 can use I during the first audio sampling period 202. 2 The master node 110 may load the transmit frame buffer contents with the S / TDM data stream samples 212 to construct a new superframe. The master node 110 may transmit a new downstream frame in the second sampling period 204, wherein the audio stream samples are part of the flexible payload 222. The daisy chain 102 may carry the flexible payload 222 to the end child node 130 in the second sampling period 204 and the third sampling period 206. Then, during the fourth sampling period 208, the end child node 130 may transmit the audio stream within the flexible payload 222 as an I 2 S / TDM 232 is sent.
[0038] In one aspect, all nodes sample data at the same time (same phase) based on the received timing information. With the timing information, each node knows exactly the start of the sampling period 250, which can be determined from the midpoint between dnSCH and upSRF (–1 / 2tsf). During the sampling period, each node can sample data from the source to the TX buffer to obtain a flexible payload. For example, an audio device can sample an audio signal for an audio stream. In one aspect, the flexible payload can support other types of data, such as control of a pulse width modulated (PWM) signal or data from an analog-to-digital converter (ADC), which can provide sensor data.
[0039] In one embodiment, the PWM duty cycle can be controlled by the flexible payload byte. For example, the flexible payload for controlling the PWM duty cycle allows I 2 S / TDM interface (e.g. from an audio DSP in one node) to directly control the PWM duty cycle on another node. If the PWM is used for light effects affected by audio (e.g. light organs), the audio DSP can directly control the LEDs with low latency based on its local processing without having to use I / O. 2C or SPI. PWM can also be used to control the output voltage of a voltage regulator, such as the one that powers the rails of a Class D amplifier. The PWM can be set to produce a low supply voltage when a low-level audio signal is expected and a high supply voltage when a high-volume audio output is expected (look-ahead control from the DSP). The PWM duty cycle can be adjusted from the I2C pin of the same node or another node. 2 C (from the master node) or SPI (from any other node) interface asynchronous control, or from another node through I 2 S / TDM synchronizes control with lower latency.
[0040] Figure 3 3 is a schematic diagram of a discovery process 300 for nodes in a daisy chain 302. For example, the discovery process 300 can be used to establish the timing of headers, flexible payload bytes, and footers at each node. In the example shown, the daisy chain 302 includes a total of 4 nodes (e.g., with 2 intermediate child nodes 120), but may also include other nodes. The signals of the probe points corresponding to each bus are shown.
[0041] The master node 110 may optionally perform line diagnostics and provide bus power to the downstream child node 0. The master node 110 begins sending downstream data in the form of a DnSCH 310 including a downstream lock pattern. When the child node 0 is in lock, it begins responding with an UpSRH 312 including an upstream lock pattern. The master node 110 measures a delay time t1 and sends a DnSCH 320 with delay information 322 to the child node 0. The delay time t1 represents the cable delay of the bus link 104 plus the receive and transmit path delays between the nodes. The child node 0 responds with a time-adjusted UpSRH 324. For example, the time-adjusted UpSRH 324 is synchronized to complete at the end of the master node superframe before the next DnSCH 330 of the master node 110. For example, after receiving the DnSCH 320 at the child node 0, the time-adjusted UpSRH 324t may be sent. SF -t1-t upSRH .t SF is the duration of the superframe, and t upSRH is the duration of the time-adjusted UpSRH. The child node 0 locks on the downstream signal from the master node 110.
[0042] The master or child node 0 optionally performs line diagnostics and provides bus power to the downstream child node 1. If all goes well, child node 0 begins sending data including DnSCH 340 downstream. When child node 1 is in lock state, it begins responding with UpSRH 342. Child node 0 measures the delay time t2 and sends DnSCH 350 with delay information 352 to child node 1. Child node 1 responds with a time-adjusted UpSRH 354. Before DnSCH 330 arrives at child node 0, the time-adjusted UpSRH 354 of child node 1 is synchronized to the end of t1+t2. For example, after child node 0 receives DnSCH 350, the time-adjusted UpSRH 354 can be sent at t SF -t1-t2-t upSRH Sent from child node 1. Therefore, child node 0 may receive UpSRH 354 and resend it as time-adjusted UpSRH 324. Now, master node 110 may communicate with child node 1.
[0043] For each child node in the daisy chain 302, the discovery process 300 continues using the same process at each node. It should be understood that the discovery process can be performed over multiple superframes. In one aspect, the number of nodes in the daisy chain 302 can be based on a time budget. For example, the time budget can be expressed as:
[0044] t Budget =t SF -t SCH -t SRH -2×(t Cable +#Subs×t Proc )>0
[0045] Assuming the processing delay of SCH and SRH is 1us, each processing delay is 80 bits, and the speed is 98.304Mbit / s, 9 subnodes are allowed, and the maximum total distance is 50m. Assuming the cable delay t cable For example, nine child nodes may be suitable for a vehicle entertainment system that includes a microphone and a speaker.
[0046] Figure 4 is a diagram 400 of an example of a frame structure. Diagram 400 includes an example of a downstream superframe 410 and an example of an upstream superframe 450.
[0047] The downstream superframe 410 includes a downstream sync header 412, a downstream flexible payload 414, and a downstream footer 416. The downstream sync header 412 includes a downstream sync byte 420 with a modulo frame counter, a command field 422, a data field 424, a data or address field 426, a GPIO far distance byte 428, a retry bit, and a CRC 429. The downstream flexible payload 414 includes a plurality of bytes that can be flexibly configured to carry data streams. For example, a stream map can indicate which bytes of the downstream flexible payload 414 carry each stream. Figure 7 Further details of the flexible payload 414 are described. The downstream footer 416 includes a CRC 430 for the downstream flexible payload 414 and a frame valid indication 432 with its own CRC.
[0048] The downstream sync byte 420 indicates the start of a frame and includes a modulo frame counter value. The command field 422 provides control signaling and addresses the node. The data field 424 and the data or address field 426 depend on the command field 422. The GPIO far distance byte 428 indicates the state of one or more virtual GPIO pins. CRC 429 is the CRC of the downstream header 412, including the retry bit and the 15-bit CRC. The CRC 430 in the downstream footer 416 provides a CRC for the downstream flexible payload 414.
[0049] The frame valid indication 432 is an indication with a separate CRC bit that indicates whether the downstream frame was valid when it arrived at the previous node. For example, the child node may check the CRC 430 and determine that the received flexible payload is invalid. However, the child node may have data to send on the flexible payload and calculate a new CRC 430. Therefore, the frame sent by the child node may have a correct CRC 430, but the frame valid indication 432 may indicate that other data in the flexible payload is invalid.
[0050] The upstream superframe 450 includes an upstream header 452, an upstream flexible payload 454, and an upstream footer 456. The upstream header 452 includes an upstream synchronization byte 460, a response / request field 462, a data field 464, and a header CRC 466. Similar to the downstream flexible payload 414, the upstream flexible payload 454 includes multiple bytes that can be flexibly configured to carry data streams. The upstream flexible payload 454 can be defined by a stream mapping that is the same or different from the downstream stream mapping, and the stream mapping may be different between each node. The upstream footer 456 includes an interrupt request (IRQ) byte 470, a GPIO byte 472, a CRC 474 for the upstream flexible payload 454, and a frame valid indication 476 with its own CRC.
[0051] The upstream sync byte 460 indicates the start of the upstream superframe 450. The response / request field 462 is a response to the command field 422 or a request for control signaling. The data field 464 is defined based on the response / request field 462. The header CRC 466 is calculated based on the contents of the upstream header 452. The interrupt request byte 470 indicates an interrupt request detected at the downstream node. The GPIO byte 472 indicates the state of one or more virtual GPIO pins at the downstream node. The CRC 474 is calculated based on the upstream flexible payload 454. The frame valid indication 476 operates in the same manner as the frame valid indication 432, but for the upstream direction. In some cases, the node may not receive the upstream header 452 from the downstream node (for example, if the downstream node is disconnected). In the absence of receiving an UpSRH from the downstream node, the node can generate an upstream frame including a new UpSRH.
[0052] Figure 5 5 is a block diagram 500 of example mailbox tunnels 510 (e.g., tunnels 510a and 510b) on a daisy chain 102. In the example shown, the daisy chain 102 includes five nodes: a master node 110, three intermediate child nodes 120 (e.g., intermediate child nodes 120a, 120b, 120c), and an end child node 130. Each node has an address 0-4 that can be detected during the discovery process.
[0053] The participation and roles of nodes within the mailbox tunnel 510 can be based on registers. For example, nodes 120a and 120c can participate in a first tunnel 510a, where node 120a is the head node and node 120c is the tail node. Nodes 110, 120b, and 130 can participate in a second tunnel 510b, where master node 110 is the head node and terminal child node 130 is the tail node. Each tunnel 510 can be assigned different bytes for the flexible payload 414 and 454 of the daisy chain 102.
[0054] In one aspect, nodes in each tunnel 510a can perform access control. A node can initiate a transmission only when the tunnel 510 is idle (e.g., based on an idle message sent from a head node or a tail node). All nodes that have a message to send after an idle frame can attempt to send the message. Typically, a mailbox message sent over a shorter distance will overwrite a message from a more distant node.
[0055] In one example, both node 110 and node 120b may attempt to send a mailbox message to node 130 in tunnel 510b after the same idle frame. Node 110 may first write mailbox data packet 520a to the designated bytes of downstream flexible payload 414 in downstream superframe 410. When downstream superframe 410 reaches node 120b, node 120b will overwrite mailbox data packet 520a in the designated bytes of downstream flexible payload 414 with its own mailbox data packet 520b. Node 130 will receive mailbox data packet 530b and send an acknowledgment in upstream flexible payload 454. Node 120b will receive acknowledgment data packet 530 and send the next data packet in its message. Node 110 will not receive acknowledgment data packet 530 for data packet 520a and will resend data packet 520a. Because node 120b is downstream of node 110, node 120b will overwrite data packet 520a until node 120b completes sending its message. Node 120b will not be able to start another message because tunnel 510b is not idle. Therefore, node 110 will be able to send data packet 520a to node 130. Once all messages have been successfully received and acknowledged, node 110 may send an idle frame to indicate that the node may start a new message.
[0056] Figure 6 6 is a block diagram 600 of example components of a transmitting node 610 and a receiving node 650. It should be appreciated that a node may include components of a transmitting node 610 and a receiving node 650.
[0057] The transmitting node 610 may be associated with a Tx host 620 and include a Tx mailbox register 630, a Tx message FIFO buffer 632, and a Tx tunnel controller 634. The Tx host 620 may be an electronic component that may send or receive mailbox messages via the daisy chain 102. The Tx host 620 may include an MCU 116, 126, 136. The Tx host 620 may communicate with the MCU 116, 126, 136 via a short range interface (e.g., I 2 The TX mailbox register 630 is configured to store a message header and one or more words of a current message for a transmit direction. The TX message FIFO buffer 632 is configured to store one or more messages including the current message for transmission. The TX tunnel controller 634 is configured to communicate the current message from the TX message FIFO buffer 632 as one or more mailbox packets with one or more connected nodes (e.g., receiving node 650) participating in the mailbox tunnel 510 via the daisy chain 102. The current message can have a flexible message size or a flexible destination defined by the message header.
[0058] The receiving node 650 may be associated with an Rx host 660 and include an Rx mailbox register 670, an Rx message FIFO buffer 672, and an Rx tunnel controller 674. For any particular node, the receiving host 660 may be the same as the sending host 620 (e.g., MCU 116, 126, 136). The sending host 620 may include an MCU 116, 126, 136. The receiving host 660 may communicate with the receiving host 620 via a short-range interface (e.g., I 2 The Rx tunnel controller 674 is configured to communicate with the receiving node 650 node via an Rx message FIFO buffer 672 as one or more mailbox packets with one or more connected nodes (e.g., the sending node 610) participating in the mailbox tunnel 510 through the daisy chain 102. The Rx message FIFO buffer 672 is configured to store one or more messages including the current message when the Rx tunnel controller 674 receives the message. The Rx mailbox register 670 is configured to store a message header and one or more words of the current message for the receive direction. The Rx mailbox register 670 can be read by the Rx host 660.
[0059] Figure 7 7 is a schematic diagram of an example mailbox register 700, which may correspond to the Tx mailbox register 630 and the Rx mailbox register 670. The mailbox register 700 includes a mailbox tunnel control field 710, a mailbox status 730, a Tx message header 750, a Tx message 760, an Rx message header 770, and an Rx message 780.
[0060] The mailbox tunnel control field 710 may be, for example, two or more bytes that define the properties of the mailbox tunnel 510 of the node. For example, the mailbox tunnel control field 710 may include a mailbox location 712, a mailbox tunnel location 714, an Rx enable flag 716, a Tx enable flag 718, and a Tx empty mode indicator 720. The mailbox location 712 may specify a location within the downstream flexible payload 414 and / or the upstream flexible payload 454. The mailbox tunnel location 714 may specify a location of the node within the mailbox tunnel 510. For example, the mailbox tunnel location 714 may be a head, a tail, or a body. The Rx enable flag 716 may indicate whether the node may receive mailbox messages. The Tx enable flag 718 may indicate whether the node may send mailbox messages. The Tx empty mode indicator 720 may indicate a mode in which the node sends new messages only when the Tx message FIFO buffer 632 is empty.
[0061] The mailbox status 730 may indicate one or more states of the node relative to the mailbox tunnel 510. The mailbox status 730 may include a Tx mailbox empty flag 732 and an Rx message available flag 734. The mailbox status 730 may be indicated on one or more pins of the node (e.g., to the Tx host 620 or the Rx host 660). For example, a positive edge of the Tx mailbox empty flag 732 may generate an interrupt to notify that there is room for a new message. As another example, a positive edge of the Rx message available flag 734 may generate an interrupt to notify that there is a new message in the Rx mailbox register 670. In some embodiments, an error interrupt may be set when a Tx message cannot be sent to a destination node (e.g., due to improper configuration or exceeding the number of frames). Similarly, an error interrupt may be set when there is a receive error, such as when the Rx message FIFO buffer 672 is full.
[0062] The Tx message header 750 includes information that may be included in the header of each data packet of the message to be sent. For example, the Tx message header 750 may include a Tx message length 752, a Tx destination node 754, and a software ID 756. The Tx message length 752 may indicate the number of words of the payload. The Tx destination node 754 specifies the broadcast or address of the destination node. The software ID 756 may indicate a software message ID (e.g., for interpreting the payload) and may be programmed to any value. The Tx message 760 includes the words of the message.
[0063] Rx message header 770 includes information that may be included in the header of each data packet of the received message. For example, Rx message header 770 may include Rx message length 772, Tx source node 774, and software ID 776. Rx message header 770 may correspond to Tx message header 750 and may be populated based on the received message. Rx message 780 includes the words of the received message.
[0064] Figure 8 800. Mailbox tunnel packet 800 may be sent on designated bytes of tunnel 510 on downstream superframe 410 in downstream flexible payload 414 and / or upstream superframe 450 in upstream flexible payload 454. Designated bytes of tunnel 510 may be a fixed size (e.g., 10 bytes). Mailbox tunnel packet 800 includes mailbox command 810, payload 820, and CRC 830.
[0065] In one embodiment, mailbox command 810 is two bytes and includes destination node 812, command identifier 814, message valid indicator 816, and message offset 818. Destination node 812 corresponds to Tx destination node 754. Command identifier 814 indicates the message type, such as one of an idle message, a write / read message, an acknowledgement, or an error. Message valid indicator 816 indicates whether one or more words of the payload are valid. Message offset 818 indicates the offset of the first payload word within the message. For example, a value of 0 indicates a new message.
[0066] The message payload 820 includes one or more words of the message, which may or may not be valid, as indicated by the message valid indicator 816. In some embodiments, the content of the message payload 820 may depend on the command identifier 814. For example, in the case of an acknowledgement or error message, the message payload 820 may include a command field 822 containing the mailbox command 810 of the received message. As another example, for the first packet of a message with a message offset 818 equal to 0, the payload 820 may include a header field 824 including the message header of the received message (i.e., the contents of the Rx message header 770).
[0067] CRC 830 includes a cyclic redundancy check value for mailbox tunnel data packet 800. CRC 830 may include a retry bit 832 that indicates a repeat transmission because sending node 610 did not see a response.
[0068] Fig. 9 Flowchart of an example method 900 performed by a node (e.g., master node 110, child node 120, or terminal child node 130) in daisy chain 102. Method 900 may be performed to transmit a mailbox message to one or more connected nodes in a daisy chain via a full-duplex link. Method 900 may be performed in the context of communicating with another node (e.g., child node 120 or terminal child node 130) in daisy chain 102.
[0069] In block 910, method 900 may optionally include outputting a mailbox status on one or more pins. For example, transmitting node 610 may output mailbox status 730 on one or more pins to Tx host 620. Mailbox status 730 may include a Tx mailbox empty flag 732.
[0070] In block 920, the method 900 may optionally include receiving a new message from the host of the node when the mailbox status indicates that the message buffer has room to accommodate the message. For example, when the mailbox status 730 and / or the Tx mailbox empty flag 732 indicate that the message buffer (e.g., the Tx message FIFO buffer 632) has room to accommodate the message, the transmitting node 610 may receive a new message from the Tx host 620. In some embodiments, the Tx empty mode indication 720 affects when the message buffer has room to accommodate the message. If the Tx empty mode is active, the Tx mailbox empty flag 732 may indicate that the message buffer has room to accommodate the message only when the message buffer is empty. If the Tx empty mode is not active, the Tx mailbox empty flag 732 may indicate that the message buffer also has room to accommodate the message when the message buffer has room to accommodate the maximum size message.
[0071] In block 930, method 900 includes writing a message header and a plurality of payload words of a new message as a current message to a mailbox register, the current message having a flexible message size or a flexible destination defined by the message header. For example, the sending node 610 may write a Tx message header 750 and a Tx message 760 to the mailbox register 700. The Tx message header 750 and the Tx message 760 may correspond to the Tx mailbox register 630. The flexible message size may be defined by the Tx message length 752 in the Tx message header 750. The flexible destination may be defined by the Tx destination node 754 in the Tx message header 750.
[0072] In block 940 , the method 900 includes loading the current message into a message buffer configured to store one or more messages including the current message for transmission. For example, the transmitting node 610 may load the current message into the Tx message FIFO buffer 632 .
[0073] At block 950, method 900 includes sending the current message as one or more mailbox packets from the message buffer to one or more connected nodes participating in the mailbox tunnel via the daisy chain. For example, the sending node 610 and / or the Tx tunnel controller 634 can send the current message from the Tx message FIFO buffer 632 to one or more connected nodes (e.g., the receiving node 650) participating in the mailbox tunnel 510 via the daisy chain 102.
[0074] In some implementations, block 950 may optionally include determining that the mailbox slot for the flexible payload is idle for at least one superframe of the daisy chain at sub-block 952. For example, the transmitting node 610 and / or the Tx tunnel controller 634 may determine that the mailbox slot for the flexible payload 414, 454 is idle based on idle packets received on the mailbox slot in each of the downstream direction and the upstream direction.
[0075] In some embodiments, at sub-block 954, block 950 may optionally include writing the mailbox data packet to a mailbox time slot in one or more superframes of the daisy chain until receipt of the mailbox data packet is confirmed. For example, the transmitting node 610 and / or the Tx tunnel controller 634 may write the mailbox data packet to the US Tx buffer or the DS Tx buffer in the mailbox time slot. The transceiver 106 may then send the mailbox data packet in one or more superframes 410, 450 of the daisy chain 102 until receipt of the mailbox data packet is confirmed.
[0076] In some implementations, at sub-block 956, block 950 may optionally include overwriting another mailbox data packet in a mailbox time slot in a subsequent superframe with the mailbox data packet after determining that the mailbox time slot is idle. For example, after determining that the mailbox time slot is idle, the transceiver 106 may overwrite the mailbox data packet 520a with the mailbox data packet 520b in the mailbox time slot. That is, the sending node 610 and / or the transceiver 106 does not check whether the mailbox time slot contains a mailbox data packet when writing its own mailbox data packet.
[0077] In some embodiments, block 950 may optionally include sending the current message to the destination address as a point-to-point message in one of the upstream direction or the downstream direction at sub-block 958. Alternatively, in some embodiments, block 950 may optionally include sending the current message as a broadcast message in both the upstream direction and the downstream direction at sub-block 960.
[0078] In block 970, method 900 may optionally include sending a valid idle data packet in the downstream direction when the node is the most upstream node among the connected nodes participating in the mailbox tunnel and the node has no message data packets to send. For example, when the node is a head node (e.g., as shown in mailbox tunnel location 714), the sending node 610 and / or the Tx tunnel controller 634 may send an idle data packet.
[0079] In block 980, method 900 may optionally include sending a valid idle data packet in the upstream direction when the node is the most downstream node among the connected nodes participating in the mailbox tunnel and the node has no message data packets to send. For example, when the node is a tail node (e.g., as shown by mailbox tunnel location 714), the sending node 610 and / or the Tx tunnel controller 634 may send an idle data packet.
[0080] Fig.101 is a flow chart of an example method 1000 performed by a node (e.g., master node 110, child node 120, or terminal child node 130) in daisy chain 102. Method 1000 may be performed to receive a mailbox message in a daisy chain via a full-duplex link having one or more connected nodes. Method 1000 may be performed while communicating with another node (e.g., child node 120 or terminal child node 130) in daisy chain 102. Method 1000 may be performed in conjunction with method 900. For example, method 1000 may be performed before, after, or simultaneously with method 900 for different messages.
[0081] At block 1010, the method 1000 includes reading a message data packet addressed to the node from a mailbox slot of a flexible payload on one of an upstream superframe or a downstream superframe. For example, the receiving node 650 and / or the Rx tunnel controller 674 may read a message data packet addressed to the receiving node 650 from a mailbox slot of a flexible payload 414 or 454 of the upstream superframe 450 or the downstream superframe 410. For example, the Rx tunnel controller 674 may read the message data packet from a DS Rx buffer or a US Rx buffer.
[0082] At block 1020, method 1000 includes performing a cyclic redundancy check on the message data packet. For example, receiving node 650 and / or Rx tunnel controller 674 may perform a cyclic redundancy check by comparing CRC 830 with a CRC calculated based on the received mailbox data packet.
[0083] At block 1030, the method 1000 includes sending an acknowledgement packet or an error packet based on a cyclic redundancy check of the message packet on the other of the upstream superframe or the downstream superframe if the message packet is a point-to-point message addressed to the node, or the message packet is a broadcast message and the node is a head node or a tail node. For example, if the cyclic redundancy check succeeds, if the node is a destination node for a point-to-point message, or in the case of a broadcast message, if the node is a head node or a tail node, the Rx tunnel controller 674 may send an acknowledgement packet 530. Conversely, if the cyclic redundancy check fails, the Rx tunnel controller 674 may send an error packet instead of the acknowledgement packet 530.
[0084] At block 1040, the method 1000 includes writing header information from the payload of the message data packet to a message buffer if the message data packet is a first message data packet. For example, if the received message data packet is the first data packet of a message (e.g., the message offset 818 is 0), the Rx tunnel controller 674 may write the header information in the header field 824 of the payload 820 from the mailbox tunnel data packet 800 to the message buffer (e.g., the Rx message FIFO buffer 672).
[0085] At block 1050, method 1000 includes writing payload data from the received message packet to the message buffer based on the offset of the received message packet. For example, Rx tunnel controller 674 may write data from payload 820 of mailbox tunnel packet 800 to the message buffer (e.g., Rx message 780 of Rx message FIFO buffer 672) based on the offset 818 of the message packet. Thus, Rx tunnel controller 674 may reassemble the received message in the message buffer.
[0086] At block 1060, method 1000 includes moving the message header and message content from the message buffer to a message register as a currently received message. For example, receiving node 650 may move the message header and message content from the message buffer to a message register 670 as a currently received message.
[0087] At block 1070, the method 1000 includes outputting a mailbox status on one or more pins. For example, the receiving node 650 may output a mailbox status 730 including an Rx message available flag 734 on one or more pins in response to moving the message header and message content as a new received message to the message register. The Rx host 660 may then read the currently received message from the message register 670.
[0088] Example aspects are described in the following numbered clauses:
[0089] Clause 1. A node connected in a daisy chain to one or more connected nodes via a full-duplex link, the node comprising: a mailbox register configured to store a message header and one or more words of a current message for one or both of a sending direction or a receiving direction; a message buffer configured to store one or more messages including the current message for sending or receiving; and a tunnel controller configured to communicate a current message from or to one or more mailbox data packets as one or more mailbox data packets to one or more connected nodes participating in a mailbox tunnel via the daisy chain. The current message has a flexible message size or a flexible destination defined by the message header.
[0090] Clause 2. A node as described in clause 1, wherein the mailbox data packet includes: an indication or destination address of a broadcast message; a message offset indicating a location within the message; a payload; and a cyclic redundancy check value.
[0091] Clause 3. A node as described in clause 1, wherein the mailbox register defines: control fields of the mailbox tunnel; mailbox status of one or both of sending a message or receiving a message; sending a message header, sending a message, receiving a message header, and receiving a message.
[0092] Clause 4. The node of clause 3, wherein the node is configured to output a mailbox status on one or more pins.
[0093] Clause 5. A node as described in Clause 3, wherein the control field defines one or more of: the location of the mailbox tunnel within the flexible payload of the daisy chain, the location of the mailbox tunnel of the node, whether reception is enabled, whether transmission is enabled, or whether the node operates in a send mailbox empty mode.
[0094] Clause 6. A node as described in Clause 1, wherein in order to communicate a mailbox message as one or more mailbox data packets via a daisy chain, the tunnel controller is configured to: determine that a mailbox time slot for a flexible payload is idle for at least one superframe of the daisy chain; and write a mailbox data packet to a mailbox time slot in one or more superframes of the daisy chain until receipt of the mailbox data packet is confirmed.
[0095] Clause 7. The node described in Clause 6, wherein the tunnel controller is configured to overwrite another mailbox data packet in the mailbox time slot in a subsequent superframe with the mailbox data packet after determining that the mailbox time slot is idle.
[0096] Clause 8. A node as described in Clause 1, wherein the node is configured to: receive a new message from a host of the node; write a message header and multiple payload words of the new message as a current message into the mailbox register; and load the current message into the message buffer.
[0097] Clause 9. A node as described in Clause 1, wherein the tunnel controller is configured to: send a valid idle data packet in a downstream direction when the node is the most upstream node among the connected nodes participating in a mailbox tunnel and the node has no message data packet to send; or send a valid idle data packet in an upstream direction when the node is the most downstream node among the connected nodes participating in a mailbox tunnel and the node has no message data packet to send.
[0098] Clause 10. The node of clause 1, wherein the tunnel controller is configured to send the current message as a point-to-point message to the destination address in one of an upstream direction or a downstream direction.
[0099] Clause 11. The node of Clause 1, wherein the tunnel controller is configured to send the current message as a broadcast message simultaneously in an upstream direction and a downstream direction.
[0100] Clause 12. A node as described in Clause 1, wherein the tunnel controller is configured to: read a message data packet addressed to the node from a mailbox time slot of a flexible payload on one of an upstream superframe or a downstream superframe; perform a cyclic redundancy check on the message data packet; and if the message data packet is a point-to-point message addressed to the node, or the message data packet is a broadcast message and the node is a head node or a tail node, send an acknowledgment data packet or an error data packet on the other of the upstream superframe or the downstream superframe based on the cyclic redundancy check of the message data packet.
[0101] Clause 13. A method for a node to transmit a mailbox message to one or more connected nodes in a daisy chain via a full-duplex link, the method comprising: writing a message header and multiple payload words of a new message as a current message into a mailbox register, the current message having a flexible message size or a flexible destination defined by the message header; loading the current message into a message buffer, the message buffer being configured to store one or more messages including the current message for transmission; and sending the current message as one or more mailbox data packets from the message buffer to one or more connected nodes participating in a mailbox tunnel through the daisy chain.
[0102] Clause 14. The method described in Clause 13, wherein sending the current message as one or more mailbox data packets through the daisy chain includes: determining that a mailbox time slot for a flexible payload is idle for at least one superframe of the daisy chain; and writing a mailbox data packet to a mailbox time slot in one or more superframes of the daisy chain until receipt of the mailbox data packet is confirmed.
[0103] Clause 15. The method of clause 14, wherein sending the current message as one or more mailbox data packets through the daisy chain includes overwriting another mailbox data packet in the mailbox time slot with the mailbox data packet in a subsequent superframe after determining that the mailbox time slot is idle.
[0104] Clause 16. The method of clause 13, further comprising: outputting a mailbox status on one or more pins; and receiving the new message from the host of the node when the mailbox status indicates that the message buffer has room to accommodate the message.
[0105] Clause 17. The method described in Clause 13 further includes: sending a valid idle data packet in a downstream direction when the node is the most upstream node among the connected nodes participating in the mailbox tunnel and the node has no message data packet to send; or sending a valid idle data packet in an upstream direction when the node is the most downstream node among the connected nodes participating in the mailbox tunnel and the node has no message data packet to send.
[0106] Clause 18. The method of clause 13, wherein sending the mailbox message as one or more mailbox data packets through the daisy chain includes sending the current message as a point-to-point message to a destination address in one of an upstream direction or a downstream direction.
[0107] Clause 19. The method of clause 13, wherein sending the mailbox message as one or more mailbox data packets through the daisy chain includes sending the current message as a broadcast message in both an upstream direction and a downstream direction.
[0108] Clause 20. The method described in Clause 13 further includes: reading a message data packet addressed to the node from a mailbox time slot of a flexible payload on one of an upstream superframe or a downstream superframe; performing a cyclic redundancy check on the message data packet; and if the message data packet is a point-to-point message addressed to the node, or the message data packet is a broadcast message and the node is a head node or a tail node, sending an acknowledgment data packet or an error data packet based on the cyclic redundancy check of the message data packet on the other of the upstream superframe or the downstream superframe.
[0109] Clause 21. The method described in Clause 20 further includes: if the message data packet is the first message data packet, writing header information from the payload of the message data packet into a message buffer; writing payload data from the message data packet into the message buffer based on the offset of the message data packet; moving the message header and message content from the message buffer to a message register as a currently received message; and outputting a mailbox status on one or more pins.
[0110] For example, an element, any part of an element, or any combination of elements can be implemented with a "processing system" including one or more processors. Examples of processors include microprocessors, microcontrollers, digital signal processors (DSPs), field programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functions described in this disclosure. One or more processors in a processing system can execute software. Software should be broadly interpreted as instructions, instruction sets, codes, code segments, program codes, programs, subroutines, scripts, software modules, applications, software applications, software packages, routines, subroutines, objects, executable files, execution threads, programs, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or other.
[0111] Therefore, in one or more aspects, one or more functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, these functions may be stored on a computer-readable medium or encoded as one or more instructions or codes. Computer-readable media include computer storage media. The storage medium may be any available medium that a computer can access. As an example and not limitation, such a computer-readable medium may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, disk storage or other magnetic storage device, or any other medium that can be used to carry or store the required program code in the form of an instruction or data structure and can be accessed by a computer. Disks and optical disks used herein include compact disks (CDs), laser optical disks, optical disks, digital versatile disks (DVDs), and floppy disks, wherein disks typically reproduce data magnetically, while optical disks reproduce data optically with lasers. The above combinations should also be included in the scope of computer-readable media. Non-transient computer-readable media do not include transient signals.
Claims
1. A node connected to one or more connected nodes in a daisy chain via a full-duplex link, the node comprising: a mailbox register configured to store a message header and one or more words of a current message for one or both of a send direction or a receive direction; a message buffer configured to store one or more messages including the current message for sending or receiving; and A tunnel controller is configured to communicate a current message from or to one or more mailbox packets as one or more mailbox packets to one or more connected nodes participating in a mailbox tunnel through the daisy chain, the current message having a flexible message size or a flexible destination defined by the message header.
2. The node according to claim 1, wherein the mailbox data packet comprises: an indication or destination address of a broadcast message; a message offset indicating a location within said message; Payload; and a cyclic redundancy check value.
3. A node according to claim 1, wherein the mailbox register defines: control fields of the mailbox tunnel; mailbox status of one or both of sending messages or receiving messages; sending message headers, sending messages, receiving message headers and receiving messages.
4. A node according to claim 3, wherein the node is configured to output a mailbox status on one or more pins.
5. A node according to claim 3, wherein the control field defines one or more of the following: the location of the mailbox tunnel within the flexible payload of the daisy chain, the location of the mailbox tunnel of the node, whether reception is enabled, whether transmission is enabled, or whether the node operates in a send mailbox empty mode.
6. The node of claim 1 , wherein to communicate a mailbox message as one or more mailbox packets via the daisy chain, the tunnel controller is configured to: determining that a mailbox time slot for a flexible payload is idle for at least one superframe of the daisy chain; and Mailbox data packets are written to mailbox time slots in one or more superframes of the daisy chain until receipt of a mailbox data packet is acknowledged.
7. The node of claim 6, wherein the tunnel controller is configured to overwrite another mailbox data packet in the mailbox time slot in a subsequent superframe with the mailbox data packet after determining that the mailbox time slot is idle.
8. The node according to claim 1, wherein the node is configured to: receiving a new message from a host of the node; writing a message header and a plurality of payload words of the new message as a current message to the mailbox register; and The current message is loaded into the message buffer.
9. The node according to claim 1, wherein the tunnel controller is configured to: When the node is the most upstream node among the connected nodes participating in the mailbox tunnel and the node has no message packets to send, sending a valid idle packet in the downstream direction; or When the node is the most downstream node among the connected nodes participating in the mailbox tunnel and the node has no message packets to send, a valid idle packet is sent in the upstream direction.
10. The node of claim 1, wherein the tunnel controller is configured to send the current message as a point-to-point message to a destination address in one of an upstream direction or a downstream direction.
11. The node of claim 1, wherein the tunnel controller is configured to send the current message as a broadcast message simultaneously in an upstream direction and a downstream direction.
12. The node according to claim 1, wherein the tunnel controller is configured to: reading a message data packet addressed to the node from a mailbox time slot of a flexible payload on one of an upstream superframe or a downstream superframe; Performing a cyclic redundancy check on the message data packet; and If the message data packet is a point-to-point message addressed to the node, or the message data packet is a broadcast message and the node is a head node or a tail node, an acknowledgment data packet or an error data packet is sent based on a cyclic redundancy check of the message data packet on another of the upstream superframe or the downstream superframe.
13. A method for a node to transmit a mailbox message to one or more connected nodes in a daisy chain via a full-duplex link, the method comprising: writing a message header and a plurality of payload words of a new message as a current message into a mailbox register, the current message having a flexible message size or a flexible destination defined by the message header; loading the current message into a message buffer configured to store one or more messages including the current message for transmission; and The current message is sent from the message buffer as one or more mailbox data packets to one or more connected nodes participating in a mailbox tunnel through the daisy chain.
14. The method of claim 13, wherein sending the current message as one or more mailbox packets through the daisy chain comprises: determining that a mailbox time slot for a flexible payload is idle for at least one superframe of the daisy chain; and Mailbox data packets are written to mailbox time slots in one or more superframes of the daisy chain until receipt of the mailbox data packet is acknowledged.
15. The method of claim 14, wherein sending the current message as one or more mailbox data packets through the daisy chain includes overwriting another mailbox data packet in the mailbox time slot with the mailbox data packet in a subsequent superframe after determining that the mailbox time slot is idle.
16. The method according to claim 13, further comprising: Output mailbox status on one or more pins; and When the mailbox status indicates that the message buffer has room to accommodate the message, the new message is received from the host of the node.
17. The method according to claim 13, further comprising: sending a valid idle data packet in a downstream direction when the node is the most upstream node among the connected nodes participating in the mailbox tunnel and the node has no message data packets to send; or When the node is the most downstream node among the connected nodes participating in the mailbox tunnel and the node has no message packets to send, a valid idle packet is sent in the upstream direction.
18. The method of claim 13, wherein sending the mailbox message as one or more mailbox data packets through the daisy chain comprises sending the current message as a point-to-point message to a destination address in one of an upstream direction or a downstream direction.
19. The method of claim 13, wherein sending the mailbox message as one or more mailbox packets through the daisy chain comprises sending the current message as a broadcast message in both an upstream direction and a downstream direction.
20. The method of claim 13, further comprising: reading a message data packet addressed to the node from a mailbox time slot of a flexible payload on one of an upstream superframe or a downstream superframe; Performing a cyclic redundancy check on the message data packet; and If the message data packet is a point-to-point message addressed to a node, or the message data packet is a broadcast message and the node is a head node or a tail node, an acknowledgment data packet or an error data packet is sent based on a cyclic redundancy check of the message data packet on the other of the upstream superframe or the downstream superframe.
21. The method according to claim 20, further comprising: If the message data packet is a first message data packet, writing header information from a payload of the message data packet into a message buffer; writing payload data from the message data packet to the message buffer based on an offset of the message data packet; Moving the message header and the message content as the currently received message from the message buffer to a message register; and Output the mailbox status on one or more pins.
22. A communication system comprising: A plurality of nodes connected in a daisy chain via a full-duplex link, each node being associated with a host, wherein a subset of the nodes is configured to participate in a mailbox tunnel, wherein at least one node of the subset of nodes is configured to: writing a message header and a plurality of payload words of a new message from a corresponding host as a current message to a mailbox register, the current message having a flexible message size or a flexible destination defined by the message header; and The current message is sent as one or more mailbox data packets to a subset of one or more nodes in mailbox time slots of one or more superframes of the daisy chain.
23. A communication system according to claim 22, wherein when multiple nodes send mailbox data packets on a mailbox time slot in the same superframe, at least one node is configured to overwrite the mailbox data packet received in the mailbox time slot and send one or more mailbox data packets of the current message until the current message is completed, and then forward the mailbox data packet received in a subsequent superframe.