US20160099032A1 - Bi-synchronous electronic device and fifo memory circuit with jump candidates and related methods - Google Patents
Bi-synchronous electronic device and fifo memory circuit with jump candidates and related methods Download PDFInfo
- Publication number
- US20160099032A1 US20160099032A1 US14/508,321 US201414508321A US2016099032A1 US 20160099032 A1 US20160099032 A1 US 20160099032A1 US 201414508321 A US201414508321 A US 201414508321A US 2016099032 A1 US2016099032 A1 US 2016099032A1
- Authority
- US
- United States
- Prior art keywords
- jump
- memory circuit
- fifo memory
- pointer
- read pointer
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 121
- 238000000034 method Methods 0.000 title claims description 19
- 238000012545 processing Methods 0.000 claims description 17
- 238000012546 transfer Methods 0.000 claims description 5
- 230000003044 adaptive effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000000875 corresponding effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/10—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
- G11C7/222—Clock generating, synchronizing or distributing circuits within memory device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/10—Indexing scheme relating to groups G06F5/10 - G06F5/14
- G06F2205/102—Avoiding metastability, i.e. preventing hazards, e.g. by using Gray code counters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
Definitions
- the present disclosure relates to the field of electronic devices, and, more particularly, to a bi-synchronous electronic device with a first-in-first-out memory circuit and related methods.
- the electrical heart beat of the circuitry is the clock signal and it regulates the pace of operation for many circuits therein.
- ICs integrated circuits
- SoC system-on-chip
- modules of an IC for example, a processing unit, memories, peripherals, and other dedicated units
- some of the components may operate with different clock speeds.
- the IC may include first-in-first-out (FIFO) queues between devices with different clock frequencies.
- a FIFO queue can be set between a first device, such as a microprocessor, which writes information in the FIFO queue and a second device, such as a peripheral or a second microprocessor, which reads the information from the FIFO queue.
- a first device such as a microprocessor
- a second device such as a peripheral or a second microprocessor
- Each device reads and writes data in the FIFO queue with a rate equal to that of its own clock.
- the presence of the FIFO queue serves to enable co-existence of the two domains in the SoC with different clock frequencies.
- the FIFO queue serves as a buffer for regulating the flow of data between devices that work at different clock speeds.
- the FIFO memory queue 200 includes a first write logic circuit 201 operating based upon a first clock signal, a second read logic circuit 202 operating based upon a second clock signal, a memory core 203 coupled between the logic circuits, and a pointer synchronization circuit 204 also coupled between the logic circuits.
- the pointer synchronization circuit 204 includes a write enable block 210 receiving a write enable signal from the first write logic circuit 201 , a first binary-to-Gray encoder block 211 coupled to the write enable block, a first flip-flop block 212 coupled to the first binary-to-Gray encoder block, first and second blocks 213 a - 213 b coupled in succession to the first flip-flop block, a first Gray-to-binary encoder block 223 coupled to the second block, and a first compare block 214 coupled to the first Gray-to-binary encoder block and outputting a FIFO empty signal.
- the pointer synchronization circuit 204 includes a read enable block 221 receiving a read pulse from the second read logic circuit 202 , a second Gray-to-binary encoder block 222 coupled to the read enable block, a second binary-to-Gray encoder block 220 coupled to the read enable block, a second flip-fop block 219 coupled to the second binary-to-Gray encoder block, first and second blocks 218 a - 218 b coupled in succession to the second flip-flop block, a third Gray-to-binary encoder block 217 coupled to the second block, a fourth Gray-to-binary encoder block 215 coupled to the first flip-flop block 212 , and a second compare block 216 coupled to the third Gray-to-binary encoder block and outputting a FIFO full signal to the first write logic circuit 201 .
- the memory core 203 is written in the first clock domain, and only one location can be pushed in the memory core in a write-domain cycle.
- the read domain retrieves data from the memory core 203 in the second-clock domain, one location per read-domain cycle.
- a bi-synchronous electronic device may include a FIFO memory circuit, and a first digital circuit coupled to the FIFO memory circuit and configured to operate based upon a first clock signal, and write to the FIFO memory circuit based upon a write pointer.
- the hi-synchronous electronic device may include a second digital circuit coupled to the FIFO memory circuit and configured to operate based upon a second clock signal different from the first clock signal, and read from the FIFO memory circuit based upon a read pointer.
- the FIFO memory circuit may be configured to detect a jump in the write pointer to a new position, determine a plurality of jump candidates for the read pointer from a current position, select a jump candidate from the plurality thereof, and synchronize the read pointer based upon the selected jump candidate.
- each jump candidate may comprise a Gray encoding jump candidate for the read pointer from the current position.
- the FIFO memory circuit may be configured to select the jump candidate based upon a distance between the new position and respective positions of the plurality of jump candidates.
- the FIFO memory circuit may be configured to discard jump candidates with respective positions less than the current position and greater than the new position.
- the FIFO memory circuit may be configured to synchronize the read pointer by Gray encoded incrementing the read pointer from a respective position of the selected jump candidate to the new position.
- the FIFO memory circuit may be configured to, when an additional jump in the write pointer is detected, determine a second plurality of jump candidates for the read pointer from a respective position of the selected jump candidate.
- the FIFO memory circuit comprises processing circuitry, and a memory core coupled to the processing circuitry and configured to store data for transfer from the first digital circuit to the second digital circuit.
- the jump in the write pointer to the new position may comprise a non-consecutive jump from the current position.
- the FIFO memory circuit may comprise a 16-128 bit bi-synchronous FIFO memory.
- Another aspect is directed to a method of operating a bi-synchronous electronic device comprising a FIFO memory circuit.
- the method may include using a first digital circuit coupled to the FIFO memory circuit to operate based upon a first clock signal, and write to the FIFO memory circuit based upon a write pointer.
- the method may include using a second digital circuit coupled to the FIFO memory circuit to operate based upon a second clock signal different from the first clock signal, and read from the FIFO memory circuit based upon a read pointer.
- the method may further include using the FIFO memory circuit to detect a jump in the write pointer to a new position, determine a plurality of jump candidates for the read pointer from a current position, select a jump candidate from the plurality thereof, and synchronize the read pointer based upon the selected jump candidate.
- FIG. 1 is a schematic diagram of a FIFO memory queue, according to the prior art.
- FIG. 2 is a schematic diagram of the pointer synchronization circuit from the FIFO memory queue of FIG. 1 .
- FIG. 3 is a schematic diagram of a bi-synchronous electronic device, according to the present disclosure.
- FIG. 4 is a flowchart illustrating operation of the bi-synchronous electronic device of FIG. 3 .
- FIG. 5 is a table illustrating operation of the bi-synchronous electronic device of FIG. 3 .
- FIG. 6 is another flowchart illustrating operation of the bi-synchronous electronic device of FIG. 3 .
- FIG. 7 is a detailed schematic diagram of the FIFO memory circuit of FIG. 3 .
- FIG. 8 is a detailed schematic diagram of the bi-synchronous electronic device of FIG. 3 .
- Clock domains are digital sections of the SoC in which the synchronous sequential logic is driven by a dedicated clock. Subsequently, communication between clock domains is designed through hi-synchronous, multi-synchronous or asynchronous techniques that allow signals to cross from the transmitter to the receiver in a safe way (i.e. the signals must be received stable and mutually correlated). In order to guarantee such signals' integrity, clock domain crossing can be poor in terms of latency, expensive in terms of area occupation, dissipative in dynamic power and complex to manage.
- This present disclosure may offer an approach applicable to several semiconductor products, especially when traffic shapes are difficult to predict, and may allow for faster clock-domain crossing by way of an adaptive code sequence to synchronize the pointers of a multi-clock FIFO with improved performance with regards to traditional Gray encoding.
- the bi-synchronous electronic device 10 illustratively includes a FIFO memory circuit 12 configured to store data, a first clock 14 generating a first clock signal, and a first digital circuit 11 coupled to the FIFO memory circuit and the first clock.
- the bi-synchronous electronic device 10 illustratively includes a second clock 15 generating a second clock signal, and a second digital circuit 13 coupled to the FIFO memory circuit 12 and the second clock.
- the FIFO memory circuit 12 illustratively includes processing circuitry 16 , and a memory core 17 coupled to the processing circuitry and configured to store data for transfer between the first and second digital circuits 11 , 13 .
- the FIFO memory circuit 12 may comprise a 16-128 bit bi-synchronous FIFO memory.
- the first digital circuit 11 is coupled to the FIFO memory circuit 12 and configured to operate based upon the first clock signal, and write to the FIFO memory circuit based upon a write pointer.
- the second digital circuit 13 is coupled to the FIFO memory circuit 12 and configured to operate based upon the second clock signal, the second clock signal being different from the first clock signal, and read from the FIFO memory circuit based upon a read pointer.
- the FIFO memory circuit 12 is configured to detect a jump in the write pointer to a new position.
- the jump in the write pointer may be the result of a data burst from the first digital circuit 11 .
- the FIFO memory circuit 12 is configured to determine a plurality of jump candidates for the read pointer from a current position.
- each jump candidate may comprise a Gray encoding jump candidate for the read pointer from the current position, i.e. the new location does not violate Gray encoding rules.
- the FIFO memory circuit 12 is configured to select a jump candidate from the plurality thereof. More specifically, the FIFO memory circuit 12 may be configured to select the jump candidate based upon a distance between the new position and respective positions of the plurality of jump candidates. The FIFO memory circuit 12 may be configured to discard jump candidates with respective positions less than the current position and greater than the new position.
- the FIFO memory circuit 12 is configured to synchronize the read pointer based upon the selected jump candidate.
- the FIFO memory circuit 12 may be configured to synchronize the read pointer by Gray encoded incrementing (within Gray encoding rules) the read pointer from a respective position of the selected jump candidate to the new position.
- the FIFO memory circuit 12 may be configured to, when an additional jump in the write pointer is detected, determine a second plurality of jump candidates for the read pointer from a respective position of the selected jump candidate.
- the jump in the write pointer the new position may comprise a non-consecutive jump from the current position.
- Another aspect is directed to a method of operating a bi-synchronous electronic device 10 comprising a FIFO memory circuit 12 .
- the method may include using a first digital circuit 11 coupled to the FIFO memory circuit 12 to operate based upon a first clock signal, and write to the FIFO memory circuit based upon a write pointer.
- the method may include using a second digital circuit 13 coupled to the FIFO memory circuit 12 to operate based upon a second clock signal different from the first clock signal, and read from the FIFO memory circuit based upon a read pointer.
- the method may further include using the FIFO memory circuit 12 to detect a jump in the write pointer to a new position, determine a plurality of jump candidates for the read pointer from a current position, select a jump candidate from the plurality thereof, and synchronize the read pointer based upon the selected jump candidate.
- the bi-synchronous electronic device 10 may improve the performance of the synchronization mechanism without any change in the typical structure of the multi-clock FIFO.
- the bi-synchronous electronic device 10 may perform better than the prior art in terms of bandwidth usage.
- the bi-synchronous electronic device 10 may possess flexibility that makes it suitable for several traffic categories in multi-clock designs: the Gray encoder is removed from the synchronization chain and a convenient sequence is inferred according to an adaptive algorithm that allows the disclosed embodiments to handle non-constant traffic in a simple way (e.g. exploiting the pointer jumps).
- Such improvements may be valuable in many fields of application, and particularly, for SoC peripherals, whose traffic is often driven by the user, can be hard to predict and can require some data manipulation (e.g. re-ordering).
- a flowchart 20 and a table 30 illustrate exemplary operation of the bi-synchronous electronic device 10 .
- the write pointer increments normally, i.e. Gray-like, through memory locations 0 - 4 21 a - 21 e and jumps from memory location 4 21 f to new memory location 13 21 g .
- the second digital circuit 13 determines a plurality of jump candidates 22 a - 22 e , and selects the best one based upon distance to the new position (e.g., illustrated 01010 memory location 21 f ).
- the second digital circuit 13 increments normally in Gray encoded fashion to final memory location 21 g.
- Gray encoding is suitable for synchronization because two consecutive encoded values have unitary Hamming distance (i.e. only one bit changes between a code word and the following one). Given a code word, typical Gray encoding is only one in a set of legal binary words: it corresponds in particular to a binary “+1” operation on unsigned vectors. Assuming the write pointer (FIFO pointer) jumps from a value to a non-consecutive one (e.g. the illustrated jump from 4 to 13), by exploring the set of legal words (i.e.
- the bi-synchronous electronic device 10 considers letting the binary pointer span any count sequence and driving the convergence of the synchronization by way of Gray-like correlation-safe jumps (i.e. generating the set of candidates and choosing the most appropriate among them).
- the algorithm is adaptive, because it can always rely on new jump opportunities on any following cycle.
- the binary pointer jumps from 4 to 13.
- a flowchart 50 illustrates another exemplary operation of the bi-synchronous electronic device 10 , and is similar to that of FIG. 4 .
- the FIFO memory circuit 12 detects the write pointer making a second jump to memory location 22 21 h .
- the FIFO memory circuit 12 determines a second plurality of jump candidates 23 a - 23 e for the read pointer from a respective position of the selected jump candidate 23 e from the first plurality of jump candidates 22 a - 22 e .
- the FIFO memory circuit 12 selects a second jump candidate 23 e at memory location 20 , and increments normally in Gray encoded fashion through position 21 f to final memory location 21 h .
- new jump opportunities arise from any new code word, so that the path to the target is dynamically recomputed at any cycle, according to the traffic shape (adaptive algorithm).
- This FIFO memory circuit 12 illustratively includes processing circuitry 31 comprising a Gray encoding block 32 , and a select Gray block 33 coupled thereto.
- This FIFO memory circuit 12 illustratively includes a pointer block 34 coupled to the select Gray block 33 , a pointer Gray block 35 coupled to the processing circuitry, a brute force synchronizer block 36 coupled to the pointer Gray block, a pointer Gray synchronizer block 37 coupled to the brute force synchronizer block, a Gray decoder block 38 coupled to the pointer Gray synchronizer block, and a pointer synchronizer block 39 coupled to the Gray decoder block.
- FIG. 7 discloses the core block (processing circuitry 31 ) as an encoder-equivalent circuit comprising a candidate generator (Gray encoding block 32 ) and a candidate selector (select Gray block 33 ). More detail on the core block is shown in FIG. 8 .
- the core block makes use of the current binary pointer value (pointer block 34 ) to generate a Gray-like pointer (pointer Gray block 35 ).
- the core block acts as a typical Gray encoder, but for the fact that it is able to provide a convenient adaptive sequence.
- the brute-force synchronizer (brute force synchronizer block 36 ) bridges the Gray-like pointer to the read domain and into a synchronized Gray-like pointer (pointer Gray synchronizer block 37 ).
- the traditional Gray decoder (Gray decoder block 38 ) detects the synchronized pointer binary value (pointer synchronizer block 39 ).
- the processing circuitry 31 illustratively includes a pointer Gray block 51 (Gray follower), a plurality of NOT blocks 52 a - 52 c (1-bit inversion) coupled to the pointer Gray Block, a plurality of Gray decoders 53 a - 53 c respectively coupled to the plurality of NOT blocks, a plurality of Out-of-Range blocks 54 a - 54 c (software programmable thresholds) coupled respectively to the plurality of Gray decoders, a pointer block 56 (binary target) coupled to the plurality of Out-of-Range blocks, and a priority arbiter 55 (software programmable) coupled to the plurality of Out of Range blocks and generating a selected code (next value of the Gray follower).
- a pointer Gray block 51 Gray follower
- NOT blocks 52 a - 52 c (1-bit inversion) coupled to the pointer Gray Block
- a plurality of Gray decoders 53 a - 53 c respectively coupled to the plurality of NOT blocks
- This exemplary hardware embodiment includes software-programmable thresholds (i.e. a maximum allowed jump) and a priority arbiter 55 .
- software-programmable thresholds i.e. a maximum allowed jump
- a priority arbiter 55 i.e. a maximum allowed jump
- Gray encoders just decoders 53 a - 53 c ) are required at any stage of the synchronization chain, because the codes are generated by single-bit inversions.
Abstract
Description
- The present disclosure relates to the field of electronic devices, and, more particularly, to a bi-synchronous electronic device with a first-in-first-out memory circuit and related methods.
- In integrated circuits (ICs), the electrical heart beat of the circuitry is the clock signal and it regulates the pace of operation for many circuits therein. In some relatively complex ICs, such as a system-on-chip (SoC), there may be complex systems for communication between different modules of an IC (for example, a processing unit, memories, peripherals, and other dedicated units) so as to ensure observance of the specifications of performance of the system. Indeed, in certain SoC applications, some of the components may operate with different clock speeds.
- In some SoC applications, the IC may include first-in-first-out (FIFO) queues between devices with different clock frequencies. For example, a FIFO queue can be set between a first device, such as a microprocessor, which writes information in the FIFO queue and a second device, such as a peripheral or a second microprocessor, which reads the information from the FIFO queue. Each device reads and writes data in the FIFO queue with a rate equal to that of its own clock. The presence of the FIFO queue serves to enable co-existence of the two domains in the SoC with different clock frequencies. The FIFO queue serves as a buffer for regulating the flow of data between devices that work at different clock speeds.
- Referring to
FIGS. 1-2 , an approach to aFIFO memory queue 200 is now described. TheFIFO memory queue 200 includes a firstwrite logic circuit 201 operating based upon a first clock signal, a secondread logic circuit 202 operating based upon a second clock signal, amemory core 203 coupled between the logic circuits, and apointer synchronization circuit 204 also coupled between the logic circuits. - The
pointer synchronization circuit 204 includes a write enableblock 210 receiving a write enable signal from the firstwrite logic circuit 201, a first binary-to-Gray encoder block 211 coupled to the write enable block, a first flip-flop block 212 coupled to the first binary-to-Gray encoder block, first and second blocks 213 a-213 b coupled in succession to the first flip-flop block, a first Gray-to-binary encoder block 223 coupled to the second block, and afirst compare block 214 coupled to the first Gray-to-binary encoder block and outputting a FIFO empty signal. Thepointer synchronization circuit 204 includes a read enableblock 221 receiving a read pulse from the secondread logic circuit 202, a second Gray-to-binary encoder block 222 coupled to the read enable block, a second binary-to-Gray encoder block 220 coupled to the read enable block, a second flip-fop block 219 coupled to the second binary-to-Gray encoder block, first and second blocks 218 a-218 b coupled in succession to the second flip-flop block, a third Gray-to-binary encoder block 217 coupled to the second block, a fourth Gray-to-binary encoder block 215 coupled to the first flip-flop block 212, and asecond compare block 216 coupled to the third Gray-to-binary encoder block and outputting a FIFO full signal to the firstwrite logic circuit 201. - In this
FIFO memory queue 200, thememory core 203 is written in the first clock domain, and only one location can be pushed in the memory core in a write-domain cycle. The read domain retrieves data from thememory core 203 in the second-clock domain, one location per read-domain cycle. - Generally speaking, a bi-synchronous electronic device may include a FIFO memory circuit, and a first digital circuit coupled to the FIFO memory circuit and configured to operate based upon a first clock signal, and write to the FIFO memory circuit based upon a write pointer. The hi-synchronous electronic device may include a second digital circuit coupled to the FIFO memory circuit and configured to operate based upon a second clock signal different from the first clock signal, and read from the FIFO memory circuit based upon a read pointer. The FIFO memory circuit may be configured to detect a jump in the write pointer to a new position, determine a plurality of jump candidates for the read pointer from a current position, select a jump candidate from the plurality thereof, and synchronize the read pointer based upon the selected jump candidate.
- In particular, each jump candidate may comprise a Gray encoding jump candidate for the read pointer from the current position. The FIFO memory circuit may be configured to select the jump candidate based upon a distance between the new position and respective positions of the plurality of jump candidates. The FIFO memory circuit may be configured to discard jump candidates with respective positions less than the current position and greater than the new position. The FIFO memory circuit may be configured to synchronize the read pointer by Gray encoded incrementing the read pointer from a respective position of the selected jump candidate to the new position. The FIFO memory circuit may be configured to, when an additional jump in the write pointer is detected, determine a second plurality of jump candidates for the read pointer from a respective position of the selected jump candidate.
- In some embodiments, the FIFO memory circuit comprises processing circuitry, and a memory core coupled to the processing circuitry and configured to store data for transfer from the first digital circuit to the second digital circuit. The jump in the write pointer to the new position may comprise a non-consecutive jump from the current position. For example, the FIFO memory circuit may comprise a 16-128 bit bi-synchronous FIFO memory.
- Another aspect is directed to a method of operating a bi-synchronous electronic device comprising a FIFO memory circuit. The method may include using a first digital circuit coupled to the FIFO memory circuit to operate based upon a first clock signal, and write to the FIFO memory circuit based upon a write pointer. The method may include using a second digital circuit coupled to the FIFO memory circuit to operate based upon a second clock signal different from the first clock signal, and read from the FIFO memory circuit based upon a read pointer. The method may further include using the FIFO memory circuit to detect a jump in the write pointer to a new position, determine a plurality of jump candidates for the read pointer from a current position, select a jump candidate from the plurality thereof, and synchronize the read pointer based upon the selected jump candidate.
-
FIG. 1 is a schematic diagram of a FIFO memory queue, according to the prior art. -
FIG. 2 is a schematic diagram of the pointer synchronization circuit from the FIFO memory queue ofFIG. 1 . -
FIG. 3 is a schematic diagram of a bi-synchronous electronic device, according to the present disclosure. -
FIG. 4 is a flowchart illustrating operation of the bi-synchronous electronic device ofFIG. 3 . -
FIG. 5 is a table illustrating operation of the bi-synchronous electronic device ofFIG. 3 . -
FIG. 6 is another flowchart illustrating operation of the bi-synchronous electronic device ofFIG. 3 . -
FIG. 7 is a detailed schematic diagram of the FIFO memory circuit ofFIG. 3 . -
FIG. 8 is a detailed schematic diagram of the bi-synchronous electronic device ofFIG. 3 . - The present disclosure will now be described more fully hereinafter with reference to the accompanying drawings, in which several embodiments of the present disclosure are shown. This present disclosure may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the present disclosure to those skilled in the art. Like numbers refer to like elements throughout.
- In SoC products, such as application processors, microcontrollers, circuitry for mobile and multimedia applications (smartphone/tablets, Set-top Box, Home Gateway, etc.), it is typical to partition the digital logic into different domains. Clock domains are digital sections of the SoC in which the synchronous sequential logic is driven by a dedicated clock. Subsequently, communication between clock domains is designed through hi-synchronous, multi-synchronous or asynchronous techniques that allow signals to cross from the transmitter to the receiver in a safe way (i.e. the signals must be received stable and mutually correlated). In order to guarantee such signals' integrity, clock domain crossing can be poor in terms of latency, expensive in terms of area occupation, dissipative in dynamic power and complex to manage.
- This present disclosure may offer an approach applicable to several semiconductor products, especially when traffic shapes are difficult to predict, and may allow for faster clock-domain crossing by way of an adaptive code sequence to synchronize the pointers of a multi-clock FIFO with improved performance with regards to traditional Gray encoding.
- Referring initially to
FIG. 3 , a bi-synchronouselectronic device 10 according to the present disclosure is now described. The bi-synchronouselectronic device 10 illustratively includes aFIFO memory circuit 12 configured to store data, afirst clock 14 generating a first clock signal, and a firstdigital circuit 11 coupled to the FIFO memory circuit and the first clock. The bi-synchronouselectronic device 10 illustratively includes asecond clock 15 generating a second clock signal, and a seconddigital circuit 13 coupled to theFIFO memory circuit 12 and the second clock. - The
FIFO memory circuit 12 illustratively includesprocessing circuitry 16, and amemory core 17 coupled to the processing circuitry and configured to store data for transfer between the first and seconddigital circuits FIFO memory circuit 12 may comprise a 16-128 bit bi-synchronous FIFO memory. - The first
digital circuit 11 is coupled to theFIFO memory circuit 12 and configured to operate based upon the first clock signal, and write to the FIFO memory circuit based upon a write pointer. The seconddigital circuit 13 is coupled to theFIFO memory circuit 12 and configured to operate based upon the second clock signal, the second clock signal being different from the first clock signal, and read from the FIFO memory circuit based upon a read pointer. - During data transfer from the first
digital circuit 11, theFIFO memory circuit 12 is configured to detect a jump in the write pointer to a new position. For example, the jump in the write pointer may be the result of a data burst from the firstdigital circuit 11. TheFIFO memory circuit 12 is configured to determine a plurality of jump candidates for the read pointer from a current position. In particular, each jump candidate may comprise a Gray encoding jump candidate for the read pointer from the current position, i.e. the new location does not violate Gray encoding rules. - The
FIFO memory circuit 12 is configured to select a jump candidate from the plurality thereof. More specifically, theFIFO memory circuit 12 may be configured to select the jump candidate based upon a distance between the new position and respective positions of the plurality of jump candidates. TheFIFO memory circuit 12 may be configured to discard jump candidates with respective positions less than the current position and greater than the new position. - The
FIFO memory circuit 12 is configured to synchronize the read pointer based upon the selected jump candidate. TheFIFO memory circuit 12 may be configured to synchronize the read pointer by Gray encoded incrementing (within Gray encoding rules) the read pointer from a respective position of the selected jump candidate to the new position. - In some embodiments (
FIG. 6 ), theFIFO memory circuit 12 may be configured to, when an additional jump in the write pointer is detected, determine a second plurality of jump candidates for the read pointer from a respective position of the selected jump candidate. The jump in the write pointer the new position may comprise a non-consecutive jump from the current position. - Another aspect is directed to a method of operating a bi-synchronous
electronic device 10 comprising aFIFO memory circuit 12. The method may include using a firstdigital circuit 11 coupled to theFIFO memory circuit 12 to operate based upon a first clock signal, and write to the FIFO memory circuit based upon a write pointer. The method may include using a seconddigital circuit 13 coupled to theFIFO memory circuit 12 to operate based upon a second clock signal different from the first clock signal, and read from the FIFO memory circuit based upon a read pointer. The method may further include using theFIFO memory circuit 12 to detect a jump in the write pointer to a new position, determine a plurality of jump candidates for the read pointer from a current position, select a jump candidate from the plurality thereof, and synchronize the read pointer based upon the selected jump candidate. - Advantageously, the bi-synchronous
electronic device 10 may improve the performance of the synchronization mechanism without any change in the typical structure of the multi-clock FIFO. In particular, the bi-synchronouselectronic device 10 may perform better than the prior art in terms of bandwidth usage. The bi-synchronouselectronic device 10 may possess flexibility that makes it suitable for several traffic categories in multi-clock designs: the Gray encoder is removed from the synchronization chain and a convenient sequence is inferred according to an adaptive algorithm that allows the disclosed embodiments to handle non-constant traffic in a simple way (e.g. exploiting the pointer jumps). Such improvements may be valuable in many fields of application, and particularly, for SoC peripherals, whose traffic is often driven by the user, can be hard to predict and can require some data manipulation (e.g. re-ordering). - Referring now additionally to
FIGS. 4-5 , aflowchart 20 and a table 30 illustrate exemplary operation of the bi-synchronouselectronic device 10. In this illustrated operational example, the write pointer increments normally, i.e. Gray-like, through memory locations 0-4 21 a-21 e and jumps frommemory location 4 21 f tonew memory location 13 21 g. The seconddigital circuit 13 determines a plurality ofjump candidates 22 a-22 e, and selects the best one based upon distance to the new position (e.g., illustrated 01010memory location 21 f). The seconddigital circuit 13 then increments normally in Gray encoded fashion tofinal memory location 21 g. - Gray encoding is suitable for synchronization because two consecutive encoded values have unitary Hamming distance (i.e. only one bit changes between a code word and the following one). Given a code word, typical Gray encoding is only one in a set of legal binary words: it corresponds in particular to a binary “+1” operation on unsigned vectors. Assuming the write pointer (FIFO pointer) jumps from a value to a non-consecutive one (e.g. the illustrated jump from 4 to 13), by exploring the set of legal words (i.e. all the words whose Gray equivalent differs by one bit only), a group of jump candidates exists 22 a-22 e, among which, according to the current Gray pointer value and the desired binary destination, a
convenient code word 21 f is always available (the worst case being the “+1” value itself). - The bi-synchronous
electronic device 10 considers letting the binary pointer span any count sequence and driving the convergence of the synchronization by way of Gray-like correlation-safe jumps (i.e. generating the set of candidates and choosing the most appropriate among them). The algorithm is adaptive, because it can always rely on new jump opportunities on any following cycle. The binary pointer jumps from 4 to 13. - By considering the Gray equivalent of
decimal 4, for its code word, there are 5 possible jumps. Code words corresponding to values that are greater than the target memory location (e.g.memory location 27 22 e is greater thanmemory location 13 21 g) or smaller than the starting point (e.g. memory location 3 22 c is smaller thanmemory location 4 21 e) are discarded. Among the remaining jumps, the most suitable one is selected (e.g. the illustratedmemory location 11 22 d). At least one path to the target is always present by construction: the existence of the “+1” operation is ensured and allows the algorithm to converge to the desired value under any circumstance, while the jumps allow it to speed up the process. - Referring now additionally to
FIG. 6 , aflowchart 50 illustrates another exemplary operation of the bi-synchronouselectronic device 10, and is similar to that ofFIG. 4 . In this illustrated example, while the read pointer synchronizes to the new jump position atmemory location 13 21 g, theFIFO memory circuit 12 detects the write pointer making a second jump tomemory location 22 21 h. TheFIFO memory circuit 12 determines a second plurality of jump candidates 23 a-23 e for the read pointer from a respective position of the selectedjump candidate 23 e from the first plurality ofjump candidates 22 a-22 e. TheFIFO memory circuit 12 selects asecond jump candidate 23 e atmemory location 20, and increments normally in Gray encoded fashion throughposition 21 f tofinal memory location 21 h. Advantageously, new jump opportunities arise from any new code word, so that the path to the target is dynamically recomputed at any cycle, according to the traffic shape (adaptive algorithm). - Referring now to
FIG. 7 , an exemplary hardware embodiment of theFIFO memory circuit 12 is now described. ThisFIFO memory circuit 12 illustratively includesprocessing circuitry 31 comprising aGray encoding block 32, and aselect Gray block 33 coupled thereto. ThisFIFO memory circuit 12 illustratively includes apointer block 34 coupled to theselect Gray block 33, apointer Gray block 35 coupled to the processing circuitry, a bruteforce synchronizer block 36 coupled to the pointer Gray block, a pointerGray synchronizer block 37 coupled to the brute force synchronizer block, aGray decoder block 38 coupled to the pointer Gray synchronizer block, and apointer synchronizer block 39 coupled to the Gray decoder block. -
FIG. 7 discloses the core block (processing circuitry 31) as an encoder-equivalent circuit comprising a candidate generator (Gray encoding block 32) and a candidate selector (select Gray block 33). More detail on the core block is shown inFIG. 8 . - The core block makes use of the current binary pointer value (pointer block 34) to generate a Gray-like pointer (pointer Gray block 35). In particular, the core block acts as a typical Gray encoder, but for the fact that it is able to provide a convenient adaptive sequence. The brute-force synchronizer (brute force synchronizer block 36) bridges the Gray-like pointer to the read domain and into a synchronized Gray-like pointer (pointer Gray synchronizer block 37). The traditional Gray decoder (Gray decoder block 38) detects the synchronized pointer binary value (pointer synchronizer block 39).
- Referring now to
FIG. 8 , an exemplary hardware embodiment of theprocessing circuitry 31 is now described. Theprocessing circuitry 31 illustratively includes a pointer Gray block 51 (Gray follower), a plurality of NOT blocks 52 a-52 c (1-bit inversion) coupled to the pointer Gray Block, a plurality of Gray decoders 53 a-53 c respectively coupled to the plurality of NOT blocks, a plurality of Out-of-Range blocks 54 a-54 c (software programmable thresholds) coupled respectively to the plurality of Gray decoders, a pointer block 56 (binary target) coupled to the plurality of Out-of-Range blocks, and a priority arbiter 55 (software programmable) coupled to the plurality of Out of Range blocks and generating a selected code (next value of the Gray follower). - This exemplary hardware embodiment includes software-programmable thresholds (i.e. a maximum allowed jump) and a
priority arbiter 55. No Gray encoders (just decoders 53 a-53 c) are required at any stage of the synchronization chain, because the codes are generated by single-bit inversions. - Many modifications and other embodiments of the present disclosure will come to the mind of one skilled in the art having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is understood that the present disclosure is not to be limited to the specific embodiments disclosed, and that modifications and embodiments are intended to be included within the scope of the appended claims.
Claims (22)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/508,321 US9311975B1 (en) | 2014-10-07 | 2014-10-07 | Bi-synchronous electronic device and FIFO memory circuit with jump candidates and related methods |
CN201520777288.3U CN205375448U (en) | 2014-10-07 | 2015-10-08 | Two synchronous electronic equipment and FIFO memory circuit |
CN201510647202.XA CN105487836B (en) | 2014-10-07 | 2015-10-08 | Band jumps candidate double synchronous electronic equipments and FIFO memory circuit and correlation technique |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/508,321 US9311975B1 (en) | 2014-10-07 | 2014-10-07 | Bi-synchronous electronic device and FIFO memory circuit with jump candidates and related methods |
Publications (2)
Publication Number | Publication Date |
---|---|
US20160099032A1 true US20160099032A1 (en) | 2016-04-07 |
US9311975B1 US9311975B1 (en) | 2016-04-12 |
Family
ID=55633232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/508,321 Active US9311975B1 (en) | 2014-10-07 | 2014-10-07 | Bi-synchronous electronic device and FIFO memory circuit with jump candidates and related methods |
Country Status (2)
Country | Link |
---|---|
US (1) | US9311975B1 (en) |
CN (2) | CN205375448U (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IT201800003008A1 (en) * | 2018-02-23 | 2019-08-23 | St Microelectronics Srl | A BINARY TO GRAY CONVERSION CIRCUIT, RELATED FIFO MEMORY, INTEGRATED CIRCUIT AND PROCEDURE |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9311975B1 (en) * | 2014-10-07 | 2016-04-12 | Stmicroelectronics S.R.L. | Bi-synchronous electronic device and FIFO memory circuit with jump candidates and related methods |
CN112084730B (en) * | 2020-09-11 | 2024-04-05 | 昇显微电子(苏州)股份有限公司 | Method for improving Asynchronous FIFO support of non-2 power depth |
CN115604198B (en) * | 2022-11-29 | 2023-03-10 | 珠海星云智联科技有限公司 | Network card controller, network card control method, equipment and medium |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE503316C2 (en) * | 1994-04-19 | 1996-05-13 | Ericsson Telefon Ab L M | Method for monitoring a memory and circuitry for this |
US7082504B2 (en) * | 2002-07-19 | 2006-07-25 | Edmundo Rojas | Method and apparatus for asynchronous read control |
EP2026493A1 (en) * | 2007-08-16 | 2009-02-18 | STMicroelectronics S.r.l. | Method and systems for mesochronous communications in multiple clock domains and corresponding computer program product |
CN100549938C (en) * | 2007-11-28 | 2009-10-14 | 北京中星微电子有限公司 | FIFO control circuit and control method |
US8458427B2 (en) * | 2010-02-26 | 2013-06-04 | Stmicroelectronics S.R.L. | Synchronization system and related integrated circuit |
US9311975B1 (en) * | 2014-10-07 | 2016-04-12 | Stmicroelectronics S.R.L. | Bi-synchronous electronic device and FIFO memory circuit with jump candidates and related methods |
-
2014
- 2014-10-07 US US14/508,321 patent/US9311975B1/en active Active
-
2015
- 2015-10-08 CN CN201520777288.3U patent/CN205375448U/en not_active Withdrawn - After Issue
- 2015-10-08 CN CN201510647202.XA patent/CN105487836B/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IT201800003008A1 (en) * | 2018-02-23 | 2019-08-23 | St Microelectronics Srl | A BINARY TO GRAY CONVERSION CIRCUIT, RELATED FIFO MEMORY, INTEGRATED CIRCUIT AND PROCEDURE |
EP3531560A1 (en) * | 2018-02-23 | 2019-08-28 | STMicroelectronics Srl | A binary-to-gray conversion circuit, related fifo memory, integrated circuit and method |
CN110187918A (en) * | 2018-02-23 | 2019-08-30 | 意法半导体股份有限公司 | Binary system is to Gray's conversion circuit, relevant FIFO memory, integrated circuit and method |
US10635394B2 (en) | 2018-02-23 | 2020-04-28 | Stmicroelectronics S.R.L. | Binary-to-gray conversion circuit, related FIFO memory, integrated circuit and method |
Also Published As
Publication number | Publication date |
---|---|
CN205375448U (en) | 2016-07-06 |
CN105487836B (en) | 2019-08-20 |
CN105487836A (en) | 2016-04-13 |
US9311975B1 (en) | 2016-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9363071B2 (en) | Circuit to recover a clock signal from multiple wire data signals that changes state every state cycle and is immune to data inter-lane skew as well as data state transition glitches | |
US7020757B2 (en) | Providing an arrangement of memory devices to enable high-speed data access | |
US9311975B1 (en) | Bi-synchronous electronic device and FIFO memory circuit with jump candidates and related methods | |
US10103830B2 (en) | Latency-optimized physical coding sublayer | |
KR102357899B1 (en) | Method and apparatus for valid encoding | |
WO2013001631A1 (en) | Transmission device, transmission circuit, transmission system, and method for controlling transmission device | |
US9154291B2 (en) | Differential signal skew adjustment method and transmission circuit | |
US6509851B1 (en) | Method for using a recovered data-encoded clock to convert high-frequency serial data to lower frequency parallel data | |
US9672008B2 (en) | Pausible bisynchronous FIFO | |
US10320593B2 (en) | Receiver for data communication | |
JP4917901B2 (en) | Receiver | |
US7692564B2 (en) | Serial-to-parallel conversion circuit and method of designing the same | |
US20160099031A1 (en) | Bi-synchronous electronic device with burst indicator and related methods | |
US9286260B2 (en) | Serial-to parallel converter using serially-connected stages | |
WO2018214856A1 (en) | Method and device for data processing | |
US10090965B2 (en) | Electronic circuit and method for transferring data between clock domains | |
US20210367908A1 (en) | Wide Elastic Buffer | |
KR101370606B1 (en) | Bus encoding device to minimize the switching and crosstalk delay | |
US8707080B1 (en) | Simple circular asynchronous clock domain crossing technique for digital data | |
WO2019125265A1 (en) | Method, system and computer program for synchronizing data streams with unknown delay | |
JP2017501493A (en) | CCIe receiver logic register write using only receiver clock | |
JP2009043195A (en) | Data transmitter, data receiver, data transfer device, and electronic equipment | |
US20120020438A1 (en) | Reception apparatus | |
JP2010130060A (en) | Data transfer system | |
JPWO2013001631A1 (en) | TRANSMISSION DEVICE, TRANSMISSION CIRCUIT, TRANSMISSION SYSTEM, AND TRANSMISSION DEVICE CONTROL METHOD |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: STMICROELECTRONICS S.R.L., ITALY Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ROSSELLI, SALVATORE MARCO;GUARNACCIA, GIUSEPPE;MARI, UGO;SIGNING DATES FROM 20140807 TO 20140808;REEL/FRAME:033910/0666 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
AS | Assignment |
Owner name: STMICROELECTRONICS INTERNATIONAL N.V., SWITZERLAND Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:STMICROELECTRONICS S.R.L.;REEL/FRAME:061828/0243 Effective date: 20221025 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |