ADVANCED INITIALIZATION BUS (AIB)
Methods and systems for an advanced initialization bus (AIB) are presented. In an aspect, an AIB master sends, to an AIB slave, a serial clock over a first signal line, and performs a read operation with the AIB slave. Performing the read operation comprises sending a read command to the AIB slave via a bus comprising at least one bidirectional input/output (I/O) channel, each I/O channel having its own respective signal line, sending a read address to the AIB slave via the bus, receiving a copy of the serial clock from the AIB slave over a second signal line, and latching read data provided by the AIB slave via the bus into a read buffer using the copy of the serial clock as a data strobe. Thus, the AIB master latches the read data provided by the AIB slave using a read strobe also provided by the AIB slave.
Aspects of the disclosure relate generally to techniques for evaluating and debugging multi-chip module (MCM) design and performance, and specifically to techniques for communicating reliably and at a high frequency between an initiator chiplet and a target chiplet in a multi-chip module.
II. BackgroundMulti-chip modules (MCMs) conventionally include multiple dies or chiplets mounted to a substrate that contains traces for power, ground, and inter-chip communication. A common configuration includes a main die, which may be a compute chiplet, that communicates with other dies, which may be other compute chiplets or chiplets that provide I/O, memory, or other peripheral functions. In MCMs that have a die that controls other dies on the MCM, that die may be referred to as a “master die” or a “main die” and the other dies that are controlled by the main die may be referred to “slave dies” or “subsidiary dies”. As used herein, the terms “die” and “chiplet” are treated synonymously.
SUMMARYThe following presents a simplified summary relating to one or more aspects disclosed herein. Thus, the following summary should not be considered an extensive overview relating to all contemplated aspects, nor should the following summary be considered to identify key or critical elements relating to all contemplated aspects or to delineate the scope associated with any particular aspect. Accordingly, the following summary has the sole purpose to present certain concepts relating to one or more aspects relating to the mechanisms disclosed herein in a simplified form to precede the detailed description presented below.
In an aspect, a method includes sending, to a bus slave, a serial clock over a first signal line; and performing a bus operation with the bus slave, the bus operation comprising a read operation or a write operation; wherein performing the read operation comprises: sending a read command to the bus slave via a bus comprising at least one bidirectional input/output (I/O) channel, each I/O channel having its own respective signal line; sending a read address to the bus slave via the bus; receiving a copy of the serial clock from the bus slave over a second signal line; and latching read data provided by the bus slave via the bus into a read buffer using the copy of the serial clock as a data strobe.
In an aspect, a method includes receiving, from a bus master, a serial clock over a first signal line; and performing a bus operation with the bus master, the bus operation comprising a read operation or a write operation; wherein performing the read operation comprises: receiving a read command from the bus master via a bus comprising at least one bidirectional input/output (I/O) channel, each I/O channel having its own respective signal line; receiving a read address from the bus master via the bus; sending read data to the bus master via the bus according to the serial clock; and sending a copy of the serial clock to the bus master over a second signal line for use by the bus master as a data strobe.
In an aspect, an apparatus for operating as a bus master of a serial bus includes a controller circuit; and at least one input, output, or input/output port; wherein the controller circuit is configured to perform a bus operation with a bus slave, the bus operation comprising a read operation or a write operation; wherein, to perform the read operation, the controller circuit is configured to: send a serial clock to the bus slave over a first signal line; send a read command to the bus slave via a bus comprising at least one bidirectional input/output (I/O) channel, each I/O channel having its own respective signal line; send a read address to the bus slave via the bus; receive a copy of the serial clock from the bus slave over a second signal line; and latch read data provided by the bus slave via the bus into a read buffer using the copy of the serial clock as a data strobe.
In an aspect, an apparatus for operating as a bus slave of a serial bus includes a controller circuit; and at least one input, output, or input/output port; wherein the controller circuit is configured to perform a bus operation with a bus master, the bus operation comprising a read operation or a write operation; wherein, to perform the read operation, the controller circuit is configured to: receive a serial clock from the bus master over a first signal line; receive a read command from the bus master via a bus comprising at least one bidirectional input/output (I/O) channel, each I/O channel having its own respective signal line; receive a read address from the bus master via the bus; send read data to the bus master via the bus according to the serial clock; and send a copy of the serial clock to the bus master over a second signal line for use by the bus master as a data strobe.
Other objects and advantages associated with the aspects disclosed herein will be apparent to those skilled in the art based on the accompanying drawings and detailed description.
The accompanying drawings are presented to aid in the description of various aspects of the disclosure and are provided solely for illustration of the aspects and not limitation thereof.
Methods and systems for an advanced initialization bus (AIB) are presented. In an aspect, an AIB master sends, to an AIB slave, a serial clock over a first signal line, and performs a read operation with the AIB slave. Performing the read operation comprises sending a read command to the AIB slave via a bus comprising at least one bidirectional input/output (I/O) channel, each I/O channel having its own respective signal line, sending a read address to the AIB slave via the bus, receiving a copy of the serial clock from the AIB slave over a second signal line, and latching read data provided by the AIB slave via the bus into a read buffer using the copy of the serial clock as a data strobe. Because the AIB slave provides the AIB master with a read strobe for use by the AIB master to latch the read data being provided by the AIB slave, the read strobe will be at the intended location relative to the data transitions on the bus and will thus be more likely to satisfy setup and hold requirements at higher frequencies and/or over longer distances, compared to bus protocols that use a clock provided by the bus master to capture data provided by a bus slave.
The disclosure herein is described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the subject innovation. It may be evident, however, that various disclosed aspects can be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing the subject innovation.
The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any implementation described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments. Likewise, the term “implementation” does not require that all implementations include the discussed feature, advantage, or mode of operation.
The terminology used herein describes particular implementations only and should not be construed to limit any implementations disclosed herein. As used herein, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. Those skilled in the art will further understand that the terms “comprises,” “comprising,” “includes,” and/or “including,” as used herein, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The serial peripheral interface (SPI) bus is a synchronous serial communication interface specification used for short-distance communication, and is popularly used for communication between dies or chiplets on an MCM. SPI is a four wire bus, having a serial clock line (SCLK), a master out slave in (MOSI) line for data from the master to the slave, a master in slave out (MISO) line for data from the slave to the master, and a chip select (CS)/slave select (SS) line, which the master sets low to indicate that data is being sent. One variant of SPI is quad-SPI, or QSPI, which has a serial clock line (SCLK), a chip select (CS), and four bidirectional data lines I0, I1, I2, and I3.
In the example illustrated in
This is shown in more detail in the timing waveform 302. The falling edge of SCLK 306 is delayed relative to the falling edge of SCLK 304. Read data is provided by the QSPI slave 106 over I0-I3 at the falling edge of SCLK 306, but takes time to propagate through the output buffers on the subsidiary die 108, across the distance between the subsidiary die 108 and the main die 102, and propagate through the input buffers on the main die 102, before being latched by the read capture latch within the QSPI master 104. As a result, the timing of the read data 310 as it arrives at the QSPI master 104 is delayed relative to the timing of the read data 308 output by the QSPI slave 106.
This results in a situation in which the read data 310 arrives within the QSPI master 104 delayed relative to the internal SCLK signal 304 that is used to latch the read data 310. As the frequency of SCLK goes up and/or the distance between the QSPI slave 106 and the QSPI master 104 increases, the setup time (TSU) 312 gets shorter and shorter, until eventually the QSPI master 104 fails to correctly latch data from the QSPI slave 106. This difference in clock timing limits the maximum frequency of a QSPI bus and the distance that a QSPI bus may travel within an MCM at any particular frequency.
To overcome the limitations of the QSPI bus, an advanced initialization bus (AIB) is provided. The AIB includes serial clock SCLK, a four-bit data address/data channel I0-I3, a chip select CS, and a control/clock (CC) signal that an AIB master can use to assert a bus wait state during a write operation and that an AIB slave can use to both assert a wait state during a read operation and provide the AIB master with a data latching signal, also referred to as a data strobe, that will be synchronized with the transitions of read data I0-I3. During a read, the AIB master will use the slave-provided data strobe to capture data on I0-I3 into an asynchronous first-in, first-out (AFIFO) buffer, which can then be read by AIB master using the master-side clock.
In the example illustrated in
In the example illustrated in
When the command sent by the AIB master 404 during the command phase 602 is a read, after the command phase 602, the AIB master 404 relinquishes control of the CC line so that the AIB slave 406 can use the CC line. In the example illustrated in
In the example shown in
As shown in
As further shown in
The read operation 904 may optionally include, at block 910, entering a wait state. In some aspects, this may comprise detecting assertion of a wait state by the AIB slave 406. In some aspects, the AIB slave 406 may assert a wait state by driving the CC signal to a value that indicates assertion of the wait state to the AIB master 404 (in some aspects, a logic “0”). The AIB master 404 remains in the wait state until it determines that the wait state is over.
The read operation 904 may further include, at block 912, receiving a copy of the serial clock from the bus slave over a second signal line, e.g., the CC signal, and, at block 914, latching read data provided by the bus slave via the bus into a read buffer using the copy of the serial clock as a data strobe. If the AIB master 404 entered the wait state in optional block 910, detecting the serial clock on the CC signal is an event that notifies the AIB master 404 that the wait state is over.
In some aspects, the bus comprises four bidirectional I/O channels.
In some aspects, latching the read data into the read buffer using the copy of the serial clock as the data strobe comprises latching the read data into an asynchronous first-in, first-out (AFIFO) buffer and using the copy of the serial clock as a write signal.
In some aspects, the bus operation is a write operation. In some aspects, performing the write operation comprises sending a write command to the bus slave via the bus, sending a write address to the bus slave via the bus, and sending write data to the bus slave via the bus. In some aspects, performing a write operation includes, after sending the write address but before sending the write data, asserting and later releasing a wait state, via the second signal line.
Process 900 may include additional implementations, such as any single implementation or any combination of implementations described below and/or in connection with one or more other processes described elsewhere herein. Although
As shown in
As further shown in
The read operation 1004 may optionally include, at block 1010, asserting a wait state. In some aspects, the AIB slave 406 may assert the wait state by driving the CC signal to a value that indicates assertion of the wait state to the AIB master 404 (in some aspects, a logic “0”). The AIB slave 406 remains in the wait state until it is ready to send read data to the AIB master 404.
The read operation 1004 may further include, at block 1012, sending read data to the bus master via the bus according to the serial clock, and, at block 1014, sending a copy of the serial clock to the bus master over a second signal line for use by the bus master as a data strobe. If the AIB slave 406 asserted the wait state in optional block 1010, sending the serial clock on the CC signal is an event that notifies the AIB master 404 that the wait state is over.
In some aspects, the bus comprises four bidirectional I/O channels.
In some aspects, after receiving the read address and before sending the read data, the bus slave may assert a wait state, during which the copy of the serial clock is not sent to the bus master over the second signal line.
In some aspects, performing the write operation comprises receiving a write command from the bus master via the bus, receiving a write address from the bus master via the bus, and receiving write data from the bus master via the bus.
In some aspects, after receiving the write address, and before receiving the write data, the bus slave may detect assertion and later release of a wait state by the bus master, via the second signal line.
Process 1000 may include additional implementations, such as any single implementation or any combination of implementations described below and/or in connection with one or more other processes described elsewhere herein. Although
The systems and methods disclosed herein have several technical advantages over serial communication buses commonly used for communication between dies or chiplets on a multi-chip module. For example, because the AIB slave provides the AIB master with a read strobe for use by the AIB master to latch the read data being provided by the AIB slave, the read strobe will be at the intended location relative to the data transitions on the bus and will thus be more likely to satisfy setup and hold requirements at higher frequencies and/or over longer distances, compared to bus protocols that use a clock provided by the bus master to capture data provided by a bus slave. The use of an AFIFO to store the captured read data allows the captured read data to be accessed according to the internal timing of the die that contains the AIB master. The additional CC signal provided according to the subject matter described herein can also be used by the AIB master or the AIB slave to indicate a wait state.
It is also noted that the operational steps described in any of the exemplary aspects herein are described to provide examples and discussion. The operations described may be performed in numerous different sequences other than the illustrated sequences. Furthermore, operations described in a single operational step may actually be performed in a number of different steps. Additionally, one or more operational steps discussed in the exemplary aspects may be combined. It is to be understood that the operational steps illustrated in the flowchart diagrams may be subject to numerous different modifications as will be readily apparent to one of skill in the art. Those of skill in the art will also understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
The previous description of the disclosure is provided to enable any person skilled in the art to make or use the disclosure. Various modifications to the disclosure will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other variations. Thus, the disclosure is not intended to be limited to the examples and designs described herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.
Those of skill in the art will appreciate that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
Further, those of skill in the art will appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the aspects disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
The various illustrative logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed with a general purpose processor, a DSP, an ASIC, an FPGA, or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
The methods, sequences and/or algorithms described in connection with the aspects disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in random access memory (RAM), flash memory, read-only memory (ROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An example storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a user terminal (e.g., UE). In the alternative, the processor and the storage medium may reside as discrete components in a user terminal.
In one or more example aspects, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A storage media may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
Various components as described herein may be implemented as application specific integrated circuits (ASICs), programmable gate arrays (e.g., FPGAs), firmware, hardware, software, or a combination thereof. Further, various aspects and/or embodiments may be described in terms of sequences of actions to be performed by, for example, elements of a computing device. Those skilled in the art will recognize that various actions described herein can be performed by specific circuits (e.g., an application specific integrated circuit (ASIC)), by program instructions being executed by one or more processors, or by a combination of both. Additionally, these sequences of actions described herein can be considered to be embodied entirely within any form of non-transitory computer-readable medium having stored thereon a corresponding set of computer instructions that upon execution would cause an associated processor to perform the functionality described herein. Thus, the various aspects described herein may be embodied in a number of different forms, all of which have been contemplated to be within the scope of the claimed subject matter. In addition, for each of the aspects described herein, the corresponding form of any such aspects may be described herein as, for example, “logic configured to”, “instructions that when executed perform”, “computer instructions to” and/or other structural components configured to perform the described action.
Those of skill in the art will further appreciate that the various illustrative logical blocks, components, agents, IPs, modules, circuits, and algorithms described in connection with the aspects disclosed herein may be implemented as electronic hardware, instructions stored in memory or in another computer readable medium and executed by a processor or other processing device, or combinations of both. Memory disclosed herein may be any type and size of memory and may be configured to store any type of information desired. To clearly illustrate this interchangeability, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. How such functionality is implemented depends upon the particular application, design choices, and/or design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
The various illustrative logical blocks, processors, controllers, components, agents, IPs, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed with a processor, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration).
The aspects disclosed herein may be embodied in hardware and in instructions that are stored in hardware, and may reside, for example, in Random Access Memory (RAM), flash memory, Read Only Memory (ROM), Electrically Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), registers, a hard disk, a removable disk, a CD-ROM, or any other form of computer readable medium or non-transitory storage media known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a remote station. In the alternative, the processor and the storage medium may reside as discrete components in a remote station, base station, or server.
While the foregoing disclosure shows illustrative aspects of the disclosure, it should be noted that various changes and modifications could be made herein without departing from the scope of the disclosure as defined by the appended claims. The functions, steps and/or actions of the method claims in accordance with the aspects of the disclosure described herein need not be performed in any particular order. Furthermore, although elements of the disclosure may be described or claimed in the singular, the plural is contemplated unless limitation to the singular is explicitly stated.
Claims
1. A method, performed by a bus master of a serial bus, the method comprising:
- sending, to a bus slave, a first serial clock over a first signal line; and
- performing a bus operation with the bus slave, the bus operation comprising a read operation or a write operation;
- wherein performing the read operation comprises: sending a read command to the bus slave via a bus comprising at least one bidirectional input/output (I/O) channel, each I/O channel having its own respective signal line; sending a read address to the bus slave via the bus; receiving, as a second serial clock, a copy of the serial clock from the bus slave over a second signal line; latching read data provided by the bus slave via the bus into an asynchronous, first-in, first-out (AFIFO) buffer using the second serial clock as a data strobe, wherein the read data is substantially edge aligned with one of a rising edge or a falling edge of the second serial clock and substantially center aligned with the other of the rising edge or the falling edge of the second serial clock; and reading the read data from the AFIFO buffer using a master clock, the master clock comprising a third serial clock that is distinct from the first serial clock and the second serial clock.
2. The method of claim 1, wherein the bus comprises four bidirectional I/O channels.
3. (canceled)
4. The method of claim 1, wherein performing the write operation comprises:
- sending a write command to the bus slave via the bus;
- sending a write address to the bus slave via the bus; and
- sending write data to the bus slave via the bus.
5. The method of claim 4, further comprising, after sending the write address, and before sending the write data, asserting and later releasing a wait state, via the second signal line.
6. A method, performed by a bus slave of a serial bus, the method comprising:
- receiving, from a bus master, a first serial clock over a first signal line; and
- performing a bus operation with the bus master, the bus operation comprising a read operation or a write operation;
- wherein performing the read operation comprises: receiving a read command from the bus master via a bus comprising at least one bidirectional input/output (I/O) channel, each I/O channel having its own respective signal line; receiving a read address from the bus master via the bus; sending read data to the bus master via the bus according to the serial clock; and sending, as a second serial clock, a copy of the first serial clock to the bus master over a second signal line for use by the bus master as a data strobe, wherein the read data is substantially edge aligned with one of a rising edge or a falling edge of the second serial clock and substantially center aligned with the other of the rising edge or the falling edge of the second serial clock.
7. The method of claim 6, wherein the bus comprises four bidirectional I/O channels.
8. The method of claim 6, further comprising, after receiving the read address and before sending the read data, asserting a wait state, during which the second serial clock is not sent to the bus master over the second signal line.
9. The method of claim 6, wherein performing the write operation comprises:
- receiving a write command from the bus master via the bus;
- receiving a write address from the bus master via the bus; and
- receiving write data from the bus master via the bus.
10. The method of claim 9, further comprising, after receiving the write address, and before receiving the write data, detecting assertion and later release of a wait state by the bus master, via the second signal line.
11. An apparatus for operating as a bus master of a serial bus, the apparatus comprising:
- a controller circuit; and
- at least one input, output, or input/output port;
- wherein the controller circuit is configured to perform a bus operation with a bus slave, the bus operation comprising a read operation or a write operation;
- wherein, to perform the read operation, the controller circuit is configured to: send a first serial clock to the bus slave over a first signal line; send a read command to the bus slave via a bus comprising at least one bidirectional input/output (I/O) channel, each I/O channel having its own respective signal line; send a read address to the bus slave via the bus; receive, as a second serial clock, a copy of the serial clock from the bus slave over a second signal line; latch read data provided by the bus slave via the bus into an asynchronous first-in, first-out (AFIFO) buffer using the second serial clock as a data strobe, wherein the read data is edge aligned with one of a rising edge or a falling edge of the second serial clock and center aligned with the other of the rising edge or the falling edge of the second serial clock; and read the read data from the AFIFO buffer using a master clock, the master clock comprising a third serial clock that is distinct from the first serial clock and the second serial clock.
12. The apparatus of claim 11, wherein the bus comprises four bidirectional I/O channels.
13. (canceled)
14. The apparatus of claim 11, wherein, to perform the write operation, the controller circuit is configured to:
- send a write command to the bus slave via the bus;
- send a write address to the bus slave via the bus; and
- send write data to the bus slave via the bus.
15. The apparatus of claim 14, wherein the controller circuit is further configured to assert and later release a wait state, via the second signal line, after sending the write address but before sending the write data.
16. An apparatus for operating as a bus slave of a serial bus, the apparatus comprising:
- a controller circuit; and
- at least one input, output, or input/output port;
- wherein the controller circuit is configured to perform a bus operation with a bus master, the bus operation comprising a read operation or a write operation;
- wherein, to perform the read operation, the controller circuit is configured to: receive a first serial clock from the bus master over a first signal line; receive a read command from the bus master via a bus comprising at least one bidirectional input/output (I/O) channel, each I/O channel having its own respective signal line; receive a read address from the bus master via the bus; send read data to the bus master via the bus according to the serial clock; and send, as a second serial clock, a copy of the serial clock to the bus master over a second signal line for use by the bus master as a data strobe, wherein the read data is edge aligned with one of a rising edge or a falling edge of the second serial clock and center aligned with the other of the rising edge or the falling edge of the second serial clock.
17. The apparatus of claim 16, wherein the bus comprises four bidirectional I/O channels.
18. The apparatus of claim 16, wherein the controller circuit is further configured to assert and later release a wait state after receiving the read address and before sending the read data, via the second signal line, during which the second serial clock is not sent to the bus master over the second signal line.
19. The apparatus of claim 16, wherein, to perform the write operation, the controller circuit is configured to:
- receive a write command from the bus master via the bus;
- receive a write address from the bus master via the bus; and
- receive write data from the bus master via the bus.
20. The apparatus of claim 19, further comprising, after receiving the write address, and before receiving the write data, detecting assertion and later release of a wait state by the bus master, via the second signal line.
Type: Application
Filed: Jun 30, 2022
Publication Date: Jan 4, 2024
Patent Grant number: 12019565
Inventors: Sandeep BRAHMADATHAN (Dublin, CA), Danh LA (Ho Chi Minh City)
Application Number: 17/810,244