Abstract:
Disclosed is a current driver that includes an array of current buffers and a program control circuit. The program control circuit responds to an externally generated programming signal to generate buffer direction control, daisy chain configuration control, and tristate control signals. The buffers of the array of current buffers are individually programmed by the direction control and the daisy chain configuration control signals to transmit data in one of a forward and reverse direction and to daisy chain a buffer to a preceding buffer, respectively. The array of current buffers is responsive to the tristate control signal to operate in a tristate mode. The array of current buffers may be reprogrammed in response to a reset signal.

Description:
This is a continuation of application Ser. No. 07/676,604 filed Mar. 28, 1991 now abandoned. 
    
    
     BACKGROUND 
     The present invention relates generally to input/output drivers and more particularly to an input/output driver having multiple input/output buffers individually programmable to function as input or output drivers. 
     Input/output drivers are widely used in digital circuits to buffer input and output signals transmitted to and from different pans of a system and external devices. One type of prior an input/output (I/O) driver is a bus transceiver having multiple I/O drivers in a package and a single direction control line for all of the I/O drivers in the package. Individual direction control for the drivers is not provided. A 54AS645 bus transceiver manufactured by Texas Instruments, Inc. is an example of this type of I/O driver. Another type of prior an bus transceiver includes multiple I/O drivers in a single package and includes individual direction controls for each driver in the package. An external programming apparatus is required for programming of direction control. A 54LS449 bus transceiver manufactured by Texas Instruments, Inc. is an example of this type of I/O driver. A programmable array logic device (PAL) such as a PAL16L8 manufactured by Advanced Micro Devices is another type of prior an I/O driver. Multiple drivers are provided and the individual drivers can only programmed prior to installation of the device on a circuit card. Design changes require replacement of the device with a newly programmed PAL. 
     There exists a need for a programmable bidirectional input/output driver which can be used as a generic buffer in digital logic circuits and for a device with this capability that can be used in conjunction with programmable gate arrays to provide a genetic connector for use in digital logic circuits. This type of device enables system design modifications to be effected without the need to physically modify the circuitry. 
     An advantage of the invention is to provide a programmable bidirectional input/output driver. Another advantage of the invention is to provide a programmable bidirectional I/O driver that performs as a programmable connector between low current drive logic elements and high current drive systems. Yet another advantage of the invention is to provide an I/O driver that can be used in conjunction with programmable gate arrays to provide a genetic bidirectional input/output driver to replace existing but out-of-date input/output drivers. Still another advantage of the invention is to provide a programmable bidirectional I/O driver having multiple drivers that can be individually programmed in a daisy chain configuration. Another advantage of the invention is to provide a programmable I/O driver that can be logically reconfigured for direction without physical reconfiguration of the device. Yet another advantage of the invention is to provide a programmable bidirectional I/O driver that can be reconfigured after assembly upon a reset command. 
     SUMMARY OF THE INVENTION 
     Broadly the invention is a programmable bidirectional I/O driver that comprises an array of individual bidirectional current drivers each having a direction control signal input. A programming circuit includes an input for receiving coded programming signals and for generating I/O driver direction control signals and daisy chain control signals. Direction control and daisy chain control signal inputs are connected to receive the I/O driver direction control and daisy chain control signals, respectively, and are responsive thereto to condition the individual I/O drivers to transmit data signals in a selected forward or reverse direction and to configure the daisy chain connection of the I/O drivers. Control circuitry is provided to control the sequencing and transfer of programming, direction control, and daisy chain control signals. The I/O drivers may further include a tristate operating capability. The control circuitry includes a tristate control circuit responsive to a tristate program control signal to selectively control this capability. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The various features and advantages of the present invention may be more readily understood with reference to the following detailed description taken in conjunction with the accompanying drawing, wherein like reference numerals designate like structural elements, and wherein: 
     FIG. 1 illustrates a programmable bidirectional I/O driver in accordance with the principles of the present invention; and 
     FIG. 2 illustrates daisy chaining of the driver of FIG. 1 in accordance with the invention. 
    
    
     DETAILED DESCRIPTION 
     Referring now to the drawing, FIG. 1 illustrates a programmable bidirectional input/output (I/O) driver 10 in accordance with the principles of the present invention. The driver 10 comprises a program control circuit 12, and a shift register and input/output (I/O) buffer circuit 14. The program control circuit 12 includes a twenty-four bit clock counter 16 and a twenty-four bit length count register 18. The counter 16 and the register 18 have clock signal inputs 20, 22, respectively, connected to receive an externally generated clock signal (CLK) provided at clock signal input terminal 24. The counter 16 and the register 18 have twenty-four bit parallel outputs 26, 28, respectively, connected to the parallel inputs 30, 32 of a twenty-four bit comparator 34. The register 18 has a serial data input port 35 connected to a programming signal input terminal 37 that is adapted to receive an externally generated serial binary coded programming signal. 
     An output 36 of the comparator 34 is connected to one input 39 of a three input AND gate 38. Another input 40 of the AND gate 38 is connected to a tristate select input terminal 42 and is adapted to receive an externally generated tristate select control signal. The third input 44 of the AND gate 38 is connected to the start bit detect signal output 46 of a forty-four bit direction control signal shift register 48 that is part of the shift register and input/output (I/O) buffer circuit 14. The shift register 48 includes a serial data input port 47 connected to the output of an OR gate 53. One input of the OR gate 53 is connected to a data input terminal 41. 
     The length count register 18 is provided with internal preamble signal detect logic 50 having an output 52 connected to one input 54 of an EXCLUSIVE OR gate 56 and the other input of the OR gate 53 by way of an inverter 51. Another input 58 of the EXCLUSIVE OR gate 56 is connected to the start bit detect signal output 46 of the shift register 48. An output 60 of the EXCLUSIVE OR gate 56 is connected to the data input (D) 62 of a D-type flip-flop 64. The flip-flop 64 has its clock input 66 connected to the clock input terminal 24 and its Q output 68 connected to one input 70 of a two input OR gate 72. The other input 74 of the two-input OR gate 72 is connected to the serial data input terminal 37. The output of the two-input OR gate 72 is connected to a data output terminal 78. 
     The shift register and input/output (I/O) buffer circuit 14 also comprises an array of forty-four individual bidirectional I/O current drivers or buffers 80. The buffers 80 are bidirectional in that they can transmit data or other signals 83 from low current drive logic elements connected to low level inputs 82 to high current drive elements connected to outputs 84 or, conversely, can transmit high level signals from high current elements connected to output terminals 84 to low level logic elements connected to inputs 82. The individual buffers 80 are conditioned to transmit signals in the selected forward or reverse direction by I/O buffer direction control signals. These signals are applied to individual ones of forty-four parallel I/O driver direction control signal inputs 86 that are connected to individual ones of forty-four parallel conductors of an output bus 88 of the shift register 48. 
     The I/O drivers 80 may also be selectively conditioned to operate in tristate mode by applying an appropriate tristate select control signal to a tristate select control signal input terminal 90. The counter 16, the register 18, the comparator 34, the shift register 48, the flip-flop 64, and the buffers 80 each have a reset input connected to a universal reset signal input terminal 95. 
     The configuration data structure for the driver 10 is presented below. 
     
         ______________________________________HEADER11111111          Dummy Bits0010              Preamble Code&lt;24 bit length count&gt;             Configuration Program Length1111              Dummy BitsPGA PROGRAM DATA  (Optional)0&lt;PGA Data Frame #001&gt;111             N Data Frames0&lt;PGA Data Frame #002&gt;111             ..                 ..                 ..                 Postamble Code0&lt;PGA Data Frame #N&gt;1111111I/O DRIVER DATA0                 Start BitData Field        Direction Control Data111               Stop Bits1111              Postamble CodeDAISY CHAIN DATA0                 Start BitData Field        Direction Control Data111               Stop Bits1111              Postamble Code.                 ..                 ..                 .______________________________________ 
    
     In order to program the driver 10, in sequence, the header data is clocked into the length count register 18. The preamble detect output 52 of the register 18 is low and the output of the inverter 51 is high. This causes all data one&#39;s to be loaded into the shift register 48 from the output of the OR gate 53. 
     When the header data is fully loaded into the length count register 18, the internal preamble detect logic 50 generates a preamble detect signal at its output terminal 52. The configuration data length count is locked into the length count register 18. The output of the inverter 51 goes to zero and the direction control data is loaded into the shift register 48 through the serial input port 47. When the programming data &#34;0&#34; start bit reaches the final stage of the shift register 48, a start bit detect signal is generated by internal logic within the shift register 48. The programming signal is applied to the data output terminal 78 of the driver 10 in response to the start bit detect signal and operation of the logic circuit comprised of the EXCLUSIVE OR gate 56, the flip-flop 64, and the OR gate 72. 
     Simultaneously, the clock count and length count become equal and the output of the comparator 36 goes high. This causes the tristate select control signal, previously blocked by AND gate 38 to be applied to tristate select control input terminal 90 of the shift register 48. Selection of tristate operation is controlled by the input to the tristate select input terminal 42. The programming data loaded into the buffers 80 remains fixed until the occurrence of a reset signal. 
     FIG. 2 illustrates the connection of two or more (four are illustrated in FIG. 2) programmable I/O drivers 10a-10d in a daisy chain to expand the number of number of programmable I/O drivers available. Each programmable I/O driver 10a-10b receives the externally generated tristate select signal on terminal 42 and a clock signal on terminal 24. The second programmable I/O driver 10b receives its program data on input terminal 37b of program control circuit 12 from data output terminal 78a from the first programmable I/O driver 10a. Similarly, third programmable I/O driver 10c receives its program data on input terminal 37c from data output terminal 78b from the second programmable I/O driver 10b and so forth for any additional programmable I/O drivers. The individual I/O buffers 14a-14d are accordingly controlled to provide the selected I/O buffer direction. 
     In a working embodiment of the invention, the invention was implemented in a single 1.5 micron CMOS cell-based gate array. Each of the buffers 80 in the shift register and input/output (I/O) buffer circuit 14 provides 24 milliamps of output drive current. All forty-four drivers or buffers 80 were tristated. The package was provided in a 120-pin ceramic pin grid array. 
     Thus there has been described a new and improved programmable, bidirectional input/output driver. It is to be understood that the above described embodiment is merely illustrative of some of the many specific embodiments which represent applications of the principles of the invention. Clearly, numerous and other arrangements can be readily devised by those skilled in the art without departing from the scope of the invention.