Wired bus arbitration method

By assigning network addresses to responders in a wired bus system and using low-cost oscillators for arbitration, the unreliability problem of the arbitration process is solved, and a fast and efficient arbitration process is achieved, which is suitable for flexible addressing of small and medium-sized networks.

CN120692108APending Publication Date: 2025-09-23MELEXIS TECH NV
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202510341238.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-03-22
Filing Date
2025-03-21
Publication Date
2025-09-23

AI Technical Summary

Technical Problem

In wired bus systems, existing arbitration methods rely on high-precision oscillators, which makes the arbitration process unreliable when the number of nodes increases and requires expensive hardware or complex protocols.

Method used

The method of assigning network addresses from commander to responder, using low-cost oscillator for arbitration, querying by sending a subset of bits of ID space, detecting collisions, and dynamically adjusting the transmission granularity of identification numbers to optimize the arbitration process.

Benefits of technology

This achieves fast, efficient, and accurate arbitration, reduces dependence on high-precision oscillators, reduces arbitration time, and does not require additional hardware, making it suitable for flexible addressing in small and medium-sized networks.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120692108A_ABST
    Figure CN120692108A_ABST
Patent Text Reader

Abstract

The invention discloses a wired bus arbitration method. A method of assigning an address on a wired network including at least one commander and a plurality of responders is provided. The value of the subset of bits sent by the commander is compared to the ID of each responder. The responders that find the match send their IDs, or a portion of their IDs. If there is a collision, a new value is sent. If only one responder has a match, the commander assigns a node address to that responder that is shorter than the ID.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to the field of network communication protocols, and in particular to an arbitration method for assigning addresses to nodes in a wired bus system. Background Art

[0002] In the world of wired bus systems, coordination and management of communication between nodes or participants is crucial for ensuring efficient and reliable data transmission. These systems are fundamental to applications ranging from automotive networking to industrial automation. A common challenge in such networks is the arbitration process, which determines each node's priority and access rights to the bus for data transmission.

[0003] In this context, arbitration is a mechanism that resolves conflicts and prevents data collisions when multiple nodes attempt to communicate simultaneously. For example, the CAN protocol allows commands to be prioritized based on the ID of the node sending the command.

[0004] Because multiple nodes contribute to signaling on the bus simultaneously, reliable bus communication requires signal integrity on the bus, and maintaining this integrity requires precise timing. To achieve the necessary synchronization between nodes, a highly accurate timebase is typically provided by crystal oscillators. These oscillators ensure that all nodes on the network operate within a tightly controlled frequency tolerance, which is critical for the arbitration process to function correctly.

[0005] Despite the reduced timing requirements, there may still be certain situations, such as during the initialization phase of a network, where some form of arbitration is necessary to determine the responder ID. Traditional arbitration methods that rely on tight oscillator tolerances may be inappropriate in such contexts, as the probability of timing error accumulation and overlap increases with the number of bits transmitted, leading to a loss of the common decision window.

[0006] The limitations of existing arbitration methods become apparent when considering oscillator tolerances and their impact on the arbitration process. As the number of bits transmitted grows, the window for consensus between the commander and responder narrows, eventually leading to a point where timing errors from the oscillators overlap and arbitration becomes unreliable.

[0007] Given these challenges, further progress is clearly needed in the area of ​​arbitration for wired bus systems. These advances must address issues with oscillator tolerances, the need for unique and interoperable ID systems between nodes from different manufacturers, and the requirement for a fast and efficient arbitration process that does not require expensive hardware or complex protocols. It would be desirable if arbitration methods could operate effectively with less accurate oscillators while still ensuring that each node is uniquely identified and can effectively communicate on the network. Summary of the Invention

[0008] An object of an embodiment of the present invention is to enable the use of a low-cost oscillator to assign a unique network address to a responder device in a wired bus system having a commander-responder configuration. This object is achieved by a method of assigning a network address to a device connected to a wired bus within a network system according to the present invention, and by a network system configured to apply such a method.

[0009] In a first aspect, a method for assigning addresses on a network including at least one commander and a plurality of responders is provided. The commander and responders are connected to a wired bus. Each responder includes an identification number of a predetermined length. The set of identification numbers of the plurality of responders forms an ID space. The method includes: assigning an address to each responder by the commander. Thus, each responder is assigned an address. For communication and identification purposes, the addresses of the plurality of responders within the network form a set of addresses, and thus the set forms a network addressing (NAD) space. The ID space is larger than the NAD space. The method further includes:

[0010] providing a query thereof to the responder for requesting information, wherein the commander sends on the bus a value representing at least a subset of the bits of the ID space,

[0011] The value is received by the responder and checked for a match.

[0012] The responder that does not find a match remains able to accept further values, and the responder that finds a match then transmits at least a portion of its identification number on the bus. The commander then checks for collisions on at least a portion of the received identification number, such that:

[0013] If a collision is detected, the responder remains able to accommodate further values ​​and the commander starts a further query of the sequence by selecting a further value different from the current value and transmitting at least a value representing the further value on the bus.

[0014] If a collision is not detected, the commander assigns an address to the responder that last transmitted at least a portion of its identification number. The responder then ceases to be able to accept any further values.

[0015] Subsequently, the commander starts a further query of the sequence by selecting a further value different from the current value and transmits a representative value on the bus for the remaining responders.

[0016] An advantage of embodiments of the present invention is that shortened addresses can be used. A further advantage is that fast, efficient and accurate arbitration is achieved even if the responder includes an oscillator that is typically less accurate than the commander's oscillator and therefore less expensive. A further advantage is that no additional hardware is required.

[0017] If the network address space is completely filled with assigned network addresses and no collisions are detected, the commander can complete the sequence of queries. In embodiments of the present invention where the commander has information about the number of responders in the network, the method can stop once the commander has assigned an address to each responder in the network.

[0018] In an embodiment, transmitting at least a portion of the identification number by the responder may include transmitting bits, nibbles, or bytes of its identification number. This embodiment provides the advantage of flexibility in the granularity of the identification process, thereby allowing efficient data transmission based on the needs of the network. Thus, arbitration time can be reduced because only a few bits need to be transmitted instead of a long sequence or the entire ID number.

[0019] In an embodiment, transmitting the message by the commander may include transmitting a field indicating whether the responder should transmit a nibble or byte of its identification number. This embodiment provides the advantage of allowing the commander to control the level of detail required by the responder, thereby optimizing the arbitration process.

[0020] In an embodiment, the identification number can be transmitted using bits or nibbles, and further wherein if the number of collisions detected during the assignment of multiple responders exceeds a predetermined threshold, the transmission is switched to using bytes. This embodiment has the advantage of dynamically adjusting the arbitration process to reduce the probability of collisions, thereby improving network efficiency. Advantageously, arbitration can be performed in a flexible manner.

[0021] In an embodiment, the responder that finds a match may further transmit a cyclic redundancy check (CRC) value, optionally further wherein the commander references the CRC value to check for collisions. This embodiment provides the advantage of enhanced error detection, thereby ensuring the integrity of the arbitration process.

[0022] In an embodiment, transmitting at least a value representing a subset of the bits of the ID space may comprise selecting from a portion of the ID space with high entropy.This embodiment has the advantage of reducing the probability of collisions by focusing on the most unique portion of the identification number.

[0023] In an embodiment, an address may be assigned to each responder in the network when the network is first powered up (optionally, whenever the network is powered up).This embodiment provides the advantage of ensuring that the addresses are always up to date and reflect the current network configuration.

[0024] In an embodiment, the method may further include memorizing the identification number received by the commander. This embodiment provides the following advantages: it allows the commander to maintain a record of known responders, thereby facilitating efficient communication and management of the network. Because the responder's node address (NAD) (rather than the responder's ID) can be used to address the responder in the communication protocol, the ID field in the communication frame can be shortened.

[0025] In an embodiment, the address received by the responder can be stored in a memory. This embodiment has the following advantages: even if the network is interrupted or the responder is temporarily disconnected, it is ensured that the responder retains its assigned address. If the memory is non-volatile, an advantage of an embodiment of the present invention is that arbitration can be performed only once when the power is first turned on. In an embodiment in which the memory is a volatile memory (e.g., RAM), an advantage of an embodiment of the present invention is that, for example, re-addressing of the responder can be easily performed each time the power is turned on. The advantage is that the node can include inexpensive volatile memory, which provides a cost advantage.

[0026] Independent of the type of memory, the method allows re-addressing.An advantage is that the method allows reconfiguration of the network if, for example, the bus changes the number of responders connected to it.

[0027] In an embodiment, the address may be obtained from a network addressing space comprising 256 or fewer addresses.This embodiment provides the advantage of a simplified addressing scheme suitable for small to medium sized networks.

[0028] In some embodiments, sending a value representing a subset of bits of the ID space includes sending values ​​in one or more positions of the ID space in sequence. For the first position of the ID space, the value corresponding to the first position is sent. For the nth position of the ID space, the value for the nth position and for each position below n is sent. Advantageously, collisions can be resolved dynamically, and only resolved if they occur.

[0029] In an embodiment, the network addressing space may include 4 addresses reserved as broadcast addresses for all receivers.This embodiment provides the advantage of enabling a commander to send a message to all responders simultaneously, thereby improving the efficiency of communications across the network.

[0030] In an embodiment, the commander may receive and / or store the number of responders connected to its network and provide a set of network addresses having the same number of addresses as the number of responders. This embodiment has the advantages of ensuring that the network addressing space is optimally utilized and that each responder is uniquely identifiable. The commander may provide a NAD space that is customized for the specific network to which the commander is connected.

[0031] In a second aspect, the present invention relates to a system.

[0032] The system comprises a commander and a plurality of responders connected to a communication bus. The commander and responders are adapted to process a frame protocol for arbitration according to the method of the first aspect. Each responder is adapted to transmit at least a portion of its own identification number.

[0033] An advantage of embodiments of the present invention is that the system can arbitrate in a short period of time (e.g., a few milliseconds). A further advantage is that the responder can include an oscillator that is typically less accurate than the commander's oscillator and therefore less expensive. A further advantage is that no additional hardware is required.

[0034] In an embodiment, the responder may comprise a semiconductor processing chip, wherein the identification number comprises a batch number of semiconductor wafers and / or the coordinates of the chip's location within the wafer. This embodiment provides the advantage of utilizing manufacturing data to create a unique identification number, thereby enhancing the robustness of the arbitration process and improving the reliability of the system.

[0035] In an embodiment, at least one responder may comprise an oscillator of lower accuracy than the oscillator of the commander. This embodiment provides the advantage of allowing the use of cheaper components in the responder (e.g. an RC oscillator instead of, for example, a crystal oscillator) without compromising the effectiveness of the arbitration method.

[0036] An advantage of embodiments of the present invention is that a method for assigning addresses on a network having a commander and multiple responders connected to a wired bus can be implemented, wherein each responder has a unique identification number that contributes to a larger ID space, while the network addressing space remains small and easier to manage. A further advantage of embodiments of the present invention is that the arbitration process can be initiated by the commander sending a query with a value representing a subset of bits from the ID space, and the responders receiving the value and checking for a match, thereby simplifying the arbitration process. A further advantage of embodiments of the present invention is that responders that do not find a match remain available to accept further values, thereby ensuring that all responders have an opportunity to be addressed. Yet another advantage of embodiments of the present invention is that responders with a matching bit subset can transmit at least a portion of their identification number on the bus, thereby facilitating the commander to uniquely identify them.

[0037] An advantage of embodiments of the present invention is that the commander is configured or programmed to check for collisions on received identification numbers, thereby allowing for a robust arbitration process. A further advantage of embodiments of the present invention is that after successful identification without collision and address assignment, the identified responder ceases to be able to accommodate further queries, thereby optimizing the arbitration sequence. An additional advantage of embodiments of the present invention is that the method allows identification numbers to be transmitted in various sizes (such as bits, nibbles, or bytes), thereby providing flexibility in the arbitration process.

[0038] An advantage of embodiments of the present invention is that the method may include: if the number of collisions during the assignment process does not reach a minimum threshold, switching from transmitting the identification number in smaller units to transmitting the identification number in larger units, thereby allowing for greater granularity and speeding up arbitration; or if the number of collisions exceeds a predetermined threshold, switching from transmitting the identification number in larger units to transmitting the identification number in smaller units to reduce the number of collisions, thereby improving the efficiency of the arbitration process. An advantage of some embodiments of the present invention is that the responder can transmit a CRC value along with its identification number, and the commander can use it for collision detection, thereby further ensuring the integrity of the arbitration process.

[0039] An advantage of embodiments of the present invention is that the method selects values ​​from a portion of the ID space with high entropy, which can result in a more efficient and faster arbitration process. An advantage of embodiments of the present invention is that addresses can be assigned to each responder at network power-up, thereby ensuring reliable network initialization. This can be done only for the first time, or can be done on subsequent power-ups. An advantage of embodiments of the present invention is that the method includes memorization of identification numbers by the commander, which can be used for efficient network management and future reference.

[0040] An advantage of embodiments of the present invention is that addresses received by responders are stored in memory, thereby providing stability and consistency in network addressing. An advantage of embodiments of the present invention is that the network addressing space can be limited to a practical number, such as 256 or fewer addresses, which makes the system suitable for a wide range of applications. An advantage of embodiments of the present invention is that the network addressing space can include a reserved broadcast address, thereby allowing efficient communication with all responders simultaneously.

[0041] In some embodiments, the assigned node addresses may be short, in other words they may comprise fewer bits than an identification number, thereby reducing the time and frame size required to address a specific responder by addressing it using its assigned NAD address.

[0042] An advantage of an embodiment of the present invention is that the commander is capable of receiving and storing the number of responders connected to the network and providing a set of network addresses that matches the number of responders, thereby ensuring that each responder is uniquely addressed. An advantage of an embodiment of the present invention is that the system is adapted to handle a frame protocol for arbitration in which each responder is capable of transmitting at least a portion of its own identification number, thereby facilitating a reliable and efficient arbitration process.

[0043] An advantage of embodiments of the present invention is that the responder can include means for transmitting an identification number on the bus. For example, the responder can include a semiconductor processing chip having an identification number including a batch number of semiconductor wafers and / or the coordinates of the chip's position on the wafer, thereby ensuring a unique and traceable identification system. Since the present invention provides a method for addressing nodes without using CAN arbitration, an advantage of embodiments of the present invention is that at least one responder can include an oscillator with lower accuracy than the commander's oscillator, thereby allowing a cost-effective implementation without compromising the arbitration process.

[0044] Particular and preferred aspects of the invention are set out in the accompanying independent and dependent claims. Features from the dependent claims may be combined with features of the independent claims and with features of other dependent claims as appropriate, and not merely as explicitly set out in the claims.

[0045] The above and other characteristics, features and advantages of the present invention will become apparent from the following detailed description taken in conjunction with the accompanying drawings, which illustrate the principles of the present invention by way of example. This description is given for illustrative purposes only and is not intended to limit the scope of the present invention. The reference figures cited below refer to the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS

[0046] Figure 1 This is the timing diagram of the classic CAN arbitration method.

[0047] Figure 2 is a schematic flow chart of steps in an arbitration method according to an embodiment of the present invention.

[0048] Figure 3 is a flowchart illustrating an arbitration method according to an embodiment of the present invention.

[0049] Figure 4 Shown Figure 5 Legend for the flowchart in .

[0050] Figure 5 is with Figure 4 The flowchart corresponding to the illustration shown in FIG. 1 details the interaction between the commander and the responder during the arbitration process according to an embodiment of the present invention.

[0051] The same reference numbers in different drawings refer to the same or similar elements. DETAILED DESCRIPTION

[0052] The present invention will be described with respect to specific embodiments and with reference to certain drawings, but the invention is not limited thereto but only by the claims. The drawings described are merely schematic and non-limiting. In the drawings, the size of some of the elements may be exaggerated and not drawn to scale for illustrative purposes. Dimensions and relative dimensions do not correspond to actual reductions to which the invention may be practiced.

[0053] The terms first, second, third, etc. in the specification and claims are used to distinguish between similar elements and not necessarily to describe a sequence in time, space, level, or in any other manner. It is understood that the terms so used are interchangeable under appropriate circumstances, and that the embodiments of the invention described herein are capable of operation in a sequence different from that described or illustrated herein.

[0054] Furthermore, the terms top and over, etc., in the description and claims are used for descriptive purposes and not necessarily for describing relative positions. It is to be understood that the terms so used are interchangeable under appropriate circumstances, and that the embodiments of the invention described herein are capable of operation in orientations other than those described or illustrated herein.

[0055] It should be noted that the term "comprising", also used in the claims, should not be interpreted as being limited to the means listed thereafter; it does not exclude other elements or steps. Thus, the term should be interpreted as specifying the presence of the stated features, integers, steps or components as mentioned, but does not exclude the presence or addition of one or more other features, integers, steps or components, or groups thereof. Thus, the scope of the expression "a device comprising means A and B" should not be interpreted as being limited to devices consisting only of components A and B. This means that for the present invention, the only relevant components of the device are A and B. Therefore, the term "comprising" covers situations in which only the stated features are present as well as situations in which these features and one or more other features are present. Therefore, the word "comprising" according to the present invention also includes an embodiment in which no further components are present. When the word "comprising" is used to describe an embodiment in the present application, it should be understood that alternative versions of the same embodiment (in which the term "comprising" is replaced by "consisting of") are also covered within the scope of the present invention.

[0056] Similarly, it is worth noting that the term "coupled" should not be interpreted as being limited to only direct connections. The terms "coupled" and "connected," and their derivatives, may be used. It should be understood that these terms are not intended to be synonymous with each other. Thus, the scope of the expression "device A coupled to device B" should not be limited to devices or systems in which the output of device A is directly connected to the input of device B. This means that there is a path between the output of A and the input of B, which path may be a path that includes other devices or apparatuses. "Coupled" can mean that two or more elements are in direct physical or electrical contact, or that two or more elements are not in direct contact with each other, but still cooperate or interact with each other.

[0057] Reference throughout this specification to "one embodiment" or "an embodiment" means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the appearances of the phrases "in one embodiment" or "in an embodiment" in various places throughout this specification are not necessarily all referring to the same embodiment, but may. Furthermore, in one or more embodiments, the particular features, structures, or characteristics may be combined in any suitable manner, as would be apparent to one of ordinary skill in the art from this disclosure.

[0058] Similarly, it should be appreciated that in the description of exemplary embodiments of the present invention, various features of the present invention are sometimes grouped together in a single embodiment, figure, or description thereof for the purpose of streamlining the disclosure and aiding understanding of one or more of the various inventive aspects. However, this method of disclosure should not be interpreted as reflecting an intention that the claimed invention requires more features than those expressly recited in each claim. On the contrary, as reflected in the appended claims, inventive aspects lie in fewer features than all of the features of a single preceding disclosed embodiment. Accordingly, the claims appended to the detailed description are hereby expressly incorporated into this detailed description, with each claim itself representing a separate embodiment of the present invention.

[0059] Furthermore, although some embodiments described herein include some features included in other embodiments but do not include other features included in those other embodiments, the combination of features of different embodiments is intended to fall within the scope of the present invention and form different embodiments as would be understood by those skilled in the art. For example, in the appended claims, any of the claimed embodiments may be used in any combination.

[0060] In addition, some of the embodiments are described herein as methods or combinations of method elements that can be implemented by a processor of a computer system or by other devices that perform functions. Thus, a processor having the necessary instructions for performing such a method or method elements forms a device for performing the method or method elements. In addition, the elements of the device embodiments described herein are examples of devices for performing the functions performed by the elements for the purpose of performing the present invention.

[0061] In the description provided herein, numerous specific details are set forth. However, it should be understood that embodiments of the present invention may be practiced without these specific details. In other instances, well-known methods, structures, and techniques are not shown in detail to avoid obscuring an understanding of this specification.

[0062] The following terms are provided solely to aid in the understanding of the present invention.

[0063] As used herein, and unless otherwise specified, the term "commander" refers to a device or component within a network that is responsible for managing communications and control operations (including, but not limited to, assigning network addresses to other devices within the network). Examples of specific embodiments of a commander may include a network controller, a commander device (master device) in a commander-responder configuration, or a central processing unit within a distributed control system.

[0064] As used herein, and unless otherwise specified, the term "responder" refers to a device or component within a network that is subordinate to a commander and is capable of receiving instructions, queries, or commands from the commander and responding accordingly. Each responder is provided with a unique identification number for identification purposes within the network. Examples of specific embodiments of responders may include a slave device in a commander-responder configuration, a sensor node in a sensor network, or a peripheral device in a computer network.

[0065] In some embodiments, the hardware implementations of the commander and responder may not be different from each other. For example, all nodes in the bus may be equipped with similar controllers and / or processing units, input / outputs, electronic units and devices, wherein one of the nodes is configured (e.g., programmed) to perform the functions of the commander. For example, the remaining nodes in the node may be configured or programmed to perform the functions of the responder.

[0066] As used herein, and unless otherwise specified, the term "semiconductor processing chip" refers to an electronic component made of semiconductor material (e.g., silicon) that is designed to perform computing or control tasks within an electronic device. Examples of specific embodiments of a semiconductor processing chip may include a microprocessor, a microcontroller, or an application-specific integrated circuit (ASIC).

[0067] As used herein, and unless otherwise specified, the term "wired bus" refers to a physical communication path that allows electrical signals to be transmitted between commanders and responders in a network. This path is characterized by being a hardwired connection rather than a wireless link. Examples of specific embodiments of a wired bus may include a Controller Area Network (CAN) bus, and other buses such as the Inter-Integrated Circuit (IC) bus. 2 C) bus or Serial Peripheral Interface (SPI) bus. In general, the methods of the embodiments of the present invention can be used for any commander-responder (master-slave) network with two-way communication, including proprietary networks (such as, for example, MeLiBu).

[0068] As used herein, an identification number is a number used to identify a specific device, or in the case of the present invention, a number used to identify a responder. In principle, each identification number identifies a unique device, so the identification number is also unique. Examples of specific embodiments of the identification number may include a serial number, a MAC address, or a unique identifier embedded during manufacturing. The identification number may include, for example, the batch number of a semiconductor wafer batch, the coordinates of the location of a specific chip of a wafer, and the like. If the identification of the responder includes information about the manufacture of the chip included in the responder, this may also be part of the identification number.

[0069] As used herein, and unless otherwise specified, the term "lot number of a semiconductor wafer batch" refers to a unique identifier assigned to a batch or group of semiconductor wafers during the manufacturing process for tracking and quality control purposes. Examples of specific embodiments of a lot number may include an alphanumeric code indicating a production date, a factory location, or a batch sequence.

[0070] As used herein, and unless otherwise specified, the term "coordinates of a chip's location in a wafer" refers to a specific location of a semiconductor chip on a raw semiconductor wafer from which the semiconductor chips are cut or separated during the manufacturing process. These coordinates are typically expressed in terms of a grid or matrix location. Examples of specific embodiments of coordinates may include annotations such as "row 5, column 8," or a numeric code that maps to a specific location on a wafer.

[0071] As used herein, and unless otherwise specified, the term "identification number having a predetermined length" refers to a unique numeric or alphanumeric code assigned to each responder having a fixed number of digits or characters. In some embodiments, the length of the identification number is pre-established and consistent across all responders within a network. However, the length may be different among different responders.

[0072] As used herein, and unless otherwise specified, the term "ID space" refers to the entire range or set of possible identification numbers that can be assigned to responders within a network based on a predetermined length of the identification number. The ID space encompasses all potential combinations of numbers or characters that form an identification number. Examples of specific embodiments of the ID space may include a range of numbers from 0000 to 9999 for a four-digit identification number, or a hexadecimal range from 0000 to FFFF for a 16-bit identification number.

[0073] As used herein, and unless otherwise specified, the term "network addressing space" refers to the range or set of addresses that can be assigned to responders within a network for communication and identification purposes. The network addressing space is typically smaller than the ID space, meaning that there are fewer available network addresses than potential identification numbers. Examples of specific embodiments of a network addressing space may include a range of IP addresses within a subnet or a set of device addresses within a local area network (LAN). Network addresses also generally contain fewer characters than ID addresses, so network addresses take up less memory and take less time to transmit than ID addresses.

[0074] As used herein, and unless otherwise specified, the term "query sequence thereof" refers to a series of inquiries or requests for information initiated by a commander and directed toward responders, wherein each query is part of a sequential process intended to identify and address each responder. Examples of specific embodiments of a query sequence may include a series of binary searches, a step-by-step interrogation process, or a sequential polling mechanism.

[0075] As used herein, and unless otherwise specified, the term "value representing a subset of bits of the ID space" refers to a numerical or binary value corresponding to a specific range or selection of bits from the range of bits that make up an identification number within the ID space. This value is used by the commander to query the responder in a manner that narrows the identification process. Examples of specific embodiments of such a value may include a binary code representing the first four bits of an eight-bit identification number or a hexadecimal number corresponding to a specific half-byte within a 16-bit identifier.

[0076] As used herein, and unless otherwise specified, the term "collision" refers to an event that occurs when two or more responders simultaneously transmit their identification numbers, or portions thereof, in response to a query from a commander. This causes a collision or overlap of signals on the bus that prevents the commander from clearly identifying the individual responders. In the present invention, the responders transmit, and the commander checks for a collision. In some embodiments, the responders complete the transmission of their IDs before the commander checks for a collision.

[0077] As used herein, and unless otherwise specified, the term "cyclic redundancy check value" or "CRC value" for short refers to a numerical value generated by applying a CRC algorithm to a block of data, which in this context is an identification number or a portion thereof. This value is used to detect errors in data transmission. Examples of specific embodiments of CRC values ​​may include an 8-bit checksum for error checking in communication protocols. In some embodiments, the CRC value is always calculated based on the value to be transmitted (e.g., based on bytes or half bytes) to check that the communication channel has not introduced any errors. The advantage is that any communication problems will be seen immediately. This is not the only possibility, as the CRC value may be calculated for several values ​​to be transmitted and then sent or tested as a separate number. This advantageously unloads bandwidth, however any communication error may be detected at a late stage, so correction may be necessary later.

[0078] The CRC is calculated for the payload to be transmitted. The data length of the CRC must be selected based on the length of the payload data and the error detection properties of the CRC polynomial. This is known in the art. In an embodiment, the data length can follow CRC-16-CCITT.

[0079] As used herein, and unless otherwise specified, in the context of selecting from a portion of the ID space, the term "high entropy" refers to selecting a subset of bits that has a high degree of randomness or unpredictability, which helps minimize the likelihood of collisions during the address assignment process. Examples of specific embodiments of high entropy selection can include using a random number generator to select the bits, or employing cryptographic techniques to ensure non-repeating and unpredictable patterns.

[0080] As used herein, and unless otherwise specified, the term "broadcast address" refers to a special network address reserved for sending messages to all responders simultaneously rather than to a single specific responder. Examples of specific embodiments of a broadcast address may include the IP address 255.255.255.255 in an IPv4 network or a specific CAN bus identifier used to broadcast messages to all nodes on the bus.

[0081] As used herein, and unless otherwise specified, the term "an oscillator having a lower accuracy than the oscillator of the commander" refers to a timing component within the responder that generates a periodic signal having a frequency or stability that is less accurate than the frequency or stability of the signal generated by the oscillator within the commander. This difference in accuracy may affect the synchronization of communications between the commander and the responder. Examples of specific embodiments of oscillators having different accuracy levels may include crystal oscillators having different tolerance levels or resonators having different temperature coefficients.

[0082] The present invention will now be described by way of a detailed description of several embodiments of the present invention. It is apparent that other embodiments of the present invention can be configured according to the knowledge of those skilled in the art without departing from the technical teachings of the present invention. The present invention is limited only by the appended claims.

[0083] The present invention relates to communication between nodes in an electrical network having a plurality of connected devices. These networks are typically used, for example, for lighting systems in transportation applications such as automobiles, but may also be applied to security systems or any other system requiring reliable coordination of several electronic devices. Nodes generally may include electronic devices such as controllers, bus processing units, etc. Nodes may include or be connected to electronic devices to be controlled (e.g., powered as needed).

[0084] Control of the nodes in the bus can be centralized by a commander that sends information and / or requests to the nodes and can control them. Bus communication can be very complex considering the type of data, number of commands, and information that can be sent over the bus at any moment.

[0085] A specific example for a lighting system may be a driver unit connected to a light source such as an LED system, such as an RGB unit, etc. Activation of the source in a specific pattern, intensity, color requires detailed and reliable communication and synchronization between the commander and responder to ensure proper control (e.g., proper activation) of the desired light source.

[0086] The Controller Area Network (CAN) is a well-known example of a system that employs a complex arbitration scheme. In a CAN network, each message is assigned a unique identifier (ID), which is used to prioritize messages and resolve bus access conflicts. The arbitration process in CAN is deterministic and relies on the principle that lower ID values ​​have higher priority.

[0087] Figure 1 Depicted is a timing diagram of the classic CAN arbitration method and highlights the challenge of maintaining a common decision window with an oscillator having a + / - 3% tolerance.

[0088] The intermediate timing 11 for the commander is sandwiched between the timing diagram 12 of the "fast" responder, which has a +3% timing tolerance relative to the commander, and the timing diagram 13 of the "slow" responder, which has a -3% timing tolerance relative to the commander. The common decision window decreases over time. Approximately halfway through the transmission time of the 20th bit by the commander, the "fast" responder has finished transmitting the 20th bit and the "slow" responder has begun transmitting the 20th bit. Thus, after 19 bits of transmission, the tolerance error overlaps between the responder and commander, and a common decision window no longer exists (see overlap C at bit 20). In other words, the common decision window decreases with the number of bits to be transmitted.

[0089] In the first option, the responder synchronizes on the start bit sent by the commander. In this case, the stop bit at position 10 has an opening for the common decision window A at + / - 20% of the sampling point SP (referenced to the commander) starting from the center (calculated as 100-2(10×3%)=40%, thus from 20% to -20%). Observing the fast and slow responders, it becomes clear that a single sampling point (SP) is not sufficient. The fast responder requires the SP in the second half of the bit, while the slow responder requires the SP in the first half. However, if no dedicated hardware is available, the responder does not know its frequency dispersion compared to the commander or other responders.

[0090] In the second option, the responder stops bit synchronization with the last commander (hard synchronization). In this case, the 12th bit position is critical. The same constraints as in the previous case are also valid here, except that the common decision window B is reduced to + / - 14% around the reference commander's SP (from 100% - 2 × (12 × 3%) to 28%, and thus from 14% to -14%).

[0091] To address the limitations of synchronous arbitration in CAN-like networks, an alternative arbitration method was developed for MeLiBu bus systems, which are characterized by a commander (master) and multiple responders (slaves). The goal is to establish a reliable arbitration process that can operate with high tolerance to inaccuracies introduced by inexpensive oscillators. Networks can be constructed in which nodes can include, for example, RC oscillators, without having to include crystal oscillators or other high-end, expensive oscillators in the network's responders. For example, oscillators used in networks implementing methods according to embodiments of the present invention can have a tolerance of less than + / - 5% (e.g., + / - 3%), thereby reducing the cost and complexity of the system.

[0092] The MeLiBu bus system is a bidirectional communication system between a commander (master) and multiple responders (slaves), so it does not require its communication process to follow the high timing requirements and standards of CAN arbitration. Since the commander initiates all communications, the timing accuracy requirements between the commander and responders are less stringent, with a typical oscillator frequency tolerance of around + / -3% being acceptable.

[0093] The wired bus includes a commander node (or commander for short) and a plurality of responder nodes (or responders for short). Each responder is identified by an identification number (ID), which is unique to each responder.

[0094] The commander can transmit instructions to the responders, which need to be properly addressed. This is a major problem because the commander needs to somehow link the identity of the responder with the address. First, it is necessary to program the commander with a list of nodes connected to the network, their characteristics, and addresses. This is not always possible because different parts of the network can come from different manufacturers and use different coding conventions to identify each part. Furthermore, the addresses provided to the responders may be unnecessarily long, which delays data transmission. The addresses may also need to be updated when, for example, a new node is connected to the bus, a faulty part is replaced, etc.

[0095] The present invention provides a flexible method and network system that can address each responder in a fast and efficient manner. The present invention not only allows efficient assignment and memorization of addresses in the network, but also allows fast addressing when the network is in use.

[0096] The arbitration method is designed to assign a network address (NAD) to each responder. In some embodiments, the NAD is much shorter than the unique chip ID, so when the commander needs to address a specific responder, the responder address takes up fewer bits in the communication frame.

[0097] In a first aspect, a method can be a method for assigning addresses to responders in a wired bus. The method can be implemented as an algorithm that can be programmed into each responder and into the commander. The method includes: the commander sends at least one value corresponding to different positions in the ID space, starting with the position most likely to change (typically the lowest few positions of the ID, such as the lowest byte, half byte, or bit). The responder compares the received value with its own ID, for example, with the value at the same position in its own ID, and responds if there is a match. For example, the responder can transmit a message to the commander. In some embodiments, the responder transmits at least a portion of its ID (e.g., its full ID). The commander then checks for collisions through data validation. This can be done, for example, by comparing the incoming data to the expected data. In some embodiments, a cyclic redundancy check is performed, so the commander checks for collisions by, for example, verifying a CRC. If a collision is detected, the commander queries the value corresponding to the next position in the ID. If no collision occurs, the NAD is assigned to the responder.

[0098] A shortened address can be used as the NAD instead of the relatively long ID, which shortens the portion of the communication frame dedicated to the address and thereby speeds up communication. A further advantage is that even if the responder includes an oscillator that is typically less accurate than the commander's oscillator and therefore less expensive, fast, efficient, and accurate arbitration is achieved. The method can be applied using a programmed processor and therefore does not require additional hardware. The number of NADs can result in an NAD space that is much smaller than the ID space. If the commander has access to the number of responders on the bus, the NAD space can advantageously be customized based on this information.

[0099] The responder includes an ID, which, as explained earlier, should be unique. In some embodiments, a portion of the ID is configured to include a unique number for each supplier, and the length of each supplier number is equal. The ID is also configured so that the length of the complete ID for all suppliers is equal. In some embodiments, a code convention provided by each supplier is used device by device to provide a unique ID on each responder, even if the responders originate from the same supplier. Wafer lot number, wafer number, and / or the position of the responder's IC in the wafer, and combinations thereof, are only examples.

[0100] Since the IDs can originate from different manufacturers, the length of the IDs is not necessarily the same. In some embodiments, the commander can receive information including that the ID limit has been reached. In some embodiments, if the ID limit has been reached, the remaining bit sequence can be a string of zeros. Thus, the method can be applied to devices regardless of their origin. In some embodiments, a portion of the ID (e.g., 1 or 2 bytes) can be assigned to the vendor name, which allows different versions and variants of nodes from a single manufacturer's product portfolio to be used in the network.

[0101] Figure 2 A schematic flow chart of the steps of a method for assigning addresses is provided. The method can be applied when the network is first powered on (or advantageously, when the network changes (e.g., if a responder is replaced, added, or removed)). If the assigned NAD can be memorized in the node, for example by using non-volatile memory, the method can be applied only once to the responders present on the bus, which then retain their assigned NAD unless reassigned later. Alternatively, the method can be applied each time the network is powered on, thereby allowing for volatile memory.

[0102] The method for applying a node address starts (100): a commander sends a value representing a subset of bits of an ID space over a bus to all responders connected to the subset (101).

[0103] In some embodiments, starting (100) can be accomplished by broadcasting a command to all responders, thereby instructing them to enter arbitration mode. The commander can be programmed to broadcast this command, in which case the responders should have been programmed to respond to the command.

[0104] In some embodiments, the start (100) may be initiated by the responder. For example, the responder may be configured to find the NAD in its memory (e.g., non-volatile (NV) memory), such as after power-up or upon request. If the responder does not find the stored NAD, it may request to start the assignment process.

[0105] Regarding the commander identification, only a subset of the ID may be sent over the bus, rather than sending every ID over the bus. The subset of the ID may be smaller than the entire ID. The responders receive (102) the value from the bus and check for a match, for example, each responder may compare the value with the relevant portion of its own ID. The portion to be checked may be determined by the commander, or may be programmed into the responders.

[0106] In some embodiments, the responder may be instructed or adapted to compare (or check) the value with a portion of the ID space having high entropy. This means that the portion to be compared tends to be different between different responders, thereby advantageously reducing the number of collisions by design. This may include a portion having an x,y location on the wafer where the electronic circuit is formed, for example, where circuits from a batch differ most from each other, although the invention is not limited thereto.

[0107] In the check (112), if the responder does not find a match, the responder remains (103) able to accept further values ​​via the bus. If no responder finds a match, the commander cannot assign an NAD for the value, so the commander updates (106) the value and the process begins again, sending (101) the new value via the bus. Since the responder without a match remains able to accept, the further values ​​will be compared as before.

[0108] If the responder finds a match when checking (112) for a match, the responder applies or transmits (104) at least part of its ID on the bus, which is received by the commander as a signal that the responder has been identified. The commander processes the received data and then checks (115) the data for a collision. This can be done by comparing the data received from one or more responders with an expected value. In some embodiments, the responder sends (105) a CRC code with its ID. For example, the communication frame can include a CRC field, which can also be used to check (115) for a collision. In the event of a collision, the commander updates (106) the value and the process restarts with a query using the new value, and responders that have not yet been assigned a new address continue (103) to be able to be accommodated.

[0109] In the absence of a collision, the commander assigns (107) a node address or NAD to the responder that transmitted (part of) its ID to the commander. The responder sets this NAD to its new address, for example by storing the NAD in a memory. The responder then stops (108) responding to the rest of the address assignment process, thereby exiting the method. The responder is ready for use in the network under normal function. On the other hand, the commander can also store the used NAD in a memory and optionally link it to (part of) the received ID. It then checks (118) whether there are more values. If there are still values ​​to be sent, the commander updates (106) the value and transmits (101) the new value as before, thereby restarting the process. Otherwise, the process ends (109). The commander may have information about how many responders are attached to the bus, and if the commander has set the NAD to all responders, it is considered that there are no more values ​​to be sent and the process can stop. Other steps may be included. In some embodiments, an additional step of assigning a temporary NAD is included. In some embodiments, if the maximum number of values ​​is used and there are still nodes in the bus without NADs, an error may be signaled and the process aborted. In some embodiments, this value is dynamic and may change accordingly with the number of collisions to either reduce the number of collisions if there are too many collisions or speed up the overall process if the number of collisions is very low (meaning the responder IDs are sufficiently different).

[0110] Figure 3 An exemplary arbitration algorithm of an embodiment of the present invention is described in detail.

[0111] Here, the responder's ID is established and encoded. The commander sends each value at the first position of the ID one by one. The first position of the ID can be the lower part, where the ID difference of different responders is the largest (for example, comparing the value [0] of the ID in the zero position). The data is sent in the communication frame together with the header and the instruction. For example, if the value for this position is consistent with the value of the responder's own ID, the commander can send a frame that instructs the responders to send their IDs.

[0112] The values ​​can be sent in fields of different sizes, such as by bit, by nibble, or by byte. Bit-by-bit arbitration uses the value of the bit to compare for each position, while nibble-by-nibble arbitration uses the value in the nibble to compare for each position of the ID. For example, an 8-bit ID will have two positions, and the commander will send each value of the nibble to the responder, which will compare the received value with the nibble at the corresponding position of its ID.

[0113] In some embodiments, the type of arbitration may be adapted dynamically (first by nibble, then by byte...) Other units may be used.

[0114] When all values ​​of position are checked, or if encounter collision, then commander requests to check following position.In some embodiments where position is n (n is different from zero), all values ​​from nth position to zero position are requested to compare.

[0115] The arbitration sequence is started (301) by initiating (302) on the commander the variables shown in Table I. Initiation (302) may be done with commands such as nad=0; position=0; value[maxpos:0]=0.

[0116] Table I: Variables started on the commander.

[0117]

[0118] Whenever the value at position 0 is set, it is checked (303) whether the value reaches a predetermined maximum value (e.g., value[0] == maxval?), and if maxval is not reached, arbitration continues. While arbitration continues, the commander requests (304) a comparison of all values ​​(query responder position, value[position:0]). In some embodiments, all values ​​from the current position to position 0 are requested. For example, at position == 0, value[0] is requested, and if position == 3, all values ​​from position 3 to position 0 (value[3:0]) are requested for comparison.

[0119] The commander checks (314) whether a response is received.

[0120] In the case of no match between connected responders, this query does not cause a match with the ID of any responder, no responder sends their ID, and thus the commander does not receive a response. The commander updates (305) the value at the current position. As long as the maximum value at that position has not been reached (1 for bit-by-bit arbitration, 15 for nibble-by-nibble arbitration, and 255 for byte-by-byte arbitration), the value at the current position is incremented. Otherwise, all values and the current position are reset to zero, except for the 0th position. For example, the algorithm can be if (value[position] < maxval) { value[position]++} else { position = 0; value[maxpos:1] = 0;} (if (value[position] < maximum value) { value[position]++} else { position = 0; value[max position:1] = 0;}).

[0121] Then, as described above, it is checked (303) whether the maximum value has been reached. If the maximum value has been reached, the process ends (313).

[0122] In some embodiments, the method provides in the instruction an information unit for transmission, for example, bit-by-bit, nibble-by-nibble, byte-by-byte... Since the transmission can be carried out bit by bit, nibble by nibble, or byte by byte, the time for assigning NAD to the responder can be reduced because only a few bits need to be transmitted instead of a long sequence or the entire ID number.

[0123] In some embodiments, the transmission mode can be changed from bit-by-bit to nibble-by-nibble and / or changed to byte-by-byte, or can be changed from nibble-by-nibble and / or byte-by-byte to bit-by-bit, depending on the balance between the number of collisions and the time required to identify the responder. This flexibility in the granularity of the identification process advantageously allows for the optimization of timing.

[0124] In the case of at least one match between connected responders, the response is received by the commander. The commander checks (306) the expected data to confirm that there is no collision. In some embodiments, the commander can alternatively or additionally check the CRC of the received responder message.

[0125] If the check shows that no collision occurs between multiple responses, a single responder is answering. Therefore, the commander can assign (307) the current NAD to the responder that sent the last message. Then, the commander updates (305) the value at that position as described above; as long as the maximum value at that position has not been reached (1 for bit-by-bit arbitration, 15 for nibble-by-nibble arbitration, and 255 for byte-by-byte arbitration), the value at the current position is incremented. Otherwise, all values are reset to zero, except for the 0th position, and the current position is also set to zero.

[0126] On the other hand, if multiple matches occur between responders, the commander provides (308) further positions, such as increasing the position. In some embodiments, the commander increases "position" (position++). Then, it checks (318) whether the position is greater than or not greater than the maximum position ("position>maxpos?"). If the position is greater than the maximum allowed position, an arbitration error can be declared (309) because the collision still occurred at the highest position. Otherwise, the commander continues (304) to query the value value[position:0] from the responder.

[0127] In the described embodiment, for a given position, the commander sends the values ​​for the current position and each earlier position in the ID space in increasing order, and when all values ​​for that position have been sent, or if a collision occurs (thus, if two responders identify the same value for the same position in their IDs), the position is incremented. A person skilled in the art may use different conditions and different orders. Given that there is no need to check positions whose values ​​do not result in a collision, the commander may check the positions in other orders (for example, in descending order instead of ascending order), or in a different order, or even in a random order. Similarly, the commander may follow different ways of sending values ​​to responders for comparison, for example in ascending or descending order; as before, values ​​that do not result in a collision for a given position do not need to be sent again, thereby providing faster ID checking.

[0128] In other methods of ID reading (such as CAN arbitration), nodes send their IDs, and which node wins the arbitration is checked by checking whether each bit is recessive or dominant, and repeating the process for each remaining node, which may take a long time. The process according to an embodiment of the present invention may take a very short time (e.g., less than half a second, e.g., a few milliseconds), because even in a dynamic manner, a relatively large part of the ID of each responder can be checked in each message.

[0129] Hereinafter, an embodiment of the present invention will be explained in detail by an example of node assignment by a commander on a bus with four responders. A responder comprises an ID having 16 positions. Table II contains the IDs of the four responders, shown as nibbles from position 0 to position 15. The first column on the left represents responders from I to IV, i.e. responder I is in the first row, responder II is in the second row, and so on.

[0130] Table II - Responders I to IV with 16-bit ID in 16 positions (from 0 to 15).

[0131]

[0132] Table II also shows the marked cells that represent collisions at the locations shown in queries 9, 11, 12, and 18 because more than one responder had the same value.

[0133] In the first query (see the list of queries below), the commander checks the last position, i.e., position 0x00, for the first value (i.e., 0). There is no response because there is no ID that starts with 0 (query 1 in the list below). The following queries 2 to 8 check the values ​​from 0x1 to 0x7 and do not cause a response. However, when the value 0x8 is reached (query 9, see below), a collision is detected because all four responders have this value at this position. Thus, the next value at the next position of the ID is checked, in this case 0x01. There is a collision at 0x18 (Table II shows the first two positions emphasized for all responders because the first two values ​​of all nodes are 18, see query 11). The next position 0x02 is checked, so the next query is 0x018. The table shows that responder I and responder III have such a value 0x018, so there is still a collision, see query 12. The next position of their IDs is checked, namely 0x03, hence the values ​​0x0018, 0x1018, 0x2018, ... (see queries 13, 14, etc.). At query 18, when the value 0x5018 is reached, responders I and III transmit again, since both have the value 0x5018 (see Table II, position 3 highlighted), so there is again a collision. The next position, 0x04, is checked, starting at 0x05018. Finally, in query 21, the commander queries for the value 0x25018, and responder III transmits to the commander. Table II shows that responder III's ID includes 2 in the fourth position, 5 in the third position, 0 in the second position, 1 in the first position, and 8 in position 0 (thus 0x25018). Since responder III is the only responder transmitting, there is no collision. In this embodiment, responder III transmits its ID, and the commander identifies the responder, so that the found device can be assigned a NAD. During the rest of the allotted time, responder III stops responding. The commander can proceed to the position after 0x25018, i.e., position 0x35018, which matches the corresponding five positions for responder I's ID, thus finding another device (query 22). Responder I stops responding to further queries.

[0134] Commander continues to send further queries, thereby advancing the position in ID when necessary, until a collision is found again in 0x8 (query 35). Position is increased as previously mentioned, and another collision occurs at 0x18 (query 37). These two collisions can not be caused by responder I or responder III, because these responders have been identified. Process continues for the collision (see query 53) of the ID value of 0xF18 position 0x02 and for the collision (see query 58) in position 0x03 again of ID value 0x4F18, so position increases again at 0x04. At query 61, value 0x24F18 is checked by remaining responder II and responder IV. Only responder II has carried out positive inspection and is transmitted to commander. Responder II is identified. Subsequently, responder IV is identified (query 62) for value 0x34F18.

[0135] The complete arbitration cycle for this example is listed below:

[0136] 1. Query 0x0->No response

[0137] 2. Query 0x1->No response

[0138] 3. Query 0x2->No response

[0139] (…)

[0140] 7. Query 0x6->No response

[0141] 8. Query 0x7->No response

[0142] 9. Query 0x8 -> Collision detected at location 0x00 value 0x8 -> Go to location 0x01

[0143] 10. Query 0x08 -> No response

[0144] 11. Query 0x18 -> Collision detected at location 0x01 value 0x1 -> Go to location 0x02

[0145] 12. Query 0x018 -> Collision detected at location 0x02 value 0x0 -> Go to location 0x03

[0146] 13. Query 0x0018 -> No response

[0147] 14. Query 0x1018 -> No response

[0148] (…)

[0149] 17. Query 0x4018 -> No response

[0150] 18. Query 0x5018 -> Collision detected at location 0x03 value 0x5 -> Go to location 0x04

[0151] 19. Query 0x05018 -> No response

[0152] 20. Query 0x15018 -> No response

[0153] 21. Query 0x25018-> Found device ID: 0x001068567e025018

[0154] 22. Query 0x35018-> Found device ID: 0x001068567e035018

[0155] 23. Query 0x45018 -> No response

[0156] (…)

[0157] 28. Query 0x95018 -> No response

[0158] 29. Query 0xa5018 -> No response

[0159] 30. Query 0xb5018 -> No response

[0160] (…)

[0161] 34. Query 0xf5018->No response

[0162] 35. Query 0x8 -> Collision detected at location 0x00 value 0x8 -> Go to location 0x01

[0163] 36. Query 0x08 -> No response

[0164] 37. Query 0x18 -> Collision detected at location 0x01 value 0x1 -> Go to location 0x02

[0165] 38. Query 0x018->No response

[0166] 39. Query 0x118 -> No response

[0167] 40. Query 0x218 -> No response

[0168] (…)

[0169] 47. Query 0x918 -> No response

[0170] 48. Query 0xa18->No response

[0171] (…)

[0172] 52. Query 0xe18->No response

[0173] 53. Query 0xf18 -> Collision detected at location 0x02 value 0xf -> Go to location 0x03

[0174] 54. Query 0x0f18->No response

[0175] 55. Query 0x1f18 -> No response

[0176] 56. Query 0x2f18->No response

[0177] 57. Query 0x3f18->No response

[0178] 58. Query 0x4f18 -> Collision detected at location 0x03 value 0x4 -> Go to location 0x04

[0179] 59. Query 0x04f18->No response

[0180] 60. Query 0x14f18->No response

[0181] 61. Query 0x24f18-> Found device ID: 0x001068567e024f18

[0182] 62. Query 0x34f18-> Found device ID: 0x001068567e034f18

[0183] 63. Query 0x44f18->No response

[0184] (…)

[0185] 67. Query 0x84f18->No response

[0186] 68. Query 0x94f18->No response

[0187] 69. Query 0xa4f18->No response

[0188] 70. Query 0xb4f18->No response

[0189] (…)

[0190] 74. Query 0xf4f18->No response

[0191] 75. Query 0x8 -> No response

[0192] 76. Query 0x9->No response

[0193] 77. Query 0xa-> No response

[0194] (…)

[0195] 82. Query 0xf->No response

[0196] Arbitration completed after 82 queries, of which 8 collisions and 70 no responses => exited.

[0197] The following will refer to Figure 4 and Figure 5 A further detailed description of the algorithm is explained as a flow chart. Figure 4 A legend with boxes is shown, wherein the upper left box 401 means start / stop, the upper middle box 402 indicates the process, the upper right box 403 means the process at the responder, the lower left box 404 means the decision (yes or no, indicated by "yes", "no" respectively in the figure), the lower middle box 405 indicates the commander message and process, and the lower right box 406 indicates the responder message and process. Figure 5 The actions between the commander and the responder(s) are shown. At start (501), the algorithm initializes (511) the following variables shown in Table III. In this particular implementation, the values ​​0, 1, 2, and 3 correspond to specific addresses for broadcast reasons, so the initial value for PRE_NAD is 4 (PRE_NAD=4; position=0; value[maxpos:0]=0).

[0198] Table III - Initialization of variables.

[0199]

[0200] The commander initially requests (502) all responders to set their NAD to 0xFE (Request Responders Set NAD = 0xFE), meaning they are ready to receive a new NAD from the commander. This is accomplished by sending the position 0xFE. Consequently, all responders set their NAD to 0xFE (Responders Set NAD = 0xFE) (512). It is worth noting that "C2R" and "R2C" refer to communications from the commander to the responders and from the responders to the commander, respectively. In some embodiments, and in this particular example, the commander also initiates an R2C message by sending the header of the R2C message.

[0201] Next, the value at the lowest position is compared with the maximum value (503) (value[0] == maxval?). Unless the value at the lowest position is less than the maximum value (1 for bit-by-bit arbitration, 15 for nibble-by-nibble arbitration, and 255 for byte-by-byte arbitration), the commander requests (504) that all values ​​be compared (#2C2R: send position and value[position:0] to the responder). For example, at position == 0, value[0] is requested, while if position == 3, all values ​​from position 3 to position 0 (value[3:0]) are requested for comparison. The responder does this (514), and if this query results in a match with any of the responder's IDs, the relevant responder sets its NAD to the intermediate value 0xFD. Otherwise, NAD remains at 0xFE (the responder compares value[position:0] with its ID; if equal, sets NAD=0xFD; otherwise sets NAD=0xFE).

[0202] In the next step, the commander requests (524) responders whose NAD is 0xFD to respond (#2 R2C Header: Query Matching Responder IDs). This prompts any responders to send (534) their IDs (#3 R2C: Matching responders send their IDs).

[0203] Then, it is checked (544) whether a response has been received. If the query did not result in a match before, no response to request message #3 will be received by the commander. The commander updates (505) the value. For example, as long as the maximum value at the current position has not been reached (1 for bit-by-bit arbitration, 15 for nibble-by-nibble arbitration, and 255 for byte-by-byte arbitration), the value at the current position is incremented. Otherwise, all values ​​except the 0th position are reset to zero, and the current position is set to zero (if (value[position] <maxval){value[position]++}else{position=0;value[maxpos:1]=0;})。

[0204] In the event that the check (544) results in a positive result, there is at least one match between the connected responders and the response will be received by the commander. The commander checks (506) the CRC of the responder message and / or checks the responder message (e.g., by comparing the responder message to an expected message).

[0205] In the event that no collision occurs between multiple responses, the commander may assign (507) the matching responder to set its NAD to the current PRE_NAD (#4C2R header: requesting the responder with NAD==0xFD to set NAD=PRE_NAD). The responder follows (517) the instruction (matching responder sets its NAD=PRE_NAD). Optionally, in some embodiments, the commander may check (508) the correct address by requesting an ID from the node that obtained the most recent NAD (#5R2C header: requesting an ID from the node with NAD==PRE_NAD). Thus, the node whose corresponding PRE_NAD is the NAD sends (518) its ID (#5R2C: the node with NAD==PRE_NAD sends its ID;).

[0206] The received ID is then compared (528) with the previously received ID sent by the responder (the only responder that sent it, since the check for collisions (506) did not produce a collision) (534). If the ID is different from the previously received ID, arbitration may be aborted with an error indication (509). This option is used by Figure 5 Otherwise, PRE_NAD is incremented (515) to enable addressing of the next node thereafter (PRE_NAD++;). In this case, as previously described, the value is updated (505), so that the value at the current position is incremented as long as the maximum value at the current position (1 for bit-wise arbitration, 15 for nibble-wise arbitration, and 255 for byte-wise arbitration) has not been reached. Otherwise, all values ​​except the 0th position are reset to zero, and the current position is also set to zero (if (value[position] <maxval){value[position]++}else{position=0;value[maxpos:1]=0;})。

[0207] Then, it is checked (503) whether maxval (maximum value) at the 0th position is reached (value[0] == maxval?). If not, the sequence restarts. Otherwise, the commander ends the arbitration by requesting (510) the responder to reassign its NAD (#6C2R: Reassign NAD). In other words, if the maximum value at the 0th position is reached, the network address (NAD) space will be completely filled with assigned network addresses (NAD). The responder assigns a new NAD (516), and the arbitration ends (517).

[0208] In the event that the check for collision (506) is positive, there is a collision and multiple matches have occurred between the responders. The position needs to be updated, for example, the position is incremented (518) (position++;). Subsequently, it is checked (519) whether the position is greater than the maximum allowed position. If so, it can be declared (509) that the arbitration is wrong because the collision still occurred at the highest position. Otherwise, as explained earlier, the commander continues the query by requesting (504) a comparison of the values ​​from the responders (#2C2R: send position and value [position: 0]).

[0209] It is worth noting that the method can change the type of arbitration. For example, if the number of collisions is too high, the arbitration can be changed to a slower arbitration with smaller step sizes, such as from nibble-by-nibble to byte-by-byte. Alternatively, if the number of collisions is below a predetermined threshold, the method can also change the arbitration to optimize timing.

[0210] The method according to an embodiment of the present invention successfully overcomes the timing constraints associated with oscillator tolerances. The method does not require the use of the entire address space, or even a significant portion thereof, resulting in significant time advantages. The use of RC oscillators with an accuracy of + / - 3% was verified, demonstrating cost savings without compromising the communication process. The algorithm was shown to be efficient in assigning NADs to all participants in a minimal amount of time.

[0211] A commander and multiple responders of a network are adapted to process a frame protocol for arbitration according to the method of any of the aforementioned examples. The commander may be adapted to transmit a communication frame comprising at least a header and instructions. Each responder may be adapted to transmit at least a portion of its own identification number. In some embodiments, each frame comprises a header and instructions followed by data. The responders are programmed to assign a temporary NAD and transmit their ID to the commander. A CRC code may also be transmitted in one of the data fields. The commander is programmed to transmit a new NAD to a responder with a temporary NAD. The commander may also be configured to store the ID of the responder assigned the new NAD. The responders are further configured to store the new NAD assigned by the commander.

[0212] Since a value of limited length is used (rather than the full ID length), this method allows arbitration to be performed in a short period of time (e.g., a few milliseconds). A further advantage is that the responder can include an oscillator that is typically less accurate than the commander's oscillator and is therefore less expensive. A further advantage is that no additional hardware is required.

[0213] Different exemplary frames for different types of differential automatic addressing are shown below. The frame includes a header, such as a header compatible with the MeLiBu system. The instruction includes a value indicating the type of arbitration the network will follow. In some embodiments, the instruction may require byte arbitration 0xEF01, half-byte arbitration 0xEF02, and bit arbitration 0xEF03. The exact implementation of the values ​​can be different, however, the programming of all nodes in the network should be compatible with each other.

[0214] The purpose of this command is to provide the arbitration position and slot-value to the node. The Differential Auto-Addressing Request command has the following structure and shall be sent as a broadcast frame, depending on the type of Differential Auto-Addressing, see Table IV for different frames:

[0215] Table IV - Different frames used for different types of automatic addressing.

[0216]

[0217] The end position specifies the byte up to which the ID (eg CHIP-ID) should be compared with the Slot-ValueX.

[0218] Byte Arbitration: This value can vary from 0 to 7. In this example, CHIP-ID is a 64-bit unique value and has 8 possible position values ​​using bytes. Slot-ValueX is used by the responder to compare byte positions from 0 to the end position. Other bytes are discarded and may not be used for comparison.

[0219] Nibble Arbitration: Each "Slot-ValueX" contains up to 2 nibbles, and the value of each nibble can be different in the range of 0 to 15. CHIP-ID is a 64-bit unique value and has 16 possible position values ​​using nibbles. Slot-ValueX is used by the responder to compare nibble positions from 0 to the end position. Other nibbles can be discarded and are not used for comparison.

[0220] Bit Arbitration: Each "Slot-ValueX" contains up to 8 bits. Slot-ValueX is used by the responder to compare bit positions from 0 to the end position. Other bits can be discarded and are not used for comparison.

[0221] The PCI value specifies how many Slot-ValueX should be used. For example: PCI == 3 means that Slot-Value0 and Slot-Value1 should be used. The end position and the number of Slot-ValueX used should not exceed the maximum possible CHIP-ID length of 64 bits.

[0222] Using the value 0xFF for the location resets the NAD to the default NAD and is used to indicate the start of an auto-addressing sequence. The corresponding slave will enter auto-addressing mode and temporarily set its NAD to 0xFE.

[0223] If Slot-ValueX matches the CHIP-ID value at the end position, the node sets its NAD to 0xFD. The response message for the Differential Auto-Addressing command may contain the following data shown in Table V and can only be requested from a node with NAD 0xFD.

[0224] Table V - Data of the message as a response to the automatic addressing command (R2C)

[0225]

[0226] It should be noted that although the columns corresponding to data[4] and data[5] are not shown in the table to save space, data[3] to data[6] of the corresponding bits of the CHIP ID are transmitted. The NAD assignment command for setting the NAD from the CHIP ID is explained below. The data in the instruction field can be 0xEE01. The purpose of this command is to assign the responder node address using its chip ID information. The chip ID information is transmitted by the responder in the first round of automatic addressing under the arbitration method described above and is stored at the commander, for example, in a reference table, for example, in the commander's NV memory. In some embodiments, the commander can use existing methods to determine the physical location of the responder. The commander can then use this command to assign the NAD to the responder. The responder can store the NAD in an internal memory. If the responder includes, for example, an NV memory, it can be stored there, which provides the advantage that the NAD assignment only has to be performed once. If the memory modules of the commander and / or responder are not volatile, the NAD assignment can be performed once when the bus is set up. In some embodiments, NAD assignment may be performed at each power-up of the system. This allows the use of volatile memory, for example the responder(s) may comprise only RAM or registers which lose their contents on power-down.

[0227] The Set NAD from CHIP ID command has the structure in Table VI. As before, the columns for repeated information have been removed for spacing reasons.

[0228] Table VI - Frame corresponding to the "Set NAD" command.

[0229]

[0230] Field data[1] (new NAD) in the frame contains the new NAD, which should be assigned to the node whose CHIP ID matches the CHIP ID in data[2:7] (sent by the commander) and whose vendor ID (if provided) matches.

[0231] The response message from the responder to Set NAD for CHIP ID will contain the data in Table VII.

[0232] Table VII - R2C frame as a response to the "Set NAD" command.

[0233]

[0234] The response must be requested by the newly assigned NAD, and the address field must match the newly addressed NAD. Data [2] has not yet been used and is reserved for future use.

[0235] In an embodiment of the present invention, the method allows for reassignment of addresses to responders. The following command is used to assign a new NAD to a responder that already has a NAD (Reassign NAD 0xEE0A+0xEE0B).

[0236] For example, in Figure 4 This command is used in step #D in the sequence in . The responder already has NAD=0xFD and the commander reassigns it to a new preliminary NAD.

[0237] The Reassign NAD command has the following structure and consists of a set of 2 frames:

[0238] The first (commander to responder) C2R frame contains a new NAD, which should be used with the reception of the second C2R frame, see Table VIII.

[0239] Table VIII - C2R frame for reassigning NAD.

[0240]

[0241] The first frame is sent to each node individually.The response message for reassigning NAD will contain the data in Table IX.

[0242] Table IX - R2C frame for reassigning NAD.

[0243]

[0244] The second frame is used as a trigger to discard the currently used NAD and assign a new NAD. This frame in Table X should be sent as a broadcast frame to update all NADs simultaneously.

[0245] Table X - Broadcast frame used to update all NADs.

[0246]

[0247] The response message for reassigning NAD contains the data shown in Table XI.

[0248] Table XI - R2C message for reassigning NAD.

[0249]

[0250] The response must be requested by the newly assigned NAD and the address field must match the newly addressed NAD.

Claims

1. A method for assigning addresses on a network, the network comprising at least one commander and a plurality of responders, the commander and the responders being connected to a wired bus, wherein: Each responder includes an identification number (ID) of a predetermined length, wherein the set of identification numbers of the plurality of responders forms an ID space, The method includes assigning, by the commander, an address (NAD) to each responder, such that each responder is assigned an address, wherein the addresses of the plurality of responders within the network form a set of addresses for communication and identification purposes, the set forming a network addressing space, wherein the ID space is larger than the network addressing space; the method further includes: providing a query thereof to a responder for requesting information, wherein said commander sends (101) on said bus at least a value representing a subset of bits of said ID space, receiving (102) said value by said responder and checking (112) for a match, Wherein, the responder for which no match is found remains (103) able to accept further values, wherein the responder that finds a match then transmits (104) at least a portion of its identification number (ID) on the bus, wherein the commander then checks (115) for collisions on at least a portion of the identification number (ID) received by the commander, such that If a collision is detected, the responder remains (103) able to accept further values, and the commander starts a further query of the sequence by selecting (106) a further value different from the current value and transmitting at least a value representative of the further value on the bus, and if a collision is not detected, the commander assigns (107) an address (NAD) to the responder that last transmitted at least a part of its identification number (ID), whereupon the responder stops (108) being able to accept any further values, and the commander then starts a further query of the sequence by selecting (106) a further value different from the current value and transmitting representative values ​​on the bus for the remaining responders.

2. The method according to claim 1, wherein Transmitting at least a portion of the identification number (ID) by the responder includes transmitting bits, nibbles, or bytes of its identification number.

3. The method according to claim 1, wherein Transmitting the query by the commander includes transmitting a field indicating whether the responder should transmit a nibble or a byte of its identification number.

4. The method according to claim 2 or 3, wherein: The transmission of the identification number is performed using bits or using nibbles, further wherein if the number of collisions detected during the assignment of the plurality of responders exceeds a predetermined threshold, the transmission is switched to the use of bytes.

5. The method according to claim 1, wherein The responder that finds a match further transmits (105) a cyclic redundancy check (CRC) value, optionally further wherein the commander references the cyclic redundancy check value to check for collision.

6. The method of claim 1, wherein: Transmitting at least one value representing a subset of bits of the ID space includes selecting from a portion of the ID space having high entropy.

7. The method of claim 1, wherein: The address is assigned to each responder in the network when the network is first powered up (optionally, each time the network is powered up).

8. The method of claim 1, further comprising: The identification number received by the commander is memorized.

9. The method of claim 1, wherein: The address received by the responder is stored in a memory.

10. The method of claim 1, wherein: Sending values ​​representing a subset of bits of the ID space includes: sending values ​​in one or more positions of the ID space in sequence, wherein, for a first position of the ID space, a value corresponding to the first position is sent, and wherein, for an nth position of the ID space, a value for the nth position and for each position below n is sent.

11. The method according to claim 10, wherein: The network addressing space includes 4 addresses that are reserved as broadcast addresses for all receivers.

12. The method of claim 1, wherein: The commander receives and / or stores the number of responders connected to its network and provides a set of network addresses having the same number of addresses as the number of responders.

13. A system comprising a commander and a plurality of responders connected to a communication bus, The commander and responder are adapted to process a frame protocol for arbitration according to the method of claim 1, in, Each responder is adapted to transmit at least a portion of its own identification number.

14. The system of claim 13, wherein: The responder comprises a semiconductor processing chip, wherein the identification number comprises a lot number of a semiconductor wafer batch, and / or coordinates of a location of the chip within the wafer.

15. The system of any one of claims 13 or 14, wherein: At least one responder includes an oscillator having a lower accuracy than an oscillator of the commander.