A communication system, method and electronic device based on Aurora bus
By introducing intermediate node devices and routing modules into the Aurora bus communication system, communication between any node devices in the system is realized, and the limitations of communication between node devices in the prior art are solved, and communication efficiency and stability are improved.
Patent Information
- Application Number
- CN202310411485.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2023-04-17
- Publication Date
- 2025-07-18
- Estimated Expiration
- 2043-04-17
AI Technical Summary
The existing Aurora bus protocol is only suitable for interconnected communication between two devices, and cannot realize mutual communication between any node device in a system.
The intermediate node equipment is introduced in the communication system, equipped with routing modules and multiple communication modules, and route forwarding through the intermediate node equipment to realize communication between any node equipment in the system, and avoid the intervention of the central processor at the bottom of the logic.
It improves communication efficiency within the system, saves CPU resources, enhances the stability and flexibility of the communication system, and supports the segmentation processing of multiple types of data.
Smart Images

Figure CN116527433B_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of communication technologies, and in particular, to a communication system, method, and electronic device based on the Aurora bus. Background Art
[0002] The Aurora bus protocol was proposed by Xilinx. It is a scalable, lightweight, link-layer point-to-point, serial transmission communication protocol for high-speed data transmission between Field Programmable Gate Arrays (FPGAs). The transmission speed of the Aurora protocol is flexibly configurable and also supports channel bonding to achieve higher data transmission speeds.
[0003] With the continuous progress of science and technology and the continuous development of society, the exchange and transmission of information are increasing and accelerating. Especially in fields such as meteorology, radar, medical, and transportation, huge data calculations are required, which means higher-speed data transmission is needed. Serial transmission technology has an extremely high transmission rate and a small number of signal lines, meeting the high-speed data transmission requirements and reducing the complexity of communication. The Aurora bus is widely used in the above fields, especially suitable for data transmission between FPGA boards.
[0004] However, in the prior art, the Aurora bus is only applicable to interconnection communication between two devices and cannot enable any node devices within a system to communicate with each other through the Aurora bus. Summary of the Invention
[0005] Embodiments of this application provide a communication system, method, and electronic device based on the Aurora bus to enable any two node devices within a communication system to communicate with each other through the Aurora bus, improving the communication efficiency within the system.
[0006] In a first aspect, an embodiment of the present application provides a communication system based on an Aurora bus, including: The communication system includes at least three node devices, including at least one intermediate node device and an end node device, and any two end node devices communicate with each other through the intermediate node device; The first node device among the at least one intermediate node device includes N communication modules and a routing module, the first node device is any one of the intermediate node devices, the first node device is connected to N node devices, the N communication modules correspond to the N node devices one by one, and N is a positive integer; The first communication module in the first node device is configured to receive a target message sent by a second node device and obtain the destination address of the target message; The first communication module is the communication module corresponding to the second node device, and the second node device is any one of the node devices connected to the first node device; The first communication module is further configured to send the target message to the routing module; The routing module is configured to determine whether the third node device corresponding to the destination address is the first node device, and when the third node device is not the first node device, send the target message to the second communication module according to the destination address; The second communication module is the communication module corresponding to the third node device; The second communication module is configured to send the target message to the third node device according to the Aurora link layer protocol.
[0007] Based on the above solution, since the intermediate node device has a routing and communication function, when any two end node devices in the system need to communicate, the message can be sent to the intermediate node device, and the intermediate node device can perform routing and forwarding to achieve this. And the end node device is connected to the intermediate node device and can directly communicate. That is, through a communication system based on an Aurora bus provided by an embodiment of the present application, any node device in a communication system can communicate with each other through the Aurora bus. And because of the routing and forwarding process of the routing module in the intermediate node device, it does not require the intervention of a central processing unit (CPU), and the message forwarding is achieved at the logical bottom layer, which greatly saves CPU resources and can also significantly improve communication efficiency.
[0008] In a possible implementation manner, the routing module includes N channels, and the N channels correspond to the N node devices one by one; specifically, the first communication module is configured to: when sending the target message to the routing module, send the target message to the first channel of the routing module according to the preset correspondence between the node device and the channel; the first channel is the channel corresponding to the second node device; specifically, the routing module is configured to: when sending the target message to the second communication module, determine the second channel corresponding to the third node device according to the preset correspondence between the node device and the channel, and send the target message to the second communication module through the second channel.
[0009] Based on the above solution, by corresponding the N channels to the N node devices one by one, the forwarding of messages can be achieved by forwarding the target message to different channels.
[0010] In a possible implementation manner, each of the communication modules includes a user module, an Aurora transport layer management module, and an Aurora bus IP core; when the first communication module receives the target message sent by the second node device, the Aurora bus IP core in the first communication module is configured to receive the target message and send the target message to the Aurora transport layer management module in the first communication module; the Aurora transport layer management module in the first communication module is configured to obtain the destination address of the target message and send the target message to the user module in the first communication module; when the first communication module determines whether the third node device corresponding to the destination address of the target message is the first node device, the user module in the first communication module is configured to determine whether the destination address is the same as the address of the first node device; when the second communication module sends the target message to the third node device according to the Aurora link layer protocol, the Aurora transport layer management module of the second communication module is configured to send the target message to the Aurora bus IP core of the second communication module; the Aurora bus IP core of the second communication module is configured to send the target message to the third node device according to the Aurora link layer protocol.
[0011] Based on the above solution, the application of the Aurora bus at the transport layer can be achieved through the Aurora transport layer management module.
[0012] In a possible implementation manner, the routing module includes an arbiter and a cache; after the first communication module sends the target message to the routing module, the cache is used to store the target message; when the routing module sends the target message to the second communication module according to the destination address, the arbiter is used to perform the following processing: determining whether there is another channel with a preset priority higher than that of the first channel among the N channels that is sending a message according to the preset priorities of each channel; if it is determined that there is another channel with a preset priority higher than that of the first channel that is sending a message, waiting to send the target message; if it is determined that there is no other channel with a preset priority higher than that of the first channel that is sending a message, sending the target message to the second communication module through the second channel.
[0013] Based on the above solution, the cache and the arbiter can avoid the problem that the message cannot be sent due to multiple channels sending messages simultaneously when the routing module forwards messages through N channels, enhancing the stability of the communication system.
[0014] In a possible implementation manner, the target message is obtained by the first node device encapsulating target data according to a preset message format; the preset message format includes at least one or more of a destination address, a source address, a message type, a message length, a register address, a number of registers, valid data, and a CRC check code.
[0015] Based on the above solution, the preset message format in the embodiments of the present application has scalability because it is not limited to the above fields, and can flexibly add new message types to implement the subdivision processing of multiple types of data.
[0016] In a second aspect, the embodiments of the present application provide a communication method based on the Aurora bus, including:
[0017] Applied to the first node device in a communication system based on the Aurora bus, the communication system includes at least three node devices, including at least one intermediate node device and an end node device, and any two end node devices communicate through the intermediate node device; the first node device among the at least one intermediate node device is any intermediate node device in the communication system, and the first node device is connected to N node devices, where N is a positive integer; the method includes: receiving a target message sent by a second node device and obtaining the destination address of the target message; the second node device is any node device connected to the first node device; determining whether the third node device corresponding to the destination address is the first node device; when the third node device is not the first node device, sending the target message to the third node device according to the destination address in accordance with the Aurora link layer protocol.
[0018] In a possible implementation, the first node device includes N channels, and the N channels correspond to the N node devices one by one; the step of sending the target message to the third node device according to the Aurora link layer protocol based on the destination address includes: determining whether there are other channels with a preset priority higher than that of the first channel among the N channels that are sending messages; if it is determined that there are other channels with a preset priority higher than that of the first channel that are sending messages, then wait to send the target message; if it is determined that there are no other channels with a preset priority higher than that of the first channel that are sending messages, then send the target message to the third node device through the second channel according to the Aurora link layer protocol.
[0019] In a possible implementation, the target message is obtained by the first node device encapsulating target data according to a preset message format; the preset message format includes at least one or more of a destination address, a source address, a message type, a message length, a register address, a number of registers, valid data, and a CRC check code.
[0020] In a third aspect, an embodiment of the present application provides an electronic device, including:
[0021] a memory for storing computer instructions;
[0022] a processor connected to the memory for executing the computer instructions in the memory and implementing the method according to any one of the second aspects when executing the computer instructions.
[0023] In a fourth aspect, an embodiment of the present application provides a computer-readable storage medium, including:
[0024] The computer-readable storage medium stores computer instructions, and when the computer instructions run on a computer, the computer is caused to execute the method according to any one of the second aspects.
[0025] For the various aspects in the second to fourth aspects above and the possible technical effects that each aspect may achieve, please refer to the description of the possible technical effects that can be achieved by the first aspect or various possible solutions in the first aspect above, and details will not be repeated here. BRIEF DESCRIPTION OF THE DRAWINGS
[0026] In order to more clearly illustrate the technical solutions in the embodiments of the present application or the prior art, the following will briefly introduce the drawings required for the description of the embodiments. Obviously, the drawings in the following description are only some embodiments of the present application.
[0027] Figure 1Schematic diagram of the communication topology structure of a node device in a communication system based on the Aurora bus provided by an embodiment of the present application;
[0028] Figure 2 Schematic diagram of the structure of an end node device in a communication system based on the Aurora bus provided by an embodiment of the present application;
[0029] Figure 3 Schematic diagram of the structure of an intermediate node device in a communication system based on the Aurora bus provided by an embodiment of the present application;
[0030] Figure 4 Schematic diagram of the structure of an intermediate node device in a communication system based on the Aurora bus provided by an embodiment of the present application;
[0031] Figure 5 Schematic diagram of the structure of a communication system based on the Aurora bus provided by an embodiment of the present application;
[0032] Figure 6 Exemplary flowchart of a communication method based on the Aurora bus provided by an embodiment of the present application;
[0033] Figure 7 Schematic diagram of the preset message format provided by an embodiment of the present application;
[0034] Figure 8 Exemplary flowchart of a communication method based on the Aurora bus provided by an embodiment of the present application;
[0035] Figure 9 Exemplary flowchart of a communication method based on the Aurora bus provided by an embodiment of the present application;
[0036] Figure 10 Exemplary flowchart of a communication method based on the Aurora bus provided by an embodiment of the present application;
[0037] Figure 11 Exemplary flowchart of a communication method based on the Aurora bus provided by an embodiment of the present application;
[0038] Figure 12 Schematic diagram of the structure of an electronic device provided by an embodiment of the present application. Detailed implementation manners
[0039] To make the objectives, technical solutions, and advantages of the embodiments of this application clearer, the following will clearly and completely describe the technical solutions of this application with reference to the accompanying drawings in the embodiments of this application. Obviously, the described embodiments are some, but not all, of the embodiments of the technical solutions of this application. Based on the embodiments described in this application document, all other embodiments obtained by those of ordinary skill in the art without creative efforts belong to the scope protected by the technical solutions of this application.
[0040] The terms "first" and "second" in the embodiments of this application are used to distinguish different objects, rather than to describe a specific order. In addition, the term "including" and any variations thereof are intended to cover non-exclusive protection. For example, a process, method, system, product, or device that includes a series of steps or units is not limited to the listed steps or units, but optionally further includes steps or units not listed, or optionally further includes other steps or units inherent to these processes, methods, products, or devices. "Multiple" in this application may mean at least two, for example, it may be two, three, or more, and the embodiments of this application do not make limitations.
[0041] Currently, with the continuous progress of science and technology and the continuous development of society, the exchange and transmission of information are increasing and accelerating. Especially in fields such as meteorology, radar, medical care, and transportation, huge data calculations are required, which means higher-speed data transmission is needed. Serial transmission technology has an extremely high transmission rate and a small number of signal lines, meeting the high-speed data transmission requirements and reducing the complexity of communication. Therefore, the Aurora bus, as a scalable, lightweight, link-layer point-to-point, serial transmission communication protocol, is widely used in the above fields, especially suitable for data transmission between FPGA boards. However, in related technologies, the Aurora bus is only applicable to the interconnection communication between two devices and cannot realize the mutual communication of any node devices in a system through the Aurora bus.
[0042] In view of this, the embodiments of this application provide a communication system based on the Aurora bus. The intermediate node device in this system includes a routing module and multiple communication modules. When the second node device needs to send a message to the third node device, the first node device can receive the target message sent by the second node device to the third node device through the communication module corresponding to the second node device, and forward the target message to the communication module corresponding to the third node device through the routing module, and then send the target message to the third node device according to the Aurora link-layer protocol through this communication module to realize the communication between the second node device and the third node device. Among them, the first node device is an intermediate node device, and the second node device is a node device connected to the first node device.
[0043] Through the above method, since the intermediate node device has routing and communication functions, when any two end node devices in the system need to communicate, the message can be sent to the intermediate node device, and the intermediate node device can perform routing and forwarding to achieve communication. Moreover, the end node device is connected to the intermediate node device and can directly communicate. That is, any node device in a communication system can communicate with each other through the Aurora bus by using the communication system provided in the embodiment of the present application. And due to the routing and forwarding process of the routing module in the intermediate node device, which does not require the intervention of the central processing unit (CPU), the message forwarding is realized at the logical bottom layer, greatly saving CPU resources and significantly improving communication efficiency.
[0044] Refer to Figure 1 It is a schematic diagram of the communication topology of the node device of a communication system based on the Aurora bus provided by the embodiment of the present application. Figure 1 Taking a communication system including 6 node devices as an example for illustration, the communication system includes node device 1 to node device 6, and the lines between the node devices represent the Aurora bus. Among them, node device 5 is an intermediate node device, and its structure can be as Figure 3 shown, which is used to connect the communication between the front-stage and back-stage node devices. Node device 1, node device 2, node device 3, node device 4, and node device 6 are end node devices, and their structures can be as Figure 2 shown, and each end node device is only connected to one node device. Node device 1 to node device 4 are not directly connected to node device 6, but can communicate with node device 6 indirectly through node device 5. The communication in this communication system can include node devices sending data, node devices receiving data, and intermediate node devices routing and forwarding data. It should be noted that Figure 1 the shown topology is only exemplary, and can be trimmed or extended based on this structure according to actual situations, and the present application does not limit this.
[0045] Refer to Figure 2Schematic diagram of the end - node device structure in a communication system based on the Aurora bus provided by the embodiments of the present application. In the end - node device 200, a user module 201, an Aurora transport layer management module 202, and an Aurora bus IP core 203 may be included. The user module 201 can be used to determine the valid data to be sent, the valid data in the received message, or the status information in the message, and process the valid data or status information. The user module 201 can be an FPGA logic module, a CPU, or other modules with data - processing capabilities. The Aurora transport layer management module 202 can be used to encapsulate the valid data to be sent according to a preset message format, parse the received message, extract the valid data or status information in the message, and send the valid data or status information to the user module 201. The Aurora bus IP core 203 applied in the embodiments of the present application can be the Aurora bus IP core provided by Xilinx in the related art, and is used to implement the Aurora link - layer and physical - layer protocols, such as receiving messages from other node devices and sending the messages to other node devices according to the Aurora link - layer protocol.
[0046] In a possible implementation, the Aurora transport layer management module may also have functions such as data caching, arbitration, checksum calculation, and statistics, and can expand or reduce the above functions according to the actual scenario. For example, the data - caching function can be used to cache the received messages. The arbitration function can be used to determine the order of receiving messages from each node device when multiple node devices send messages to the intermediate node device where the Aurora transport layer management module is located at the same time. The checksum - calculation function can be to check the message through the cyclic redundancy check (CRC) in the received message. The statistics function can be used to count the number of received messages, or count the number of messages with failed checksums received, etc.
[0047] Based on the above solution, by trimming or expanding the function items of the Aurora transport layer management module, flexible configuration can be achieved according to the actual application scenario, thereby realizing the adjustment of resources and performance.
[0048] Refer to Figure 3It is one of the schematic diagrams of the intermediate node device structure in a communication system based on the Aurora bus provided by the embodiments of the present application. When the intermediate node device is connected to N node devices, the intermediate node device may include N communication modules and one routing module. Among them, the N communication modules include communication module 1, communication module 2, communication module 3... communication module N, and the N communication modules correspond to the N node devices one by one, and N is a positive integer. Hereinafter, the intermediate node device is taken as the first node device for illustration. The first communication module in the first node device is used to receive the target message sent by the second node device and obtain the destination address of the target message. Then it determines whether the third node device corresponding to the destination address is the first node device, and when the third node device is not the first node device, it sends the target message to the routing module. Among them, the first communication module is the communication module corresponding to the second node device, and the second node device is any node device connected to the first node device. The routing module is used to send the target message to the second communication module corresponding to the third node device according to the destination address. Finally, the second communication module is used to send the target message to the third node device according to the Aurora link layer protocol.
[0049] For example, Figure 1 when the node device 1 in sends data to the node device 6, since the node device 1 and the node device 6 are not directly connected, the node device 1 cannot directly send the data to the node device 6. However, the node device 1 can first send the message including the data to the node device 5, and then forward the message to the communication module corresponding to the node device 6 through the routing module in the node device 5, so that the communication module sends the message to the node device 6.
[0050] The communication system provided by the embodiments of the present application can support any form of communication topology structure within the range of hardware limitations and realize the function of any node communication within the entire system.
[0051] In a possible implementation, the routing module may include N channels, where the N channels correspond one-to-one to N node devices. And since the N communication modules also correspond one-to-one to the N node devices, the N communication modules also correspond one-to-one to the N channels. The N channels are used to implement communication between the routing module and the N communication modules. Specifically, when the first communication module forwards the target message sent by the second node device to the routing module, it can be used to send the target message to the first channel of the routing module according to the preset correspondence between the node device and the channel. Among them, the first channel is the channel corresponding to the second node device. The first channel of the routing module can be used to determine whether the destination address of the target message is the same as the address of the first node device, and when the destination address is different from the address of the first node device, initiate a request to send the target message to the second communication module. Then when the routing module sends the target message to the second communication module, it can be used to determine the second channel corresponding to the third node device according to the preset correspondence between the node device and the channel, and send the target message to the second communication module through the second channel.
[0052] For example, assume Figure 1 In the communication system shown, node device 1 needs to send a target message to node device 6 through node device 5, and node device 1 corresponds to communication module 1 and channel 1 in node device 5, and node device 6 corresponds to communication module 5 and channel 5 in node device 5. Then after communication module 1 receives the target message sent by node device 1, it can be sent to channel 1 of the routing module. Then the routing module can forward the target message through channel 5 to communication module 5, so that communication module 5 can send the target message to node device 6.
[0053] In a possible implementation, such as Figure 4As shown, each communication module may include a user module, an Aurora transport layer management module, and an Aurora bus IP core. Specifically, when the first communication module receives a target message sent by the second node device, the Aurora bus IP core in the first communication module can be used to receive the target message and send the target message to the Aurora transport layer management module in the first communication module. The Aurora transport layer management module in the first communication module is used to obtain the destination address of the target message and send the target message to the user module in the first communication module. When the first communication module determines whether the third node device corresponding to the destination address of the target message is the first node device, the user module in the first communication module can be used to determine whether the destination address of the target message is the same as the address of the first node device. When the second communication module sends the target message to the third node device according to the Aurora link layer protocol, the Aurora transport layer management module of the second communication module is used to send the target message to the Aurora bus IP core of the second communication module. The Aurora bus IP core of the second communication module is used to send the target message to the third node device according to the Aurora link layer protocol.
[0054] In some embodiments, the Aurora transport layer management module in the first communication module can send the target message to the first channel of the routing module and the user module in the first communication module at the same time. After receiving the target message, the user module in the first communication module can be used to: cache the target message, and determine whether the destination address is the same as the address of the first node device. When it is determined that the destination address is not the same as the address of the first node device, discard the target message. When it is determined that the destination address is the same as the address of the first node device, process the target message. After receiving the target message, the first channel of the routing module can also be used to cache the target message and determine whether the destination address is the same as the address of the first node device. When it is determined that the destination address is the same as the address of the first node device, discard the target message. When it is determined that the destination address is not the same as the address of the first node device, send the target message to the second communication module.
[0055] In some embodiments, the routing module may further include an arbiter and a cache. After the first communication module sends the target message to the routing module, the cache can be used to store the target message. When the routing module sends the target message to the second communication module according to the destination address, the arbiter can be used to determine whether there is another channel with a preset priority higher than that of the first channel among the N channels that is sending a message according to the preset priorities of each channel. If it is determined that there is another channel with a preset priority higher than that of the first channel that is sending a message, wait to send the target message. If it is determined that there is no other channel with a preset priority higher than that of the first channel that is sending a message, send the target message to the second communication module through the second channel. It should be understood that the cache can be a FIFO, a RAM, or other media with storage capabilities, and the arbiter can be a polling arbiter, a fixed-priority arbiter, etc., and the present application does not limit this.
[0056] Refer to Figure 5 FIG. is a schematic structural diagram of a communication system based on the Aurora bus provided by an embodiment of the present application. Taking the communication system satisfying Figure 1 the topology shown as an example, the communication system includes 6 node devices: node device 1 to node device 6. Among them, the structures of node device 1 to node device 4 and node device 6, and the functions of each module can be referred to Figure 2 for the relevant description, and the structure of node device 5 and the functions of each module can be referred to Figure 3 for the relevant description, which will not be elaborated here.
[0057] Refer to Figure 6 FIG. is one of the exemplary flowcharts of a communication method based on the Aurora bus provided by an embodiment of the present application. This method can be applied to the first node device. When the communication system is as Figure 1 or Figure 5 shown, the first node device can be node device 5, and may include the following processes:
[0058] S601, receive the target message sent by the second node device and obtain the destination address of the target message.
[0059] Among them, the second node device is any node device connected to the first node device. The second node device can be an end node device. For example, the second node device can be Figure 1 the node devices 1 to 4 or node device 6 in
[0060] Since there is no message format for the Aurora bus transmission protocol in the related art, the present application provides a preset message format for the Aurora bus transmission protocol. Node devices can encapsulate valid data or parse messages through this preset message format.
[0061] In some embodiments, the target message can be obtained by the first node device encapsulating target data according to this preset message format. The preset message format includes at least one or more of a destination address, a source address, a message type, a message length, a register address, a number of registers, valid data, and a CRC check code.
[0062] The following uses the register message type as an example to illustrate the preset message format. Refer to Figure 7 for the schematic diagram of the preset message format provided by the embodiments of the present application. Figure 7 In the figure, word represents 1 16-bit data. Qword represents 4 words, that is, it can represent 64-bit data. Therefore, each qword can include 8 bytes. Among them, byte 0 represents bit[7:0], byte 1 represents bit[15:8], byte 2 represents bit[23:16], byte 3 represents bit[31:24], byte 4 represents bit[39:32], byte 5 represents bit[47:40], byte 6 represents bit[55:48], and byte 7 represents bit[63:56]. The message can include N qwords, and N can be determined according to the length of the valid data.
[0063] Byte 0 of qword1 can be used to describe the destination address, indicating the address of the node device to which the message is to be sent. Byte 1 can be used to describe the source address, indicating the address of the node device from which the message comes. For example, for a message sent from node device 1 to node device 2, byte 0 can be the address of node device 2, and byte 1 can be the address of node device 1.
[0064] Byte 2 of qword1 can be used to describe the message type, indicating the type of the current message. For example, the write register type is 0x4, the read register type is 0x5, and the response register type is 0x6. Byte 3 of qword1 is the message length, used to represent the length of the valid data, which can be calculated in qwords. For example, if the valid data is 128 bits, which is 2 qwords, the message length can be 2. Bytes 4 to 6 of qword1 are tags, used to represent the message count. Each time a message is sent, the count is incremented by 1. Byte 7 of qword1 and bytes 5 to 7 of qword2 can be reserved bytes for future expansion. Bytes 0 to 3 of qword2 are the register address, used to represent the register address of the node device that the message needs to access. Byte 4 of qword2 is used to describe the number of registers, indicating the number of registers that need to be accessed. Qword3 to qword(N - 1) are the valid data, used to represent the information carried in the message. For example, when the message type is the write register type, the value to be rewritten in the register can be filled in the valid data. When the message type is the read register type, the valid data segment may not be required, that is, the message length is 0. When the message type is the response register type, the value of the accessed register can be carried in the valid data.
[0065] Bytes 0 to 3 of qwordN are the CRC32 checksum, used for data verification of the entire message. After using the CRC32 polynomial check method, the result can be filled at the end of the message. Among them, the CRC32 checksum is a 32-bit CRC checksum. Bytes 4 to 7 of qwordN can be set according to the situation. For example, they can be valid data.
[0066] Based on the above solution, the message format provided in the embodiments of the present application has scalability, can flexibly add new message types, and supports fine-grained data processing.
[0067] S602, determine whether the third node device corresponding to the destination address is the first node device.
[0068] If it is determined that the destination address is the same as the address of the first node device, then determine that the third node device is the first node device, and the first node device can process the target message. If the destination address is different from the address of the first node device, then when it is determined that the third node device is not the first node device, execute S603.
[0069] S603, when it is determined that the third node device is not the first node device, send the target message to the third node device according to the destination address in accordance with the Aurora link layer protocol.
[0070] Next, in order to more clearly understand the solution proposed in the embodiments of the present application, a communication method based on the Aurora bus provided by the present application will be introduced in combination with specific embodiments.
[0071] Refer to Figure 8 FIG. 5 is one of the exemplary flowcharts of a communication method based on the Aurora bus provided by the embodiments of the present application. When any node device in the communication system sends data once, the following process can be adopted Figure 8 as shown, and may include the following steps:
[0072] S801, configure the local address of the node device itself.
[0073] After the communication system is powered on, the local addresses of each node device can be configured so that the addresses of each node device in the entire communication system are unique.
[0074] In some embodiments, the configuration of the local address can be loaded from the preset address of the node device, or can be issued by a certain master control in the system, or a certain node in the communication system can be designated in advance as the master node device, and it issues the address to this node device. It should be noted that the configuration method of the local address is not limited to the above three methods, and can be selected according to the actual situation, and the present application does not limit this.
[0075] S802, the user module determines the target data to be sent.
[0076] S803, determine whether the Aurora transport layer management module is ready.
[0077] If the ready signal is equal to 1, it is determined that the Aurora transport layer management module is ready and can process data, and S804 is executed; if the ready signal is equal to 0, it is determined that the Aurora transport layer management module is busy and cannot process data, and it is necessary to wait, and return to execute S803. For example, when the buffer of the Aurora transport layer management module is full, the ready signal can be equal to 0.
[0078] S804, the Aurora transport layer management module encapsulates the target data.
[0079] The user module sends the target data to the Aurora transport layer management module, and then the Aurora transport layer management module can encapsulate the target data according to the preset message format Figure 7 as shown, and cache the encapsulated target message in the Aurora transport layer management module. It should be understood that the cache can be a First In First Out (FIFO) buffer, RAM or other media with storage capabilities, and the present application does not limit this.
[0080] S805, determine whether the Aurora bus IP core is ready.
[0081] If the ready signal equals 1, it indicates that the Aurora bus IP core is ready and can process data, then execute S806; if the ready signal equals 0, it indicates that the Aurora bus IP core is busy and cannot process data, and it needs to wait. For example, the Aurora bus IP core can perform a synchronization operation every 33 beats or every 66 beats according to the encoding protocol. During the synchronization operation, the ready signal of the Aurora bus IP core will equal 0, and after synchronization, the ready signal will equal 1 again.
[0082] S806, the Aurora transport layer management module sends the target message to the Aurora bus IP core.
[0083] The Aurora transport layer management module can read the target message from the cache and send the target message to the Aurora bus IP core.
[0084] S807, the Aurora bus IP core sends the target message according to the Aurora link layer protocol.
[0085] The Aurora bus IP core can send the target message to the node device corresponding to the destination address according to the destination address included in the target message. At this time, the data transmission of this node device for this time is completed. When sending data next time, it can return to execute the steps of S802 - S807. It should be noted that when the node device corresponding to the destination address is not directly connected to this node device, the target message can be sent to the intermediate node device directly connected to this node device.
[0086] Refer to Figure 9 One of the exemplary flowcharts of a communication method based on the Aurora bus provided by the embodiment of the present application. When the first node device in the communication system receives data sent by the second node device, it can adopt the process as Figure 9 shown, which may include the following steps:
[0087] S901, configure the local address of this node device.
[0088] The configuration method can refer to the relevant description in the embodiment as Figure 8 shown, and will not be elaborated here.
[0089] S902, the Aurora transport layer management module receives the target message sent by the Aurora bus IP core and forwards the target message to the user module.
[0090] After the Aurora bus IP core of the first communication module receives the target message from other node devices, it can send the target message to the Aurora transport layer management module of the first communication module. Then, while caching the target message, the Aurora transport layer management module of the first communication module can forward the target message to the user module of the first communication module. Here, the first communication module is the communication module corresponding to the second node device in the first node device.
[0091] S903, the Aurora transport layer management module parses the target message.
[0092] The Aurora transport layer management module of the first communication module parses according to the Figure 7 preset message format as shown, and obtains the CRC code and destination address included in the target message. It checks the CRC code of the target message. If the check passes, it can output a success flag (ok_flag) and set ok_flag to 1; if the check fails, it sets ok_flag to 0. At the same time, it compares whether the destination address is equal to the local address of the local node device. If they are equal, it outputs a match flag (match_flag) and sets match_flag to 1; if they are not equal, it sets match_flag to 0.
[0093] S904, the user module receives the target message.
[0094] The user module of the first communication module receives the target message and caches it in the user module. Here, the cache can be a FIFO, RAM, or other medium with storage capabilities.
[0095] S905, is ok_flag = 1?
[0096] After receiving the target message, the user module judges ok_flag. If ok_flag is equal to 0, it executes S907; if ok_flag is equal to 1, it executes S906.
[0097] S906, is match_flag = 1?
[0098] The user module judges whether match_flag is equal to 1. If match_flag is equal to 1, it executes S908; if match_flag is equal to 0, it executes S907.
[0099] S907, the user module discards the currently cached target message.
[0100] S908, the user module processes the target message.
[0101] The user module can process the valid data and status information contained in the target message. After the processing is completed, the first node device finishes receiving the data for this time. When receiving data next time, it returns to execute the steps of S902 to S908.
[0102] See Figure 10 One of the exemplary flowcharts of a communication method based on the Aurora bus provided by an embodiment of this application. When the first node device in the communication system performs routing and forwarding on the target message, the following Figure 10 shown process may be included:
[0103] S1001, The Aurora transport layer management module forwards the target message to the first channel of the routing module.
[0104] The Aurora transport layer management module of the first communication module receives the target message sent by the Aurora bus IP core of the first communication module, and forwards the target message to the first channel of the routing module according to the preset correspondence between the node device and the channel. Among them, the first communication module is the communication module corresponding to the node device with the source address of the target message in the intermediate node device, and the first channel is the channel corresponding to the node device with the source address of the target message in the intermediate node device.
[0105] S1002, The Aurora transport layer management module parses the target message.
[0106] After the Aurora transport layer management module of the first communication module parses the target message, it determines the values of ok_flag and match_flag. The specific method can refer to the relevant description in the Figure 9 method embodiment shown, which will not be elaborated here.
[0107] S1003, The routing module receives the target message through the first channel and caches it in the routing module.
[0108] S1004, Is ok_flag = 1?
[0109] After the first channel receives a message, it judges ok_flag. If ok_flag is equal to 0, execute S1006; if ok_flag is equal to 1, execute S1005.
[0110] S1005, Is match_flag = 1?
[0111] The first channel judges whether match_flag is equal to 1. If match_flag is equal to 1, execute S1006; if match_flag is equal to 0, execute S1005.
[0112] S1006, the first channel discards the target message currently cached.
[0113] S1007, the first channel initiates a request to apply for sending a message.
[0114] S1008, the routing module determines whether to respond to the request of the first channel.
[0115] The request of the first channel enters the arbiter in the routing module, and the arbiter decides whether to respond to the request of this channel. If this channel is responded to, S1009 is executed; otherwise, it is considered that other channels are sending data, and the first channel needs to wait for the request to be responded to.
[0116] S1009, the target message is sent from the second channel.
[0117] The target message is sent from the second channel to the second communication module, and then the second communication module can execute the process of sending data by the node device as shown in Figure 8 which will not be elaborated here. Among them, the second channel is the channel corresponding to the node device with the destination address. The second communication module is the communication module corresponding to the node device with the destination address.
[0118] To further illustrate the solution of the embodiment of the present application, the following will be described by taking a specific scenario as an example. Assume that in Figure 5 the communication system shown, node device 1 wants to rewrite a register in node device 6. At this time, the communication system will execute the process as shown in Figure 11 which specifically includes:
[0119] S1101, configure the local addresses of each node device in the communication system.
[0120] The entire communication system is powered on, and the local addresses of node device 1 to node device 6 are configured. For example, assume that the local address of each node device is the node device serial number, that is, the local address of node device 1 is 1, the local address of node device 2 is 2, and so on.
[0121] S1102, the user module of node device 1 determines the target data.
[0122] Since node device 1 wants to rewrite a register in node device 6, the target data can be the address and value of the register to be rewritten. And after the user module determines the target data, it can send the target data to the Aurora transport layer management module.
[0123] S1103, the Aurora transport layer management module of node device 1 encapsulates the target data into a target message.
[0124] The Aurora transport layer management module of node device 1 can according to Figure 7The message format shown encapsulates data into a target message. In this embodiment, the destination address in the target message is equal to 6, the source address is equal to 1, the message type is equal to 4, the message length is equal to 1, and the label is equal to 0. At the same time, the CRC32 checksum is calculated and filled at the end of the message.
[0125] S1104. The Aurora bus IP core of node device 1 sends the target message to node device 5.
[0126] The Aurora transport layer management module of node device 1 can send the target message to the Aurora bus IP core of node device 1, and then send the target message to node device 5 through the Aurora bus IP core.
[0127] S1105. The Aurora transport layer management module of node device 5 sends the target message to the user module and the routing module respectively.
[0128] Since the communication module corresponding to node device 1 is communication module 1 and the channel corresponding to node device 1 is channel 1. Therefore, the Aurora bus IP core in communication module 1 receives the target message and sends it to the Aurora transport layer management module. Then the Aurora transport layer management module in communication module 1 sends the target message to channel 1 of the user module and the routing module respectively.
[0129] S1106. The Aurora transport layer management of communication module 1 parses the target message.
[0130] After the Aurora transport layer management module of communication module 1 parses the target message, it determines the values of ok_flag and match_flag. For the specific method, reference can be made to the relevant descriptions in the method embodiment shown, which will not be elaborated here. Figure 9 shown method embodiment, which will not be elaborated here.
[0131] S1107. The user module of communication module 1 receives the target message and caches it in the module.
[0132] S1108. Is ok_flag = 1?
[0133] The user module of communication module 1 determines whether ok_flag is equal to 1. If ok_flag is equal to 0, then S1110 is executed; if ok_flag is equal to 1, then S1109 is executed.
[0134] S1109. Is match_flag = 1?
[0135] The user module of communication module 1 determines whether match_flag is equal to 1. Since the destination address is equal to 6 and the local address of node device 5 is equal to 5, and the two are not equal, match_flag is equal to 0, indicating that the message is not for node device 5. Therefore, S1110 is executed.
[0136] S1110, the user module discards the current cached target message.
[0137] S1111, channel 1 of the routing module receives the target message and caches it within the module.
[0138] S1112, is ok_flag = 1?
[0139] After channel 1 of the routing module finishes receiving the target message, it judges ok_flag. If ok_flag is equal to 1, S1113 is executed. If ok_flag is equal to 0, S1126 is executed.
[0140] S1113, is match_flag = 1?
[0141] Channel 1 of the routing module judges whether match_flag is equal to 1. Since match_flag is equal to 0 at this time, S1114 is executed.
[0142] S1114, channel 1 of the routing module initiates a request to apply to send the target message.
[0143] S1115, is there a response to the send request?
[0144] The arbiter of the routing module determines that if there is a response, S1116 is executed. If there are other channels currently sending messages and it cannot respond, it waits for the arbiter to respond to this request.
[0145] S1116, the routing module sends the target message through channel 5.
[0146] The routing module sends the target message to the Aurora transport layer management module of communication module 5 corresponding to node device 6 through channel 5.
[0147] S1117, the Aurora transport layer management module of communication module 5 sends the target message to the Aurora bus IP core.
[0148] S1118, the Aurora bus IP core sends the target message to node device 6.
[0149] S1119, the Aurora transport layer management module of node device 6 passes the target message to the user module.
[0150] After the Aurora bus IP core of node device 6 receives the target message, it sends the message to the Aurora transport layer management module. Then the Aurora transport layer management module forwards the target message to the user module.
[0151] S1120, the Aurora transport layer management module of node device 6 parses the target message.
[0152] After the Aurora transport layer management module of node device 6 parses the target message, it determines the values of ok_flag and match_flag. For the specific method, please refer to Figure 9 the relevant descriptions in the method embodiments shown, which will not be elaborated here.
[0153] S1121, the user module of node device 6 receives the target message and caches it in the module.
[0154] S1122, is ok_flag = 1?
[0155] After the user module of node device 6 caches a message, it determines whether ok_flag is equal to 1. If ok_flag is equal to 1, it means the message has no error, and S1123 is executed. If ok_flag is equal to 0, it means the message has an error, and S1124 is executed.
[0156] S1123, is match_flag = 1?
[0157] The user module of node device 6 determines whether match_flag is equal to 1. Since the destination address of the target message is equal to 6 and the local address of node device 6 is equal to 6, the two are equal. Therefore, match_flag is equal to 1, indicating that the target message is for node device 6, and S1125 is executed.
[0158] S1124, the user module of node device 6 discards the currently cached target message.
[0159] S1125, the user module of node device 6 processes the target data.
[0160] The user module of node device 6 obtains the register address and value in the target message, thereby rewriting the corresponding register, and the process ends.
[0161] S1126, Channel 1 discards the currently cached target message.
[0162] Based on the same concept of the above method, please refer to Figure 12, which is a schematic structural diagram of an electronic device provided by an embodiment of the present application. The electronic device includes at least one processor 1202, and a memory 1201 connected or coupled to the at least one processor 1202. In addition, the electronic device may further include a communication interface 1203. The electronic device can interact with other devices through the communication interface 1203.
[0163] Exemplarily, the communication interface 1203 may be a transceiver, a circuit, a bus, a module, a pin, or other types of communication interfaces. When the electronic device is a chip-like device or circuit, the communication interface 1203 in the electronic device may also be an input / output circuit, which can input information (or receive information) and output information (or send information). The processor is an integrated processor, a microprocessor, an integrated circuit, or a logic circuit. The processor can determine the output information according to the input information.
[0164] The coupling in the embodiments of the present application is an indirect coupling or communication connection between devices, units, or modules, which can be electrical, mechanical, or other forms, and is used for information interaction between devices, units, or modules. The processor 1202 may cooperate with the memory 1201 and the communication interface 1203. In the present application, the specific connection medium between the above-mentioned processor 1202, memory 1201, and communication interface 1203 is not limited.
[0165] Optionally, refer to Figure 12 , the processor 1202, the memory 1201, and the communication interface 1203 are interconnected through a bus. The bus may be a peripheral component interconnect (PCI) bus, an extended industry standard architecture (EISA) bus, etc. The bus can be divided into an address bus, a data bus, a control bus, etc. For the sake of convenience of representation, Figure 12 is only represented by a thick line in, but it does not mean that there is only one bus or one type of bus.
[0166] In an embodiment of the present application, the memory 1201, as a non-volatile computer-readable storage medium, can be used to store non-volatile software programs, non-volatile computer-executable programs, and modules. The memory 1201 can include at least one type of storage medium. For example, it can include flash memory, hard disk, multimedia card, card-type memory, random access memory (RAM), static random access memory (SRAM), programmable read-only memory (PROM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), magnetic memory, magnetic disk, optical disc, and so on. The memory 1201 is any other medium that can be used to carry or store the desired program code in the form of instructions or data structures and can be accessed by a computer, but is not limited thereto. The memory 1201 in the embodiment of the present application can also be a circuit or any other device capable of implementing a storage function, for storing instructions, computer programs, and / or data.
[0167] In an embodiment of the present application, the processor 1202 can be a general-purpose processor, such as a CPU, digital signal processor, application-specific integrated circuit, field-programmable gate array, or other programmable logic device, discrete gate or transistor logic device, discrete hardware component, and can implement or execute the various methods, steps, and logic block diagrams disclosed in the embodiment of the present application. The general-purpose processor can be a microprocessor or any conventional processor, etc. The steps of the communication method based on the Aurora bus disclosed in combination with the embodiment of the present application can be directly embodied as being executed by a hardware processor, or executed by a combination of hardware and software modules in the processor.
[0168] By designing and programming the processor 1202, the code corresponding to the communication method based on the Aurora bus introduced in the foregoing embodiment can be solidified into the chip, so that the chip can execute the steps of the foregoing communication method based on the Aurora bus during operation. How to design and program the processor 1202 is a well-known technology to those skilled in the art and will not be elaborated here.
[0169] In one or more embodiments, the memory 1201 stores instructions executable by at least one processor 1202. By invoking the instructions or computer programs stored in the memory 1201, at least one processor 1202 can implement the steps of any of the above methods.
[0170] The embodiments of the present application also provide a computer-readable storage medium, on which computer instructions are stored. When the computer instructions run on a computer, the computer is caused to execute the steps of any of the above methods.
[0171] In some embodiments, various aspects of the communication method based on the Aurora bus provided by the present application can also be implemented in the form of a computer program product, which includes program code. When the computer program product runs on an electronic device, the program code is used to cause the electronic device to execute the steps in any of the methods described above in this specification.
[0172] Those of ordinary skill in the art can understand that all or part of the steps of implementing the above method embodiments can be completed by hardware related to program instructions. The foregoing program can be stored in a computer-readable storage medium. When the program is executed, it executes the steps including the above method embodiments; and the foregoing storage medium includes: various media such as ROM, RAM, magnetic disk or optical disc that can store program code.
[0173] Although the specific implementation manners of the present application have been described above, those skilled in the art should understand that these are only examples, and the protection scope of the present application is defined by the appended claims. Without departing from the principle and essence of the present application, those skilled in the art can make various changes or modifications to these implementation manners, but these changes and modifications all fall within the protection scope of the present application. Although the preferred embodiments of the present application have been described, those skilled in the art can make additional changes and modifications once they learn the basic creative concept. Therefore, the appended claims are intended to be interpreted as including the preferred embodiments and all changes and modifications falling within the scope of the present application.
[0174] Obviously, those skilled in the art can make various changes and variations to the present application without departing from the scope of the present application. Thus, if these modifications and variations of the present application fall within the scope of the claims of the present application and their equivalent technologies, the present application is also intended to include these modifications and variations.
Claims
1. A communication system based on the Aurora bus, characterized in that, The communication system includes at least three node devices, including at least one intermediate node device and end node devices, and any two end node devices communicate with each other through the intermediate node device; the first node device in the at least one intermediate node device includes N communication modules and one routing module, the first node device is any one of the intermediate node devices, the first node device is connected to N node devices, the N communication modules correspond to the N node devices one by one, and N is a positive integer; The first communication module in the first node device is configured to receive a target message sent by a second node device and obtain the destination address of the target message; the first communication module is the communication module corresponding to the second node device, and the second node device is any one of the node devices connected to the first node device; The first communication module is further configured to send the target message to the routing module; The routing module is configured to determine whether the third node device corresponding to the destination address is the first node device, and when the third node device is not the first node device, send the target message to the second communication module according to the destination address; the second communication module is the communication module corresponding to the third node device; The second communication module is configured to send the target message to the third node device according to the Aurora link layer protocol.
2. The communication system according to claim 1, characterized in that, The routing module includes N channels, and the N channels correspond to the N node devices one by one; Specifically, when sending the target message to the routing module, the first communication module is configured to send the target message to the first channel of the routing module according to the preset correspondence between the node device and the channel; the first channel is the channel corresponding to the second node device; Specifically, when sending the target message to the second communication module, the routing module is configured to determine the second channel corresponding to the third node device according to the preset correspondence between the node device and the channel, and send the target message to the second communication module through the second channel.
3. The communication system according to claim 1, wherein Each of the communication modules includes a user module, an Aurora transport layer management module, and an Aurora bus IP core; When the first communication module receives a target message sent by the second node device, the Aurora bus IP core in the first communication module is configured to receive the target message and send the target message to the Aurora transport layer management module in the first communication module; The Aurora transport layer management module in the first communication module is configured to obtain the destination address of the target message and send the target message to the user module in the first communication module; When the first communication module determines whether the third node device corresponding to the destination address of the target message is the first node device, the user module in the first communication module is configured to determine whether the destination address is the same as the address of the first node device; When the second communication module sends the target message to the third node device according to the Aurora link layer protocol, the Aurora transport layer management module of the second communication module is used to send the target message to the Aurora bus IP core of the second communication module; The Aurora bus IP core of the second communication module is used to send the target message to the third node device according to the Aurora link layer protocol.
4. The communication system according to claim 2, wherein The routing module includes an arbiter and a cache; After the first communication module sends the target message to the routing module, the cache is used to store the target message; When the routing module sends the target message to the second communication module according to the destination address, the arbiter is used to perform the following processing: Determine whether there is any other channel with a preset priority higher than that of the first channel among the N channels that is sending a message according to the preset priorities of each channel; If it is determined that there is any other channel with a preset priority higher than that of the first channel that is sending a message, wait to send the target message; If it is determined that there is no other channel with a preset priority higher than that of the first channel that is sending a message, send the target message to the second communication module through the second channel.
5. The communication system according to any one of claims 1-4, characterized in that, The target message is obtained by the first node device encapsulating the target data according to a preset message format; the preset message format includes at least one or more of a destination address, a source address, a message type, a message length, a register address, a number of registers, valid data, and a CRC check code.
6. A communication method based on the Aurora bus, characterized in that, Applied to the first node device in a communication system based on the Aurora bus, the communication system includes at least three node devices, including at least one intermediate node device and an end node device, and any two end node devices communicate through the intermediate node device; the first node device among the at least one intermediate node device is any intermediate node device in the communication system, and the first node device is connected to N node devices, where N is a positive integer; the method includes: Receive the target message sent by the second node device and obtain the destination address of the target message; the second node device is any node device connected to the first node device; Determine whether the third node device corresponding to the destination address is the first node device; When the third node device is not the first node device, send the target message to the third node device according to the Aurora link layer protocol according to the destination address.
7. The method according to claim 6, wherein The first node device includes N channels, and the N channels correspond to the N node devices one by one; Sending the target message to the third node device according to the Aurora link layer protocol according to the destination address includes: Determine whether there is any other channel with a preset priority higher than that of the first channel among the N channels that is sending a message according to the preset priorities of each channel; the first channel is the channel corresponding to the second node device; If it is determined that there is any other channel with a preset priority higher than that of the first channel that is sending a message, wait to send the target message; If it is determined that there is no other channel with a preset priority higher than that of the first channel sending a message, the target message is sent to the third node device through the second channel according to the Aurora link layer protocol; the second channel is the channel corresponding to the third node device.
8. The method according to claim 6 or 7, characterized in that The target message is encapsulated by the first node device for the target data according to a preset message format; the preset message format includes at least one or more of a destination address, a source address, a message type, a message length, a register address, a number of registers, valid data, and a CRC check code.
9. An electronic device, characterized in that, Comprising: A memory for storing computer instructions; A processor connected to the memory for executing the computer instructions in the memory and implementing the method according to any one of claims 6 to 8 when executing the computer instructions.
10. A computer-readable storage medium, characterized in that, Comprising: The computer-readable storage medium stores computer instructions, and when the computer instructions are run on a computer, the computer is caused to execute the method according to any one of claims 6 to 8.
Citation Information
Patent Citations
Ultra-high expanding super computing system based on MPU structure
CN101354694A
Implementation method of inter-chip bidirectional high-speed data transmission based on FPGA (Field Programmable Gate Array)
CN114297121A