Abstract:
Buffers for driving interconnection conductors on programmable logic devices are shared between two types of uses, i.e., to drive static programmable connections to interconnection conductors, and to drive dynamically controllable connections to other interconnection conductors. The dynamically controllable connections are preferably tri-statable. Signals for effectuating the dynamic control are preferably generated on the programmable logic device near the tri-state-type connections. For example, a nearby logic module (&#34;subregion&#34;) may provide the dynamic control signal. This reduces the extent of routing for, and consequent delay of, the dynamic control signal.

Description:
This application claims the benefit of U.S. provisional patent application No. 60/061,748, filed Oct. 13, 1997. 
    
    
     BACKGROUND OF THE INVENTION 
     This invention relates to programmable logic devices, and more particularly to driver circuitry usable in the interconnection resources of such devices. 
     A typical programmable logic device has a plurality of regions of programmable logic disposed on the device in a two-dimensional array of intersecting rows and columns of such regions. Each region may include a plurality of subregions of programmable logic. Each subregion may include (1) a four-input look-up table which is programmable to produce an output signal that is any logical combination of the four inputs applied to the look-up table, (2) a register (flip-flop) for registering the output signal of the look-up table, and (3) circuitry for allowing the final output of the subregion to be either the registered or unregistered output signal of the look-up table. Interconnection conductors are provided on the device for conveying signals to, from, and between the subregions in each region, as well as to, from, and between the regions. For example, horizontal interconnection conductors may be associated with each row of regions for conveying signals to, from, and between the regions in the associated row. Vertical interconnection conductors may be associated with each column of regions for conveying signals to, from, and between the rows. And local conductors may be associated with each region for conveying signals to, from, and between the subregions in that region. Programmable interconnections are provided for making connections between the various types of interconnection conductors so that signals can be routed throughout the device in a great many different ways. For example, the local conductors associated with each region may be programmably interconnectable to the horizontal and/or vertical conductors adjacent to that region. Similarly, intersecting horizontal and vertical conductors may be programmably interconnectable. 
     Various kinds of drivers may be provided for driving signals from the subregions out onto the adjacent interconnection conductors. For example, certain of the horizontal and vertical conductors adjacent to each region may be driven by the output signals of that region&#39;s subregions via a buffer and an NMOS pass gate. Each such buffer may be capable of driving one or more horizontal and/or vertical conductors. Each pass gate is controlled by an associated static programmable element. Alternative driver circuitry involves the use of tri-state drivers feeding tri-state lines. The enable signal for each tri-state buffer is generated elsewhere on the device or comes from an input pin. Thus each such enable signal must be explicitly routed to each tri-state driver that it controls. This can result in extra delay in the enable path and may require considerable routing resources. 
     In view of the foregoing, it is an object of this invention to provide improved driver circuitry for programmable logic devices. 
     It is a more particular object of this invention to provide improved tri-state-type driver circuitry for programmable logic devices. 
     SUMMARY OF THE INVENTION 
     These and other objects of the invention are accomplished in accordance with the principles of the invention by providing programmable logic devices having buffers that are used for both driving some interconnection conductors via static programmable connections and driving other interconnection conductors via tri-state-type connections, with the enable signal for the tri-state-type connections coming from the logic adjacent to those connections. The signal buffered by each buffer may come from a subregion adjacent to that buffer or from interconnection conductors adjacent to that buffer. The output signal of each buffer may be applied to one or more adjacent interconnection conductors via static programmable control. In addition, the output signal of each buffer may be applied to another adjacent interconnection conductor via a pass gate. The pass gates associated with several or all of the subregions in each region may be controlled by one of the subregions in that region or an adjacent region. This pass gate circuitry provides tri-state-type operation of some of the interconnection conductors, with the tri-state operation being locally controlled and therefore without the extensive routing and consequent delay of enable signals that is typical of prior art tri-state driver circuitry. 
     Further features of the invention, its nature and various advantages will be more apparent from the accompanying drawings and the following detailed description of the preferred embodiments. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a simplified block diagram of an illustrative programmable logic device with which this invention can be used. 
     FIG. 2 is a simplified schematic block diagram of a representative portion of a programmable logic device constructed in accordance with the invention. 
     FIG. 3 is a simplified flow diagram illustrating a possible use of circuitry of the type shown in FIGS. 1 and 2. 
     FIG. 4 is a view similar to FIG. 2 showing another illustrative embodiment in accordance with the invention. 
     FIG. 5 is a simplified block diagram of an illustrative system employing a programmable logic device incorporating driver circuitry in accordance with the invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     An illustrative programmable logic device 10 which can be constructed in accordance with this invention is shown in FIG. 1. The most detail is shown in the upper left-hand corner of FIG. 1. Some of this detail is omitted in other portions of FIG. 1 to avoid unduly burdening the drawing. Device 10 includes a plurality of regions 20 of programmable logic disposed on the device in a two-dimensional array of intersecting rows and columns of regions. Each region 20 includes a plurality of subregions 30 of programmable logic which can be constructed as described above in the background section of this specification. For example, each region 20 may include ten subregions 30. A plurality of horizontal interconnection conductors 40 is associated with each row of regions 20. A plurality of vertical interconnection conductors 50 is associated with each column of regions 20. A plurality of local interconnection conductors 60 is associated with each region 20. 
     Programmable connections 42 are provided for programmably selectively connecting the horizontal conductors 40 adjacent to each region to the local conductors 60 adjacent to that region. Programmable connections 62 are provided for programmably selectively connecting the local conductors 60 adjacent to each region to input conductors 70 of that region. Programmable connections 82 and 84 are provided for programmably selectively connecting output conductors 80 of each region to the horizontal and vertical conductors 40 and 50 adjacent to that region. And programmable connections 52 are provided for programmably selectively connecting intersecting horizontal and vertical conductors 40 and 50. 
     The structure shown in FIG. 1 is only one example of many possible programmable logic device architectures with which this invention can be used. For example, the programmable connectivity shown in FIG. 1 is only illustrative, and different or additional connectivity can be employed if desired. To briefly consider just some of these possibilities, more direct feedback can be provided from subregion outputs 80 to the local conductors 60 associated with the region that produces those subregion outputs. As another possibility, rather than providing separate programmable connections 52, the functionality provided by those connections can be combined into connections 82 and 84 and the associated circuitry. 
     An illustrative embodiment of the improved driver circuitry of this invention is shown in FIG. 2. The circuitry shown in FIG. 2 is associated, at least for the most part, with one representative region 20 in FIG. 1. (Of course, each region 20 will typically have similar circuitry associated with it.) The output signal 80 of each subregion 30 in the associated region is applied to one input of a respective, conventional, programmable logic connector (&#34;PLC&#34;) 110. Other inputs to each PLC 110 are signals from several (i.e., &#34;m&#34;) horizontal and/or vertical conductors 40 and 50. In the simplest embodiment, each PLC 110 is programmable (by function control elements (&#34;FCEs&#34;) that are not shown separately in FIG. 2) to select one of its input signals for application to its output terminal. (In more complex embodiments, each PLC may be programmable to perform various logical operations on one or more of its inputs in order to produce an output.) 
     The output signal of each PLC 110 is applied to an associated, conventional buffer 120. Each buffer amplifies and otherwise conditions the applied signal for use in driving one or more conductors 40 and/or 50. 
     The output signal of each buffer 120 is applied to an associated NMOS pass gate transistor 130 and also to the input terminal of an associated, conventional PLC 140. In the illustrative embodiment shown in FIG. 2 all of the pass gates 130 associated with each region 20 are controlled in parallel by the signal on lead 170. This signal may be dynamically controlled by the output signal of a subregion 30 in the associated region or a subregion 30 in another region adjacent to the associated region. Alternatively, the signal on lead 170 may be programmed or fixed at logic 0 or logic 1 by appropriately programming FCEs 152 and 162. For example, if FCE 162 is programmed logic 0, the output signal of NAND gate 160 is always logic 1. If FCEs 152, 162 are both programmed logic 1, the output signal of NAND gate 160 is always logic 0. If FCE 152 is programmed logic 0 and FCE 162 is programmed logic 1, the signal on lead 170 is the inverted output of the subregion 30 shown in FIG. 2. Thus the signal on lead 170 can be either the dynamic inverted output of the depicted subregion 30 or static logic 0 or logic 1. 
     The output signal of each pass gate 130 is applied to a respective one of vertical conductors 50a. Each of these pass gate 130 output signals is effectively tri-statable by disabling the associated pass gate (signal on lead 170 is logic 0). The vertical conductors 50 adjacent to each column of regions 20 are divided into two groups of M conductors 50a and N conductors 50b. For example, if there are ten subregions 30 in each region 20, there may be ten conductors in each group of conductors 50a (i.e., M=10). Substantially more conductors may be included in each group of conductors 50b. For example, N may be a number like 70. Each conductor 50a receives the output of one pass gate 130 associated with each row of regions 20. Thus each conductor 50a has several pass gates 130 connected to it (i.e., one in each row of regions 20). However, only one group of pass gates 130 along conductors 50a will be enabled (by the associated signal 170) at any one time. The other pass gates 130 along those conductors 50a that are not enabled (i.e., in other rows) are effectively tri-stated as described above. Accordingly, conductors 50a are operable as tri-state-type lines. 
     Considering now the other connectivity of the output signals of buffers 120, each of PLCs 140 is programmable by FCEs (not shown separately) to apply the associated buffer 120 output signal to one or more of n vertical conductors 50b and/or n&#39; horizontal conductors 40. (If desired, PLCs 140 may be additionally programmable to perform logic on the signal being passed.) 
     From the foregoing it will be seen that each buffer 120 is effectively shared between two uses: (1) tri-state-type driving of conductors 50a, and (2) static connection driving of conductors 50b and/or 40. NMOS pass gates 130, which are used in the tri-state-type operation, can be much smaller than dedicated tri-state drivers. In addition, the enable signal 170 for pass gates 130 comes from a local source such as a nearby subregion 30, thereby avoiding extensive routing and consequent delay of the enable signal. 
     FIG. 3 illustrates the type of dynamic switching that can be easily implemented in a programmable logic device 10 constructed as shown in FIGS. 1 and 2. The several regions 20 on the left in FIG. 3 are all in one column on device 10. The region 20 to the right is typically in another column. The desired task is to transfer the contents of the ten registers in the subregions 30 that make up any one of the regions 20 on the left to the ten registers in the subregions that make up the region on the right. This can be done by enabling the pass gates 130 associated with the desired source registers, while disabling the pass gates 130 associated with all of the other possible source registers. In this way conductors 50a are effectively used as a multiplexer for transferring the desired source data to the destination registers on the right. Use of conductors 50a can be changed dynamically, so that at another time other registers on the left can be used as the source of the data transferred to the registers on the right. For example, the subregion 30 that controls a group of pass gates 130 can be programmed to act as an address decoder (the address data being applied to the subregion via its inputs 70). When the subregion 30 receives the address it is programmed to recognize, it outputs a signal that enables the associated pass gates 130, thereby allowing the signal sources (e.g., subregion outputs 80) connected to the inputs of the associated buffers 120 to make use of conductors 50a. All of the other subregions 30 that control pass gates 130 connected to those conductors 50a are programmed to recognize different addresses. Thus at any one time only the pass gates 130 associated with one region 20 in a column are enabled. All of the other pass gates 130 in that column are effectively tri-stated. 
     FIG. 4 shows another illustrative embodiment in which control of the pass gates 130 associated with each region 20 is at least partly subdividable. Half of the pass gates 130 associated with each region 20 are controlled by the signal on lead 170&#39;, and the other half of those pass gates 130 are controlled by the signal on lead 170&#34;. Both of leads 170&#39; and 170&#34; can carry the (inverted) output signal of depicted subregion 30. (This assumes FCE 156 programmed logic 1 and FCEs 166&#39; and 166&#34; programmed logic 0.) Alternatively, both of leads 170&#39; and 170&#34; can be forced to logic 1 by programming all of FCEs 156, 166&#39;, and 166&#34; logic 0. As still another possibility, either or both of FCEs 166&#39; and 166&#34; can be programmed logic 1 to force the associated lead or leads 170&#39;/170&#34; to logic 0. If only one of FCEs 166&#39; and 166&#34; is programmed logic 1, then the lead associated with the other of these FCEs can be dynamically controlled by the output signal of subregion 30 (assumes FCE 156 programmed logic 1) or can be forced to logic 1 (by programming FCE 156 logic 0). In respects other than those specifically mentioned above, the embodiment shown in FIG. 4 may be similar to the embodiment shown in FIG. 2. 
     The embodiment shown in FIG. 4 allows somewhat greater flexibility in the use of tri-state-type conductors 50a. For example, if only some of conductors 50a need to be driven from the subregions 30 in an adjacent region, the pass gates 130 associated with the other subregions in that region can be gated off (associated FCE 166&#39; or 166&#34; programmed logic 1). Those other subregions can then be used for other purposes (e.g., driving conductors 50b and/or 40). 
     FIG. 5 illustrates a programmable logic device 10 (which includes driver circuitry in accordance with this invention) in a data processing system 200. In addition to device 10, data processing system 200 may include one or more of the following components: a processor 204; memory 206; I/O circuitry 208; and peripheral devices 210. These components are coupled together by a system bus 220 and are populated on a printed circuit board 230 which is contained in an end-user system 240. 
     System 200 can be used in a wide variety of applications, such as computer networking, data networking, instrumentation, video processing, digital signal processing, or any other application where the advantage of using reprogrammable logic is desirable. Programmable logic device 10 can be used to perform a variety of different logic functions. For example, programmable logic device 10 can be configured as a processor or controller that works in cooperation with processor 204. Programmable logic device 10 may also be used as an arbiter for arbitrating access to a shared resource in system 200. In yet another example, programmable logic device 10 can be configured as an interface between processor 204 and one of the other components in system 200. It should be noted that system 200 is only exemplary, and that the true scope and spirit of the invention should be indicated by the following claims. 
     The PLCs mentioned throughout this specification (which includes the appended claims) can be implemented in any of a wide variety of ways. For example, each PLC can be a relatively simple programmable connector such as a switch or a plurality of switches for connecting any one of several inputs to an output. Alternatively, each PLC can be a somewhat more complex element which is capable of performing logic (e.g., by logically combining several of its inputs) as well as making a connection. In the latter case, for example, each PLC can be product term logic, implementing functions such as AND, NAND, OR, or NOR. Examples of components suitable for implementing PLCs are EPROMs, EEPROMs, pass transistors, transmission gates, antifuses, laser fuses, metal optional links, etc. As has been mentioned, the components of PLCs can be controlled by various, programmable, function control elements (&#34;FCEs&#34;), which are not always shown separately in the accompanying drawings. (With certain PLC implementations (e.g., fuses and metal optional links) separate FCE devices are not required, so that in those cases any depiction of FCE devices in the accompanying drawings merely indicates that the PLCs are programmable.) FCEs can also be implemented in any of several different ways. For example, FCEs can be SRAMs, DRAMs, first-in first-out (&#34;FIFO&#34;) memories, EPROMs, EEPROMs, function control registers (e.g., as in Wahlstrom U.S. Pat. No. 3,473,160), ferro-electric memories, fuses, antifuses, or the like. From the various examples mentioned above it will be seen that this invention is applicable both to one-time-only programmable and reprogrammable devices. 
     It will be understood that the foregoing is only illustrative of the principles of the invention, and that various modifications can be made by those skilled in the art without departing from the scope and spirit of the invention. For example, the principle illustrated by FIG. 4 can be extended to even more subdivisions of tri-state-type conductors 50a. As another example of modifications within the scope of the invention, more than one pass gate 130 can be connected to the output of each buffer 120. The outputs of such multiple pass gates can go to different conductors 50, or some can go to horizontal conductors 40 instead of only to vertical conductors 50. If provided, the multiple pass gates 130 associated with each buffer 120 can be partly or wholly independently controlled (e.g., in the manner that the pass gates in the two groups shown in FIG. 4 can be independently controlled if desired). The number of subregions 30 in each region 20 can be varied, as can the numbers of rows and columns of regions. The number of inputs and outputs of each subregion 30 can also be changed if desired. Different types of logic can be used in the subregions or regions. For example, instead of look-up tables, sum-of-products logic could be employed. It will also be understood that terms like &#34;row&#34; and &#34;column&#34;, &#34;horizontal&#34; and &#34;vertical&#34;, &#34;top&#34; and &#34;bottom&#34;, &#34;left&#34; and &#34;right&#34;, and other similar directional or orientational characterizations are entirely arbitrary and are employed only as relative terms for convenience herein. These terms are not intended to have any absolute or fixed meaning or to limit the scope of the claims to any particular device orientations or directions.