Abstract:
A programmable input/output cell (I/O cell) for use with integrated circuits, and in particular programmable logic devices, is presented comprising input receiver circuitry, output driver circuitry and programmable elements. The input receiver and output driver circuitry each include multiple receivers/drivers that provide an interface between the signaling level of the integrated circuit and at least two other signaling standards. The programmable elements may be programmed to select a different signaling standard for each I/O cell to operate at, if desired. For instance, adjacent I/O cells may be connected to two different bus structures that utilize different signaling levels. The invention enables one I/O cell to translate between the PLD signaling level and the first bus signaling level, while the second I/O cell translates between the integrated circuit signaling level and the second bus signaling level.

Description:
CROSS REFERENCE TO RELATED APPLICATION 
     This application claims the benefit of United States provisional patent application No. 60/056,741, filed Aug. 20, 1997. 
    
    
     BACKGROUND OF THE INVENTION 
     This invention relates to programmable logic devices (“PLDs”), and more particularly to input/output (I/O) circuitry that may be used to couple the PLDs to external circuitry having multiple signal interfaces. 
     Programmable logic devices are integrated circuits that are used to implement combinational and/or sequential digital functions that may be defined by a designer and programmed into the PLD. In this manner, PLDs may be configured by a user to implement, for example, any Boolean expression or registered function with built-in logic structures. Once configured, the user must connect the PLD to external circuitry that provides input signals to, and receives output signals from, the PLD. Often, integrated circuits are used to interface with several bus structures and/or control signals, each of which may utilize different signaling levels for communication. 
     One deficiency of conventional PLDs and their I/O circuitry is that each PLD must be configured to operate with specific external circuitry. For example, if a user utilizes Transistor-to-Transistor Logic (TTL) or Complementary Metal-Oxide Semiconductor (CMOS) external circuitry, the PLD must be configured to provide the appropriate drive signals. This often requires the use of translation circuitry. For example, Wong et al. U.S. Pat. No. 5,600,267 describes a CMOS circuit for translating a signal from Current-Mode-Logic (CML) to CMOS logic voltage levels. This deficiency is even more apparent in view of the programmable nature of PLDs and the flexibility provided to the end users. Another example of this requirement is described in Nhu U.S. Pat. No. 4,975,602, in which a multi-logic interface box is described that has a multi-connector coupler that provides different logic level conversions. 
     Further, the nature of PLDs, as semiconductor devices, is that they are susceptible to a wide range of potential hazards, such as electrostatic discharge (ESD). To avoid these potential problems, care must be taken in connecting the PLD pins to external circuitry. Any pins which are used as input pins should preferably be driven by an active source (including bi-directional pins during input operations). Additionally, unused pins are typically tied to ground to avoid the potential of additional DC current and noise being introduced into the circuits. 
     Output loading of the PLD I/O pins is typically resistive and/or capacitive. Resistive loading exists where the device output sinks or sources a current during steady-state operation (e.g., TTL inputs, terminated buses, and discrete bipolar transistors). Capacitive loading typically occurs from packaging and printed circuit board traces. Further, an important design consideration of the interface between the PLD and external circuitry is that the target device can supply both the current and speed necessary for the given loads. 
     One deficiency of Wong, Nhu and other known interface translators is the limited scope with which the circuitry may be used. Often these devices are designed such that either the interface only supports a single signaling type, or that external circuitry, such as Nhu&#39;s interface box, is required to act as a transceiver. More importantly, these devices often provide only a single interface on all of the input/output pins of the device at a single time. 
     In view of the foregoing, it would be desirable to be able to provide an I/O architecture that provides the capability to drive multiple logic standards. 
     It also would be desirable to be able to provide an I/O architecture having the capability to selectively drive different I/O cells on a single integrated circuit with different logic standards. 
     It further would be desirable to be able to provide an I/O architecture that may be programmed by a user to select any one of several logic standards for individual I/O cells of an integrated circuit, such that a single PLD may be used with external circuitry that operates at different logic levels. 
     SUMMARY OF THE INVENTION 
     These and other objects are accomplished in accordance with the principles of the present invention by providing an I/O architecture that includes programmable I/O cells having multiple drivers, each of which provides an interface to a different signaling level. In a preferred embodiment of the present invention, PLDs are provided having programmable I/O cells that interface with, for example, High-Speed Transistor Logic (HSTL) (both terminated and non-terminated), Stub-Series Terminated Logic for 3.3 volts (SSTL — 3), Gate Transistor Logic (GTL), TTL, CMOS, open drain and logic standards. Those skilled in the art will understand that other logic standards, both those presently available and others still to be developed, may be incorporated into the I/O cells such as those described herein without departing from the scope of the present invention. 
     The preferred embodiment of the present invention provides programmable I/O cells that each may be individually accessed at the same time the PLD programming file is downloaded into the PLD. Each I/O cell includes multiple drivers, only one of which is selected by the programming file. The other drivers are then disabled using any conventional manner (such as tristating). The number of interfaces supported is only limited by the number of buffers placed in the silicon. A further advantage of the I/O cells of the present invention is that they may be configured such that a single programming bit may be used to set each cell, and all of the cells may be programmed at once via an ENABLE signal. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The above and other objects and advantages of the invention will be apparent upon consideration of the following detailed description, taken in conjunction with the accompanying drawings, in which like reference numerals refer to like parts throughout, and in which: 
     FIG. 1 is a schematic block diagram of an illustrative embodiment of an input/output cell having multiple drivers in accordance with the principles of the present invention; 
     FIG. 2 is an overall simplified schematic block diagram of an illustrative example a programmable logic device (PLD) that incorporates the input/output cells of FIG. 1 in accordance with the principles of the present invention; 
     FIG. 3 is a simplified schematic block diagram of the programmable logic device of FIG. 2 that shows details of the interconnection of input/output cells of FIG. 1, in accordance with the present invention; and 
     FIG. 4 is a simplified block diagram of an illustrative system employing a programmable logic device having the input/output cells of FIG. 1 in accordance with the present invention. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     FIG. 1 shows a schematic diagram of a. programmable input/output cell  100  (I/O cell  100 ) that incorporates principles of the present invention. I/O cell  100 , which is connected to input/output pad  102 , includes output driver circuitry  110 , input receiver circuitry  120  and programming circuitry  130 . Input/output pad  102  is a conventional I/O pad that, for example, simply may be a pin on a connector. Output driver circuitry  110  receives output signals (i.e., PLD OUT ) from a programmable logic device (PLD) (not shown), and includes multiple I/O drivers  112 ,  114  and  116 , that each correspond to a different signaling standard. While three drivers are shown, persons skilled in the art will appreciate that the advantages of the present invention may be obtained as long as two or more drivers are utilized in output driver circuitry  110 . Each of drivers  112 ,  114  and  116  are connected in parallel between PLD OUT  and I/O pad  102 , and each includes a tri-state control line that is used to set the operational state of the driver. 
     Input receiver circuitry  120  provides input signals (i.e., PLDIN) to a programmable logic device (PLD) (not shown), and includes multiple I/O receivers  122 ,  124  and  126 , that each correspond to a different signaling standard. While three receivers are shown, persons skilled in the art will appreciate that the advantages of the present invention may be obtained as long as two or more receivers are utilized in input receiver circuitry  120 . Each of receivers  122 ,  124  and  126  are connected in parallel between PLD IN  and I/O pad  102 , and each includes a tri-state control line that is used to set the operational state of the receiver. 
     Programming circuitry  130 , which provides the control signals to output driver circuitry  110  and input receiver circuitry  120 , includes multiple programming elements  132 ,  134  and  136 . Programming elements  132 ,  134  and  136  each provide a logic signal to one of two-input AND gates  133 ,  135  and  137 , respectively, while also enabling a selected one of receivers  122 ,  124  and  126 , respectively. The other input of each AND gate is coupled to receive an ENABLE signal that, in combination with the signals from programming elements  132 ,  134  and  136 , activates a selected, single output driver. Each of programming elements  132 ,  134  and  136  may be of any variety of memory cells. For example, programming elements  132 ,  134  and  136  may be SRAM (static random access memory), EPROM (erasable programmable read-only memory), EEPROM (electrically erasable programmable read-only memory), or antifuses. 
     For convenience, simplicity and to reduce chip area, it is preferable that elements  132 ,  134  and  136  be formed from the same variety of programmable elements as he PLD to which they are attached. Thus, if the PLD tilizes EEPROM elements (such as in the MAX 7000 family of PLDs available from Altera Corporation, San Jose, Calif.), each I/O cell  100  should also include EEPROM elements for programming elements  132 ,  134  and  136 . Further, while such a configuration is preferable, it is not a requirement of the present invention (i.e., a PLD utilizing EEPROMs may be configured with I/O cells  100  utilizing SRAM elements). 
     The operation of I/O cell  100  depends on the status of programming elements  132 ,  134  and  136 , only one of which should be set for a given I/O cell  100 . The selected element is set in conjunction with the downloading of the programming file for the PLD, which, as previously described, sets the selected input receiver. The ENABLE signal, in conjunction with the corresponding AND gate, sets the appropriate output driver to determine the signaling level for each individual I/O pad  102 . Thus, the signaling level of the output driver cannot be changed until an ENABLE signal is received. 
     In general, the logic output of a PLD (i.e., PLD OUT ) typically conforms to CMOS signaling level. Thus, output driver circuitry  110  and input receiver circuitry  120  will generally convert between CMOS signaling level and the selected signaling level. Persons skilled in the art will appreciate that the advantages of the present invention still may be obtained if the signaling level of the PLD is other than CMOS, such as, for example HSTL (High-Speed Transistor Logic). During PLD operation, only one set of driver/receivers (i.e., output driver and input receiver, such as output driver  112  and input receiver  122 ) is turned ON and the others are turned OFF via the tri-state control signal. The driver/receivers that are turned ON convert the incoming and outgoing signals from the selected signaling level to the signaling level of the PLD. As previously described, a further advantage of the present invention is, because individual I/O pads may be set to different standards, that even I/O pads next to each other may utilize different signaling standards if, for example, the pads are connected to two different bus structures. 
     The logic input of the PLD works in a manner similar to that of the logic output, except in reverse. The external input signal comes into the PLD through I/O pad  102  and is provided to input receivers  122 ,  124  and  126 . Only one of programming elements  132 ,  134  and  136  is turned ON, and thus, only one of the input receivers is turned ON at any time. The one input receiver that is turned ON converts the input signals from the selected signaling level to the signaling level of the PLD, which generally is CMOS. 
     During bidirectional input/output operations, I/O cells  100  perform output functions as described above. Input operations also are as described above, except that when receiving input signals, it may be required to de-assert the ENABLE signal so that the input signal is not driven out during the input operation. If the signaling level is implemented using open-drain structures, however, the output ENABLE signal still may be used, but is not required. 
     FIG. 2 is a simplified overall block diagram of an illustrative embodiment of a programmable logic device (“PLD”)  200  constructed in accordance with the present invention. PLD  200  comprises: a plurality of programmable modules  202 ; a global interconnect array (“GIA”)  204  for interconnecting modules  202 ; dedicated input pads  206  which can be used to direct input directly to GIA  204 ; and input/output pads  100  (that each include one I/O cell  100  and one I/O pad  102  as shown in FIG.  1 ). I/O cells  100  either can be used as input pads to send data indirectly through module  202  to GIA  204 , or as output pads to transmit data from module  202 . 
     Selected lines  206  connect, and are used to send data from, GIA  204  to modules  202 . The methods for selecting and assigning lines  206  are well-known. For example, U.S. Pat. No. 5,384,499 describes the selecting and assigning of lines in a PLD in a specific pattern to maximize the user&#39;s ability to route a selected line to the output of a selected multiplexer. Module  202  comprises multiplexer  208 , buffers  210 ,  212  and  214 , logic array block (“LAB”)  216 . As previously described with respect to FIG. 1, signals may be provided to, or received from, PLD  200  via any number of signaling standards via I/O cells  100 , which convert the input/output signals to the signaling standard of the PLD based upon which one of programming elements  132 ,  134  and  136  are selected. Moreover, the techniques of the present invention may further be utilized if, for example, the I/O pads generally indicated by reference numeral  220  are connected via one signaling standard while those indicated generally by reference numeral  230  are connected via a second signaling standard (or even if individual I/O pads with a single group need different signaling standards). 
     FIG. 3 shows a simplified schematic block diagram of a more detailed view of the I/O architecture of PLD  200  of FIG. 2 utilizing I/O cells  100  of FIG.  1 . Preferably, PLD  200  includes a large number of I/O pads  102  and dedicated input pads  206  to support I/O intensive applications. For example, one preferred embodiment has  160  I/O pads  102  and four dedicated input pads  206  in a  208 -pin package. Each of I/O pads  102  has a corresponding I/O cell  100  that provides translation between the signaling standard of PLD  200  and the selected signaling standard of the external device connected to each I/O pad  102 . Preferably four dedicated inputs  206  provide inputs to GIA  204 , or, for example, one dedicated input  206  can be used as a global clock signal, another as a global clear signal, while one of the remaining two dedicated inputs  206  can be used as an output enable signal (which would then be connected to the ENABLE line). 
     Programmable lines  302  provide a pathway for the programming signals to be applied to each of programming elements  132 ,  134  and  136  in each of I/O cells  100 . Of course, persons skilled in the art will appreciate that additional programming lines may be added if more than three external signal standards are needed, or one of the lines may be eliminated if only two standards are utilized without departing from the spirit of the present invention. Also, as previously described, each of the drivers in circuitry  110  and receivers in circuitry  120  can operate in tri-state mode so that pads  102  can be configured as inputs or outputs. When pads  102  are configured as outputs, logic levels on the ENABLE line, switch the appropriate drivers of I/O cell  100  into a low output impedance mode in which the outputs of LABs  216  are routed to I/O pads  102 . When I/O pads  102  are configured as inputs, the appropriate tri-state receivers (of receiving circuitry  120 ) are switched to a high output impedance mode, while the ENABLE signal is de-asserted so that external signals appearing on pads  102  are routed into GIA  204 . 
     FIG. 4 illustrates the use of programmable logic device  200  and I/O cells  100  of this invention in a data processing system  400 . Data processing system  400  may include one or more of the following components: processor  402 ; memory  404 ; I/O circuitry  406 ; and peripheral devices  408 . These components are coupled together by a system bus  410  and are populated on a circuit board  420  which is contained in an end-user system  430 . Bus  410  may be or include, for example, a PCI bus and the appropriate signaling level or bus  410  may employ any other type of signaling level provided that drivers and receivers within I/O cells  100  in PLD  200  are included to translate between the PLD signaling level and the selected signaling level. 
     System  400  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  200  can be used to perform a variety of different logic functions. For example, programmable logic device  200  can be configured as a processor or controller that works in cooperation with processor  402 . Programmable logic device  200  may also be used as an arbiter for arbitrating access to a shared resource in system  400 . In yet another example, programmable logic device  200  can be configured as an interface between processor  402  and one of the other components in system  400 . Moreover, it should be noted that system  400  is only exemplary, and that the true scope and spirit of the invention should be indicated by the claims below. 
     Thus, programmable I/O cells having multiple driver/receivers for use in interfacing with any one of several different signaling levels are provided. In particular, PLDs having I/O cells that may be connected to several different interface standards are provided. One skilled in the art will appreciate that the present invention can be practiced by other than the described embodiment, which is presented for purposes of illustration and not of limitation. Thus, the present invention is limited only by the claims which follow.