This application relates generally to controller-target communication interfaces, and more particularly to detecting an output fault of a controller.
Inter-Integrated Circuit (I2C, pronounced I-squared-C and alternatively known as I2C or IIC) is a synchronous, multi-controller/multi-target, single-ended, serial communication bus. In some examples, I2C is used for communicatively connecting integrated circuits (ICs), such as lower-speed peripheral ICs, to processors or microcontrollers. In some examples, I2C enables short-distance communication among ICs attached to each other on a printed circuit board (PCB). In some examples, I2C is used to connect ICs for industrial or automotive applications.
In described examples, an integrated circuit includes a first pin, a second pin, a processor, a bus monitor, a clock circuit, and a transceiver. The processor provides to the transceiver and the bus monitor an instruction that indicates an instructed target address, a read/write flag, and a memory address. The transceiver provides to the first pin and the bus monitor a clock signal, and provides to the second pin and the bus monitor a message so that the message includes a messaged target address, the read/write flag, and the memory address. The bus monitor compares the instructed target address to the messaged target address, and provides a signal to the processor in response to the comparison.
In some examples, an I2C system 100 includes at least one controller MCU 102 with a transceiver 118 coupled to one or more targets 104a, 104b, . . . 104N, via a serial data (SDA) bus 108. The transceiver 118 receives instructions from a CPU 114, from which the transceiver 118 communicates a serial data stream to the serial data (SDA) bus 108. The serial data stream includes various information, including an address to identify one of the targets, so that the addressed target may respond appropriately. To reduce the possibility of target addressing inaccuracies by the MCU 102, the controller MCU 102 also includes a bus monitor 120, which checks for proper addressing of a target by comparing the target address identified by the CPU 114 instruction with the corresponding target address identified by the CPU-instructed transceiver 118. Error mitigation is implemented if a target address mismatch is detected.
Herein, some structures or signals that are distinct but related have reference numbers that use a [number][letter] format, such as targets 104a, 104b, . . . 104N, and controllers 202a, 202b, . . . 202M. In some examples, these structures or signals are referred to generally, in the singular or as a group, using the [number] and without the [letter], such as the targets 104 and the controllers 202. Also, the same reference numbers or other reference designators are used in the drawings to designate features that are related structurally and/or functionally.
The controller MCU 102 includes an I2C unit 110, a clock 112 that provides a clock signal at a base frequency, a central processing unit (CPU) 114, and an event handler 116. The I2C unit 110 includes an I2C transceiver 118 and a bus monitor 120. The I2C transceiver 118 includes a processor 122 and a first memory 124. The bus monitor 120 includes a comparator 126 and a second memory 128.
An output of the clock 112 is connected to a clock input of the I2C transceiver 118. A data terminal of the CPU 114 is connected, via a CPU bus, to a data terminal of the I2C transceiver 118 and a first data input of the bus monitor 120. An ignore condition output of the I2C transceiver 118 is connected to an ignore condition input of the bus monitor 120. An SCL terminal of the I2C transceiver 118 is connected to an SCL pin 130 of the controller MCU 102 and to a clock input of the bus monitor 120. An SDA terminal of the I2C transceiver 118 is connected to an SDA pin 132 of the controller MCU 102 and to a second data input of the bus monitor 120. An error interrupt output of the bus monitor 120, from which the bus monitor 120 provides an asserted or deasserted Error Interrupt signal, is connected to an input of the event handler 116. An asserted Error Interrupt signal corresponds to an I2C addressing fault detected by the bus monitor 120.
The SCL pin 130 is connected to the SCL bus 106. The SDA pin 132 is connected to the SDA bus 108. The targets 104 respectively include a clock input and a data input. The respective clock inputs of the targets 104 are connected to the SCL bus 106, and the respective data inputs of the targets 104 are connected to the SDA bus 108. Example structure and functionality of the controller MCU 102 to apply signals to and monitor signals on the SDA bus 108 is described with respect to
There are a number M controllers 202. The controllers 202 include a first controller (controller 1) 202a, a second controller (controller 2) 202b, through an Mth controller (controller M) 202M. In some examples, each of the controllers 202 can correspond to a controller MCU 102. Each of the controllers 202 is connected to the SCL bus 106 and the SDA bus 108.
The first controller 202a is shown and described as representative of the controllers 202. In some examples, the first controller 202a corresponds to the controller MCU 102. The first controller 202a includes a buffer 210, an n-channel metal-oxide-semiconductor field-effect transistor (an NMOS) 212, and a ground pin 214.
The SDA pin 132 of the first controller 202a is connected to an input of the buffer 210 and a drain of the NMOS 212. An output of the buffer 210 is connected to a data input of the I2C transceiver 118, and a gate of the NMOS 212 is connected to a data output of the transceiver 118. This data input and data output of the I2C transceiver 118 correspond to the SDA terminal of the I2C transceiver 118 described with respect to
The SDA bus 108, as a serial interface, is connected to provide two different logic states. In this regard, the SDA bus 108 is connected to the voltage source 204 via the resistor 206, so that the SDA bus 108 is pulled high (to the source voltage) by default, with the high representing a first of the two different logic states (for example, logic zero). The I2C transceiver 118 can connect the SDA bus 108 to ground 208 by providing a gate voltage to the NMOS 212 to turn on the NMOS 212. Accordingly, turning on the NMOS 212 pulls the SDA bus 108 to a low (ground) voltage, with the low representing a second of the two different logic states (for example, logic one). The I2C transceiver 118 can monitor an SDA signal, and thus the logic value represented, on the SDA bus 108 via the SDA pin 132 and the buffer 210 by turning off the NMOS 212. This is referred to as the first controller 202a releasing the SDA bus 108.
Each of the controllers 202 can send an SDA signal representing a read or write command to the SDA bus 108. SDA signals are further described with respect to
In some examples, the CPU 114 knows the target addresses of targets 104 connected to the SCL and SDA buses 106 and 108. In some examples, a processor external to the I2C system 200 that uses the controller MCU 102 to communicate with the targets 104 (for example, by sending instructions to the controller MCU 102 to be translated into messages to be sent by the I2C transceiver 118 to a corresponding target 104) knows the target addresses of targets 104 connected to the SCL and SDA buses 106 and 108. Target addresses are determined by configuration at a system level.
Returning to
Because the CPU 114 is connected to both the I2C transceiver 118 and to the bus monitor 120 via the CPU bus, the target address as provided by the CPU 114 can be written to the first memory 124 and the second memory 128 in parallel and without intermediation by software. Accordingly, the first memory 124 and the second memory 128 can both be written as hardware processes without additional software overhead. This enables faster I2C message processing and simpler control software development. After the I2C transceiver 118 receives the instruction from the CPU 114, it generates and sends the message (the SDA signal) to the SDA bus 108. The target address as provided by the message sent by the I2C transceiver 118 to the SDA bus 108 is then written to the second memory 128. Accordingly, both the target address as provided by the CPU 114 and the target address as provided by the I2C transceiver 118 are written to the second memory 128.
The clock 112 provides the clock signal at the base frequency to the I2C transceiver 118. The I2C transceiver 118 generates an SCL signal responsive to the clock signal with a frequency corresponding to I2C data rates. In some examples, I2C messages (SDA signals) have data rates between 100 kilohertz (kHz) and 400 kHz. The I2C transceiver 118 generates an SDA signal with data toggles timed responsive to clock edges of the SCL signal. Data toggles are high to low or low to high voltage transitions of the SDA signal. Data toggle timing, and sampling of the SDA signal using the SCL signal, are further described with respect to
The I2C transceiver 118 provides the SCL signal to the SCL bus 106 via the SCL pin 130, and provides the SDA signal to the SDA bus 108 via the SDA pin 132, as further described below. The I2C transceiver 118 also provides the SCL signal, the SDA signal, and an Ignore Condition signal to the bus monitor 120. In response to an Ignore Condition signal, the bus monitor 120 stops comparing the two target addresses stored in the second memory 128. This corresponds to the bus monitor 120 not proceeding to determine whether it should generate an Error Interrupt signal. Recall that the target address in the instruction provided by the CPU 114 is stored in the second memory 128. And also, the target address in the SDA signal provided by the I2C transceiver 118 to the SDA bus 108 is stored in the second memory 128.
In some examples, additional actions taken by the bus monitor 120 or the I2C transceiver 118 following an Ignore Condition signal are dependent on the type of Ignore Condition signal. An Arbitration Lost signal or an Illegal Stop signal can be asserted by the I2C transceiver 118 as an Ignore Condition signal. The Arbitration Lost signal and the Illegal Stop signal are each described (further) below. In some examples, ignore conditions occur during normal operation of an I2C system 200.
The bus monitor 120 samples the SDA signal received via the feedback connection from the I2C transceiver 118. The bus monitor 120 samples the SDA signal using the SCL signal (also received via the feedback connection) to determine the target address indicated by the SDA signal. The target address indicated by the SDA signal is stored in the second memory 128. The comparator 126 compares the target address provided by the CPU 114 to the target address indicated by the SDA signal. If the target addresses are the same, the bus monitor 120 provides a deasserted Error Interrupt signal to the event handler 116. The deasserted Error Interrupt signal indicates that the target address included in the SDA signal matches the target address provided by the CPU 114.
If the target addresses are different, the bus monitor 120 provides an asserted Error Interrupt signal to the event handler 116. The asserted Error Interrupt signal indicates a target addressing fault. In some examples, the bus monitor 120 provides the Error Interrupt signal to the event handler 116 immediately after detecting the target addressing fault, without waiting to determine whether an Ignore Condition signal will be received.
In some examples, a target addressing fault can be caused by a fault within the controller MCU 102 (with a controller 202), or by a fault on the SDA bus 108. In some examples, a target addressing fault is caused by a random hardware fault, accordingly a reliability issue, in the I2C transceiver 118 or the SDA bus 108 (or 204). A random hardware fault in the I2C transceiver 118 can occur in the processor 122 or the first memory 124. The event handler 116 may be implemented using hardware, software (such as software instructions stored in a memory and executed by the CPU 114), or a combination of both.
In some examples, in response to an asserted Error Interrupt signal (target addressing failure), the CPU 114 initiates a STOP condition on the SDA bus 108 using the I2C transceiver 118. In some examples, initiating a STOP condition corresponds to transmitting a STOP condition signal 408 (
As described above, the I2C transceiver 118 also provides the SCL signal to the SCL bus 106 via the SCL pin 130, and provides the SDA signal to the SDA bus 108 via the SDA pin 132. All of the targets 104 connected to the SCL and SDA buses 106 and 108 receive the SCL and SDA signals. The target 104 corresponding to the target address included in the SDA signal executes the read and/or write instruction included in the SDA signal.
In response to an SDA signal corresponding to a write command, a target 104 indicated by the SDA signal writes data included in an SDA signal to a memory address included in the SDA signal. In response to an SDA signal corresponding to a read command, a target 104 indicated by the SDA signal writes a memory address indicated by the SDA signal to a memory of the target 104, reads data from the memory indicated by the address, and provides the read data to the I2C transceiver 118. In some examples, the transceiver 118 provides read data and acknowledgment signals received from the target 104 to the CPU 114. I2C read and write signal structure and process are further described with respect to
Ignore Condition signals are now described. A STOP condition signal 408, further described in
Two controllers 202 simultaneously attempting to send an SDA signal are referred to as being in arbitration. An asserted Arbitration Lost signal can be produced if two controllers 202 (see
The controller 202 that first attempts to send a logic zero (releases the SDA bus 108 to go high) while the other controller 202 attempts to send a logic one (connects the SDA bus 108 to ground 208 to pull the SDA bus 108 low) will be unsuccessful in sending the logic zero because of the ground 208 connection. The unsuccessful controller 202 is referred to as having lost the arbitration. The unsuccessful controller 202 knows it is unsuccessful because it receives the SDA signal on the SDA bus 108 via the buffer 210. A lost arbitration corresponds to the SDA bus 108 carrying an SDA signal with a lower voltage than the logic zero (high), specifically, a voltage corresponding to the ground connection made by the arbitration-winning controller 202.
The I2C transceiver 118 that unsuccessfully attempted to send the logic one provides the asserted Arbitration Lost signal to its corresponding bus monitor 120, and stops sending its SDA signal. The controller 202 that won the arbitration is allowed to send its SDA signal without interference, and the controller 202 that lost the arbitration waits until the SDA signal of the arbitration winner concludes. In some examples, the SDA signal concluding corresponds to a STOP condition signal 408 as described with respect to
After the STOP condition signal 408, the controller 202 that lost the arbitration attempts again to send its SDA signal. If the bus monitor 120 receives the asserted Arbitration Lost signal, the bus monitor 120 stops operating with respect to the discontinued SDA signal. When the discontinued SDA signal is resent, the resent message is treated by the bus monitor 120 as if the initial transmission attempt had not occurred.
The I2C transceiver 118 of the controller MCU 102 sends a START condition (S) signal 302 on the SDA bus 108, a target address 304 specifying a number pth target (e.g., target 104a, in an example) 104a to perform the write command, and a read/write bit (an R/
After receiving the START condition signal 302, the target address 304, and the R/
After the target 104a sends a second ACK bit 312 confirming register address 310 receipt and ready status to the SDA bus 108, the controller MCU 102 sends a register data 314 to the target 104a to be written to the register address 310. In some examples, the register data 314 is a one byte (eight bit) data, numbered D7 at an MSB through DO at an LSB. After the target 104a receives and writes the register data 314, the target 104a sends a third ACK bit 316 to the controller MCU 102.
Following the third ACK bit 316, the controller MCU 102 can either send additional bytes of register data 314, or (as illustrated) it can send the target 104a a STOP condition signal 318 to end the I2C communication 300. The STOP condition signal 318 also indicates to other controllers 202 that the SCL bus 106 and SDA bus 108 are available for messaging.
After receiving the second ACK bit 312 from the target 104a, indicating that the register address 310 has been written, the controller MCU 102 sends a repeated START condition (Sr) signal 322, which enables sending an R/
In response to the R/
A START condition signal 406 corresponds to a falling edge of the SDA signal 404 while the SCL signal 402 is high. A STOP condition signal 408 corresponds to a rising edge of the SDA signal 404 while the SCL signal 402 is high. An illegal STOP, triggering an Illegal Stop signal (as described above), corresponds to a STOP condition signal 408 generated at a portion of an SDA signal 404 not corresponding to one of the expected STOP condition signal 408 locations described with respect to
When the I2C transceiver 118 detects an illegal STOP condition, it sends an Illegal Stop signal to the bus monitor 120, and a state machine of the I2C transceiver 118 resets. A state machine of the I2C transceiver 118 tracks which bit (or other signal) in an I2C communication (such as an I2C communication 300 to effect a write command or an I2C communication 320 to effect a read command) the I2C transceiver 118 is currently sending. Accordingly, the I2C transceiver 118 state machine tracks which bit (or other signal) in which field (such as register address 310 or target address 324) is currently being generated and transmitted to the SDA bus 108 by the I2C transceiver 118. In response to the Illegal Stop signal, the bus monitor 120 aborts the comparison between the target address as provided by the CPU 114 and the target address as transmitted by the I2C transceiver 118, and avoids providing a false alarm indication to the Event handler 116.
Accordingly, transmission of I2C data bits (not shown in
The data terminal of the CPU 114 is connected, via the CPU bus, to the data terminal of the I2C transceiver 118, a first input of MUX 1504, and an input of the logic inverter 508. An output of the logic inverter 508 is connected to a second input of MUX 1504. A diagnostic test output of the CPU 114 provides a Diagnostic Test signal to a control input of MUX 1504. An output of MUX 1504 is connected to an input of the input target address memory 510. An enable output of the CPU 114 provides an Enable signal to a control input of MUX 2506.
The SCL terminal of the I2C transceiver 118 is connected to the SCL pin 130 and to a clock input of the FSM 502. The SDA terminal of the I2C transceiver 118 is connected to the SDA pin 132 and to a data input of the FSM 502. An output of the FSM 502 is connected to an input of the output target address memory 512. An output of the input target address memory 510 is connected to a first data input of the comparator 126, and an output of the output target address memory 512 is connected to a second data input of the comparator 126.
A first ignore output of the I2C transceiver 118 is connected to a first ignore input of the comparator 126 and provides an Arbitration Loss signal. A second ignore output of the I2C transceiver 118 is connected to a second ignore input of the comparator 126 and provides an Illegal Stop signal.
An output of the comparator 126 is connected to a first input of MUX 2506. A second input of MUX 2506 receives a signal with a logic zero value, corresponding to the deasserted Error Interrupt signal. An output of MUX 2506 provides the Error Interrupt signal to the event handler 116.
The FSM 502 extracts the target address from the SDA signal (the message sent by the transceiver 118) in response to the SCL signal. Extraction of data from an SDA signal (parsing the SDA signal in response to the SCL signal) is described above with respect to
In some examples, the FSM 502 detects an ignored condition such as an Arbitration Lost condition or an Invalid Stop condition. In some examples, the FSM 502 does so in response to an Ignored Condition signal provided by the I2C transceiver 118. In some examples, the FSM 502 independently detects an ignored condition by parsing the SDA signal in response to the SCL signal as described with respect to
The comparator 126 compares the target address stored in the input target address memory 512 to the target address stored in the output target address memory 512, and provides an output in response to the comparison. In some examples, the comparator 126 provides a logic one output if the two target addresses are different, corresponding to an addressing failure, and provides a logic zero output if the two target addresses are the same, corresponding to normal addressing operation. If the Enable signal is asserted, MUX 2506 provides the output of the comparator 126 to the event handler 116. If the Enable signal is deasserted, MUX 2506 provides a logic zero, indicating normal operation or a do-not-care state, to the event handler 116.
If the Diagnostic Test signal is deasserted, MUX 1504 provides a signal received at its noninverted input to the input target address memory 510. If the Diagnostic Test signal is asserted, MUX 1504 provides a signal received at its inverted input to the input target address memory 510. Accordingly, the CPU 114 can assert the Diagnostic Test signal to test valid function of the comparator 126 by deliberately injecting a fault using the inverted signal. If the Diagnostic Test signal is asserted, valid function of the comparator 126 will correspond to an Error Interrupt signal indicating addressing failure. If the Diagnostic Test signal is deasserted, valid function of the comparator 126 is assumed (or previously verified by diagnostic) and the output of the comparator 126 will depend on valid function of the I2C transceiver 118.
In step 604, attempt to transmit a message including the target address, the command, and the memory address from the controller IC to a bus, using the transceiver. In some examples, the bus is the SDA bus 108. In step 606, provide the message from the transceiver to a bus monitor of the controller IC. In some examples, steps 604 and 606 correspond to the signal paths for an SDA signal transmitted by the I2C transceiver 118, specifically, to the SDA bus 108 via the SDA pin 132, and to the bus monitor 120.
In step 608, determine whether the target address included in the instruction and the target address included in the message are the same using the bus monitor. If the target addresses are the same, then in step 610, receive a response message from the target IC specified by the target address in the message using the transceiver. If the target addresses are not the same, then in step 612, send an error interrupt signal to an event handler.
In some examples, systems and methods described herein, including the bus monitor 120, enable compliance of an I2C controller 202 with requirements, such as safety requirements, of a safety or other standard such as International Electrotechnical Commission (IEC) 61784. For example, IEC 61784 requires addressing authentication. In some examples, satisfaction of this requirement is enabled by the bus monitor 120 detecting addressing faults and providing the Error Interrupt signal.
Modifications are possible in the described examples, and other examples are possible within the scope of the claims.
In some examples, the event handler 116 is part of the CPU 114.
In some examples, circuits described herein, such as a target 104, the processor 122, the comparator 126, the CPU 114, or the MCU 102, can be implemented using a processor such as a CPU, digital signal processor (DSP), or MCU.
In some examples, disclosed processes and structures are used to enable data integrity verification for a communication protocol other than I2C, such as serial peripheral interface (SPI) or universal asynchronous receiver/transmitter (UART).
In some examples, a target address within an I2C (or other) communication includes a different number of bits than described above, such as ten bits, corresponding to 210=1024 addressable targets.
In some examples, the CPU 114 provides the read/write command as a read/write flag. In some examples, the CPU 114 provides the instruction in a form that indicates the target address, read/write flag, and memory address. In some examples, the I2C transceiver 118 (such as the processor 122 of the I2C transceiver 118) interprets the instruction to generate a corresponding I2C communication. Accordingly, in some examples, the formats, such as bitwise formats, of the instruction and the I2C communication are different.
In some disclosed processes and structures are used to compare signal fields other than target address to confirm that portions of a message transmitted to a target by a transceiver of a controller match corresponding portions of an instruction from a processor of the controller instructing the transceiver to generate and transmit the message.
In some examples, the bus monitor 120 compares fields in messages transmitted by the I2C transceiver 118 to the SDA bus 108 to a corresponding field in an instruction by the CPU 114 to the I2C transceiver 118 in addition to or other than the target address field.
In some examples, a processor outside the controller 202 provides the instruction that the I2C transceiver 118 uses to generate the message (I2C communication).
In some examples, processors described herein are implemented using a CPU, a digital signal processor (DSP), or an MCU.
The term “couple” is used throughout the specification. The term may cover connections, communications, or signal paths that enable a functional relationship consistent with this description. For example, if device A provides a signal to control device B to perform an action, in a first example device A is coupled to device B, or in a second example device A is coupled to device B through intervening component C if intervening component C does not substantially alter the functional relationship between device A and device B such that device B is controlled by device A via the control signal provided by device A.
In this description, the term “and/or” (when used in a form such as A, B and/or C) refers to any combination or subset of A, B, C, such as: (a) A alone; (b) B alone; (c) C alone; (d) A with B; (e) A with C; (f) B with C; and (g) A with B and with C. Also, as used herein, the phrase “at least one of A or B” (or “at least one of A and B”) refers to implementations including any of: (a) at least one A; (b) at least one B; and (c) at least one A and at least one B.
A device that is “configured to” perform a task or function may be configured (e.g., programmed and/or hardwired) at a time of manufacturing by a manufacturer to perform the function and/or may be configurable (or re-configurable) by a user after manufacturing to perform the function and/or other additional or alternative functions. The configuring may be through firmware and/or software programming of the device, through a construction and/or layout of hardware components and interconnections of the device, or a combination thereof.
As used herein, the terms “terminal”, “node”, “interconnection”, “pin”, “ball” and “lead” are used interchangeably. Unless specifically stated to the contrary, these terms are generally used to mean an interconnection between or a terminus of a device element, a circuit element, an integrated circuit, a device or other electronics or semiconductor component.
A circuit or device that is described herein as including certain components may instead be adapted to be coupled to those components to form the described circuitry or device. For example, a structure described as including one or more semiconductor elements (such as transistors), one or more passive elements (such as resistors, capacitors, and/or inductors), and/or one or more sources (such as voltage and/or current sources) may instead include only the semiconductor elements within a single physical device (e.g., a semiconductor die and/or integrated circuit (IC) package) and may be adapted to be coupled to at least some of the passive elements and/or the sources to form the described structure either at a time of manufacture or after a time of manufacture, for example, by an end-user and/or a third-party.
While the use of particular transistors are described herein, other transistors (or equivalent devices) may be used instead with little or no change to the remaining circuitry. For example, a metal-oxide-silicon FET (“MOSFET”) (such as an n-channel MOSFET, nMOSFET, or a p-channel MOSFET, pMOSFET), a bipolar junction transistor (BJT—e.g. NPN or PNP), insulated gate bipolar transistors (IGBTs), and/or junction field effect transistor (JFET) may be used in place of or in conjunction with the devices disclosed herein. The transistors may be depletion mode devices, drain-extended devices, enhancement mode devices, natural transistors or other type of device structure transistors. Furthermore, the devices may be implemented in/over a silicon substrate (Si), a silicon carbide substrate (SiC), a gallium nitride substrate (GaN) or a gallium arsenide substrate (GaAs).
Circuits described herein are reconfigurable to include the replaced components to provide functionality at least partially similar to functionality available prior to the component replacement. Components shown as resistors, unless otherwise stated, are generally representative of any one or more elements coupled in series and/or parallel to provide an amount of impedance represented by the shown resistor. For example, a resistor or capacitor shown and described herein as a single component may instead be multiple resistors or capacitors, respectively, coupled in parallel between the same nodes. For example, a resistor or capacitor shown and described herein as a single component may instead be multiple resistors or capacitors, respectively, coupled in series between the same two nodes as the single resistor or capacitor.
While certain elements of the described examples may be included in an integrated circuit and other elements are external to the integrated circuit, in other example embodiments, additional or fewer features may be incorporated into the integrated circuit. In addition, some or all of the features illustrated as being external to the integrated circuit may be included in the integrated circuit and/or some features illustrated as being internal to the integrated circuit may be incorporated outside of the integrated. As used herein, the term “integrated circuit” means one or more circuits that are: (i) incorporated in/over a semiconductor substrate; (ii) incorporated in a single semiconductor package; (iii) incorporated into the same module; and/or (iv) incorporated in/on the same printed circuit board.
Number | Name | Date | Kind |
---|---|---|---|
20030179736 | Weisler | Sep 2003 | A1 |
20160077995 | Mishra | Mar 2016 | A1 |