US6055597A - Bi-directional synchronizing buffer system - Google Patents
Bi-directional synchronizing buffer system Download PDFInfo
- Publication number
- US6055597A US6055597A US08/960,777 US96077797A US6055597A US 6055597 A US6055597 A US 6055597A US 96077797 A US96077797 A US 96077797A US 6055597 A US6055597 A US 6055597A
- Authority
- US
- United States
- Prior art keywords
- data
- clock
- block
- circuit
- storage component
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/405—Coupling between buses using bus bridges where the bridge performs a synchronising function
- G06F13/4059—Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
Definitions
- This invention relates to bi-directional data buffers within a computer system. Specifically, this invention relates to a bi-directional data buffer system that synchronizes data transfers between components in different clock domains.
- FIFO first in-first out
- a high speed microprocessor may send data to a peripheral device that resides on the expansion bus of the computer system.
- the microprocessor might, for example, be under the control of a 200 MHz clock, while the peripheral device is running under the control of a 66 MHz clock.
- prior systems have placed a data buffer at the boundary between the two clock domains so that data from the microprocessor that is running at 200 MHz does not have to wait through numerous clock cycles to synchronize with the clock frequency of the peripheral device.
- one or more FIFO buffers are placed within a bridge circuit that lies between the microprocessor's clock domain and the peripheral device's clock domain. Data that is sent from the microprocessor at 200 MHz is temporarily stored in a FIFO buffer in the bridge circuit so that the microprocessor can continue to rapidly process data as the slower peripheral device reads data from the FIFO buffer at 66 MHz.
- the FIFO buffer will fill with data from the microprocessor and thereby cause the microprocessor to begin inserting wait states into its process until more space becomes available within the FIFO buffer.
- the overall transfer time from the microprocessor to the peripheral device can be substantially reduced.
- data coming from the slower peripheral device can be passed in the reverse direction through a FIFO buffer before being read at high speed by the microprocessor.
- the faster microprocessor can wait until the FIFO buffer has filled before starting to read the data at high speed.
- the data can be removed from the FIFO buffer at the microprocessor's full speed.
- Some bridge systems such as the one implemented in the Intel 82430 PCI chipset, include a pair of FIFO buffers to manage data transfers between an Intel PENTIUM® microprocessor and a Peripheral Component Interface (PCI) peripheral bus of a computer system.
- one FIFO buffer manages data transfers from the microprocessor to the peripheral bus while the other FIFO buffer manages data transfers in the opposite direction, from the peripheral bus to the microprocessor.
- This implementation provides advantages over systems that have no buffering, it also possesses several disadvantages.
- One disadvantage in this type of system is that implementing two FIFO buffers in opposite orientations requires a large number of silicon gates. The increased gate count leads to a more expensive and less efficient system.
- a system that could manage bi-directional data buffering without implementing two separate FIFO buffers would be advantageous.
- each piece of data is synchronized from one clock domain to another on either the input side or the output side of the FIFO buffer, depending on which component originates the FIFO clock. For example, each piece of data arriving from a high speed component to a FIFO buffer that is synchronized on the input will have to wait through several clock cycles before it is synchronized to the slower clock frequency and stored into the buffer. Alternatively, each piece of data that is sent out of a FIFO buffer that is synchronized on the output to a slower speed component will have to wait through several wait states until it is synchronized to a clock cycle on the slower component. Each of these schemes results in a data transmission delay through the FIFO buffer.
- a synchronization problem exists when passing synchronous logic signals between two separate clock domains within an integrated circuit.
- the problem is due to a behavior of synchronous logic gates called metastability.
- ASIC Application Specific Integrated Circuit
- the present invention is a bi-directional synchronizing buffer which synchronizes data flow between two components in a computer system.
- a component may be any circuit or device within a computer system.
- the bi-directional synchronizing buffer provides a full depth buffer which allows the direction of data flow between the components to be reversed.
- the buffer is implemented with two identical halves, each operating from a separate clock synchronous to each one's respective agent.
- One half of the buffer operates in a write mode while the other half operates in a read mode.
- the read/write mode of each half reverses.
- the synchronous boundary between each agent's clock domain is at the connection between these two identical halves. From an agent's point of view each half has separate data input and output ports with their respective control signals which operate synchronously with respect to the agent's clock domain.
- Each of the buffer halves can be implemented with two or more block multiplexers, wherein the output from each multiplexer is stored as a data unit in a block register.
- Each half of the buffer also contains a read data multiplexer tree which first multiplexes between the block register outputs, using a block select multiplexer, and then selects each piece of data using a data select multiplexer. This process will be discussed in more detail below.
- Direction multiplexers are used to select the direction of data flow through the buffer based on the read/write mode of that buffer half.
- the direction multiplexer selects the data applied to the data input bus to be written to the appropriate location in the block register.
- the direction multiplexer selects an entire block of data coming from the block register in the other buffer half.
- each block register has a matching block register in the other buffer half that operates as it's counterpart in the other clock domain.
- an acknowledgement signal is asserted by each buffer half to indicate that the data is synchronized and has been transported across the clock boundary from one buffer half to another.
- the acknowledgement signal itself must be synchronized to a different clock by the originator of the data. The originator is then allowed to change the data, and signal new data with a synchronization flag.
- the inherent problem in this type of system is that the synchronization signal must pass through two gates in the destination clock domain before the acknowledge signal is returned.
- the return acknowledge signal must pass through two gates in the originator's clock domain before the data can be changed. If the data was synchronized individually as in prior systems, it would be delayed at rate about one fourth of the clock rate if the two clocks are close to the same frequency.
- the bi-directional synchronizing buffer processes data by first assembling the data into data units of multiple words and then synchronizes the units all at once.
- the size of the blocks of data can vary depending on the requirements and relative clock rates of the source and target devices.
- a solution to this involves the use of two or more data block registers so that data may be assembled in one register while another unit of data is being synchronized. This approach allows data to flow across a synchronous boundary at a rate equal to that of the slowest clock.
- One embodiment is a circuit in a computer system for buffering data transfers from a first clock domain to a second clock domain.
- the circuit includes a first component under the control of a first clock for converting a plurality of data bits into a unit of data; a first storage component in communication with the first component and under the control of the first clock for temporarily storing the unit of data; a second storage component under the control of a second clock for temporarily storing the unit of data; and at least one signal indicative of the unit of data being stored in the first storage component.
- the mother board includes: a processor; a bus, connected to the processor; a first component in communication with the processor and under the control of a first clock for converting a plurality of data bits into a unit of data; a first storage component in communication with the first component and under the control of the first clock for temporarily storing the unit of data; a second storage component under the control of a second clock for temporarily storing the unit of data; and at least one signal indicative of the unit of data being stored in the first storage component.
- Yet another embodiment is a circuit in a computer system for buffering data transfers from a first clock domain to a second clock domain, including: first means under the control of a first clock for converting a plurality of data bits into a unit of data; second means in communication with the first component and under the control of the first clock for temporarily storing the unit of data; third means under the control of a second clock for temporarily storing the unit of data; and fourth means for indicating that the unit of data has been stored in the second means.
- FIG. 1 is a block diagram of a computer system including a bi-directional synchronizing FIFO buffer of the invention in a host bridge circuit.
- FIG. 2 is flow diagram illustrating the overall process of sending data from a source to a destination through an embodiment of a bi-directional FIFO buffer of the invention.
- FIG. 3 is a block diagram of the multiplexers and bock registers in an embodiment of the bi-directional synchronizing FIFO buffer.
- FIG. 4 is a circuit diagram illustrating signals that are passed between the separate halves of an embodiment of a bi-directional synchronizing FIFO buffer.
- FIG. 5 is a flow diagram illustrating the signal changes that take place as data is written into the current input block register of one embodiment of a bi-directional synchronizing FIFO buffer.
- FIG. 6 is a flow diagram illustrating the signal changes that take place as data is written from a block register in one clock domain of an embodiment of a bi-directional synchronizing FIFO buffer to a second clock domain.
- FIG. 7 is a flow diagram illustrating the signal changes that take place as data is read from a block register in one clock domain of an embodiment of a bi-directional synchronizing FIFO buffer to a second clock domain.
- FIG. 8 is a flow diagram illustrating the signal changes that take place as data is written from an output block register in one embodiment of a bi-directional synchronizing FIFO buffer to an external device within a computer system.
- the bi-directional synchronizing buffer is a bi-directional FIFO buffer that comprises a common set of data registers for managing data flowing in either direction. These registers act as temporary storage components for the buffer.
- An embodiment of the invention also includes a series of multiplexers located within the buffer for building units of data from the individual bytes of data that flow into the buffer. Because the data is first built into data units before crossing the clock boundary, this embodiment is more efficient at transferring data from a source component to a target component. The mechanism for building data units from the individual data bytes will be discussed in more detail below.
- Another aspect of the invention relates to the design of the circuitry for controlling data transfers across clock boundaries.
- embodiments of the invention include synchronization and acknowledgement signals that pass between the two clock domains in the buffer and provide an indication of when the data signals have become stable. Once the data block has become stable, as indicated by the synchronization signal, the data unit is ready for synchronization so it can traverse the clock boundary.
- the circuits responsive to the synchronization and acknowledgment signals are triggered by clock transition events (eg: either a rising or falling clock edge). The system does not need to wait for a signal to become either high or low, just to transition from one state to another. By having these signals responsive to clock transitions events, there is no need for the system to wait for a signal to become active, it is only necessary for the system to discern whether the signal has changed states.
- Embodiments of the invention can be located within the host bridge circuit of a computer system which manages communication between the processor and the bus.
- Other embodiments of the buffer could be located between the processor and the memory.
- the computer system can be based on any modern microprocessor including the Intel® Pentium®, Pentium Pro® or Pentium II®.
- the invention is anticipated to function within computer systems based on AMD®, Cyrex®, Motorola® or Digital Equipment Corporation microprocessors.
- a host bridge circuit normally manages communication in a computer system between a host processor and peripheral devices.
- the host bridge circuit might manage communications between an Intel® Pentium® processor and a device attached to the Peripheral Communication Interconnect (PCI) bus of the computer.
- PCI Peripheral Communication Interconnect
- the computer system 10 includes a processor 12 in communication with a processor bus 14.
- the processor 12 can be any type of central processing unit (CPU) known in the art, including an Intel® PENTIUM®, Intel®PENTIUM PRO®, Intel® PENTUIKII®, Digital Equipment Corporation Alpha Processor, Advanced Micro Devices K5, Advanced Micro Devices K6 brand processors or other similar processor.
- CPU central processing unit
- the processor bus 14 communicates instructions and data from the processor 12 to other components within the computer system 10.
- One of the components in communication with the processor bus 14 is a host bridge circuit 20.
- the host bridge circuit component is responsible for communicating instructions and data from the processor bus 14 to peripheral devices that are internal and external to the computer system 10. Examples of internal peripheral devices are video graphics controllers, network interface controllers and internal modems. Examples of external peripheral devices are scanners, digitizing tablets and printers. Thus, instruction and data transfers between the processor 12 and peripheral devices are communicated through the host bridge circuit 20.
- the host bridge circuit 20 contains a bi-directional FIFO buffer 22 and a memory controller 23. Details of the bi-directional FIFO buffer 22 will be described in more detail below in relation to FIGS. 3 and 4. However, as illustrated, the bi-directional FIFO buffer 22 is placed within the host bridge circuit 20 to buffer instruction and data requests to and from the processor 12.
- the memory controller 23 manages memory requests from the processor 12 to memory chips 24a,b.
- the bi-directional FIFO buffer 22 is in communication with a peripheral bus 26 that communicates instructions and data to several peripheral devices 30a-c.
- one of the peripheral devices 30c may include a bus master 32 which can transfer data to/from the computer system 10 by requesting bus cycles.
- the host bridge circuit 20 is also in communication with a memory bus 34 which transfers data from/to the peripheral devices 30a-c or processor 12 to/from the computer's memory chips 24a,b (or vice versa). Also, data transfers could occur to/from memory bus 34 or to/from processor bus 14. This is determined by system architecture and is independent of FIFO implementation.
- FIG. 2 is a flow diagram illustrating an overall process 50 occurring within the embodiment of the bi-directional FIFO buffer 22 of FIG. 1.
- the bi-directional FIFO buffer 22 transfers data from the processor bus 14 to the peripheral devices 30a-c, or alternatively from the peripheral devices 30a-c to the processor bus 14.
- the bi-directional FIFO buffer 22 can transfer data from the peripheral bus 26 to the memory bus 34 and vice versa.
- the flow diagram of FIG. 2 refers to source and destination components since either the processor 12, memory 24a,b or peripheral device 30 could be a source or destination of the data the flows through the bi-directional FIFO buffer 22.
- the process 50 of transferring data between a source and destination begins at a start state 52 and moves to state 54 wherein the destination component requests data from the source component.
- the destination component might be a peripheral device 30a and the source component might be system memory chip 24a,b.
- a peripheral device makes a data request from the memory.
- the process 50 moves to a state 56 wherein data is sent from the source component to the host bridge circuit 20.
- the process 50 then moves to state 58 wherein a determination is made whether the FIFO buffer 22 is full. If a determination is made that the FIFO buffer is full at the decision state 58, the process 50 moves to state 60 wherein the data from the source component is held off from being transmitted. Once the data has been held off from being transmitted at the state 60, the process 50 loops back to the state 56 to once again begin sending data to the host bridge circuit.
- the process 50 moves to state 62 wherein data is written to the next available location in the current block register. As will be discussed in more detail below, the data is assembled directly into the current block register. The data travels directly from the data inputs, through a multiplexer to become assembled within the block register. Once data has been written to the next available location in the block register at state 62, the process 50 moves to a decision state 64 wherein a determination is made whether the block register is full. If the block register is not full, the process 50 loops back to state 62 wherein additional data is written to the current block register.
- the process 50 moves to state 66 wherein a signal is generated from the current block register to indicate that it holds a unit of data that is ready to be synchronized with the opposite half of the FIFO buffer in the destination clock domain.
- the process 50 moves to state 68 wherein the data are synchronized into the matched block register in the destination clock domain.
- the process 50 then moves to state 70 wherein the destination block register is selected to be read by a select multiplexer. This will be discussed in more detail below in reference to FIG. 3.
- the process 50 then moves to state 72 wherein the individual data bytes stored within the block register are selected by a data select multiplexer. Once the data bytes have been selected at the state 72, so that they can be sent out of the FIFO buffer 22, the process ends at an end state 74.
- the process 50 described in FIG. 2 is an embodiment of a FIFO buffer wherein data bytes are sent from a source component or device to a destination component or device and wherein the source component is under the control of one clock and the destination component is under the control of a second, different, clock.
- the bi-directional synchronizing FIFO buffer 22 (FIG. 1) assembles the data stream from the source component into units of data and then transfers those units across the clock boundary that divides the FIFO buffer 22 into separate domains.
- each of the clock signals is fed into the host bridge chip 20 so that one half of the FIFO buffer 22 is controlled by a first clock and a second half of the FIFO buffer 22 is controlled by a second clock.
- FIG. 3 is a block diagram of an embodiment of a bi-directional FIFO buffer 22 (FIG. 1).
- a synchronous boundary 90 divides the bi-directional FIFO buffer 22 into two distinct halves 100a and 100b that are each controlled by their own, different clocks.
- the components on the left half 100a of the FIFO buffer 22 may be controlled by a 200 MHz processor clock whereas the components on the right half 100b may be controlled by a 33 MHz bus clock.
- the bi-directional FIFO buffer 22 is designed to buffer data transfers from one clock domain to another, the components within each respective half of the FIFO buffer 22 are controlled by separate clocks and data travels from one clock domain to the other.
- the left half 100a of the FIFO buffer 22 includes a DATA -- IN -- 1 line 99 in communication with a pair of data multiplexers 105a,b. Each of the multiplexers 105a,b is in communication with a block register 110a,b.
- the right half 100b of the bi-directional FIFO buffer 22 includes a DATA -- IN -- 2 line 112 in communication with a pair of multiplexers 115a,b and block registers 120a,b.
- this embodiment includes two multiplexers and two block registers in each half of the bi-directional FIFO buffer 22, embodiments with 3, 4, 5 or more multiplexers and registers could be similarly implemented.
- a block select multiplexer 130 connects to outputs of the block registers 120a and 120b and selects between the block registers 120a and 120b as inputs.
- a data select multiplexer 135 communicates with the block select multiplexer 130 so that the data blocks coming from the block select multiplexer 130 are broken down into their original size before being sent to the target device.
- a block select multiplexer 140 connects to outputs of the block registers 110a and 110b and selects between the block registers 110a and 110b as inputs.
- a data select multiplexer 145 communicates with the block select multiplexer 140 and divides the data blocks into their original data configuration.
- a set of M data words arrives along either the DATA -- IN -- 1 line 99 or the DATA -- IN -- 2 line 112. Data that arrives along the DATA -- IN -- 1 line 99 sent to either multiplexer 105a or multiplexer 105b.
- the bi-directional FIFO buffer 22 maintains a status flag pointing to the next multiplexer to receive data. For example, the first set of M data words arriving along the DATA -- IN -- 1 line 99 might be sent to multiplexer 105a, whereas the next series of M data words sent along the DATA -- IN -- 1 line would be sent to mutliplexer 105b. The incoming data is actually made available to each ⁇ M ⁇ words of all block registers.
- the first set of pointers corresponds to the status flag that indicates the current block register to be written.
- the second set of pointers indicates which of the ⁇ M ⁇ words of the current block register is to be written next.
- Data words that are sent to multiplexer 105a are multiplexed into data blocks of a predetermined size and then saved into the block register 110a. Once the block register 110a is notified that the block register 120a, on the opposite side of the synchronous boundary 90 is empty, data is transferred from the block register 110a to the block register 120a. The data from the block register 110a passes through the multiplexer 115a without change before being stored in the block register 120a.
- the control mechanism for synchronizing data blocks across the clock boundary 90 will be discussed more completely in reference to FIG. 4.
- the data stored in the block register 120a is then selected by the block select multiplexer 130 which alternates between gathering data from the block register 120a and the block register 120b.
- the data is sent to the data select multiplexer 135 which then breaks the data down into words of its original size.
- 1 cacheline 4 quadwords
- the block register 120a may hold one cacheline of four quadwords, totaling 256 bits.
- the 256 bit block is selected by the block select multiplexer 130 and thereafter the data select demultiplexer 135 breaks the 256 bit unit of data down into its original quadword format.
- the multiplexed quadwords are then sent out via a DATA -- OUT -- 1 line 154.
- data can also flow in the opposite direction, from the right half 100b of the bi-directional synchronizing FIFO buffer 22 to the left half 100a by using the DATA -- IN -- 2 line as the input.
- a set of data including M words can arrive along the DATA -- IN -- 2 line 112 and be multiplexed into data blocks by the multiplexers 115a-b.
- a status flag is set so that the arriving data bytes will be alternately sent to either multiplexer 115a or 115b. If the M data words are sent to multiplexer 115b, then the resulting multiplexed data blocks are stored within the block register 120b. Once the data register 120b is notified that space is available within the block register 110b, on the opposite side of the clock boundary 90, then the data block is sent on the next clock transition from the block register 120b to the multiplexer 105b.
- the unit of data is then passed through the multiplexer 105b and stored into the block register 110b. Once the block select multiplexer 140 selects to receive input from the register 110b, the unit of data is sent to the data select multiplexer 145 where it is broken down into the original M word segments. The data words are then sent out via the DATA -- OUT -- 2 line 156.
- data can be input into the left half 100a, along the DATA -- IN -- 1 line 99 and be output from the right half 100b via the DATA -- OUT -- 1 line 154.
- data can be sent in the reverse direction by being input into the right half 100b along the DATA -- IN -- 2 line 112 and come out of the left half via the DATA -- OUT -- 2 line 156.
- the signals that manage data flow across the synchronous boundary 90 and between the left half 100a and right half 100b of the bi-directional FIFO buffer are described more particularly in FIG. 4.
- Table 1 provides a description of each of the signals illustrated in FIG. 4. As described, these signals are transition event signals, not active level signals. Thus, each event is signaled by a logic level transition, either high to low or low to high.
- Signals suffixed with an "A” are involved when the FIFO buffer data flow direction is from the first clock (CLK1) domain 100a to second clock (CLK2) domain 100b.
- Signals suffixed with B are involved when the FIFO buffer data flow direction is from the CLK2 domain 100b to the CLK1 domain 100a.
- FIG. 5 is a flow diagram illustrating an embodiment of a process by which the signals shown in FIG. 4 function.
- the flow diagram of FIG. 5 shows a process 200 that the left half 100a of the bi-directional FIFO buffer 22 undergoes to send data to the right half 100b. It should be noted that a similar process can be undertaken by the right half 100b of the bi-directional FIFO buffer 22 to send data to the left half 100a of the bi-directional FIFO buffer 22.
- the process 200 begins at a start state 205 when the computer system 10 (FIG. 1) has data to be sent from a source device to a target device.
- the source device might be a microprocessor such as a Pentium Pro or Pentium II and the target device, in one embodiment, could be any device linked to the PCI bus of the computer system 10.
- this type of data is buffered by the bi-directional FIFO buffer 22 as it transitions between the processor clock domain and the bus clock domain.
- the process 200 then moves to a decision state 210 wherein a determination is made whether the WRITE -- CE clock enable signal has been asserted, indicating that the bi-directional FIFO buffer 22 can accept data into its registers. If a determination is made at the decision state 210 that the WRITE -- CE clock enable signal is not asserted, the process 200 moves to state 215 to wait through one clock cycle. The process 200 then loops back to the decision state 210 to determine whether the WRITE -- CE clock enable signal has now been asserted.
- the process 210 moves to state 220 wherein data is written from the source device along the DATA -- IN line to the current input block register in the left half 100a.
- the current input block register is determined by a set of pointers that keep track of which block registers within the left half 100a contain data and which are empty.
- the process 200 moves to a decision state 225 wherein a determination is made whether the current input block register is full.
- the process 200 returns to the state 215 to wait through one clock cycle before attempting to write additional data to the current input block register at state 220. If the current input block register is full at the decision state 225, the process 200 moves to state 230 wherein a pointer is set to indicate the location of the next block register within the left half 100a to receive incoming data. This mechanism thereby allows incoming data to be placed within any of the empty block registers in the left half 100a. Once a pointer is set to indicate the next block register to receive data (eg: the current block register) at the state 230, the process 200 moves to a decision state 235 wherein a determination is made whether all the block registers within the left half 100a are full. If all of the registers are not full at the decision state 235, the process 200 returns to the state 215 to wait through one clock cycle before writing more data to the current block register at state 220.
- a pointer is set to indicate the location of the next block register within the left half 100a to receive incoming data. This mechanism thereby allows
- the process 200 moves to state 240 and de-asserts the WRITE -- READY signal.
- the bi-directional FIFO buffer 22 indicates to other components communicating with the left half 100a that it can no longer accept any additional data.
- FIG. 6 illustrates a process 250 for synchronizing data from an input block register in the left half 100a to an output block register in the right half 100b of the bi-directional FIFO buffer 22.
- the input block register is the current block register that is to receive the data.
- the output block register is the current block register that is to send the data out of the FIFO buffer 22.
- the process 250 begins at a start state 255 and then moves to a decision state 260 wherein a determination is made whether the currently selected input block register in the left half 100a is full. As can be imagined, it is most efficient to transfer an entire unit of data from the left half 100a to the right half 100b. Thus, the process 250 normally waits until the input block register in the left half 100a has filled before signalling the right half 100b.
- each unit of data that is transferred from the left half 100a to the right half 100b comprises 256 bits.
- the process 250 moves to state 265 to wait one clock cycle before returning to the decision state 260.
- the process 250 moves to state 270 and asserts the SYNC -- DATA signal indicating to the right half 100b that a unit of data is ready to be synchronized.
- the process 250 then moves to a state 272 wherein the unit of data within the current block register is made available to the opposite half of the bi-directional FIFO buffer 22.
- the process 250 moves to a decision state 275 wherein a determination is made whether the ACK acknowledgement signal has been returned from the opposite portion of the bi-directional FIFO buffer 22 indicating that the data has been synchronized. If an ACK acknowledgement signal has been returned at the decision state 275, the process 250 moves to state 280 wherein a WRITE -- READY signal is asserted to indicate that the input block register has sent out its data and can now receive more data.
- the WRITE -- READY signal is asserted to indicate when there is room in the bi-directional FIFO buffer 22 for additional data.
- the process 250 moves to a decision state 285 wherein a determination is made whether a READY signal has been returned.
- the READY signal indicates that block register space is available in the right half 100b of the buffer for more synchronized data. If a determination is made at the decision state 285 that the READY signal has not been returned, the process 250 moves to state 290 to wait through one clock cycle before returning to the decision state 285.
- the process 250 moves to state 295 wherein a pointer is set to select the next input block register in the left half 100a that has data to be synchronized. This next input block register becomes the "current" input block register. The process 250 then returns to the decision state 260 wherein a determination is made whether the newly selected input block register has a complete unit of data.
- the process 250 moves to a decision state 300 to determine whether an ACK -- READY signal has been asserted by the right half 100b. As shown in Table 2, the ACK -- READY signal is asserted by one half of the buffer to indicate that data has been synchronized across the clock boundary, but there is room for additional data in the other output block register. If the ACK -- READY signal has not been returned at the decision state 300, the process 250 moves to state 305 and waits through one clock cycle before returning to the decision state 275.
- the process 250 moves to state 310 wherein a WRITE -- READY signal is asserted by the left half 100a to indicate that more data can be written to the current input block register.
- the process 250 moves to state 295 and sets a pointer selecting the next input block register that is to send data across the synchronous clock boundary to the right half 100b.
- the process 350 begins at a start state 355 and moves to a decision state 360 wherein a determination is made whether the left half 100a has asserted a SYNC -- DATA signal. As discussed in Table 1, the SYNC -- DATA signal indicates that data is waiting to be synchronized from the left half 100a. If the SYNC -- DATA signal has not been asserted at the decision state 360, the process 350 moves to a state 365 wherein it waits through one clock cycle before returning to the decision state 360.
- the process 350 moves to state 370 wherein a unit of data from the left half 100a is synchronized and stored into the current output block register in the right half 100b.
- the process 350 then moves to state 375 wherein a READ -- READY signal is asserted by the right half 100b to indicate to the target component that data is available to be read.
- the process 350 then moves to a state 380 wherein a pointer is moved to indicate the next block register in the right half 100b to receive data from the input block registers in the left half 100a.
- the process 350 then moves to a decision state 385 wherein a determination is made whether all of the output block registers in the right half 100b are now full.
- the process 350 moves to state 390 wherein the ACK -- READY acknowledgement signal is asserted. This indicates that some of the data has been synchronized, but there is room for additional data in the right half 100b.
- the process 350 then returns to the decision state 360 wherein a determination is made whether the SYNC -- DATA signal has been asserted.
- the process 350 moves to state 395 wherein the ACK acknowledgement signal is asserted by the right half 100b.
- the process 350 then waits through one clock cycle at a state 400 before progressing to a decision state 405 wherein a determination is made whether all of the output block registers are still full. If the block registers are still full at the decision state 405, the process 350 progresses through an additional clock cycle at state 400 before returning to the decision state 405. If all of the block registers are not full at the decision state 405, the process 350 moves to a state 410 wherein the READY signal is asserted by the right half 100b. The process 350 then loops to the decision state 360 to determine whether the SYNC -- DATA signal has been asserted.
- the process 450 begins at a start state 452 and then moves to state 454 wherein data from the currently selected output block register in the right half 100b is placed on the DATA -- OUT line.
- the process 450 then moves to a decision state 456 wherein a determination is made whether the READ -- CE signal has been asserted.
- the READ -- CE signal is a clock enable signal that allows the data stored in the output block register to be read by the target component. If the READ -- CE signal is not asserted at the decision state 456, the process 450 moves to state 458 wherein the process 450 waits through one clock cycle before returning to the decision state 456.
- the process 450 moves to a decision state 460 wherein a determination is made whether the current data in the output block register is the last data in the current output block register. If a determination is made that the current data in the current output block register is not the last data, the process 450 moves to a state 462 wherein the next block of data is sent out from the current output block register along the DATA -- OUT line. The process 450 then waits through one clock cycle at state 458 before returning the decision state 456.
- the process 450 moves to state 464 wherein a pointer is changed to select the next output block register for outputting data.
- the process 450 then moves to a decision state 470 wherein a determination is made whether all of the block registers are empty. If all of the block registers are not empty at the decision state 470, the process sends out the next data from the current block register at state 462. If a determination is made that all of the block registers are empty at the decision state 470, the process 450 moves to state 475 wherein the READ -- READY signal is de-asserted to indicate that there is no longer data ready to be read from the output block register of the right half 100b.
- FIGS. 5-8 could similarly be described for data that was input into the right half 100b and synchronized with the left half 100a of the bi-directional FIFO buffer 22.
- each of the processes listed in the FIGS. 5-8 can occur simultaneously.
- data can be flowing into one of the input block registers in the left half 100a at the same time that data is flowing out of the right half 100b.
- data can be synchronized across the clock boundary from the left half 100a to the right half 100b at the same time that data is being either sent to, or read from, the bi-directional FIFO buffer 22.
- the bi-directional FIFO buffer 22 transfers data from one clock domain to another very quickly by assembling the incoming data into data units prior to synchronization. By first assembling the data into units, fewer discreet packets of data are synchronized from one clock domain to the other. Since synchronizing data across clock boundaries can require several clock cycles, it is advantageous to send more data with every packet that crosses between clock domains.
- the bi-directional FIFO buffer 22 provides an advantage by synchronizing the data blocks that cross between clock boundaries using control signals that are edge sensitive instead of relying on level sensitive signals.
- the control signals that cross the clock boundary from the left half 100a to the right half 100b (and vice versa) do not need to transition to a particular active logic level to indicate an event and then transition back to the inactive logic level, but simply signal an event by toggling from one logic level to another.
- an acknowledgment signal is sent before another event can be signaled.
- the transition to an active level needed to be acknowledged as well as the transition to an inactive level. Because embodiments of this invention rely on edge sensitive signals, only a single acknowledgment of the edge transition is necessary, thus reducing the synchronization time for each event. Also, because the synchronized control signals guarantee that the data to be synchronized will meet the setup and hold time requirements at the inputs of the data block register, the data block may cross the clock boundary without additional logic gates and without causing metastability on the outputs of the data block registers.
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
Description
TABLE 1 ______________________________________ Bi-directional FIFO buffer Control Signals Signal Name Description ______________________________________ Synchronizing Control SYNC.sub.-- DATA Indicates that data is available for synchronization. ACK.sub.-- READY Indicates that the data has been synchronized and that there is room for additional data. ACK Indicates that data has been synchronized but there is not presently room for additional data. READY Indicates that there is now room for additional data. FIFO buffer Interface Control WRITE.sub.-- CE Write clock enable causes data to be written to the FIFO buffer whenever it is active during a rising edge of the clock(CLK). READ.sub.-- CE Read clock enable causes data to be removed from the FIFO buffer whenever it is active during a rising edge of the clock(CLK). CLK The CLK controls the synchronous transfer of data at the FIFO buffer interface. READ.sub.-- READY FIFO buffer Status bit that indicates when there is data available to be read from the FIFO buffer. WRITE.sub.-- READY FIFO buffer status bit that indicates when there is room in the FIFO buffer for additional data. ______________________________________
Claims (21)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/960,777 US6055597A (en) | 1997-10-30 | 1997-10-30 | Bi-directional synchronizing buffer system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/960,777 US6055597A (en) | 1997-10-30 | 1997-10-30 | Bi-directional synchronizing buffer system |
Publications (1)
Publication Number | Publication Date |
---|---|
US6055597A true US6055597A (en) | 2000-04-25 |
Family
ID=25503610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/960,777 Expired - Lifetime US6055597A (en) | 1997-10-30 | 1997-10-30 | Bi-directional synchronizing buffer system |
Country Status (1)
Country | Link |
---|---|
US (1) | US6055597A (en) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282589B1 (en) * | 1998-07-30 | 2001-08-28 | Micron Technology, Inc. | System for sharing data buffers from a buffer pool |
US20020138682A1 (en) * | 1998-10-30 | 2002-09-26 | Cybex Computer Products Corporation | Split computer architecture |
US20030058933A1 (en) * | 2001-09-24 | 2003-03-27 | Jutzi Curt E. | Method for delivering transport stream data |
US20030061611A1 (en) * | 2001-09-26 | 2003-03-27 | Ramesh Pendakur | Notifying users of available content and content reception based on user profiles |
US20030112051A1 (en) * | 2001-11-20 | 2003-06-19 | Shigetoshi Wakayama | Data transfer circuit between different clock regions |
US6661812B1 (en) * | 2000-04-05 | 2003-12-09 | Triscend Corporation | Bidirectional bus for use as an interconnect routing resource |
EP1388975A1 (en) * | 2002-08-07 | 2004-02-11 | Broadcom Corporation | System and method for data transition control in a multirate communication system |
US6708244B2 (en) * | 1999-07-22 | 2004-03-16 | Cypress Semiconductor Corp. | Optimized I2O messaging unit |
WO2004049164A2 (en) * | 2002-11-22 | 2004-06-10 | Infineon Technologies Ag | Interface circuit |
US20050025248A1 (en) * | 2003-07-30 | 2005-02-03 | Johnson Timothy A. | Video compression system |
US6862653B1 (en) * | 2000-09-18 | 2005-03-01 | Intel Corporation | System and method for controlling data flow direction in a memory system |
WO2005048086A2 (en) | 2003-11-17 | 2005-05-26 | Roy-G-Biv Corporation | Command processing systems and methods |
WO2005091131A2 (en) * | 2004-03-15 | 2005-09-29 | Infineon Technologies Ag | Computer system for electronic data processing |
US20060161698A1 (en) * | 2005-01-18 | 2006-07-20 | Chun-Fu Shen | Architecture for accessing an external memory |
US20070019743A1 (en) * | 2002-10-01 | 2007-01-25 | Avocent Corporation | Video compression encoder |
US20070283181A1 (en) * | 2005-12-30 | 2007-12-06 | Avocent Corporation | Packet-switched split computer |
US20080019441A1 (en) * | 2004-06-25 | 2008-01-24 | Avocent Corporation | Video compression noise immunity |
US20080183919A1 (en) * | 2006-12-21 | 2008-07-31 | Hendon Semiconductors Pty. Ltd. | Simple Bus Buffer |
US20090290647A1 (en) * | 2006-04-28 | 2009-11-26 | Avocent Corporation | DVC Delta commands |
US8095717B1 (en) * | 2007-10-17 | 2012-01-10 | Marvell International Ltd. | System and method for configuration register synchronization |
US20130179608A1 (en) * | 2009-10-19 | 2013-07-11 | Research In Motion Limited | Efficient low-latency buffer |
CN106293609A (en) * | 2015-05-27 | 2017-01-04 | 中国科学院微电子研究所 | Bidirectional FIFO and bus bridging system |
Citations (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4642794A (en) * | 1983-09-27 | 1987-02-10 | Motorola Computer Systems, Inc. | Video update FIFO buffer |
US4816992A (en) * | 1985-06-27 | 1989-03-28 | Nec Corporation | Method of operating a data processing system in response to an interrupt |
US4825098A (en) * | 1986-12-17 | 1989-04-25 | Fujitsu Limited | Bidirectional semiconductor device having only one one-directional device |
JPH01119823A (en) * | 1987-11-02 | 1989-05-11 | Matsushita Electric Ind Co Ltd | First-in first-out storage device |
US4833655A (en) * | 1985-06-28 | 1989-05-23 | Wang Laboratories, Inc. | FIFO memory with decreased fall-through delay |
US4878166A (en) * | 1987-12-15 | 1989-10-31 | Advanced Micro Devices, Inc. | Direct memory access apparatus and methods for transferring data between buses having different performance characteristics |
JPH02152088A (en) * | 1988-12-02 | 1990-06-12 | Nec Corp | Bidirectional fifo memory |
JPH02207321A (en) * | 1989-02-08 | 1990-08-17 | Nec Corp | Bidirectional fifo memory |
US5079693A (en) * | 1989-02-28 | 1992-01-07 | Integrated Device Technology, Inc. | Bidirectional FIFO buffer having reread and rewrite means |
US5255239A (en) * | 1991-08-13 | 1993-10-19 | Cypress Semiconductor Corporation | Bidirectional first-in-first-out memory device with transparent and user-testable capabilities |
US5276807A (en) * | 1987-04-13 | 1994-01-04 | Emulex Corporation | Bus interface synchronization circuitry for reducing time between successive data transmission in a system using an asynchronous handshaking |
US5295246A (en) * | 1990-11-30 | 1994-03-15 | International Business Machines Corporation | Bidirectional FIFO buffer for interfacing between two buses of a multitasking system |
US5325510A (en) * | 1990-05-25 | 1994-06-28 | Texas Instruments Incorporated | Multiprocessor system and architecture with a computation system for minimizing duplicate read requests |
US5349683A (en) * | 1992-07-16 | 1994-09-20 | Mosel-Vitelic | Bidirectional FIFO with parity generator/checker |
JPH06266605A (en) * | 1993-03-16 | 1994-09-22 | Yokogawa Medical Syst Ltd | Storage device |
JPH07225712A (en) * | 1994-02-15 | 1995-08-22 | Matsushita Electric Ind Co Ltd | Vram controller |
US5448558A (en) * | 1994-04-05 | 1995-09-05 | International Business Machines Corporation | Method and apparatus for managing packet FIFOS |
US5454085A (en) * | 1990-04-06 | 1995-09-26 | Mti Technology Corporation | Method and apparatus for an enhanced computer system interface |
US5471488A (en) * | 1994-04-05 | 1995-11-28 | International Business Machines Corporation | Clock fault detection circuit |
US5499344A (en) * | 1992-10-07 | 1996-03-12 | Texas Instruments Incorporated | Programmable dual port data unit for interfacing between multiple buses |
US5524270A (en) * | 1992-06-13 | 1996-06-04 | International Business Machines Corporation | System for transferring data between asynchronous data buses with a data buffer interposed in between the buses for synchronization of devices timed by different clocks |
US5548786A (en) * | 1991-10-15 | 1996-08-20 | International Business Machines Corporation | Dynamic bus sizing of DMA transfers |
US5557750A (en) * | 1991-03-11 | 1996-09-17 | Future Domain Corporation | Prefetch/prestore mechanism for peripheral controllers with shared internal bus |
US5561779A (en) * | 1994-05-04 | 1996-10-01 | Compaq Computer Corporation | Processor board having a second level writeback cache system and a third level writethrough cache system which stores exclusive state information for use in a multiprocessor computer system |
US5603052A (en) * | 1992-10-20 | 1997-02-11 | Cirrus Logic, Inc. | Interface circuit for transferring data between host and mass storage by assigning address in the host memory space and placing the address on the bus |
US5627991A (en) * | 1993-12-28 | 1997-05-06 | Intel Corporation | Cache memory having a multiplexor assembly for ordering output on a data chunk basis |
US5758107A (en) * | 1994-02-14 | 1998-05-26 | Motorola Inc. | System for offloading external bus by coupling peripheral device to data processor through interface logic that emulate the characteristics of the external bus |
US5764966A (en) * | 1995-06-07 | 1998-06-09 | Samsung Electronics Co., Ltd. | Method and apparatus for reducing cumulative time delay in synchronizing transfer of buffered data between two mutually asynchronous buses |
US5768546A (en) * | 1995-12-23 | 1998-06-16 | Lg Semicon Co., Ltd. | Method and apparatus for bi-directional transfer of data between two buses with different widths |
US5916312A (en) * | 1997-05-06 | 1999-06-29 | Sony Corporation | ASIC having flexible host CPU interface for ASIC adaptable for multiple processor family members |
-
1997
- 1997-10-30 US US08/960,777 patent/US6055597A/en not_active Expired - Lifetime
Patent Citations (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4642794A (en) * | 1983-09-27 | 1987-02-10 | Motorola Computer Systems, Inc. | Video update FIFO buffer |
US4816992A (en) * | 1985-06-27 | 1989-03-28 | Nec Corporation | Method of operating a data processing system in response to an interrupt |
US4833655A (en) * | 1985-06-28 | 1989-05-23 | Wang Laboratories, Inc. | FIFO memory with decreased fall-through delay |
US4825098A (en) * | 1986-12-17 | 1989-04-25 | Fujitsu Limited | Bidirectional semiconductor device having only one one-directional device |
US5276807A (en) * | 1987-04-13 | 1994-01-04 | Emulex Corporation | Bus interface synchronization circuitry for reducing time between successive data transmission in a system using an asynchronous handshaking |
JPH01119823A (en) * | 1987-11-02 | 1989-05-11 | Matsushita Electric Ind Co Ltd | First-in first-out storage device |
US4878166A (en) * | 1987-12-15 | 1989-10-31 | Advanced Micro Devices, Inc. | Direct memory access apparatus and methods for transferring data between buses having different performance characteristics |
JPH02152088A (en) * | 1988-12-02 | 1990-06-12 | Nec Corp | Bidirectional fifo memory |
JPH02207321A (en) * | 1989-02-08 | 1990-08-17 | Nec Corp | Bidirectional fifo memory |
US5079693A (en) * | 1989-02-28 | 1992-01-07 | Integrated Device Technology, Inc. | Bidirectional FIFO buffer having reread and rewrite means |
US5454085A (en) * | 1990-04-06 | 1995-09-26 | Mti Technology Corporation | Method and apparatus for an enhanced computer system interface |
US5325510A (en) * | 1990-05-25 | 1994-06-28 | Texas Instruments Incorporated | Multiprocessor system and architecture with a computation system for minimizing duplicate read requests |
US5295246A (en) * | 1990-11-30 | 1994-03-15 | International Business Machines Corporation | Bidirectional FIFO buffer for interfacing between two buses of a multitasking system |
US5557750A (en) * | 1991-03-11 | 1996-09-17 | Future Domain Corporation | Prefetch/prestore mechanism for peripheral controllers with shared internal bus |
US5255239A (en) * | 1991-08-13 | 1993-10-19 | Cypress Semiconductor Corporation | Bidirectional first-in-first-out memory device with transparent and user-testable capabilities |
US5548786A (en) * | 1991-10-15 | 1996-08-20 | International Business Machines Corporation | Dynamic bus sizing of DMA transfers |
US5524270A (en) * | 1992-06-13 | 1996-06-04 | International Business Machines Corporation | System for transferring data between asynchronous data buses with a data buffer interposed in between the buses for synchronization of devices timed by different clocks |
US5349683A (en) * | 1992-07-16 | 1994-09-20 | Mosel-Vitelic | Bidirectional FIFO with parity generator/checker |
US5499344A (en) * | 1992-10-07 | 1996-03-12 | Texas Instruments Incorporated | Programmable dual port data unit for interfacing between multiple buses |
US5603052A (en) * | 1992-10-20 | 1997-02-11 | Cirrus Logic, Inc. | Interface circuit for transferring data between host and mass storage by assigning address in the host memory space and placing the address on the bus |
JPH06266605A (en) * | 1993-03-16 | 1994-09-22 | Yokogawa Medical Syst Ltd | Storage device |
US5627991A (en) * | 1993-12-28 | 1997-05-06 | Intel Corporation | Cache memory having a multiplexor assembly for ordering output on a data chunk basis |
US5758107A (en) * | 1994-02-14 | 1998-05-26 | Motorola Inc. | System for offloading external bus by coupling peripheral device to data processor through interface logic that emulate the characteristics of the external bus |
JPH07225712A (en) * | 1994-02-15 | 1995-08-22 | Matsushita Electric Ind Co Ltd | Vram controller |
US5448558A (en) * | 1994-04-05 | 1995-09-05 | International Business Machines Corporation | Method and apparatus for managing packet FIFOS |
US5471488A (en) * | 1994-04-05 | 1995-11-28 | International Business Machines Corporation | Clock fault detection circuit |
US5561779A (en) * | 1994-05-04 | 1996-10-01 | Compaq Computer Corporation | Processor board having a second level writeback cache system and a third level writethrough cache system which stores exclusive state information for use in a multiprocessor computer system |
US5764966A (en) * | 1995-06-07 | 1998-06-09 | Samsung Electronics Co., Ltd. | Method and apparatus for reducing cumulative time delay in synchronizing transfer of buffered data between two mutually asynchronous buses |
US5768546A (en) * | 1995-12-23 | 1998-06-16 | Lg Semicon Co., Ltd. | Method and apparatus for bi-directional transfer of data between two buses with different widths |
US5916312A (en) * | 1997-05-06 | 1999-06-29 | Sony Corporation | ASIC having flexible host CPU interface for ASIC adaptable for multiple processor family members |
Cited By (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282589B1 (en) * | 1998-07-30 | 2001-08-28 | Micron Technology, Inc. | System for sharing data buffers from a buffer pool |
US20020138682A1 (en) * | 1998-10-30 | 2002-09-26 | Cybex Computer Products Corporation | Split computer architecture |
US6807639B2 (en) * | 1998-10-30 | 2004-10-19 | Avocent Corporation | Split computer architecture to separate user and processor while retaining original user interface |
US6708244B2 (en) * | 1999-07-22 | 2004-03-16 | Cypress Semiconductor Corp. | Optimized I2O messaging unit |
US6661812B1 (en) * | 2000-04-05 | 2003-12-09 | Triscend Corporation | Bidirectional bus for use as an interconnect routing resource |
US6862653B1 (en) * | 2000-09-18 | 2005-03-01 | Intel Corporation | System and method for controlling data flow direction in a memory system |
US20030058933A1 (en) * | 2001-09-24 | 2003-03-27 | Jutzi Curt E. | Method for delivering transport stream data |
US20030061611A1 (en) * | 2001-09-26 | 2003-03-27 | Ramesh Pendakur | Notifying users of available content and content reception based on user profiles |
US20030112051A1 (en) * | 2001-11-20 | 2003-06-19 | Shigetoshi Wakayama | Data transfer circuit between different clock regions |
US7096375B2 (en) * | 2001-11-20 | 2006-08-22 | Fujitsu Limited | Data transfer circuit between different clock regions |
EP1388975A1 (en) * | 2002-08-07 | 2004-02-11 | Broadcom Corporation | System and method for data transition control in a multirate communication system |
US20040028164A1 (en) * | 2002-08-07 | 2004-02-12 | Hongtao Jiang | System and method for data transition control in a multirate communication system |
US9743095B2 (en) | 2002-10-01 | 2017-08-22 | Avocent Corporation | Video compression encoder |
US20070019743A1 (en) * | 2002-10-01 | 2007-01-25 | Avocent Corporation | Video compression encoder |
US8385429B2 (en) | 2002-10-01 | 2013-02-26 | Avocent Corporation | Video compression encoder |
WO2004049164A2 (en) * | 2002-11-22 | 2004-06-10 | Infineon Technologies Ag | Interface circuit |
US20050254276A1 (en) * | 2002-11-22 | 2005-11-17 | Infineon Technologies Ag | Interface circuit |
WO2004049164A3 (en) * | 2002-11-22 | 2005-01-06 | Infineon Technologies Ag | Interface circuit |
US7327632B2 (en) | 2002-11-22 | 2008-02-05 | Infineon Technologies Ag | Interface circuit |
US20050025248A1 (en) * | 2003-07-30 | 2005-02-03 | Johnson Timothy A. | Video compression system |
US9560371B2 (en) | 2003-07-30 | 2017-01-31 | Avocent Corporation | Video compression system |
WO2005048086A2 (en) | 2003-11-17 | 2005-05-26 | Roy-G-Biv Corporation | Command processing systems and methods |
WO2005091131A3 (en) * | 2004-03-15 | 2006-05-26 | Infineon Technologies Ag | Computer system for electronic data processing |
WO2005091131A2 (en) * | 2004-03-15 | 2005-09-29 | Infineon Technologies Ag | Computer system for electronic data processing |
US8145822B2 (en) | 2004-03-15 | 2012-03-27 | Infineon Technologies Ag | Computer system for electronic data processing |
US20090235047A1 (en) * | 2004-03-15 | 2009-09-17 | Ulrich Hachmann | Computer system for electronic data processing |
US20080019441A1 (en) * | 2004-06-25 | 2008-01-24 | Avocent Corporation | Video compression noise immunity |
US8805096B2 (en) | 2004-06-25 | 2014-08-12 | Avocent Corporation | Video compression noise immunity |
US20060161698A1 (en) * | 2005-01-18 | 2006-07-20 | Chun-Fu Shen | Architecture for accessing an external memory |
US7783820B2 (en) | 2005-12-30 | 2010-08-24 | Avocent Corporation | Packet-switched split computer having disassociated peripheral controller and plural data buses |
US20070283181A1 (en) * | 2005-12-30 | 2007-12-06 | Avocent Corporation | Packet-switched split computer |
US8660194B2 (en) | 2006-04-28 | 2014-02-25 | Avocent Corporation | DVC delta commands |
US20090290647A1 (en) * | 2006-04-28 | 2009-11-26 | Avocent Corporation | DVC Delta commands |
US7840734B2 (en) | 2006-12-21 | 2010-11-23 | Hendon Semiconductors Pty Ltd. | Simple bus buffer |
US20080183919A1 (en) * | 2006-12-21 | 2008-07-31 | Hendon Semiconductors Pty. Ltd. | Simple Bus Buffer |
US8095717B1 (en) * | 2007-10-17 | 2012-01-10 | Marvell International Ltd. | System and method for configuration register synchronization |
US20130179608A1 (en) * | 2009-10-19 | 2013-07-11 | Research In Motion Limited | Efficient low-latency buffer |
CN106293609A (en) * | 2015-05-27 | 2017-01-04 | 中国科学院微电子研究所 | Bidirectional FIFO and bus bridging system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6055597A (en) | Bi-directional synchronizing buffer system | |
US5764966A (en) | Method and apparatus for reducing cumulative time delay in synchronizing transfer of buffered data between two mutually asynchronous buses | |
US6173348B1 (en) | Using a control line to insert a control message during a data transfer on a bus | |
EP1124179B1 (en) | An apparatus for signal synchronization between two clock domains | |
US6151651A (en) | Communication link with isochronous and asynchronous priority modes coupling bridge circuits in a computer system | |
US6029253A (en) | Method for synchronizing data with a bi-directional buffer | |
US7349998B2 (en) | Bus control system for integrated circuit device with improved bus access efficiency | |
US6148357A (en) | Integrated CPU and memory controller utilizing a communication link having isochronous and asynchronous priority modes | |
US6687255B1 (en) | Data communication circuit having FIFO buffer with frame-in-FIFO generator | |
KR100965356B1 (en) | Latency insensitive fifo signaling protocol | |
EP0606600B1 (en) | Improved single and multistage stage FIFO designs for data transfer synchronizers | |
JPH04350754A (en) | Workstation including interface for data channel or similar data processing system | |
US5155807A (en) | Multi-processor communications channel utilizing random access/sequential access memories | |
US6757763B1 (en) | Universal serial bus interfacing using FIFO buffers | |
US6748442B1 (en) | Method and apparatus for using a control signal on a packet based communication link | |
US6199132B1 (en) | Communication link with isochronous and asynchronous priority modes | |
US5692137A (en) | Master oriented bus bridge | |
US7013360B2 (en) | Efficient use of multiple buses for a scalable and reliable high-bandwidth connection | |
US6996106B2 (en) | High-speed interchip interface protocol | |
US5371863A (en) | High speed processor bus extension | |
US5590130A (en) | Bus protocol using separate clocks for arbitration and data transfer | |
US6877052B1 (en) | System and method for improved half-duplex bus performance | |
JPH04350753A (en) | Workstation having direct memory access controller and interface device for data channel | |
WO1999044142A2 (en) | Interfacing peripheral devices via a slave group interface device to a bus | |
WO2024086639A1 (en) | Pcie retimer providing failover to redundant endpoint and multiple endpoint switching using synchronized multi-tile data interface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICRON ELECTRONICS, INC., IDAHO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HOUG, TODD C.;REEL/FRAME:009035/0214 Effective date: 19971218 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: MICRON TECHNOLOGY, INC., IOWA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICRON ELECTRONICS, INC.;REEL/FRAME:010763/0572 Effective date: 20000317 |
|
CC | Certificate of correction | ||
FPAY | Fee payment |
Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FEPP | Fee payment procedure |
Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 12 |
|
AS | Assignment |
Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT, CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038669/0001 Effective date: 20160426 Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGEN Free format text: SECURITY INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038669/0001 Effective date: 20160426 |
|
AS | Assignment |
Owner name: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT, MARYLAND Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038954/0001 Effective date: 20160426 Owner name: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038954/0001 Effective date: 20160426 |
|
AS | Assignment |
Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT, CALIFORNIA Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:043079/0001 Effective date: 20160426 Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGEN Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:043079/0001 Effective date: 20160426 |
|
AS | Assignment |
Owner name: MICRON TECHNOLOGY, INC., IDAHO Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT;REEL/FRAME:047243/0001 Effective date: 20180629 |
|
AS | Assignment |
Owner name: MICRON TECHNOLOGY, INC., IDAHO Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT;REEL/FRAME:050937/0001 Effective date: 20190731 |