US20110062987A1 - Asynchronous conversion circuitry apparatus, systems, and methods - Google Patents
Asynchronous conversion circuitry apparatus, systems, and methods Download PDFInfo
- Publication number
- US20110062987A1 US20110062987A1 US12/559,069 US55906909A US2011062987A1 US 20110062987 A1 US20110062987 A1 US 20110062987A1 US 55906909 A US55906909 A US 55906909A US 2011062987 A1 US2011062987 A1 US 2011062987A1
- Authority
- US
- United States
- Prior art keywords
- asynchronous
- synchronous
- circuitry
- data path
- coupled
- 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
- 238000006243 chemical reaction Methods 0.000 title claims description 75
- 238000000034 method Methods 0.000 title abstract description 37
- 230000001360 synchronised effect Effects 0.000 claims abstract description 139
- 230000015654 memory Effects 0.000 claims description 81
- 239000000872 buffer Substances 0.000 claims description 27
- 230000000694 effects Effects 0.000 claims description 9
- 238000005070 sampling Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 19
- 230000008569 process Effects 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 20
- 238000013461 design Methods 0.000 description 9
- 238000003491 array Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008713 feedback mechanism Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000036772 blood pressure Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/12—Synchronisation of different clock signals provided by a plurality of clock generators
Definitions
- asynchronous circuit designs offer advantages over synchronous designs, such as performance and power benefits.
- ASIC Application Specific Integrated Circuit
- FIG. 1 is a block diagram of an apparatus according to various embodiments of the invention.
- FIG. 2 illustrates an apparatus that includes multiple memory arrays as core circuits according to various embodiments of the invention
- FIG. 3 is a block diagram of width/depth reconfiguration circuitry for an asynchronous memory apparatus according to various embodiments of the invention
- FIG. 4 is a block diagram of input alignment circuitry according to various embodiments of the invention.
- FIG. 5 is a block diagram of reset circuitry forming part of the synchronous data path according to various embodiments of the invention.
- FIG. 6 is a block diagram of reset circuitry forming part of the asynchronous data path according to various embodiments of the invention.
- FIG. 7 is a block diagram of output feedback circuitry with alignment according to various embodiments of the invention.
- FIG. 8 is a block diagram of output feedback circuitry with serial buffers according to various embodiments of the invention.
- FIG. 9 is a block diagram of port coordination circuitry according to various embodiments of the invention.
- FIG. 10 is a flow diagram illustrating various methods according to various embodiments of the invention.
- FIG. 11 is a block diagram of a system according to various embodiments of the invention.
- synchronous circuits for many applications have already been developed.
- the various embodiments described herein are directed toward solving the technical problem of using synchronous core circuitry in asynchronous application environments. This can be accomplished, for example, by incorporating synchronous circuitry (e.g., in the form of one or more application-specific integrated circuit (ASIC) blocks) within an asynchronous system.
- synchronous circuitry e.g., in the form of one or more application-specific integrated circuit (ASIC) blocks
- ASIC application-specific integrated circuit
- synchronous memory array circuitry is widely available and has been extensively developed.
- Asynchronous field-programmable gate arrays are also available.
- the synchronous core memory circuitry e.g., a random access memory, or RAM
- RAM random access memory
- FIG. 1 is a block diagram of an apparatus 100 according to various embodiments of the invention, using a RAM core circuit 105 as the illustrative example. While a RAM is shown herein as a matter of convenience and for clarity, other synchronous core circuits, such as processors, registers, etc. can be used in lieu of the RAM. Thus, the use of a RAM for the core circuit 105 is done for reasons of simplicity, and not limitation.
- Asynchronous data 120 enters the apparatus 100 as asynchronous data tokens and is converted into synchronous signals that are fed into a conventional synchronous RAM core circuit 105 .
- the output data 122 of the core circuit 105 then go through some additional synchronous circuitry, becoming revised synchronous data 123 , before being converted back into asynchronous data 124 tokens, which leave the apparatus 100 .
- the apparatus 100 performs some amount of processing on the input data 120 and output data 124 to implement various specified operations. This processing can happen in the asynchronous or synchronous domain, along the input or output data paths 126 , 128 .
- the external interface to the apparatus 100 can have multiple ports.
- an input port 132 is shown to receive the input data 120
- an output port 134 is shown to provide the output data 124 .
- Other input and output ports 136 , 138 may also exist, so that an apparatus has one or more input ports 132 , 136 and one or more output ports 134 , 138 , for example.
- Each port has a set of operations it can perform within the apparatus 100 , possibly changing the state of the apparatus 100 in the process. In cases where there are more than one port, communication within the apparatus 100 may occur to preserve temporal relationships between the operations performed by different ports. When this occurs, the ports involved are said to be “related”. In the case of a synchronous RAM used as the core circuit 105 , the ports 132 , 134 of the apparatus 100 operate in the following way.
- Data 120 tokens for the various apparatus inputs arrive at the apparatus 100 asynchronous input boundary port 132 , using the asynchronous data path 101 without any guarantee as to their timing. These tokens go through some alignment circuitry 102 , which operates to verify that all of the inputs needed for a given operation have arrived. After proceeding through the alignment circuitry 102 and being converted to synchronous data using asynchronous to synchronous conversion circuitry 103 , the input data can enter the synchronous domain, using the synchronous data path 104 . At this point, the RAM input data can be used to drive the synchronous core circuit 105 , in this case, comprising a RAM.
- the synchronous core circuit 105 in this case, comprising a RAM.
- Control circuitry 109 can operate to receive a signal 140 that the alignment circuitry 102 has verified that a sufficient number of the input tokens have arrived. In some cases, this means that all available input tokens have arrived at the alignment circuitry 102 .
- the control circuit 109 can also operate to receive one or more signals 142 that indicate that the apparatus outputs at port 134 are ready for another operation.
- the control circuitry 109 can operate to receive feedback from one or more other ports (e.g., port 138 for a multi-port apparatus 100 , such as a multi-port asynchronous RAM) indicating port status, for operating modes where synchronized operations between ports are useful.
- the control circuitry 109 can operate to produce signals (e.g., core clock pulses 146 ) that trigger the core circuit 105 , resulting in the production of synchronous output data 122 that are transmitted along the synchronous data path 106 .
- This output data 122 after traveling through the synchronous data path 106 and being converted to revised synchronous data 123 , is converted to asynchronous tokens 148 by synchronous-to-asynchronous conversion circuitry 107 , before arriving at the asynchronous data path 108 , on the way to the output port 134 .
- the control circuitry 109 may also produce signals that are transmitted to other ports (e.g., port 136 ) that communicate the status of the operation conducted at the port 134 , permitting the implementation of synchronized port operations.
- the circuitry 108 may operate to signal the control circuitry 109 , using a feedback signal 142 , to indicate that the output tokens 148 have been generated, and that the apparatus 100 is ready to accept the next operation.
- FIG. 2 illustrates an apparatus 200 that includes multiple memory arrays as core circuits 105 according to various embodiments of the invention.
- the apparatus 200 may comprise an FPGA, for example, that includes multiple core circuits 105 .
- multiple synchronous memory arrays operate as a multi-port asynchronous RAM comprising a number of core circuits 105 , operated by a corresponding number of apparatus 100 (see FIG. 1 ).
- the apparatus 200 may comprise a programmable dual-port asynchronous static RAM (SRAM) block memory (BRAM) in a fast asynchronous FPGA.
- the BRAM can be operated as an 18 k RAM with a variety of combinations of widths and depths (e.g., 512 ⁇ 36-bit, 1 k ⁇ 18-bit, 2 k ⁇ 9-bit, 4 k ⁇ 4-bit, 8 k ⁇ 2-bit, and 16 k ⁇ 1-bit), supporting different output modes (e.g., write-first or no-change) and synchronization between the two ports.
- a port can either be a true read/write port, with the ability to both write into and read out of the port, or only a write port, or only a read port. Because the BRAM is a component in an FPGA, it has various parameters that can be statically or dynamically configured for different designs. These parameters may include the width and depth of the BRAM, how it updates its outputs while it issues write operations, and how the ports interact.
- the BRAM may thus be configured in a number of ways. Therefore, the following explanation of inputs, outputs, and operations is by way of explanation and not limitation.
- the BRAM may also be configured to comprise the following outputs per port:
- SRAM core circuit 105 implemented as a 512 ⁇ 36 SRAM array with numerous inputs and outputs for each port.
- the relevant inputs and outputs may be listed as:
- the BRAM can be configured to implement the following combinations of depth and width: 512 ⁇ 36, 1 k ⁇ 18, 2 k ⁇ 9, 4 k ⁇ 4, 8 k ⁇ 2, and 16 k ⁇ 1.
- the BRAM can implement different policies for driving the dout bits while performing a write.
- write-first mode the dout bits can be updated with the values being written to the BRAM on the same cycle (i.e., the values on din).
- no-change mode the value provided by dout does not change when the BRAM is being written. It should be noted that these techniques may be used to vary the width and depth of access to data within the core circuit 105 (when implemented as a memory array) and can be applied to BRAMs and SRAM arrays with different types and numbers of inputs and outputs.
- Additional circuitry can be used in the apparatus 100 and 200 to provide such functionality.
- This circuitry operates to: route and modify the inputs of the BRAM and the outputs of the core circuit 105 SRAM array such that the BRAM implements the functionality (depth, width, output-during-write policy, etc.) for which it has been programmed; and present an asynchronous interface to the environment in which the apparatus 100 , 200 is implemented.
- FIG. 3 is a block diagram of width/depth reconfiguration circuitry 300 for an asynchronous memory apparatus according to various embodiments of the invention.
- SRAM core circuit 305 To implement programmable width and depth, supporting a variety of logical configurations, the reader is invited to consider the use of an SRAM core circuit 305 .
- the SRAM core circuit 305 has a fixed set of nine address bits and, therefore, natively supports a 512 ⁇ 36 bit memory configuration. Nevertheless, other access modes can be emulated by utilizing the SRAM core circuit 305 36-bit-wise write enable we signal and adding logic to copy and route synchronous data to/from the SRAM core circuit 305 .
- the number of BRAM address bits visible to the user can be extended to fourteen bits (one extra bit for each additional mode, to support the enlarged address space).
- Logic can be introduced which automatically converts the additional address bits into a corresponding 36-bit write enable we signal, to support the reduced width of the data path entering the fixed 36-bit wide SRAM core circuit 305 .
- the lowest-order N bits of the BRAM data inputs (where N corresponds to the logical BRAM width) can be copied into appropriate higher-order bit positions.
- the appropriate group of N bits of the SRAM core circuit 305 output can be routed to the lower-order bit positions.
- the input data path can be used to accomplish the following operations:
- the copy block 310 takes the N-bit wide BRAM data input (where N corresponds to the logical BRAM width) and copies it multiple times to create a 36-bit signal for the SRAM core circuit 305 data input.
- the exact number of copies depends on the selected logical BRAM width. For example, in 1 k ⁇ 18 mode, the copy block 310 copies the lower eighteen bits [0 . . . 17] into the upper eighteen bits [18 . . . 35], while in 2 k ⁇ 9 mode, the copy block 310 operates to copy the lower nine bits [0 . . . 8] to positions [9 . . . 17], [18 . . . 26], and [27 . . . 35].
- the 14-bit BRAM address bus 314 splits into two separate buses 316 , 318 .
- the upper nine bit bus 316 feed directly into the SRAM core circuit 305 address input, while the lower five bit bus 318 fans out into write enable and routing blocks 322 , 324 .
- the write enable block 322 generates write enable (we) signals for the core circuit 305 based on the values of the BRAM's byte enable (be) and the lower five bits of the address on the bus 318 .
- the routing block 324 selects which group of the SRAM core circuit 305 36-bit output will be copied to the N-bit output of the BRAM. For example, in 1 k ⁇ 18 mode, if the most significant byte of the five bits on the bus 318 of the address input is 1, the routing block 324 can route the upper eighteen bits of the SRAM core circuit 305 output to the output of the BRAM.
- the copy and write enable blocks 310 and 322 can form a part of the asynchronous data path 101 or the synchronous data path 106
- routing block 324 can form a part of the synchronous data path 106 or the asynchronous data path 108 . Both placements can provide equivalent functionality and either one can be chosen.
- the path 330 that includes address bits transmitted to the routing block 324 uses a stage comprising flops that are driven off the same clock as the SRAM core circuit 305 clock, to match the pipelining through the SRAM core circuit 305 , and ensure that the address information arrives at the routing block 324 on the correct cycle.
- FIG. 4 is a block diagram of input alignment circuitry 400 according to various embodiments of the invention.
- the use of a synchronous memory array to provide an asynchronous BRAM as an example application will be continued.
- accesses to the BRAM involve converting signals from/to asynchronous and synchronous representations. For example, to write data into the BRAM, the BRAM's asynchronous data and address inputs are converted into synchronous signals that enter the synchronous core circuit 105 . A synchronous clock signal to perform a memory write operation using the core circuit 105 is also generated.
- Asynchronous to synchronous conversion can be performed in two parts.
- alignment circuitry 400 is used to ensure all needed data has arrived at the boundary between asynchronous and synchronous domains so that conversion can begin.
- asynchronous buffers 410 with completion output signals 414 and a completion tree 418 can be used. Whenever each buffer 410 has data ready on its output, the buffer 410 can assert a completion signal 414 to indicate that the output is ready.
- Completion tree elements 422 operate to collect completion signals 414 from each buffer 410 and generate output tokens 424 whenever all of the inputs have arrived.
- the output tokens 424 of some completion elements 422 may feed into the inputs of other completion elements 422 at the second level of the completion tree 418 .
- Second level output tokens 424 may feed into third level completion element inputs, and so on.
- the final completion element 426 asserts the final output completion signal 428 only after all of the buffers 410 indicated that their outputs are ready.
- FIG. 1 demonstrates a high-level view of the conversion process.
- the alignment circuitry 102 asserts its output data signals 150 and produces a completion signal 140 when all data on all channels are ready.
- Control circuitry 109 receives the completion signal 140 and generates a clock signal 152 for asynchronous-to-synchronous conversion circuitry 103 .
- the clock signal 152 After the clock signal 152 is received, it can be used to sample the value of the input data signals 150 , and to convert the data from an asynchronous to a synchronous representation.
- the resulting synchronous information 154 can be provided to the synchronous data path 104 .
- the asynchronous-to-synchronous conversion circuitry 103 acknowledges receipt of the resulting data on its asynchronous input channels.
- Control circuitry 109 coordinates the timing of clock signals for the asynchronous-to-synchronous conversion circuitry 103 and the core circuit 105 to ensure signals are valid before being sampled.
- Clock signals 146 , 152 can be transmitted to the core circuit 105 and the asynchronous-to-synchronous conversion circuitry 103 in at least two ways.
- the control circuitry 109 first sends a clock signal 152 to the asynchronous-to-synchronous conversion circuitry 103 , allowing synchronous information 154 to propagate through the synchronous data path 104 , and then the control circuitry 109 can send a clock signal 146 to the core circuit 105 .
- the control circuitry 109 can first send a clock signal to the core circuit 105 , sample the value of synchronous path data 155 provided during the previous cycle, and then the control circuitry 109 can send a clock signal 152 to the asynchronous-to-synchronous conversion circuitry 103 .
- the core circuit 105 will receive new values only when the next signals 150 arrive at the asynchronous-synchronous conversion boundary. Both of these clock timing schemes will result in correct operation, and the choice depends on specific implementation trade-offs made by designers of the various embodiments.
- appropriate address bits should be set, and the write enable signal de-asserted. These signals are converted into synchronous signals by the asynchronous-to-synchronous conversion circuitry 103 and then sampled by the core circuit 105 . After the core circuit 105 samples the address and de-asserted write enable information, the core circuit 105 can operate to provide the appropriate memory value on the output synchronous data path 106 .
- the output data 122 can be routed within the synchronous data path 106 to support a specific memory configuration for data width and depth, as described previously.
- FIG. 5 is a block diagram of reset circuitry 500 forming part of the synchronous data path 106 according to various embodiments of the invention.
- the output data 148 should comprise output reset data values instead of memory content values.
- each bit of the output data 122 goes through a multiplexer 510 controlled by the reset signal ssrn.
- the multiplexer 510 has two inputs: one input contains the value of the data 122 read from the memory core circuit 105 , and another input contains reset data values 514 .
- the reset signal ssrn When the reset signal ssrn is asserted, the multiplexer 510 operates to propagate the reset data values 514 as revised synchronous data 123 . If the reset signal ssrn is deasserted, the multiplexer 510 operates to propagate data 122 values read from the memory core circuit 105 .
- FIG. 6 is a block diagram of reset circuitry 600 forming part of the asynchronous data path 108 according to various embodiments of the invention.
- a multiplexer 610 forms a part of the asynchronous data path 108 , to provide the value of data 148 read out of the memory core circuit 105 , or reset data values 614 , based on the state of the reset signal ssrn.
- the placement of the reset circuitry 500 , 600 in FIGS. 5 and 6 can provide equivalent functionality and either one can be chosen by the designer of various embodiments.
- the output data at the port 134 can be procured during write-first and no-change read modes.
- the dout bits are updated with the values written to the BRAM on the same cycle (i.e., the values on din).
- the no-change mode the values on dout do not change when the BRAM is written.
- the dout bits of the core circuit 105 are updated with the values written into it on the same cycle, so the write-first mode is provided by default.
- a register or other storage circuit 518 that stores the last data 122 values output by the core circuit 105 output during a read operation can be implemented.
- the storage circuit 518 can be used to repeat the value of the data 122 last read from the BRAM.
- the storage circuit 518 can be controlled in some embodiments by the write enable we signal.
- FIG. 7 is a block diagram of output feedback circuitry 700 with alignment according to various embodiments of the invention.
- the synchronous-to-asynchronous conversion circuitry 107 converts synchronous signals from the output synchronous data path 106 into asynchronous tokens 148 .
- the synchronous-to-asynchronous conversion circuitry 107 receives a clock signal 156 from the control circuitry 109 , it samples the information provided by the synchronous data path 106 .
- the synchronous-to-asynchronous conversion circuitry 107 sends the asynchronous data tokens 148 on its output, completes an asynchronous handshake, and waits for the next clock signal 156 from the control circuitry 109 . It should be noted that even if the asynchronous data path 108 is ready to accept more tokens 148 before the next clock signal 156 arrives, the synchronous-to-asynchronous conversion circuitry 107 will not produce more tokens. The conversion process repeats after the next clock signal 156 is received from control circuitry 109 .
- the control circuitry 109 sends a (read) clock signal 156 to the synchronous-to-asynchronous conversion circuitry 107 , the asynchronous data path 108 should be ready to accept data tokens 148 . If no feedback mechanism is provided, then the synchronous-to-asynchronous conversion circuitry 107 can erroneously drop output tokens 148 when the input data path 126 of the BRAM implementation produces tokens faster than the speed at which the output data path 128 can consume them. Therefore, feedback can be used to keep track of all output data channels by sending a token to the control circuitry 109 when all output channels of the synchronous-to-asynchronous conversion circuitry 107 are ready to accept new data from the synchronous data path 106 .
- the clock signal 156 from the control circuitry to the synchronous-to-asynchronous conversion circuitry 107 can be replaced with an asynchronous data channel 710 , with output alignment added to the output of the synchronous-to-asynchronous conversion circuitry 107 (e.g., using one or more completion elements 422 ).
- the asynchronous data channel 710 provides flow control, and prevents the control circuitry 109 from issuing clock signals 156 until the completion element 422 indicates that all output channels of the synchronous-to-asynchronous conversion circuitry 107 are ready to accept data.
- Output alignment can thus be implemented as a completion element 422 with 36 inputs in the case of the memory implementation described herein, to indicate asynchronous acknowledgement for all 36 output data channels.
- the output of the completion element 422 can fan out (as an output acknowledge signal) to all 36 outputs of the synchronous-to-asynchronous conversion circuitry 107 .
- the completion element 422 can assert a ready signal, causing the synchronous-to-asynchronous conversion circuitry 107 to send a feedback signal to the control circuitry 109 .
- the control circuitry 109 receives the feedback signal, waits for all other control inputs of the next cycle to arrive, and then generates a new read token signal for the synchronous-to-asynchronous conversion circuitry 107 .
- FIG. 8 is a block diagram of output feedback circuitry 800 with serial buffers 810 according to various embodiments of the invention.
- This circuitry 800 provides an alternative implementation of the feedback mechanism shown in FIG. 7 .
- several asynchronous buffers 810 e.g., first-in, first-out (FIFO) elements
- FIFO first-in, first-out
- the output alignment and asynchronous feedback channel for the control circuitry 109 have been moved to the last buffer 820 in the chain of buffers 810 .
- Output alignment can again be implemented using a conventional completion element, this time having 37 inputs that complete asynchronous enables for all 36 output data channels and for the control token on the feedback path.
- the output of the completion element 422 fans out (as an output enable signal) to all 36 outputs of the buffer 820 .
- the output buffer 820 sends a control token back to the control circuitry 109 .
- the control circuitry 109 receives the feedback token and all control tokens, it produces the clock signal 156 for the synchronous-to-asynchronous conversion circuitry 107 to sample output data provided by the core circuit 105 .
- the control circuitry 109 generates clock signals 152 , 146 , and 156 for the asynchronous-to-synchronous conversion circuitry 103 , the core circuit 105 , and the synchronous-to-asynchronous conversion circuitry 107 , respectively.
- the control circuitry 109 can operate to generate these signals when at least some of the following conditions are met:
- the control circuitry 109 can operate to generate the clock signals 146 , 152 , 156 . For example, if the BRAM is operating in related mode, the control circuit 109 may operate to send an operation completion token to the other port(s) 136 , 138 of other apparatus. Afterward, the control circuitry 109 may operate to complete asynchronous handshakes on all asynchronous data channels, and wait for the next cycle.
- FIG. 9 is a block diagram of port coordination circuitry 900 according to various embodiments of the invention.
- the operations of multiple apparatus 100 ′, 100 ′′ having control of different ports of the BRAM are coordinated with each other.
- control patterns pat′ and pat′′, as well as coordination signals provided by ports 136 and 138 are used.
- control circuitry 109 ′ in a first apparatus 100 ′ can communicate with control circuitry 109 ′′ in a second apparatus 100 ′′.
- asynchronous data channels are depicted with wide arrows and generated clock signals are shown as narrow arrows.
- each port Whenever a port A or B finishes a BRAM operation (e.g., clock pulses are issued), the finished port sends a token to the other port's control circuitry via the channels Port A Done or Port B Done, as appropriate. Thus, each port is informed in a timely manner as to when the other port has completed its operation.
- a BRAM operation e.g., clock pulses are issued
- Each port then uses the external control pattern input (e.g., pat′ or pat′′) to modify clock generation for subsequent operations.
- the control circuitry 109 can operate to choose several actions.
- the control circuitry 109 can generate the next set of clock pulses 146 , 152 , 156 , completing the handshakes port 138 and the control pattern pat.
- the control circuitry 109 can skip the next cycle of clock pulse generation, completing the handshakes port 138 and the control pattern pat.
- the control circuitry 109 can insert an extra cycle of clock pulses, completing only the handshake for the control pattern pat, and ignore any input on port 138 (to be left pending for the next cycle).
- the first option causes an operation on a first port to issue in lock-step with operations on a second port, so that each completed operation on the second port allows the first port to issue an operation.
- the second option can be used to allow the first port to issue operations at a slower rate than the second port, so that multiple operations on the second port can be allowed to proceed without waiting for corresponding operations on the first port.
- the third option can be used to allow the first port to issue operations at a faster rate than the second port, so that multiple operations on the first port will be generated before synchronizing with an operation on the second port.
- some or all of the options can be combined using a pre-determined control pattern to implement arbitrary sequencing of operations among ports. For example, in order to allow two operations on port A for each operation on port B, port A can be sent the first option, followed by a repeating set of options three and one. Port B can be sent the first option, followed by a repeating set of options two and one.
- the control pattern pat can be modified dynamically, to change the sequencing of operations among the ports, instead of using a fixed control pattern that keeps the sequencing relationship constant.
- an apparatus 100 may comprise a synchronous circuit 105 coupled to at least one synchronous input data path 104 and at least one synchronous output data path 106 .
- the apparatus 100 may further comprise asynchronous-to-synchronous conversion circuitry 103 coupled to the at least one synchronous input data path 104 and to asynchronous input alignment circuitry 102 that is in turn coupled to at least one asynchronous port 132 included in the apparatus 100 .
- the apparatus 100 may also comprise synchronous-to-asynchronous conversion circuitry 107 coupled to the at least one synchronous output data path 106 , wherein at least one of a number of data inputs 160 corresponding to data 120 supplied to the asynchronous input alignment circuitry 102 or a number of data outputs (e.g., tokens 148 ) from the synchronous-to-asynchronous conversion circuitry 107 are progammably reconfigurable.
- the synchronous circuit 105 may comprise a memory array, as well as other synchronous circuits, including a processor, a multiplier, and/or a set of synchronous logic, such as a register, among others.
- the data inputs 160 can form part of an asynchronous data path 101 .
- the apparatus 100 may comprise an asynchronous data path 101 coupled to the asynchronous input alignment circuitry 102 , the asynchronous data path 101 comprising data inputs 160 .
- the data outputs can form part of an asynchronous data path 108 .
- the apparatus 100 may comprise an asynchronous data path 108 coupled to the synchronous-to-asynchronous conversion circuitry 107 , the asynchronous data path 108 comprising the data outputs (e.g., tokens 148 ).
- Control circuitry 109 may be used to coordinate alignment of asynchronous tokens.
- the apparatus 100 may further comprise control circuitry 109 coupled to receive input alignment information (e.g., signal 140 ) from the asynchronous input alignment circuitry 102 , and output alignment information (e.g., signal 142 ) from the synchronous-to-asynchronous conversion circuitry 107 .
- input alignment information e.g., signal 140
- output alignment information e.g., signal 142
- the control circuitry 109 may be used to coordinate multi-port activity. As those of ordinary skill in the art will appreciate after reading this disclosure, this functionality can be useful when the synchronous device making up the synchronous circuit 105 has inputs and/or outputs operating in more than one clock domain, so that individual ports can be dedicated to individual clock domains.
- the apparatus 100 may comprise control circuitry 109 to transmit control patterns pat to multiple ports to communicate a status associated with an asynchronous operation (e.g., an asynchronous memory operation) that enables synchronizing activities between the multiple ports.
- an asynchronous operation e.g., an asynchronous memory operation
- FIG. 1 For example, when the synchronous core circuit 105 comprises a memory array, a variety of memory width/depth combinations can be supported. This can occur when the apparatus 100 comprises emulation logic to support asynchronous memory width and memory depth access combinations that are not native to the synchronous memory array.
- the emulation logic may comprise a copy circuit and a routing circuit (e.g., included in width/depth reconfiguration circuitry 300 ). In this way, copy and routing circuits can be used to convert non-native memory width/depth combinations to native memory width/depth combinations.
- Buffers may be used to align incoming asynchronous data prior to permitting the data to enter a synchronous domain.
- the asynchronous input alignment circuitry 102 may comprise asynchronous buffers 410 coupled to a completion tree 418 .
- the alignment circuit 400 can be used to signal when the tokens to be used in a particular operation have arrived.
- the asynchronous-to-synchronous conversion circuitry 103 may operate to receive a completion signal 428 from the asynchronous input alignment circuitry 102 (e.g., clock signal 152 , via the control circuit 109 ) and to responsively generate a clock signal to be supplied to the synchronous circuit 105 (e.g., the clock signal 146 , via the control circuit 109 ).
- the apparatus 100 comprises at least one multiplexer 510 coupled between the synchronous output data path 106 and the synchronous-to-asynchronous conversion circuitry 107 , and a storage circuit 518 coupled to the multiplexer 510 , the storage circuit 518 to store a last value of data provided on the synchronous output data path 106 by the synchronous circuit 105 comprising a memory array.
- Synchronous data can be clocked into conversion circuitry, where handshaking operates to create asynchronous output tokens.
- the synchronous-to-asynchronous conversion circuitry 107 can operate to receive a synchronous sampling clock signal 156 from control circuitry 109 coupled to the synchronous circuit 105 , and to responsively convert synchronous data appearing on the synchronous output data path 106 to asynchronous data (e.g., tokens 148 ) via handshaking operations.
- asynchronous data e.g., tokens 148
- Other embodiments may be realized.
- an FPGA may be combined with one or more of the apparatus 100 to create multi-port variations of the apparatus 200 .
- an apparatus 200 may comprise an FPGA having asynchronous inputs and outputs, and one or more asynchronous circuits 105 coupled to the asynchronous inputs and outputs as described previously.
- a read clock signal can be used to sample the synchronous data path, subject to feedback.
- the apparatus 200 may comprise control circuitry 109 to provide a read clock signal 156 to the synchronous-to-asynchronous conversion circuitry 107 responsive to receiving a feedback signal 142 indicating that an asynchronous data path 108 coupled to the synchronous-to-asynchronous conversion circuitry 107 is ready to accept tokens 148 to be supplied to the number of outputs.
- an asynchronous control channel and output alignment circuitry can be used to provide the feedback.
- the apparatus 200 may comprise output alignment circuitry (e.g., one or more completion elements 422 ) coupled to control circuitry 109 and the synchronous-to-asynchronous conversion circuitry 107 to provide a feedback signal indicating that an asynchronous data path 108 coupled to the synchronous-to-asynchronous conversion circuitry 107 is ready to accept tokens 148 to be supplied to the outputs.
- output alignment circuitry e.g., one or more completion elements 422
- Buffers such as FIFO buffers, can be used to regulate the operational speed of the multi-token loop formed by the synchronous-to-asynchronous conversion circuitry 107 , the buffer 820 , and the control circuitry 109 .
- the apparatus 200 may comprise multiple asynchronous buffers 810 coupled in series to the synchronous-to-asynchronous conversion circuitry 107 to provide a feedback signal indicating that an asynchronous data path 108 coupled to the synchronous-to-asynchronous conversion circuitry 107 is ready to accept tokens to be supplied to the outputs.
- an apparatus may include an output data path that is configured to support both write-first and no-change write modes, among others.
- the control circuitry 109 can be used to coordinate operations between multiple asynchronous memory ports in some embodiments.
- an apparatus 200 may comprise control circuitry 109 to provide an indication to some of the multiple asynchronous ports as to when operations at individual ones of the multiple asynchronous ports have been completed (e.g., see FIG. 9 ).
- Ports can use a number of mechanisms to coordinate operations, including slower, faster, and lock-step operation. In this way, memory operations (and other logic processing operations) can be coordinated.
- some of the multiple asynchronous ports can be configured to receive a control pattern input to modify clock generation for subsequent asynchronous memory operations that are to occur after the current asynchronous memory operation.
- the control circuitry 109 can be used as a source of multiple clock signals.
- an apparatus 100 can use the control circuitry 109 to generate clock signals to be transmitted to the synchronous circuit 105 , the asynchronous-to-synchronous conversion circuitry 103 , and the synchronous-to-asynchronous conversion circuitry 107 .
- Still further embodiments may be realized as methods.
- FIG. 10 is a flow diagram illustrating various methods 1000 according to various embodiments of the invention.
- the method 1000 includes waiting to receive sufficient asynchronous tokens to implement a specified processing operation, and when sufficient tokens are received at asynchronous inputs (and the asynchronous outputs of an apparatus are ready for the specified operation), the operation may commence within the synchronous circuit. The output from the specified operation is then converted to asynchronous form and provided to the asynchronous outputs.
- a processor-implemented method 1000 to execute on one or more processors that perform the method may begin at block 1021 with receiving a sufficient number of asynchronous input tokens at the inputs of an asynchronous apparatus to conduct a specified processing operation, with some of the tokens being decoded to determine an operation type associated with the specified processing operation. For example, if a synchronous circuit operating according to the method 1000 comprises a memory array, then the specified operation may comprise a write operation, and the operation type may comprise a write-first operation type, or a no-change operation type, among others.
- the method 1000 may include, at block 1025 , determining whether sufficient tokens have arrived for processing.
- a completion tree coupled to multiple asynchronous buffers, can be used to indicate when sufficient asynchronous tokens have been received, and are ready for processing.
- the activity at block 1025 may comprise determining that a sufficient number of asynchronous input tokens have been received by monitoring the output of a completion tree coupled to asynchronous buffers.
- the activity at block 1025 may comprise determining that the sufficient number of asynchronous input tokens comprises all of the asynchronous input tokens that are available.
- the method 1000 may continue on to block 1029 with receiving an indication that outputs of the asynchronous apparatus are ready to conduct the specified processing operation.
- the synchronous circuit comprises a memory array. If this is the case, the asynchronous implementation can accommodate combinations of memory width and depth that differ from what is native to the synchronous memory core. Thus, the method 1000 may include, at block 1033 , receiving a plurality of asynchronous memory width and memory depth access combinations that are not native to the synchronous memory array.
- the method 1000 may go on to include converting the access combinations into a native access combination at block 1037 .
- One way to handle an asynchronous input data path that has a width and depth different from the native capability of the synchronous memory is to add address bits, and reduce the data bus width, as discussed above.
- the activity at block 1037 may comprise extending the number of native address bits by a number of additional address bits, and converting the additional address bits into high-order data bits, reducing the native memory data bus width.
- the method 1000 may go on to block 1041 to include signaling a synchronous circuit to process data included in the tokens according to the specified processing operation.
- the method 1000 may further comprise, at block 1045 , converting a native access combination of memory width and memory depth associated with the synchronous memory array to one of a number of non-native access combinations.
- One way to convert data in a native synchronous format to a non-native asynchronous format is to route the data.
- the activity at block 1045 may comprise routing portions of native width synchronous memory array output data to provide an asynchronous data bus with a width that is less than the native width.
- the method 1000 may go on to include, at block 1049 , converting synchronous outputs from the synchronous circuit into asynchronous output tokens to be provided to outputs of the asynchronous apparatus when the synchronous outputs result from the specified processing operation.
- the specified operation may comprise any one or more of several different memory operations, such as reading, writing, and erasing data.
- the specified processing operation may comprise one of a memory read operation or a memory write operation.
- FIG. 10 can be implemented in various devices as part of a system, as well as in a computer-readable storage medium, where the methods can be executed by one or more processors. Further details of such embodiments will now be described.
- FIG. 11 is a block diagram of a system 1100 according to various embodiments of the invention.
- systems 1100 include, but are not limited to televisions, cellular telephones, personal data assistants (PDAs), personal computers (e.g., laptop computers, desktop computers, handheld computers, tablet computers, etc.), workstations, radios, video players, audio players (e.g., MP3 (Motion Picture Experts Group, Audio Layer 3) players), vehicles, medical devices (e.g., heart monitor, blood pressure monitor, etc.), set top boxes, and others.
- PDAs personal data assistants
- personal computers e.g., laptop computers, desktop computers, handheld computers, tablet computers, etc.
- workstations e.g., radios, video players, audio players (e.g., MP3 (Motion Picture Experts Group, Audio Layer 3) players), vehicles, medical devices (e.g., heart monitor, blood pressure monitor, etc.), set top boxes, and others.
- MP3 Motion Picture Experts Group, Audio Layer 3
- system 1100 comprises a data processing system that includes a system bus 602 to couple the various components of the system 1100 .
- System bus 1102 provides communications links among the various components of the system 1100 and may be implemented as a single bus, as a combination of busses, or in any other suitable manner.
- Chip assembly 1104 which may include one or more apparatus 1120 (similar to or identical to apparatus 100 , 200 of FIGS. 1 , 2 , respectively), is coupled to the system bus 1102 .
- Chip assembly 1104 may include any circuit or compatible combination of circuits.
- chip assembly 1104 includes a processor 1108 or multiple processors that can be of any type.
- processor means any type of computational circuit such as, but not limited to, a microprocessor, a microcontroller, a graphics processor, a digital signal processor (DSP), or any other type of processor or processing circuit.
- DSP digital signal processor
- processor includes multiple processors or multiple processor cores.
- One or more apparatus 1120 may be coupled directly to the system bus 1102 .
- a memory device 1106 is included in the chip assembly 1104 .
- Memory 1106 can also include non-volatile memory types, such as flash memory.
- System 1100 may also include an external memory 1111 , which in turn can include one or more memory elements suitable to the particular application, such as one or more hard drives 1112 , and/or one or more drives that handle removable media 1113 such as flash memory drives, compact disks (CDs), digital video disks (DVDs), and the like.
- an external memory 1111 can include one or more memory elements suitable to the particular application, such as one or more hard drives 1112 , and/or one or more drives that handle removable media 1113 such as flash memory drives, compact disks (CDs), digital video disks (DVDs), and the like.
- System 1100 may also include a display device 1109 such as a monitor, additional peripheral components 1110 , such as speakers, etc. and a user input device 1114 , such as a keyboard, keypad, and/or controller, which can include a mouse, trackball, game controller, voice-recognition device, or any other device that permits a system user to input information into and receive information from the system 1100 .
- a display device 1109 such as a monitor
- additional peripheral components 1110 such as speakers, etc.
- a user input device 1114 such as a keyboard, keypad, and/or controller, which can include a mouse, trackball, game controller, voice-recognition device, or any other device that permits a system user to input information into and receive information from the system 1100 .
- a user input device 1114 such as a keyboard, keypad, and/or controller, which can include a mouse, trackball, game controller, voice-recognition device, or any other device that permits a system user to input information into and receive
- the additional peripheral components 1110 may comprise a wireless transceiver XCVR, perhaps coupled to a cellular telephone transmission signal power amplifier AMP and an antenna 1122 .
- a system 1100 may comprise a wireless transceiver XCVR to receive and transmit data, and an asynchronous circuit in the form of an apparatus 1120 to process the data.
- the data may be carried by the system bus 1102 .
- the system 1100 may further comprise a display 1109 to display at least a portion of the data and/or at least one user input device 1114 comprising a touch screen or a keypad, for example. Still further embodiments may be realized.
- system 1100 may comprise an article of manufacture, including a specific machine, according to various embodiments of the invention.
- the system 1100 may comprise an article of manufacture, including a specific machine, according to various embodiments of the invention.
- a software program can be launched from a computer-readable medium in a computer-based system to execute the functions defined in the software program.
- the programs may be structured in an object-oriented format using an object-oriented language such as Java or C++.
- the programs can be structured in a procedure-orientated format using a procedural language, such as assembly or C.
- the software components may communicate using any of a number of mechanisms well known to those of ordinary skill in the art, such as application program interfaces or interprocess communication techniques, including remote procedure calls.
- the teachings of various embodiments are not limited to any particular programming language or environment. Thus, other embodiments may be realized.
- an article of manufacture such as a computer, a memory system, a magnetic or optical disk, some other storage device, and/or any type of electronic device or system may include one or more processors 1108 coupled to a machine-readable medium such as a memory 1106 or 1111 (e.g., removable storage media, as well as any memory including an electrical, optical, or electromagnetic conductor) having instructions stored thereon (e.g., computer program instructions), which when executed by the one or more processors 1108 result in the machine performing any of the actions described with respect to the methods above.
- the chip assembly 1104 may itself comprise an apparatus 1120 .
- Implementing the apparatus, systems, and methods described herein may operate to provide an asynchronous implementation of a more readily available synchronous circuit design, such as implementing single or multi-port high-performance flexible asynchronous programmable memories using synchronous memory blocks. This combination may provide enhanced performance and/or reduced operational power over a purely synchronous design.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Logic Circuits (AREA)
Abstract
Description
- In many cases, asynchronous circuit designs offer advantages over synchronous designs, such as performance and power benefits. However, to implement a device based on asynchronous logic, additional time, experience, and dedicated asynchronous design tools are needed. For this and other reasons, existing Application Specific Integrated Circuit (ASIC) devices are often designed using synchronous circuits and techniques.
- Embodiments of the invention are illustrated by way of example and not limitation in the figures of the accompanying drawings in which:
-
FIG. 1 is a block diagram of an apparatus according to various embodiments of the invention; -
FIG. 2 illustrates an apparatus that includes multiple memory arrays as core circuits according to various embodiments of the invention; -
FIG. 3 is a block diagram of width/depth reconfiguration circuitry for an asynchronous memory apparatus according to various embodiments of the invention; -
FIG. 4 is a block diagram of input alignment circuitry according to various embodiments of the invention; -
FIG. 5 is a block diagram of reset circuitry forming part of the synchronous data path according to various embodiments of the invention; -
FIG. 6 is a block diagram of reset circuitry forming part of the asynchronous data path according to various embodiments of the invention; -
FIG. 7 is a block diagram of output feedback circuitry with alignment according to various embodiments of the invention; -
FIG. 8 is a block diagram of output feedback circuitry with serial buffers according to various embodiments of the invention; -
FIG. 9 is a block diagram of port coordination circuitry according to various embodiments of the invention; -
FIG. 10 is a flow diagram illustrating various methods according to various embodiments of the invention; and -
FIG. 11 is a block diagram of a system according to various embodiments of the invention. - Given the potential advantages of asynchronous circuits, it may be useful to employ them in a wide variety of applications. However, synchronous circuits for many applications have already been developed. Thus, the various embodiments described herein are directed toward solving the technical problem of using synchronous core circuitry in asynchronous application environments. This can be accomplished, for example, by incorporating synchronous circuitry (e.g., in the form of one or more application-specific integrated circuit (ASIC) blocks) within an asynchronous system. Various embodiments therefore include apparatus, systems, and methods to interface synchronous circuitry so that the result operates as an asynchronous block.
- For example, synchronous memory array circuitry is widely available and has been extensively developed. Asynchronous field-programmable gate arrays (FPGAs) are also available. Many designs can benefit from a combination of the two, where the synchronous core memory circuitry (e.g., a random access memory, or RAM) appears to the inputs/outputs of the FPGA (and to the software tools used to map designs to the FPGA) as a quasi-delay insensitive black box. This means that timing assumptions made during the design of the synchronous memory core circuitry are hidden from the FPGA inputs/outputs and the FPGA programming environment, and the correct behavior of the synchronous memory embedded in the FPGA should be completely independent of the asynchronous FPGA inputs and outputs.
-
FIG. 1 is a block diagram of anapparatus 100 according to various embodiments of the invention, using aRAM core circuit 105 as the illustrative example. While a RAM is shown herein as a matter of convenience and for clarity, other synchronous core circuits, such as processors, registers, etc. can be used in lieu of the RAM. Thus, the use of a RAM for thecore circuit 105 is done for reasons of simplicity, and not limitation. -
Asynchronous data 120 enters theapparatus 100 as asynchronous data tokens and is converted into synchronous signals that are fed into a conventional synchronousRAM core circuit 105. Theoutput data 122 of thecore circuit 105 then go through some additional synchronous circuitry, becoming revisedsynchronous data 123, before being converted back intoasynchronous data 124 tokens, which leave theapparatus 100. Theapparatus 100 performs some amount of processing on theinput data 120 andoutput data 124 to implement various specified operations. This processing can happen in the asynchronous or synchronous domain, along the input oroutput data paths - The external interface to the
apparatus 100 can have multiple ports. InFIG. 1 , aninput port 132 is shown to receive theinput data 120, and anoutput port 134 is shown to provide theoutput data 124. Other input andoutput ports more input ports more output ports - Each port has a set of operations it can perform within the
apparatus 100, possibly changing the state of theapparatus 100 in the process. In cases where there are more than one port, communication within theapparatus 100 may occur to preserve temporal relationships between the operations performed by different ports. When this occurs, the ports involved are said to be “related”. In the case of a synchronous RAM used as thecore circuit 105, theports apparatus 100 operate in the following way. -
Data 120 tokens for the various apparatus inputs (e.g., input data, storage address, byte enables, etc.) arrive at theapparatus 100 asynchronousinput boundary port 132, using theasynchronous data path 101 without any guarantee as to their timing. These tokens go through somealignment circuitry 102, which operates to verify that all of the inputs needed for a given operation have arrived. After proceeding through thealignment circuitry 102 and being converted to synchronous data using asynchronous tosynchronous conversion circuitry 103, the input data can enter the synchronous domain, using thesynchronous data path 104. At this point, the RAM input data can be used to drive thesynchronous core circuit 105, in this case, comprising a RAM. -
Control circuitry 109 can operate to receive asignal 140 that thealignment circuitry 102 has verified that a sufficient number of the input tokens have arrived. In some cases, this means that all available input tokens have arrived at thealignment circuitry 102. Thecontrol circuit 109 can also operate to receive one ormore signals 142 that indicate that the apparatus outputs atport 134 are ready for another operation. In addition, thecontrol circuitry 109 can operate to receive feedback from one or more other ports (e.g.,port 138 for amulti-port apparatus 100, such as a multi-port asynchronous RAM) indicating port status, for operating modes where synchronized operations between ports are useful. - The
control circuitry 109 can operate to produce signals (e.g., core clock pulses 146) that trigger thecore circuit 105, resulting in the production ofsynchronous output data 122 that are transmitted along thesynchronous data path 106. Thisoutput data 122, after traveling through thesynchronous data path 106 and being converted to revisedsynchronous data 123, is converted toasynchronous tokens 148 by synchronous-to-asynchronous conversion circuitry 107, before arriving at theasynchronous data path 108, on the way to theoutput port 134. Thecontrol circuitry 109 may also produce signals that are transmitted to other ports (e.g., port 136) that communicate the status of the operation conducted at theport 134, permitting the implementation of synchronized port operations. - When the
output data 122 of the core circuit 105 (and perhaps other synchronous circuitry in the apparatus 100) become revisedsynchronous data 123, and are converted back intoasynchronous data tokens 148 by the synchronous-to-asynchronous conversion circuitry 107, thecircuitry 108 may operate to signal thecontrol circuitry 109, using afeedback signal 142, to indicate that theoutput tokens 148 have been generated, and that theapparatus 100 is ready to accept the next operation. -
FIG. 2 illustrates anapparatus 200 that includes multiple memory arrays ascore circuits 105 according to various embodiments of the invention. Theapparatus 200 may comprise an FPGA, for example, that includesmultiple core circuits 105. In the example ofFIG. 2 , multiple synchronous memory arrays operate as a multi-port asynchronous RAM comprising a number ofcore circuits 105, operated by a corresponding number of apparatus 100 (seeFIG. 1 ). - Thus, the
apparatus 200 may comprise a programmable dual-port asynchronous static RAM (SRAM) block memory (BRAM) in a fast asynchronous FPGA. The BRAM can be operated as an 18 k RAM with a variety of combinations of widths and depths (e.g., 512×36-bit, 1 k×18-bit, 2 k×9-bit, 4 k×4-bit, 8 k×2-bit, and 16 k×1-bit), supporting different output modes (e.g., write-first or no-change) and synchronization between the two ports. A port can either be a true read/write port, with the ability to both write into and read out of the port, or only a write port, or only a read port. Because the BRAM is a component in an FPGA, it has various parameters that can be statically or dynamically configured for different designs. These parameters may include the width and depth of the BRAM, how it updates its outputs while it issues write operations, and how the ports interact. - The BRAM may thus be configured in a number of ways. Therefore, the following explanation of inputs, outputs, and operations is by way of explanation and not limitation.
- Referring now to
FIGS. 1 and 2 , consider the BRAM implemented as a dual-port 18 k BRAM with the following inputs per port: -
- 36 data bits (din), some or all of which are used depending on the BRAM width (which varies from 36-bits to 1-bit)
- 14 address bits (addr), some or all of which are used depending on the BRAM depth (which varies from 512 to 16 k entries)
- 4 byte enables (be), which can be used to control writing the BRAM with a granularity of 9-bit bytes when the BRAM is configured to have a 36-bit or 18-bit width
- a write enable (we)
- a port enable (pe)
- a reset (ssrn)
- a control pattern signal (pat), which can be used by the
control circuitry 109 to order (e.g., serialize) accesses to thecore circuit 105 by the two ports. The use of this signal will be discussed in more detail below.
- The BRAM may also be configured to comprise the following outputs per port:
-
- 36 data bits (dout), some or all of which are driven depending on the BRAM width.
- Consider also an
SRAM core circuit 105 implemented as a 512×36 SRAM array with numerous inputs and outputs for each port. The relevant inputs and outputs may be listed as: -
- 36 data inputs (di)
- 36 data outputs (do)
- 9 address bits (a)
- 36 bit-wise write enables (bwe)
- 1 clock (clk)
- Given the example configuration, the BRAM can be configured to implement the following combinations of depth and width: 512×36, 1 k×18, 2 k×9, 4 k×4, 8 k×2, and 16 k×1. When both ports of the BRAM are being used, the two ports can use different depth/width combinations. Additionally, the BRAM can implement different policies for driving the dout bits while performing a write. In write-first mode, the dout bits can be updated with the values being written to the BRAM on the same cycle (i.e., the values on din). In no-change mode, the value provided by dout does not change when the BRAM is being written. It should be noted that these techniques may be used to vary the width and depth of access to data within the core circuit 105 (when implemented as a memory array) and can be applied to BRAMs and SRAM arrays with different types and numbers of inputs and outputs.
- Additional circuitry can be used in the
apparatus core circuit 105 SRAM array such that the BRAM implements the functionality (depth, width, output-during-write policy, etc.) for which it has been programmed; and present an asynchronous interface to the environment in which theapparatus -
FIG. 3 is a block diagram of width/depth reconfiguration circuitry 300 for an asynchronous memory apparatus according to various embodiments of the invention. To implement programmable width and depth, supporting a variety of logical configurations, the reader is invited to consider the use of anSRAM core circuit 305. In this case, theSRAM core circuit 305 has a fixed set of nine address bits and, therefore, natively supports a 512×36 bit memory configuration. Nevertheless, other access modes can be emulated by utilizing theSRAM core circuit 305 36-bit-wise write enable we signal and adding logic to copy and route synchronous data to/from theSRAM core circuit 305. - To support various combinations of width and depth, three components can be used. First, the number of BRAM address bits visible to the user can be extended to fourteen bits (one extra bit for each additional mode, to support the enlarged address space). Logic can be introduced which automatically converts the additional address bits into a corresponding 36-bit write enable we signal, to support the reduced width of the data path entering the fixed 36-bit wide
SRAM core circuit 305. Second, the lowest-order N bits of the BRAM data inputs (where N corresponds to the logical BRAM width) can be copied into appropriate higher-order bit positions. Finally, the appropriate group of N bits of theSRAM core circuit 305 output can be routed to the lower-order bit positions. - For example, using a BRAM operating in 1 k×18 mode, the input data path can be used to accomplish the following operations:
-
- Copy the BRAM data inputs din[0 . . . 17] to the SRAM data inputs di[0 . . . 17] and di[18 . . . 35].
- Copy the highest-order nine bits of the BRAM address inputs addr[5 . . . 13] to the SRAM address inputs a[0 . . . 8].
- Use the next lower bit of the BRAM input address addr[4], the first two byte enable signals be[0 . . . 1], and the write-enable signal to drive the SRAM bit-wise write enable signals bwe[0 . . . 35].
For example, assume the following signal states exist: addr[4] is 1, be[0] is 1 and be[1] is 0, and we is 1. If this is the case, then the copy and routing logic should operate to send the data in din[0 . . . 17] to di[18 . . . 35], to enable bwe[18 . . . 35], and to disable all of the other bwe signals.
- At the same time, the output data path should route the appropriate 18-bit group of the
SRAM core circuit 305 36-bit output to the BRAM output bits dout[0 . . . 17]. For example, if the BRAM input address addr[4] is equal to 1, then the output data path should operate to route values in do[18 . . . 35] to dout[0 . . . 17]. If addr[4]=0, then the output data path should operate to route values in do[0 . . . 17] to the output of the BRAM. - In
FIG. 3 , thecopy block 310 takes the N-bit wide BRAM data input (where N corresponds to the logical BRAM width) and copies it multiple times to create a 36-bit signal for theSRAM core circuit 305 data input. The exact number of copies depends on the selected logical BRAM width. For example, in 1 k×18 mode, the copy block 310 copies the lower eighteen bits [0 . . . 17] into the upper eighteen bits [18 . . . 35], while in 2 k×9 mode, thecopy block 310 operates to copy the lower nine bits [0 . . . 8] to positions [9 . . . 17], [18 . . . 26], and [27 . . . 35]. - Note that the 14-bit
BRAM address bus 314 splits into twoseparate buses bit bus 316 feed directly into theSRAM core circuit 305 address input, while the lower fivebit bus 318 fans out into write enable and routing blocks 322, 324. The write enableblock 322 generates write enable (we) signals for thecore circuit 305 based on the values of the BRAM's byte enable (be) and the lower five bits of the address on thebus 318. Therouting block 324 selects which group of theSRAM core circuit 305 36-bit output will be copied to the N-bit output of the BRAM. For example, in 1 k×18 mode, if the most significant byte of the five bits on thebus 318 of the address input is 1, therouting block 324 can route the upper eighteen bits of theSRAM core circuit 305 output to the output of the BRAM. - Referring now to
FIGS. 1-3 , it should be noted that the copy and write enableblocks asynchronous data path 101 or thesynchronous data path 106, while routingblock 324 can form a part of thesynchronous data path 106 or theasynchronous data path 108. Both placements can provide equivalent functionality and either one can be chosen. In a synchronous implementation of these blocks, thepath 330 that includes address bits transmitted to therouting block 324 uses a stage comprising flops that are driven off the same clock as theSRAM core circuit 305 clock, to match the pipelining through theSRAM core circuit 305, and ensure that the address information arrives at therouting block 324 on the correct cycle. -
FIG. 4 is a block diagram ofinput alignment circuitry 400 according to various embodiments of the invention. In this description of thealignment circuitry 400, the use of a synchronous memory array to provide an asynchronous BRAM as an example application will be continued. - Since the BRAM operates in an asynchronous environment and the
core circuit 105 SRAM array operates synchronously, accesses to the BRAM involve converting signals from/to asynchronous and synchronous representations. For example, to write data into the BRAM, the BRAM's asynchronous data and address inputs are converted into synchronous signals that enter thesynchronous core circuit 105. A synchronous clock signal to perform a memory write operation using thecore circuit 105 is also generated. - Asynchronous to synchronous conversion can be performed in two parts. First,
alignment circuitry 400 is used to ensure all needed data has arrived at the boundary between asynchronous and synchronous domains so that conversion can begin. To accomplish this objective,asynchronous buffers 410 withcompletion output signals 414 and acompletion tree 418 can be used. Whenever eachbuffer 410 has data ready on its output, thebuffer 410 can assert acompletion signal 414 to indicate that the output is ready.Completion tree elements 422 operate to collect completion signals 414 from eachbuffer 410 and generateoutput tokens 424 whenever all of the inputs have arrived. Theoutput tokens 424 of somecompletion elements 422 may feed into the inputs ofother completion elements 422 at the second level of thecompletion tree 418. Secondlevel output tokens 424 may feed into third level completion element inputs, and so on. In this example, thefinal completion element 426 asserts the finaloutput completion signal 428 only after all of thebuffers 410 indicated that their outputs are ready. - Other combinations may be implemented, so that less than all of the outputs are ready prior to the assertion of the final
output completion signal 428. That is, the example shown inFIG. 4 demonstrates how completion signals for data, address, and write enable signals can be generated, but it can be extended by those of ordinary skill in the art to support any additional signals that are to be converted between asynchronous and synchronous domains. - Once a sufficient number of asynchronous inputs are ready (e.g., when all of the output signals 414 are asserted in
FIG. 4 ), synchronous signal conversion may commence.FIG. 1 demonstrates a high-level view of the conversion process. Thealignment circuitry 102 asserts its output data signals 150 and produces acompletion signal 140 when all data on all channels are ready.Control circuitry 109 receives thecompletion signal 140 and generates aclock signal 152 for asynchronous-to-synchronous conversion circuitry 103. After theclock signal 152 is received, it can be used to sample the value of the input data signals 150, and to convert the data from an asynchronous to a synchronous representation. The resultingsynchronous information 154 can be provided to thesynchronous data path 104. After the data signals 150 are sampled and converted, the asynchronous-to-synchronous conversion circuitry 103 acknowledges receipt of the resulting data on its asynchronous input channels. - After the
synchronous information 154 propagates though thesynchronous data path 104, it can be processed by thesynchronous core circuit 105 assynchronous path data 155.Control circuitry 109 coordinates the timing of clock signals for the asynchronous-to-synchronous conversion circuitry 103 and thecore circuit 105 to ensure signals are valid before being sampled. - Clock signals 146, 152 can be transmitted to the
core circuit 105 and the asynchronous-to-synchronous conversion circuitry 103 in at least two ways. In some cases, thecontrol circuitry 109 first sends aclock signal 152 to the asynchronous-to-synchronous conversion circuitry 103, allowingsynchronous information 154 to propagate through thesynchronous data path 104, and then thecontrol circuitry 109 can send aclock signal 146 to thecore circuit 105. Alternatively, thecontrol circuitry 109 can first send a clock signal to thecore circuit 105, sample the value ofsynchronous path data 155 provided during the previous cycle, and then thecontrol circuitry 109 can send aclock signal 152 to the asynchronous-to-synchronous conversion circuitry 103. In this second implementation, thecore circuit 105 will receive new values only when thenext signals 150 arrive at the asynchronous-synchronous conversion boundary. Both of these clock timing schemes will result in correct operation, and the choice depends on specific implementation trade-offs made by designers of the various embodiments. - To read data from the memory
array core circuit 105, appropriate address bits should be set, and the write enable signal de-asserted. These signals are converted into synchronous signals by the asynchronous-to-synchronous conversion circuitry 103 and then sampled by thecore circuit 105. After thecore circuit 105 samples the address and de-asserted write enable information, thecore circuit 105 can operate to provide the appropriate memory value on the outputsynchronous data path 106. Theoutput data 122 can be routed within thesynchronous data path 106 to support a specific memory configuration for data width and depth, as described previously. -
FIG. 5 is a block diagram ofreset circuitry 500 forming part of thesynchronous data path 106 according to various embodiments of the invention. If the reset signal ssrn is asserted during a write or read operation, theoutput data 148 should comprise output reset data values instead of memory content values. To support this functionality, each bit of theoutput data 122 goes through amultiplexer 510 controlled by the reset signal ssrn. Themultiplexer 510 has two inputs: one input contains the value of thedata 122 read from thememory core circuit 105, and another input contains reset data values 514. When the reset signal ssrn is asserted, themultiplexer 510 operates to propagate the reset data values 514 as revisedsynchronous data 123. If the reset signal ssrn is deasserted, themultiplexer 510 operates to propagatedata 122 values read from thememory core circuit 105. -
FIG. 6 is a block diagram of reset circuitry 600 forming part of theasynchronous data path 108 according to various embodiments of the invention. In this case, amultiplexer 610 forms a part of theasynchronous data path 108, to provide the value ofdata 148 read out of thememory core circuit 105, or reset data values 614, based on the state of the reset signal ssrn. The placement of thereset circuitry 500, 600 inFIGS. 5 and 6 , respectively, can provide equivalent functionality and either one can be chosen by the designer of various embodiments. - The output data at the
port 134 can be procured during write-first and no-change read modes. In the write-first mode, the dout bits are updated with the values written to the BRAM on the same cycle (i.e., the values on din). In the no-change mode, the values on dout do not change when the BRAM is written. In some embodiments, the dout bits of thecore circuit 105 are updated with the values written into it on the same cycle, so the write-first mode is provided by default. To implement the no-change mode, a register orother storage circuit 518 that stores thelast data 122 values output by thecore circuit 105 output during a read operation can be implemented. When the BRAM operates in the no-change mode and theport 134 is operating according to a write operation, thestorage circuit 518 can be used to repeat the value of thedata 122 last read from the BRAM. Thestorage circuit 518 can be controlled in some embodiments by the write enable we signal. -
FIG. 7 is a block diagram ofoutput feedback circuitry 700 with alignment according to various embodiments of the invention. Referring now toFIGS. 1 and 7 , it can be seen that the synchronous-to-asynchronous conversion circuitry 107 converts synchronous signals from the outputsynchronous data path 106 intoasynchronous tokens 148. Whenever the synchronous-to-asynchronous conversion circuitry 107 receives aclock signal 156 from thecontrol circuitry 109, it samples the information provided by thesynchronous data path 106. If theasynchronous data path 108 is ready to accepttokens 148, the synchronous-to-asynchronous conversion circuitry 107 sends theasynchronous data tokens 148 on its output, completes an asynchronous handshake, and waits for the next clock signal 156 from thecontrol circuitry 109. It should be noted that even if theasynchronous data path 108 is ready to acceptmore tokens 148 before thenext clock signal 156 arrives, the synchronous-to-asynchronous conversion circuitry 107 will not produce more tokens. The conversion process repeats after thenext clock signal 156 is received fromcontrol circuitry 109. - For example, before the
control circuitry 109 sends a (read)clock signal 156 to the synchronous-to-asynchronous conversion circuitry 107, theasynchronous data path 108 should be ready to acceptdata tokens 148. If no feedback mechanism is provided, then the synchronous-to-asynchronous conversion circuitry 107 can erroneously dropoutput tokens 148 when theinput data path 126 of the BRAM implementation produces tokens faster than the speed at which theoutput data path 128 can consume them. Therefore, feedback can be used to keep track of all output data channels by sending a token to thecontrol circuitry 109 when all output channels of the synchronous-to-asynchronous conversion circuitry 107 are ready to accept new data from thesynchronous data path 106. - There are at least two ways to implement this kind of feedback mechanism. First, the
clock signal 156 from the control circuitry to the synchronous-to-asynchronous conversion circuitry 107 can be replaced with anasynchronous data channel 710, with output alignment added to the output of the synchronous-to-asynchronous conversion circuitry 107 (e.g., using one or more completion elements 422). Theasynchronous data channel 710 provides flow control, and prevents thecontrol circuitry 109 from issuing clock signals 156 until thecompletion element 422 indicates that all output channels of the synchronous-to-asynchronous conversion circuitry 107 are ready to accept data. - Output alignment can thus be implemented as a
completion element 422 with 36 inputs in the case of the memory implementation described herein, to indicate asynchronous acknowledgement for all 36 output data channels. The output of thecompletion element 422 can fan out (as an output acknowledge signal) to all 36 outputs of the synchronous-to-asynchronous conversion circuitry 107. When all output channels are ready to receive data, thecompletion element 422 can assert a ready signal, causing the synchronous-to-asynchronous conversion circuitry 107 to send a feedback signal to thecontrol circuitry 109. Thecontrol circuitry 109 receives the feedback signal, waits for all other control inputs of the next cycle to arrive, and then generates a new read token signal for the synchronous-to-asynchronous conversion circuitry 107. -
FIG. 8 is a block diagram ofoutput feedback circuitry 800 withserial buffers 810 according to various embodiments of the invention. Thiscircuitry 800 provides an alternative implementation of the feedback mechanism shown inFIG. 7 . In this case, several asynchronous buffers 810 (e.g., first-in, first-out (FIFO) elements) are added to the output of the synchronous-to-asynchronous conversion circuitry 107. The output alignment and asynchronous feedback channel for thecontrol circuitry 109 have been moved to thelast buffer 820 in the chain ofbuffers 810. Output alignment can again be implemented using a conventional completion element, this time having 37 inputs that complete asynchronous enables for all 36 output data channels and for the control token on the feedback path. The output of thecompletion element 422 fans out (as an output enable signal) to all 36 outputs of thebuffer 820. When all output channels are ready to receive data, and a data token from any one of the 36 output bits leaves thebuffer 820, theoutput buffer 820 sends a control token back to thecontrol circuitry 109. When thecontrol circuitry 109 receives the feedback token and all control tokens, it produces theclock signal 156 for the synchronous-to-asynchronous conversion circuitry 107 to sample output data provided by thecore circuit 105. - Not having to check all 36 outputs before generating a control token for the feedback path (as shown in
FIG. 8 ) often allows the BRAM implementation to operate at a higher peak frequency than the implementation shown inFIG. 7 . This is because the performance of the BRAM implementation described is sometimes limited by the latency around the loop from thecontrol circuitry 109 generating a clock pulse, to the synchronous-to-asynchronous conversion circuitry 107 sampling thecore circuit 105 outputs, to the output tokens that exit the BRAM viabuffers 810, and the resulting control token reaching thecontrol circuitry 109 via the feedback path 824 (which provides flow control). However, because the BRAM has buffered outputs to store the results of two BRAM operations,extra tokens 830 can be added in the loop. These extra tokens allow overlapping multiple handshakes within the loop and can significantly reduce the cycle time. Even more tokens can be added to further increase speed, as long as the number of tokens in the loop is less than or equal to the number of available buffer stages (each buffer stage holding one token) between the synchronous-to-asynchronous conversion circuitry 107 and theoutput buffer 820. - The
control circuitry 109 generates clock signals 152, 146, and 156 for the asynchronous-to-synchronous conversion circuitry 103, thecore circuit 105, and the synchronous-to-asynchronous conversion circuitry 107, respectively. Thecontrol circuitry 109 can operate to generate these signals when at least some of the following conditions are met: -
- asynchronous-to-
synchronous conversion circuitry 103 inputs are ready—when a control token (e.g., signal 140) has arrived from theinput alignment circuitry 102 indicating that all of the BRAM input data has arrived. - synchronous-to-
asynchronous conversion circuitry 107 outputs are ready—when a control token (e.g., signal 142) has arrived from the output alignment circuitry indicating that all BRAM outputs are ready to accept tokens. - the operation on another port is complete—when the BRAM is operating with two ports in related mode, for example, the
control circuitry 109 may operate to wait for a control token fromport 138 indicating theport 138 has finished an operation. When the two ports are operating in unrelated mode, thecontrol circuitry 109 can ignore this type of input, decoupling the sequence of operations between ports. - the input on the control pattern pat is ready—the control pattern pat can be used when ports are operating in related mode, and the operation implemented on the ports of the
apparatus 100 are to be ordered with respect to the completion of an operation on other port(s) corresponding to other apparatus (e.g.,ports 136, 138). The control pattern pat can also be used as a reference signal, assuming it is the last arriving signal, to control clock generation by thecontrol circuit 109.
- asynchronous-to-
- Upon receiving some or all the input control tokens listed above, the
control circuitry 109 can operate to generate the clock signals 146, 152, 156. For example, if the BRAM is operating in related mode, thecontrol circuit 109 may operate to send an operation completion token to the other port(s) 136, 138 of other apparatus. Afterward, thecontrol circuitry 109 may operate to complete asynchronous handshakes on all asynchronous data channels, and wait for the next cycle. -
FIG. 9 is a block diagram ofport coordination circuitry 900 according to various embodiments of the invention. When the BRAM implementation described herein is operating in related mode, the operations ofmultiple apparatus 100′, 100″ having control of different ports of the BRAM are coordinated with each other. To accomplish coordination, control patterns pat′ and pat″, as well as coordination signals provided byports control circuitry 109′ in afirst apparatus 100′ can communicate withcontrol circuitry 109″ in asecond apparatus 100″. In this case, asynchronous data channels are depicted with wide arrows and generated clock signals are shown as narrow arrows. - Whenever a port A or B finishes a BRAM operation (e.g., clock pulses are issued), the finished port sends a token to the other port's control circuitry via the channels Port A Done or Port B Done, as appropriate. Thus, each port is informed in a timely manner as to when the other port has completed its operation.
- Each port then uses the external control pattern input (e.g., pat′ or pat″) to modify clock generation for subsequent operations. Depending on the value of this input, optionally combined with the static configuration of the port, the
control circuitry 109 can operate to choose several actions. - As a first option, once the input arrives on
port 138, thecontrol circuitry 109 can generate the next set ofclock pulses handshakes port 138 and the control pattern pat. As a second option, once the input arrives onport 138, thecontrol circuitry 109 can skip the next cycle of clock pulse generation, completing thehandshakes port 138 and the control pattern pat. As a third option, thecontrol circuitry 109 can insert an extra cycle of clock pulses, completing only the handshake for the control pattern pat, and ignore any input on port 138 (to be left pending for the next cycle). - The first option causes an operation on a first port to issue in lock-step with operations on a second port, so that each completed operation on the second port allows the first port to issue an operation. The second option can be used to allow the first port to issue operations at a slower rate than the second port, so that multiple operations on the second port can be allowed to proceed without waiting for corresponding operations on the first port. The third option can be used to allow the first port to issue operations at a faster rate than the second port, so that multiple operations on the first port will be generated before synchronizing with an operation on the second port.
- Using the mechanism shown in
FIG. 9 , some or all of the options can be combined using a pre-determined control pattern to implement arbitrary sequencing of operations among ports. For example, in order to allow two operations on port A for each operation on port B, port A can be sent the first option, followed by a repeating set of options three and one. Port B can be sent the first option, followed by a repeating set of options two and one. For additional flexibility, the control pattern pat can be modified dynamically, to change the sequencing of operations among the ports, instead of using a fixed control pattern that keeps the sequencing relationship constant. - Thus, many embodiments of the invention may be realized, and each can be implemented in a variety of architectural platforms, along with various operating and server systems, devices, and applications. Any particular architectural layout or implementation presented herein is therefore provided for purposes of illustration and comprehension only, and is not intended to limit the various embodiments that can be realized.
- Referring now to
FIGS. 1-9 , it can be seen that anapparatus 100 may comprise asynchronous circuit 105 coupled to at least one synchronousinput data path 104 and at least one synchronousoutput data path 106. Theapparatus 100 may further comprise asynchronous-to-synchronous conversion circuitry 103 coupled to the at least one synchronousinput data path 104 and to asynchronousinput alignment circuitry 102 that is in turn coupled to at least oneasynchronous port 132 included in theapparatus 100. Theapparatus 100 may also comprise synchronous-to-asynchronous conversion circuitry 107 coupled to the at least one synchronousoutput data path 106, wherein at least one of a number ofdata inputs 160 corresponding todata 120 supplied to the asynchronousinput alignment circuitry 102 or a number of data outputs (e.g., tokens 148) from the synchronous-to-asynchronous conversion circuitry 107 are progammably reconfigurable. As noted previously, thesynchronous circuit 105 may comprise a memory array, as well as other synchronous circuits, including a processor, a multiplier, and/or a set of synchronous logic, such as a register, among others. - The
data inputs 160 can form part of anasynchronous data path 101. Thus, theapparatus 100 may comprise anasynchronous data path 101 coupled to the asynchronousinput alignment circuitry 102, theasynchronous data path 101 comprisingdata inputs 160. - The data outputs (e.g., tokens 148) can form part of an
asynchronous data path 108. Thus, theapparatus 100 may comprise anasynchronous data path 108 coupled to the synchronous-to-asynchronous conversion circuitry 107, theasynchronous data path 108 comprising the data outputs (e.g., tokens 148). -
Control circuitry 109 may be used to coordinate alignment of asynchronous tokens. Thus, theapparatus 100 may further comprisecontrol circuitry 109 coupled to receive input alignment information (e.g., signal 140) from the asynchronousinput alignment circuitry 102, and output alignment information (e.g., signal 142) from the synchronous-to-asynchronous conversion circuitry 107. - The
control circuitry 109 may be used to coordinate multi-port activity. As those of ordinary skill in the art will appreciate after reading this disclosure, this functionality can be useful when the synchronous device making up thesynchronous circuit 105 has inputs and/or outputs operating in more than one clock domain, so that individual ports can be dedicated to individual clock domains. Thus, theapparatus 100 may comprisecontrol circuitry 109 to transmit control patterns pat to multiple ports to communicate a status associated with an asynchronous operation (e.g., an asynchronous memory operation) that enables synchronizing activities between the multiple ports. - Further embodiments may be constructed, based on the use of a memory array within the
synchronous core circuit 105. For example, when thesynchronous core circuit 105 comprises a memory array, a variety of memory width/depth combinations can be supported. This can occur when theapparatus 100 comprises emulation logic to support asynchronous memory width and memory depth access combinations that are not native to the synchronous memory array. Thus, the emulation logic may comprise a copy circuit and a routing circuit (e.g., included in width/depth reconfiguration circuitry 300). In this way, copy and routing circuits can be used to convert non-native memory width/depth combinations to native memory width/depth combinations. - Buffers may be used to align incoming asynchronous data prior to permitting the data to enter a synchronous domain. Thus, the asynchronous
input alignment circuitry 102 may compriseasynchronous buffers 410 coupled to acompletion tree 418. - The
alignment circuit 400 can be used to signal when the tokens to be used in a particular operation have arrived. Thus, the asynchronous-to-synchronous conversion circuitry 103 may operate to receive acompletion signal 428 from the asynchronous input alignment circuitry 102 (e.g.,clock signal 152, via the control circuit 109) and to responsively generate a clock signal to be supplied to the synchronous circuit 105 (e.g., theclock signal 146, via the control circuit 109). - When the
synchronous circuit 105 comprises a memory array, a multiplexer and storage circuit can be used to support multiple read modes. Thus, in some embodiments, theapparatus 100 comprises at least onemultiplexer 510 coupled between the synchronousoutput data path 106 and the synchronous-to-asynchronous conversion circuitry 107, and astorage circuit 518 coupled to themultiplexer 510, thestorage circuit 518 to store a last value of data provided on the synchronousoutput data path 106 by thesynchronous circuit 105 comprising a memory array. - Synchronous data can be clocked into conversion circuitry, where handshaking operates to create asynchronous output tokens. Thus, the synchronous-to-
asynchronous conversion circuitry 107 can operate to receive a synchronoussampling clock signal 156 fromcontrol circuitry 109 coupled to thesynchronous circuit 105, and to responsively convert synchronous data appearing on the synchronousoutput data path 106 to asynchronous data (e.g., tokens 148) via handshaking operations. Other embodiments may be realized. - For example, an FPGA may be combined with one or more of the
apparatus 100 to create multi-port variations of theapparatus 200. Thus, anapparatus 200 may comprise an FPGA having asynchronous inputs and outputs, and one or moreasynchronous circuits 105 coupled to the asynchronous inputs and outputs as described previously. - When the
synchronous circuit 105 comprises a memory array, still further embodiments may be realized. For example, a read clock signal can be used to sample the synchronous data path, subject to feedback. Thus, theapparatus 200 may comprisecontrol circuitry 109 to provide a readclock signal 156 to the synchronous-to-asynchronous conversion circuitry 107 responsive to receiving afeedback signal 142 indicating that anasynchronous data path 108 coupled to the synchronous-to-asynchronous conversion circuitry 107 is ready to accepttokens 148 to be supplied to the number of outputs. - An asynchronous control channel and output alignment circuitry can be used to provide the feedback. Thus, the
apparatus 200 may comprise output alignment circuitry (e.g., one or more completion elements 422) coupled to controlcircuitry 109 and the synchronous-to-asynchronous conversion circuitry 107 to provide a feedback signal indicating that anasynchronous data path 108 coupled to the synchronous-to-asynchronous conversion circuitry 107 is ready to accepttokens 148 to be supplied to the outputs. - Buffers, such as FIFO buffers, can be used to regulate the operational speed of the multi-token loop formed by the synchronous-to-
asynchronous conversion circuitry 107, thebuffer 820, and thecontrol circuitry 109. Thus, theapparatus 200 may comprise multipleasynchronous buffers 810 coupled in series to the synchronous-to-asynchronous conversion circuitry 107 to provide a feedback signal indicating that anasynchronous data path 108 coupled to the synchronous-to-asynchronous conversion circuitry 107 is ready to accept tokens to be supplied to the outputs. - When the
synchronous circuit 105 comprises a memory array, multiple read or write modes can be provided by the resultingasynchronous memory apparatus 100. Thus, an apparatus may include an output data path that is configured to support both write-first and no-change write modes, among others. - The
control circuitry 109 can be used to coordinate operations between multiple asynchronous memory ports in some embodiments. Thus, anapparatus 200, for example, may comprisecontrol circuitry 109 to provide an indication to some of the multiple asynchronous ports as to when operations at individual ones of the multiple asynchronous ports have been completed (e.g., seeFIG. 9 ). - Ports can use a number of mechanisms to coordinate operations, including slower, faster, and lock-step operation. In this way, memory operations (and other logic processing operations) can be coordinated. Thus, when an
apparatus 200 comprises multiple asynchronous ports, some of the multiple asynchronous ports can be configured to receive a control pattern input to modify clock generation for subsequent asynchronous memory operations that are to occur after the current asynchronous memory operation. - The
control circuitry 109 can be used as a source of multiple clock signals. Thus, anapparatus 100 can use thecontrol circuitry 109 to generate clock signals to be transmitted to thesynchronous circuit 105, the asynchronous-to-synchronous conversion circuitry 103, and the synchronous-to-asynchronous conversion circuitry 107. Still further embodiments may be realized as methods. - For example,
FIG. 10 is a flow diagram illustratingvarious methods 1000 according to various embodiments of the invention. In some embodiments, themethod 1000 includes waiting to receive sufficient asynchronous tokens to implement a specified processing operation, and when sufficient tokens are received at asynchronous inputs (and the asynchronous outputs of an apparatus are ready for the specified operation), the operation may commence within the synchronous circuit. The output from the specified operation is then converted to asynchronous form and provided to the asynchronous outputs. - Thus, a processor-implemented
method 1000 to execute on one or more processors that perform the method, may begin atblock 1021 with receiving a sufficient number of asynchronous input tokens at the inputs of an asynchronous apparatus to conduct a specified processing operation, with some of the tokens being decoded to determine an operation type associated with the specified processing operation. For example, if a synchronous circuit operating according to themethod 1000 comprises a memory array, then the specified operation may comprise a write operation, and the operation type may comprise a write-first operation type, or a no-change operation type, among others. - Thus, the
method 1000 may include, atblock 1025, determining whether sufficient tokens have arrived for processing. In some embodiments, a completion tree, coupled to multiple asynchronous buffers, can be used to indicate when sufficient asynchronous tokens have been received, and are ready for processing. Thus, the activity atblock 1025 may comprise determining that a sufficient number of asynchronous input tokens have been received by monitoring the output of a completion tree coupled to asynchronous buffers. - In some embodiments, all of the asynchronous input tokens are needed before the specified operation may be undertaken. Thus, the activity at
block 1025 may comprise determining that the sufficient number of asynchronous input tokens comprises all of the asynchronous input tokens that are available. Themethod 1000 may continue on to block 1029 with receiving an indication that outputs of the asynchronous apparatus are ready to conduct the specified processing operation. - In some embodiments, the synchronous circuit comprises a memory array. If this is the case, the asynchronous implementation can accommodate combinations of memory width and depth that differ from what is native to the synchronous memory core. Thus, the
method 1000 may include, atblock 1033, receiving a plurality of asynchronous memory width and memory depth access combinations that are not native to the synchronous memory array. - The
method 1000 may go on to include converting the access combinations into a native access combination atblock 1037. One way to handle an asynchronous input data path that has a width and depth different from the native capability of the synchronous memory is to add address bits, and reduce the data bus width, as discussed above. Thus, the activity atblock 1037 may comprise extending the number of native address bits by a number of additional address bits, and converting the additional address bits into high-order data bits, reducing the native memory data bus width. - The
method 1000 may go on to block 1041 to include signaling a synchronous circuit to process data included in the tokens according to the specified processing operation. - When the synchronous circuit comprises a memory array, output data provided by the synchronous memory array in native format can be converted to a non-native width/depth format. Thus, the
method 1000 may further comprise, atblock 1045, converting a native access combination of memory width and memory depth associated with the synchronous memory array to one of a number of non-native access combinations. One way to convert data in a native synchronous format to a non-native asynchronous format is to route the data. Thus, the activity atblock 1045 may comprise routing portions of native width synchronous memory array output data to provide an asynchronous data bus with a width that is less than the native width. - The
method 1000 may go on to include, atblock 1049, converting synchronous outputs from the synchronous circuit into asynchronous output tokens to be provided to outputs of the asynchronous apparatus when the synchronous outputs result from the specified processing operation. When the synchronous circuit comprises a memory array, the specified operation may comprise any one or more of several different memory operations, such as reading, writing, and erasing data. Thus, the specified processing operation may comprise one of a memory read operation or a memory write operation. - The methods described herein do not have to be executed in the order described, or in any particular order. Moreover, various activities described with respect to the methods identified herein can be executed in repetitive, serial, or parallel fashion. The individual activities of the methods shown in
FIG. 10 can also be combined with each other and/or substituted, one for another, in various ways other that what is shown in the figure. Information, including parameters, commands, operands, and other data, can be sent and received in the form of one or more carrier waves. Thus, many other embodiments may be realized. - The methods shown in
FIG. 10 can be implemented in various devices as part of a system, as well as in a computer-readable storage medium, where the methods can be executed by one or more processors. Further details of such embodiments will now be described. -
FIG. 11 is a block diagram of asystem 1100 according to various embodiments of the invention. Examples ofsuch systems 1100 include, but are not limited to televisions, cellular telephones, personal data assistants (PDAs), personal computers (e.g., laptop computers, desktop computers, handheld computers, tablet computers, etc.), workstations, radios, video players, audio players (e.g., MP3 (Motion Picture Experts Group, Audio Layer 3) players), vehicles, medical devices (e.g., heart monitor, blood pressure monitor, etc.), set top boxes, and others. - In this example,
system 1100 comprises a data processing system that includes a system bus 602 to couple the various components of thesystem 1100.System bus 1102 provides communications links among the various components of thesystem 1100 and may be implemented as a single bus, as a combination of busses, or in any other suitable manner. - Chip assembly 1104, which may include one or more apparatus 1120 (similar to or identical to
apparatus FIGS. 1 , 2, respectively), is coupled to thesystem bus 1102. Chip assembly 1104 may include any circuit or compatible combination of circuits. In one embodiment, chip assembly 1104 includes aprocessor 1108 or multiple processors that can be of any type. As used herein, “processor” means any type of computational circuit such as, but not limited to, a microprocessor, a microcontroller, a graphics processor, a digital signal processor (DSP), or any other type of processor or processing circuit. As used herein, “processor” includes multiple processors or multiple processor cores. One ormore apparatus 1120 may be coupled directly to thesystem bus 1102. - In one embodiment, a
memory device 1106 is included in the chip assembly 1104. Those of ordinary skill in the art will recognize that a wide variety of memory device configurations may be used in the chip assembly 1104.Memory 1106 can also include non-volatile memory types, such as flash memory. -
System 1100 may also include anexternal memory 1111, which in turn can include one or more memory elements suitable to the particular application, such as one or morehard drives 1112, and/or one or more drives that handleremovable media 1113 such as flash memory drives, compact disks (CDs), digital video disks (DVDs), and the like. -
System 1100 may also include adisplay device 1109 such as a monitor, additionalperipheral components 1110, such as speakers, etc. and auser input device 1114, such as a keyboard, keypad, and/or controller, which can include a mouse, trackball, game controller, voice-recognition device, or any other device that permits a system user to input information into and receive information from thesystem 1100. Thus, additional embodiments may be realized. - For example, the additional
peripheral components 1110 may comprise a wireless transceiver XCVR, perhaps coupled to a cellular telephone transmission signal power amplifier AMP and anantenna 1122. Thus, asystem 1100 may comprise a wireless transceiver XCVR to receive and transmit data, and an asynchronous circuit in the form of anapparatus 1120 to process the data. The data may be carried by thesystem bus 1102. Thesystem 1100 may further comprise adisplay 1109 to display at least a portion of the data and/or at least oneuser input device 1114 comprising a touch screen or a keypad, for example. Still further embodiments may be realized. - For example, the
system 1100 may comprise an article of manufacture, including a specific machine, according to various embodiments of the invention. Upon reading and comprehending the content of this disclosure, one of ordinary skill in the art will understand the manner in which a software program can be launched from a computer-readable medium in a computer-based system to execute the functions defined in the software program. - One of ordinary skill in the art will further understand the various programming languages that may be employed to create one or more software programs designed to implement and perform the methods disclosed herein. The programs may be structured in an object-oriented format using an object-oriented language such as Java or C++. Alternatively, the programs can be structured in a procedure-orientated format using a procedural language, such as assembly or C. The software components may communicate using any of a number of mechanisms well known to those of ordinary skill in the art, such as application program interfaces or interprocess communication techniques, including remote procedure calls. The teachings of various embodiments are not limited to any particular programming language or environment. Thus, other embodiments may be realized.
- For example, an article of manufacture, such as a computer, a memory system, a magnetic or optical disk, some other storage device, and/or any type of electronic device or system may include one or
more processors 1108 coupled to a machine-readable medium such as amemory 1106 or 1111 (e.g., removable storage media, as well as any memory including an electrical, optical, or electromagnetic conductor) having instructions stored thereon (e.g., computer program instructions), which when executed by the one ormore processors 1108 result in the machine performing any of the actions described with respect to the methods above. The chip assembly 1104 may itself comprise anapparatus 1120. - Implementing the apparatus, systems, and methods described herein may operate to provide an asynchronous implementation of a more readily available synchronous circuit design, such as implementing single or multi-port high-performance flexible asynchronous programmable memories using synchronous memory blocks. This combination may provide enhanced performance and/or reduced operational power over a purely synchronous design.
- This Detailed Description is illustrative, and not restrictive. Many other embodiments will be apparent to those of ordinary skill in the art upon reviewing this disclosure. The scope of embodiments should therefore be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
- The Abstract of the Disclosure is provided to comply with 37 C.F.R. § 1.72(b) and will allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims.
- In this Detailed Description of various embodiments, a number of features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as an implication that the claimed embodiments have more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment.
Claims (21)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/559,069 US7900078B1 (en) | 2009-09-14 | 2009-09-14 | Asynchronous conversion circuitry apparatus, systems, and methods |
US13/022,843 US8078899B2 (en) | 2009-09-14 | 2011-02-08 | Asynchronous conversion circuitry apparatus, systems, and methods |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/559,069 US7900078B1 (en) | 2009-09-14 | 2009-09-14 | Asynchronous conversion circuitry apparatus, systems, and methods |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/022,843 Continuation US8078899B2 (en) | 2009-09-14 | 2011-02-08 | Asynchronous conversion circuitry apparatus, systems, and methods |
Publications (2)
Publication Number | Publication Date |
---|---|
US7900078B1 US7900078B1 (en) | 2011-03-01 |
US20110062987A1 true US20110062987A1 (en) | 2011-03-17 |
Family
ID=43617415
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/559,069 Active US7900078B1 (en) | 2009-09-14 | 2009-09-14 | Asynchronous conversion circuitry apparatus, systems, and methods |
US13/022,843 Active US8078899B2 (en) | 2009-09-14 | 2011-02-08 | Asynchronous conversion circuitry apparatus, systems, and methods |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/022,843 Active US8078899B2 (en) | 2009-09-14 | 2011-02-08 | Asynchronous conversion circuitry apparatus, systems, and methods |
Country Status (1)
Country | Link |
---|---|
US (2) | US7900078B1 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100057426A1 (en) * | 2004-04-15 | 2010-03-04 | Mentor Graphics Corporation | Logic Design Modeling and Interconnection |
US20110130171A1 (en) * | 2009-09-14 | 2011-06-02 | Achronix Semiconductor Corporation | Asynchronous conversion circuitry apparatus, systems, and methods |
US20110169524A1 (en) * | 2006-06-28 | 2011-07-14 | Achronix Semiconductor Corporation. | Reconfigurable logic fabrics for integrated circuits and systems and methods for configuring reconfigurable logic fabrics |
US10505704B1 (en) * | 2015-08-02 | 2019-12-10 | Wave Computing, Inc. | Data uploading to asynchronous circuitry using circular buffer control |
CN113037458A (en) * | 2021-03-02 | 2021-06-25 | 中国地震局地球物理研究所 | High-precision synchronous time service system |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090119621A1 (en) * | 2007-11-06 | 2009-05-07 | Jordi Cortadella | Variability-Aware Asynchronous Scheme for Optimal-Performance Delay Matching |
TWI407744B (en) * | 2008-02-04 | 2013-09-01 | Realtek Semiconductor Corp | Network signal processing apparatus |
US8867680B2 (en) * | 2010-02-12 | 2014-10-21 | Intel Mobile Communications GmbH | Circuitry system and method for connecting synchronous clock domains of the circuitry system |
US8773164B1 (en) * | 2012-11-01 | 2014-07-08 | Xilinx, Inc. | Programmable interconnect network |
US9584305B2 (en) * | 2014-12-10 | 2017-02-28 | Oracle International Corporation | Deskew FIFO buffer with simplified initialization |
WO2020008229A1 (en) * | 2018-07-03 | 2020-01-09 | Dolphin Integration | Circuit and method for protecting asynchronous circuits |
US11451230B2 (en) | 2020-04-23 | 2022-09-20 | Xilinx, Inc. | Compute dataflow architecture |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US773123A (en) * | 1903-12-04 | 1904-10-25 | Frank R Mcfeatters | Rotary mercury circuit-breaker. |
US5367209A (en) * | 1992-01-07 | 1994-11-22 | Hauck Scott A | Field programmable gate array for synchronous and asynchronous operation |
US5724276A (en) * | 1996-06-17 | 1998-03-03 | Xilinx, Inc. | Logic block structure optimized for sum generation |
US5834957A (en) * | 1996-12-20 | 1998-11-10 | Hewlett-Packard Company | Implementing asynchronous sequential circuits using synchronous design techniques and modules |
US5926036A (en) * | 1991-09-03 | 1999-07-20 | Altera Corporation | Programmable logic array circuits comprising look up table implementation of fast carry adders and counters |
US6075830A (en) * | 1995-05-29 | 2000-06-13 | Nokia Telecommunications Oy | Method and apparatus for adapting an asynchronous bus to a synchronous circuit |
US6359468B1 (en) * | 1999-03-04 | 2002-03-19 | Altera Corporation | Programmable logic device with carry look-ahead |
US20020116426A1 (en) * | 2001-02-15 | 2002-08-22 | Stmicroelectronics Ltd. | Look-up table apparatus to perform two-bit arithmetic operation including carry generation |
US6557161B2 (en) * | 2001-06-28 | 2003-04-29 | Sun Microsystems, Inc. | Method for prototyping asynchronous circuits using synchronous devices |
US6762630B2 (en) * | 2000-10-20 | 2004-07-13 | Infineon Technologies Ag | Integrated circuit having a synchronous and an asynchronous circuit and method for operating such an integrated circuit |
US6848060B2 (en) * | 2001-02-27 | 2005-01-25 | International Business Machines Corporation | Synchronous to asynchronous to synchronous interface |
US20050077918A1 (en) * | 2003-08-19 | 2005-04-14 | Teifel John R. | Programmable asynchronous pipeline arrays |
US6961863B2 (en) * | 2002-02-12 | 2005-11-01 | Fulcrum Microsystems Inc. | Techniques for facilitating conversion between asynchronous and synchronous domains |
US7395450B2 (en) * | 2003-11-19 | 2008-07-01 | Seiko Epson Corporation | Synchronous/asynchronous interface circuit and electronic device |
US7454589B2 (en) * | 2004-12-09 | 2008-11-18 | Fujitsu Limited | Data buffer circuit, interface circuit and control method therefor |
US20100013517A1 (en) * | 2006-06-28 | 2010-01-21 | Rajit Manohar | Reconfigurable logic fabrics for integrated circuits and systems and methods for configuring reconfigurable logic fabrics |
US7688671B2 (en) * | 2005-10-21 | 2010-03-30 | Elpida Memory, Inc. | Semiconductor memory chip with on-die termination function |
US20100102848A1 (en) * | 2008-04-11 | 2010-04-29 | Massachusetts Institute Of Technology | Asynchronous Logic Automata |
US7739628B2 (en) * | 2008-02-15 | 2010-06-15 | Achronix Semiconductor Corporation | Synchronous to asynchronous logic conversion |
US20100185837A1 (en) * | 2008-04-11 | 2010-07-22 | Massachussetts Institute Of Technology | Reconfigurable Logic Automata |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4756010A (en) * | 1985-11-07 | 1988-07-05 | Motorola, Inc. | Asynchronous/synchronous data receiver circuit |
US5245605A (en) * | 1991-10-04 | 1993-09-14 | International Business Machines Corporation | Integration of synchronous and asynchronous traffic on rings |
US5666321A (en) * | 1995-09-01 | 1997-09-09 | Micron Technology, Inc. | Synchronous DRAM memory with asynchronous column decode |
FI100571B (en) * | 1995-11-15 | 1997-12-31 | Nokia Telecommunications Oy | Procedure and arrangement for asynchronous data transfer |
US5943288A (en) * | 1997-10-31 | 1999-08-24 | Integrated Silicon Solution, Inc. | Apparatus and method for minimizing address hold time in asynchronous SRAM |
US6934816B2 (en) * | 2001-08-07 | 2005-08-23 | Integrated Device Technology, Inc. | Integrated circuit memory devices having asynchronous flow-through capability |
US6611469B2 (en) * | 2001-12-11 | 2003-08-26 | Texas Instruments Incorporated | Asynchronous FIFO memory having built-in self test logic |
US6912860B2 (en) * | 2003-08-08 | 2005-07-05 | Delphi Technologies, Inc. | Method of operating a directed relief valve in an air conditioning system |
US7301824B1 (en) * | 2005-10-04 | 2007-11-27 | Xilinx, Inc. | Method and apparatus for communication within an integrated circuit |
US7765382B2 (en) * | 2007-04-04 | 2010-07-27 | Harris Corporation | Propagating reconfiguration command over asynchronous self-synchronous global and inter-cluster local buses coupling wrappers of clusters of processing module matrix |
US7733123B1 (en) | 2009-04-02 | 2010-06-08 | Xilinx, Inc. | Implementing conditional statements in self-timed logic circuits |
US8964795B2 (en) * | 2009-06-01 | 2015-02-24 | Achronix Semiconductor Corporation | Asynchronous pipelined interconnect architecture with fanout support |
US7900078B1 (en) * | 2009-09-14 | 2011-03-01 | Achronix Semiconductor Corporation | Asynchronous conversion circuitry apparatus, systems, and methods |
-
2009
- 2009-09-14 US US12/559,069 patent/US7900078B1/en active Active
-
2011
- 2011-02-08 US US13/022,843 patent/US8078899B2/en active Active
Patent Citations (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US773123A (en) * | 1903-12-04 | 1904-10-25 | Frank R Mcfeatters | Rotary mercury circuit-breaker. |
US5926036A (en) * | 1991-09-03 | 1999-07-20 | Altera Corporation | Programmable logic array circuits comprising look up table implementation of fast carry adders and counters |
US5367209A (en) * | 1992-01-07 | 1994-11-22 | Hauck Scott A | Field programmable gate array for synchronous and asynchronous operation |
US6075830A (en) * | 1995-05-29 | 2000-06-13 | Nokia Telecommunications Oy | Method and apparatus for adapting an asynchronous bus to a synchronous circuit |
US5724276A (en) * | 1996-06-17 | 1998-03-03 | Xilinx, Inc. | Logic block structure optimized for sum generation |
US5834957A (en) * | 1996-12-20 | 1998-11-10 | Hewlett-Packard Company | Implementing asynchronous sequential circuits using synchronous design techniques and modules |
US6359468B1 (en) * | 1999-03-04 | 2002-03-19 | Altera Corporation | Programmable logic device with carry look-ahead |
US6762630B2 (en) * | 2000-10-20 | 2004-07-13 | Infineon Technologies Ag | Integrated circuit having a synchronous and an asynchronous circuit and method for operating such an integrated circuit |
US20020116426A1 (en) * | 2001-02-15 | 2002-08-22 | Stmicroelectronics Ltd. | Look-up table apparatus to perform two-bit arithmetic operation including carry generation |
US6961741B2 (en) * | 2001-02-15 | 2005-11-01 | Stmicroelectronics Ltd. | Look-up table apparatus to perform two-bit arithmetic operation including carry generation |
US6848060B2 (en) * | 2001-02-27 | 2005-01-25 | International Business Machines Corporation | Synchronous to asynchronous to synchronous interface |
US6557161B2 (en) * | 2001-06-28 | 2003-04-29 | Sun Microsystems, Inc. | Method for prototyping asynchronous circuits using synchronous devices |
US6961863B2 (en) * | 2002-02-12 | 2005-11-01 | Fulcrum Microsystems Inc. | Techniques for facilitating conversion between asynchronous and synchronous domains |
US20050077918A1 (en) * | 2003-08-19 | 2005-04-14 | Teifel John R. | Programmable asynchronous pipeline arrays |
US7157934B2 (en) * | 2003-08-19 | 2007-01-02 | Cornell Research Foundation, Inc. | Programmable asynchronous pipeline arrays |
US7395450B2 (en) * | 2003-11-19 | 2008-07-01 | Seiko Epson Corporation | Synchronous/asynchronous interface circuit and electronic device |
US7454589B2 (en) * | 2004-12-09 | 2008-11-18 | Fujitsu Limited | Data buffer circuit, interface circuit and control method therefor |
US7688671B2 (en) * | 2005-10-21 | 2010-03-30 | Elpida Memory, Inc. | Semiconductor memory chip with on-die termination function |
US20100013517A1 (en) * | 2006-06-28 | 2010-01-21 | Rajit Manohar | Reconfigurable logic fabrics for integrated circuits and systems and methods for configuring reconfigurable logic fabrics |
US7739628B2 (en) * | 2008-02-15 | 2010-06-15 | Achronix Semiconductor Corporation | Synchronous to asynchronous logic conversion |
US20100102848A1 (en) * | 2008-04-11 | 2010-04-29 | Massachusetts Institute Of Technology | Asynchronous Logic Automata |
US20100185837A1 (en) * | 2008-04-11 | 2010-07-22 | Massachussetts Institute Of Technology | Reconfigurable Logic Automata |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100057426A1 (en) * | 2004-04-15 | 2010-03-04 | Mentor Graphics Corporation | Logic Design Modeling and Interconnection |
US8346530B2 (en) * | 2004-04-15 | 2013-01-01 | Mentor Graphics Corporation | Logic design modeling and interconnection |
US20110169524A1 (en) * | 2006-06-28 | 2011-07-14 | Achronix Semiconductor Corporation. | Reconfigurable logic fabrics for integrated circuits and systems and methods for configuring reconfigurable logic fabrics |
US8125242B2 (en) | 2006-06-28 | 2012-02-28 | Achronix Semiconductor Corporation | Reconfigurable logic fabrics for integrated circuits and systems and methods for configuring reconfigurable logic fabrics |
US8575959B2 (en) | 2006-06-28 | 2013-11-05 | Achronix Semiconductor Corporation | Reconfigurable logic fabrics for integrated circuits and systems and methods for configuring reconfigurable logic fabrics |
US8949759B2 (en) | 2006-06-28 | 2015-02-03 | Achronix Semiconductor Corporation | Reconfigurable logic fabrics for integrated circuits and systems and methods for configuring reconfigurable logic fabrics |
US20110130171A1 (en) * | 2009-09-14 | 2011-06-02 | Achronix Semiconductor Corporation | Asynchronous conversion circuitry apparatus, systems, and methods |
US8078899B2 (en) | 2009-09-14 | 2011-12-13 | Achronix Semiconductor Corporation | Asynchronous conversion circuitry apparatus, systems, and methods |
US10505704B1 (en) * | 2015-08-02 | 2019-12-10 | Wave Computing, Inc. | Data uploading to asynchronous circuitry using circular buffer control |
CN113037458A (en) * | 2021-03-02 | 2021-06-25 | 中国地震局地球物理研究所 | High-precision synchronous time service system |
Also Published As
Publication number | Publication date |
---|---|
US20110130171A1 (en) | 2011-06-02 |
US8078899B2 (en) | 2011-12-13 |
US7900078B1 (en) | 2011-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7900078B1 (en) | Asynchronous conversion circuitry apparatus, systems, and methods | |
US10169513B2 (en) | Method and system for designing FPGA based on hardware requirements defined in source code | |
EP3014429B1 (en) | Method and apparatus for asynchronous processor removal of meta-stability | |
TW200416594A (en) | Improved computing architecture and related system and method | |
US20180143922A1 (en) | Data inversion circuit | |
US8667441B2 (en) | Clock optimization with local clock buffer control optimization | |
JP2011146035A (en) | Command queue for peripheral component | |
US8949575B2 (en) | Reversing processing order in half-pumped SIMD execution units to achieve K cycle issue-to-issue latency | |
JP2008226236A (en) | Configurable microprocessor | |
CN106487362B (en) | Semiconductor circuit having a plurality of transistors | |
JP5063511B2 (en) | Method and system for efficiently utilizing a multi-source network of control logic to achieve timing closure in a clock-driven logic circuit | |
Thoma et al. | FPGA-GPU communicating through PCIe | |
JP7229305B2 (en) | Apparatus, method, and processing apparatus for writing back instruction execution results | |
CN105740177A (en) | Signal transmission control method and apparatus, and signal latch apparatus | |
EP3475808B1 (en) | Method and apparatus for performing simd gather and copy operations | |
US20130117476A1 (en) | Low-power high-speed data buffer | |
CN106605243A (en) | Graphics workload submissions by unprivileged applications | |
EP3234768B1 (en) | System and method for fast modification of register content | |
US20130159591A1 (en) | Verifying data received out-of-order from a bus | |
US11163568B2 (en) | Implementing write ports in register-file array cell | |
JP2002149419A (en) | Logic unit for clarifying interruption and integrated circuit | |
US9209792B1 (en) | Clock selection system and method | |
US20230059335A1 (en) | System and method for electronic circuit emulation | |
US7694004B2 (en) | Bit-granular writes of control registers | |
JP5710833B2 (en) | Method and apparatus for realizing data transmission between register files |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: ACHRONIX SEMICONDUCTOR CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MANOHAR, RAJIT;KELLY, CLINTON W.;EKANAYAKE, VIRANTHA;AND OTHERS;SIGNING DATES FROM 20090910 TO 20090914;REEL/FRAME:023367/0265 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
AS | Assignment |
Owner name: HERCULES CAPITAL, INC., AS AGENT, CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNOR:ACHRONIX SEMICONDUCTOR CORPORATION;REEL/FRAME:052121/0505 Effective date: 20200316 |
|
AS | Assignment |
Owner name: ACHRONIX SEMICONDUCTOR CORPORATION, CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:HERCULES CAPITAL, INC., AS AGENT;REEL/FRAME:054461/0220 Effective date: 20201123 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |