One embodiment relates to a pulse latch that includes a latch control logic circuit and a pulse latch circuit. The latch control logic circuit generates a plurality of control signals and selects a control signal of the plurality of control signals to output to the pulse latch circuit. Each control signal of the plurality of control signals causes the pulse latch circuit to operate in a different operating mode. Another embodiment relates to a method of generating control signaling for a pulse latch. A clock signal and a shifted clock signal are received. A plurality of inputs to a multiplexor are generated using the clock signal and the shifted clock signal. An input of the plurality of inputs is selected as an output of the multiplexor. The input is selected by the multiplexor using a plurality of multiplexor configuration bits.
|
12. A method of generating control signaling for a pulse latch, the method comprising:
receiving a clock signal and a shifted clock signal by a latch control logic circuit;
generating a plurality of inputs to a multiplexor, wherein the plurality of inputs are generated by the latch control logic circuit using the clock signal and the shifted clock signal;
selecting an input of the plurality of inputs as an output of the multiplexor, wherein the input is selected by the multiplexor using a plurality of multiplexor configuration bits; and
receiving the output of the multiplexor as a first input to an AND gate and a bypass configuration bit as a second input to the AND gate.
15. A control logic circuit that provides control signals to a pulse latch circuit, the control logic circuit comprising:
a multiplexor that selects one of a plurality of input signals, wherein a first input signal of the plurality of input signals comprises a first clock signal, and wherein a second input signal of the plurality of input signals comprises a second clock signal that is a shifted version of the first clock signal;
a first AND gate that receives the first clock signal and an inverse of the second clock signal and outputs a third input signal of the plurality of signals to the multiplexor; and
a second AND gate that receives an inverse of the first clock signal and the second clock signal and outputs a fourth input signal of the plurality of signals to the multiplexor.
1. A pulse latch comprising:
a latch control logic circuit that generates a plurality of control signals and selects a control signal of the plurality of control signals, wherein the latch control logic circuit receives first and second clock input signals, and wherein the second clock input signal is a phase-shifted version of the first clock input signal; and
a pulse latch circuit that receives the control signal output from the latch control logic circuit,
wherein each control signal of the plurality of control signals causes the pulse latch circuit to operate in a different operating mode,
wherein the latch control logic circuit comprises a multiplexor that selects one of a plurality of inputs and further comprises an AND gate that receives the first clock signal and an inverse of the second clock signal and outputs an input of the multiplexor, and
wherein the input is selected by the multiplexor for the pulse latch circuit to operate as a positive-edge triggered flip-flop circuit.
2. The pulse latch of
3. The pulse latch of
4. The pulse latch of
5. The pulse latch of
6. The pulse latch of
7. The pulse latch of
8. The pulse latch of
9. The pulse latch of
10. The pulse latch of
an AND gate that receives an inverse of the first clock signal and the second clock signal and outputs an input of the multiplexor,
wherein the input is selected by the multiplexor for the pulse latch circuit to operate as a negative-edge triggered flip-flop circuit.
11. The pulse latch of
an AND gate that receives an output of the multiplexor and a configuration bit,
wherein resetting the configuration bit to logical zero causes the pulse latch circuit to operate as a buffer.
13. The method of
14. The method of
16. The control logic circuit of
17. The control logic circuit of
a third AND gate that receives an output of the multiplexor and a bypass configuration bit,
wherein resetting the configuration bit to logical zero causes the pulse latch circuit to operate as a buffer.
|
The present disclosure relates generally to electronic circuits.
A programmable logic device (“PLD”) is a digital, user-configurable integrated circuit used to implement a custom logic function. PLDs have found particularly wide application as a result of their combined low up front cost and versatility to the user. For the purposes of this description, the term PLD encompasses any digital logic circuit configured by the end-user, and includes a programmable logic array (“PLA”), a field programmable gate array (“FPGA”), and an erasable and complex PLD.
The basic building block of a PLD is a logic element that is capable of performing logic functions on a number of input variables. The logic elements of a PLD may be arranged in groups of, for example, eight to form a larger logic array block (“LAB”).
Multiple LABs (and other functional blocks, such as memory blocks, digital signal processing blocks, and so on) are generally arranged in a two-dimensional array in a PLD core. The blocks may be separated by horizontal and vertical interconnect channels so as to form a two-dimensional array. Inputs and outputs of the LABs may be programmably connectable to horizontal and vertical interconnect channels.
A variety of PLD architectural approaches to arranging the interconnect array and logic elements have been developed. These approaches generally aim to optimize logic density and/or signal routability between the various logic elements.
One embodiment relates to a pulse latch that includes a latch control logic circuit and a pulse latch circuit. The latch control logic circuit generates a plurality of control signals and selects a control signal of the plurality of control signals to output to the pulse latch circuit. Each control signal of the plurality of control signals causes the pulse latch circuit to operate in a different operating mode.
Another embodiment relates to a method of generating control signaling for a pulse latch. A clock signal and a shifted clock signal are received by a latch control logic circuit. A plurality of inputs to a multiplexor are generated by the latch control logic circuit using the clock signal and the shifted clock signal. An input of the plurality of inputs is selected as an output of the multiplexor. The input is selected by the multiplexor using a plurality of multiplexor configuration bits.
Other embodiments, aspects, and features are also disclosed.
As the die size of PLDs continues to increase, it becomes challenging for existing routing architectures to support a high speed across an integrated circuit die in an efficient manner. For example, in order to support a high speed across the die, U.S. Pat. No. 8,693,581, entitled “Pipelined Direct Drive Routing Fabric,” by David Lewis, et al., discloses circuitry and methods for pipelining at a fine grain, down to the level of individual logic elements (LEs) and routing wires, if desired.
The present disclosure provides a “universal” pulse latch that is electronically programmable (electronically configurable) to any one of multiple operating modes. Each operating mode corresponds to a different circuit functionality. In particular, the universal pulse latch may operate in any one of five distinct operating modes, each operating mode providing one of the following circuit functionalities: a level-sensitive high latch; a level-sensitive low latch; a positive-edge-triggered flip-flop, negative-edge-triggered flip-flop, and a buffer. The operating modes may be selected by programming configuration bits, without a need to change clock signals that are input to the universal pulse latch.
Advantageously, the universal pulse latch provides a flexible individual circuit that is electronically programmable to achieve a variety of circuit functionalities. This allows for more efficient usage of the pulse latches and simpler clock synthesis for controlling the pulse latches.
An exemplary implementation of the universal pulse latch includes an electronically-programmable latch control logic circuit and a pulse latch circuit. An exemplary embodiment of the latch control logic circuit is shown in
In an exemplary implementation, the latch control circuit 100 may receive two clock inputs CLK and CLK2 and may generate control signals latch_en (latch enable) and nlatch_en (the inverse of latch enable). As shown in
As further shown, the C-MUX circuit may be implemented using an electronically-programmable multiplexor 110, three AND logic gates 112, 114, and 116, and three electronically-programmable configuration bits C0, C1 and C2. The first AND gate 112 has as its inputs the clock input CLK and the inverse of the clock input CLK2. The second AND gate 114 has as its inputs the inverse of the clock input CLK, and the clock input CLK2. The third AND gate 116 has as its inputs the output of the multiplexor 110 and the C2 configuration bit, which may be referred to as a bypass configuration bit.
The output of the C-MUX circuit is controlled by the three electronically-programmable configuration bits C2, C1 and C0 that form the configuration vector C={C2, C1, C0}. The value of the configuration bit C2 determines whether or not the C-MUX circuit operates in a bypass mode so as to function as a “buffer”. When C2=0, the C-MUX circuit is in the bypass mode and outputs a logical 0 signal. When C2=1, the C-MUX circuit may be configured to operate in one of four modes, depending on the values of the two configuration bits C1 and C0, which may be referred to as multiplexor configuration bits.
As shown in the figure, the two configuration bits C1 and C0 control the selection made by the multiplexor 110. The 00 input of the multiplexor 110 receives the clock input CLK. When C1=0 and C0=0, the 00 input is selected to be output. The 01 input of the multiplexor 110 receives the inverse of the clock input CLK. When C1=0 and C0=1, the 01 input is selected to be output. The 10 input of the multiplexor 110 receives the output of the first AND gate 112. When C1=1 and C0=0, the 10 input is selected to be output. Finally, the 11 input receives the output of the second AND gate 114. When C1=1 and C0=1, the 11 input is selected to be output.
As further shown in the figure, the NOR gate 102 and an inverter 104 may be arranged in series. The NOR gate 102 may receive control signal rcomb at a first input and the output of the C-MUX circuit at a second input. In an exemplary implementation, the rcomb signal may be reset to a low state to enable the pipeline mode for the controlled pulse latch 205. (Alternatively, a non-pipeline mode may be configured by setting the rcomb signal to a high state. In this non-pipeline mode, the input to the pulse latch 205 is always enabled such that the signal bit is not registered.)
The output of the NOR gate 102 is connected to the input of the inverter 104. The inverter 104 outputs the latch enable signal latch_en, while the inverse latch enable signal nlatch_en may be obtained from the output of the NOR gate 102.
As shown in the figure, the input line 203 to the pulse latch 205 may be connected to the output of a routing multiplexor 201. In addition, the output of routing multiplexor 201 may be connected to the input of inverter 202 and the drain of PMOS transistor 204, the source of PMOS transistor 204 may be connected to a supply voltage, and the gate of the PMOS transistor 204 may be connected to the output of inverter 202.
As depicted in
The first tri-state buffer 210 may be implemented as a CMOS circuit with four transistors in series: PMOS transistor 211; PMOS transistor 212; NMOS transistor 213; and NMOS transistor 214. In the implementation shown, the source of PMOS transistor 211 is connected to a supply voltage, while the source of NMOS transistor 214 is connected to ground. The drain of PMOS transistor 211 is connected to the source of PMOS transistor 212, and the drain of NMOS transistor 214 is connected to the source of NMOS transistor 213. The gates and drains PMOS transistor 212 and NMOS transistor 213 are connected to each other to form the input node and the output node, respectively. The input node is connected to the input line 203 for the pulse latch circuit 205, and the output node is connected to the storage node 206. The gate of NMOS transistor 214 receives pulsed control signal latch_en, while the gate of PMOS transistor 211 receives the inverse pulsed control signal nlatch_en (where nlatch_en is the inverse of latch_en).
The second tri-state buffer 215 also may be implemented as a CMOS circuit with four transistors in series: PMOS transistor 216; PMOS transistor 217; NMOS transistor 218; and NMOS transistor 219. In the implementation shown, the source of PMOS transistor 216 is connected to a supply voltage, while the source of NMOS transistor 219 is connected to ground. The drain of PMOS transistor 216 is connected to the source of PMOS transistor 217, and the drain of NMOS transistor 219 is connected to the source of NMOS transistor 218. The gates and drains PMOS transistor 212 and NMOS transistor 213 are connected to each other to form the input node and the output node, respectively. The input node is connected to the output of the inverter 220, and the output node is connected to the storage node 206. The gate of PMOS transistor 219 receives pulsed control signal latch_en, while the gate of NMOS transistor 216 receives the inverse pulsed control signal nlatch_en.
The inverter 220 may be implemented as a CMOS inverter which includes PMOS transistor 221 and NMOS transistor 222 in series. In the implementation shown, the source of PMOS transistor 221 is connected to a supply voltage, while the source of NMOS transistor 222 is connected to ground. The gates and drains of PMOS transistor 221 and NMOS transistor 222 are connected together to form the input node and output node, respectively. The input node is connected to the storage node 206. The output node is connected to both the input of the second tri-state buffer 215 and to the output line 240.
In order for the pulse latch to work correctly as a positive-edge-triggered flip-flop, the pulse width PW1 must be sufficiently wide to meet the requirements that depend on the pulse latch circuitry. The pulse width PW1 is a function of the phase difference between the positive edges of CLK and CLK2 (i.e. W1) and of the skew and slew of the C-MUX circuit.
In order for the pulse latch to work correctly as a negative-edge-triggered flip-flop, the pulse width PW2 must be sufficiently wide to meet the requirements that depend on the pulse latch circuitry. The pulse width PW2 is a function of the phase difference between the negative edges of CLK and CLK2 (i.e. W2) and of the skew and slew of the C-MUX circuit.
As shown, the FPGA includes a two-dimensional array of functional blocks, including logic array blocks (LABs) and other functional blocks, such as random access memory (RAM) blocks and digital signal processing (DSP) blocks, for example. The FPGA also includes programmable interconnect in the form of horizontal and vertical channels, each channel including one or more routing wires. In addition, input/output elements (IOEs) may be located around the periphery of the chip.
Routing wires are typically shorter than the entire length of the channel. A length n wire spans n functional blocks. For example, a length 4 wire spans 4 blocks. Length 4 wires are referred to as H4 wires in a horizontal channel and V4 wires in a vertical channel.
In a direct drive routing architecture, each wire is driven at a single logical point by a driver. In most cases, the driver is associated with a multiplexer which selects a signal to drive on the wire. In the case of channels with a fixed number of wires along their length, a driver may be placed at each starting point of a wire.
Different routing architectures may have LABs which connect to different numbers of routing channels. A three-sided routing architecture is depicted in the figure due to there being bi-directional connections on three sides of each functional unit to the routing channels. Other routing architectures are also intended to be included within the scope of the present invention. Examples of other routing architectures include 1-sided, 1½-sided, 2-sided, and 4-sided routing architectures.
System 50 includes a processing unit 52, a memory unit 54, and an input/output (I/O) unit 56 interconnected together by one or more buses. According to this exemplary embodiment, FPGA 58 is embedded in processing unit 52. FPGA 58 can serve many different purposes within the system 50. FPGA 58 can, for example, be a logical building block of processing unit 52, supporting its internal and external operations. FPGA 58 is programmed to implement the logical functions necessary to carry on its particular role in system operation. FPGA 58 can be specially coupled to memory 54 through connection 60 and to I/O unit 56 through connection 62.
Processing unit 52 may direct data to an appropriate system component for processing or storage, execute a program stored in memory 54, receive and transmit data via I/O unit 56, or other similar function. Processing unit 52 may be a central processing unit (CPU), microprocessor, floating point coprocessor, graphics coprocessor, hardware controller, microcontroller, field programmable gate array programmed for use as a controller, network controller, or any type of processor or controller. Furthermore, in many embodiments, there is often no need for a CPU.
For example, instead of a CPU, one or more FPGAs 58 may control the logical operations of the system. As another example, FPGA 58 acts as a reconfigurable processor that may be reprogrammed as needed to handle a particular computing task. Alternately, FPGA 58 may itself include an embedded microprocessor. Memory unit 54 may be a random access memory (RAM), read only memory (ROM), fixed or flexible disk media, flash memory, tape, or any other storage means, or any combination of these storage means.
In the above description, numerous specific details are given to provide a thorough understanding of embodiments of the invention. However, the above description of illustrated embodiments of the invention is not intended to be exhaustive or to limit the invention to the precise forms disclosed. One skilled in the relevant art will recognize that the invention can be practiced without one or more of the specific details, or with other methods, components, etc.
In other instances, well-known structures or operations are not shown or described in detail to avoid obscuring aspects of the invention. While specific embodiments of, and examples for, the invention are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. These modifications may be made to the invention in light of the above detailed description.
Patent | Priority | Assignee | Title |
10784865, | May 15 2019 | Intel Corporation | Minimum delay error detection and correction for pulsed latches |
11606093, | Sep 29 2020 | MEDIATEK INC. | Level converting enable latch |
Patent | Priority | Assignee | Title |
5629643, | Nov 21 1994 | SHENZHEN XINGUODU TECHNOLOGY CO , LTD | Feedback latch and method therefor |
6643793, | Oct 21 1999 | LAPIS SEMICONDUCTOR CO , LTD | Apparatus for transferring and holding data based on a selected clock rate |
6693460, | Sep 05 2001 | Renesas Electronics Corporation | Scan flip-flop and semiconductor integrated circuit device |
7190196, | Dec 17 2004 | XILINX, Inc. | Dual-edge synchronized data sampler |
7253661, | Jun 03 2005 | XILINX, Inc. | Method and apparatus for a configurable latch |
7484149, | Mar 14 2006 | SanDisk Technologies Inc | Negative edge flip-flops for muxscan and edge clock compatible LSSD |
7650549, | Jul 01 2005 | Texas Instruments Incorporated | Digital design component with scan clock generation |
7843218, | Oct 28 2009 | SHENZHEN XINGUODU TECHNOLOGY CO , LTD | Data latch with structural hold |
7872512, | Apr 01 2008 | Altera Corporation | Robust time borrowing pulse latches |
7873896, | Oct 01 2008 | ARM Limited | High performance pulsed storage circuit |
8067971, | Sep 18 2009 | ARM Limited | Providing additional inputs to a latch circuit |
8963581, | Sep 28 2012 | Altera Corporation | Pipelined direct drive routing fabric |
8970274, | Jun 08 2012 | MEDIATEK SINGAPORE PTE. LTD. | Pulse latches |
9360884, | Nov 08 2013 | Altera Corporation | Clocking for pipelined routing |
20050110581, | |||
20110066906, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Sep 19 2016 | WEBER, SCOTT | Altera Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 039921 | /0832 | |
Sep 20 2016 | Altera Corporation | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Sep 22 2021 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Date | Maintenance Schedule |
Apr 10 2021 | 4 years fee payment window open |
Oct 10 2021 | 6 months grace period start (w surcharge) |
Apr 10 2022 | patent expiry (for year 4) |
Apr 10 2024 | 2 years to revive unintentionally abandoned end. (for year 4) |
Apr 10 2025 | 8 years fee payment window open |
Oct 10 2025 | 6 months grace period start (w surcharge) |
Apr 10 2026 | patent expiry (for year 8) |
Apr 10 2028 | 2 years to revive unintentionally abandoned end. (for year 8) |
Apr 10 2029 | 12 years fee payment window open |
Oct 10 2029 | 6 months grace period start (w surcharge) |
Apr 10 2030 | patent expiry (for year 12) |
Apr 10 2032 | 2 years to revive unintentionally abandoned end. (for year 12) |