Abstract:
A plurality of programmable logic devices are connected in parallel to a programming command generator. A device selector connects individual devices with the programming command generator, thereby permitting the individual devices to be programmed without routing the programming data through other devices. In an alternative embodiment, an identification code is used to place the individual device in a condition to receive programming data. Using the teachings of this invention, programming data may initially be entered into a plurality of devices, and then the data entered in all the devices may be used to program the devices simultaneously. This procedure requires less time than entering data and giving each device the execute command in sequence.

Description:
FIELD OF THE INVENTION 
     This invention relates to in-system programmable IC logic devices and, in particular, to a parallel arrangement for programming such devices. 
     BACKGROUND OF THE INVENTION 
     In-system programmable (ISP) logic devices offer the advantage that they may be programmed in place, without removing them from the system in which they are connected. This saves time and makes them particularly suitable for systems that are dynamically reconfigurable. 
     U.S. Pat. No. 4,870,302 illustrates (FIGS. 8A and 8B) two systems for programming a group of ISP devices. In each system, the ISP are connected in series, so that the programming data must be transferred through each device in the series before arriving at the intended destination device. Similarly, U.S. application Ser. No. 07/695,356, commonly owned and incorporated by reference herein, describes an arrangement for programming a group of ISP devices that are connected in series. These arrangements suffer from the disadvantage that the devices can only be programmed one at a time and that the data must often be routed through several devices before it reaches its destination. 
     SUMMARY OF THE INVENTION 
     In accordance with this invention, a programming command generator is connected in parallel with a group of ISP logic devices. A device selector is used to connect the programming command generator to a desired ISP device, thereby allowing the programming data to be delivered directly to that device without passing through intermediate devices. Several configurations for the device selector are described, including a demultiplexer, a state machine-controlled demultiplexer, a switch matrix, and a state machine-controlled switch matrix. These possibilities are not exhaustive, however; other equivalent arrangements will be apparent to those skilled in the art and are included within the broad principles of this invention. 
     Normally it takes longer to program an ISP logic device than it does to enter the programming data into the device. Accordingly, an advantage of this arrangement is that the programming data may first be read into each of the devices separately, and then all of the devices can be programmed simultaneously. This substantially reduces the amount of time required to program the devices. 
     In an alternative embodiment, the device selector is omitted and the device to be programmed is selected by transmitting an identification code unique to that device so as to establish communication between that device alone and the programming command generator. 
     The broad scope and varied possibilities of this invention will become apparent from the detailed description, which refers to the following drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 illustrates a block diagram of an embodiment of the invention which includes a demultiplexer. 
     FIG. 2 illustrates a flow chart of the state machine in the ISP devices. 
     FIG. 3 illustrates the general structure of an ISP device having four input signals. 
     FIG. 4 illustrates the general structure of an ISP device having five input signals. 
     FIG. 5 illustrates a block diagram of an embodiment of the invention which includes a state machine-controlled demultiplexer. 
     FIG. 6 illustrates a flow chart of the state machine in the state machine-controlled multiplexer of FIG. 5. 
     FIG. 7 illustrates a block diagram of an embodiment of the invention which includes a switch matrix. 
     FIG. 8 illustrates a block diagram of an embodiment of the invention which includes a state machine-controlled switch matrix. 
     FIGS. 9, 9A and 9B illustrate a block diagram of an embodiment of the invention which does not include a device selector. 
    
    
     DESCRIPTION OF THE INVENTION 
     This invention will be described by reference to two types of ISP logic devices, both of which are manufactured by the assignee of this application, Lattice Semiconductor Corporation. 
     The first of these devices is the ispGAL22V10, which has four programming pins: Mode, SCLK (Serial Clock), SDI (Serial Data In), and SDO (Serial Data Out). The device is placed in the programming mode by asserting the Mode signal high. Thereafter, the programming operation is controlled by the Mode and SDI pins. The structure and operation of this device are outlined below and are fully described in the ispGAL22V10 Programmer&#39;s Guide, available from Lattice Semiconductor Corporation, which is incorporated herein by reference. 
     The second device is the Lattice ispLSI. This device is programmed by using five pins, designated: ispEN(isp Enable), Mode, SCLK, SCI and SCO. This device is placed in the programming mode by asserting the ispENpin low, which converts the other four pins from their normal functions to the programming mode. Thereafter, the programming is controlled by the Mode and SDI pins. The structure and operation of this device are outlined below and are fully described in the ispLSI Family Programming Spec., also available from Lattice Semiconductor Corporation and incorporated herein by reference. 
     This invention will be described with reference to six programmable logic devices. ISP devices 1, 2 and 3 are ispGAL22V10s and are therefore programmed using four pins, and ISP devices 4, 5 and 6 are ispLSIs and therefore are programmed using five pins. 
     FIG. 1 illustrates an embodiment in which the device selector is a demultiplexer. A programming command generator 10 provides all of the signals necessary to program ISP devices 1-6 on lines designated Mode, SCLK, SDI, SDO and ispEN. Programming command generator 10 may, for example, be an IBM PC. A program suitable for programming command generator 10 is set forth at pp. 4-33 to 4-39 of the Lattice pLSI and ispLSI Data Book and Handbook (1992), available from Lattice Semiconductor Corp., which is incorporated herein by reference in its entirety. Programming command generator 10 is connected to a demultiplexer 11 via a latch 12, which holds a 3-bit word designating which of ISP devices 1-6 is to be addressed. Demultiplexer 11 contains a decoder 13 having six outputs which control respective switches 14A-14F. The Mode output of programming command generator 10 connects to one side of switches 14A-14C which in turn run to ISP devices 1-3. The ispENoutput of programming command generator 10 is connected to one side of switches 14D-14F which in turn run to devices 4-6. 
     If, for example, ISP device 1 is to be addressed, programming command generator 10 outputs a 001 to latch 12, and decoder 13 generates an output closing switch 14A, which connects the Mode line to ISP device 1. When the programming of ISP device 1 has been completed, switch 14A is opened. If ISP device 4 is to be addressed, programming command generator 10 outputs a 100 to latch 12, and decoder 13 generates an output closing switch 14D, which connects the ispENline to ISP device 4. When the programming of ISP device 4 has been completed, switch 14D is opened. Program command generator cannot communicate with those of ISP devices 1-6 which correspond to any of switches 14A-14F that are open, and thus they do not recognize the programming command. 
     The structure and operation of ISP devices 1-3 will be illustrated by reference to FIGS. 2 and 3. FIG. 3 illustrates a block diagram of the internal interface to the ISP pins and the functional units involved in the programming operation. The programming operation is controlled by an instruction-based state machine 200 which is illustrated in FIG. 2. State machine 200 includes three states 201, 202 and 203, corresponding respectively to the idle, shift and execute states. Timing of state machine 200 is provided by the clock signal on the SCLK pin. The state of state machine 200 is determined by the signals on the Mode and SDI pins, and every state change is effective at the next clock pulse after a change in the Mode and SDI inputs. When the ISP device is functioning, state machine 200 stays locked in the idle state 201, which is unlocked when a high logic signal is received at the mode pin. 
     During the in-system programming mode, idle state 201 can be entered at any time from any state after one clock pulse by bringing the signal on the Mode pin to a logic high and the signal on the SDI pin to a logic low. A transition from the idle state 201 to the shift state 202, from the shift state to the execute state 203, or from the execute state 203 back to the shift state 202 can be accomplished by bringing both the Mode and the SDI pins to a logic high. When the Mode pin is at a logic low, the SDI pin is a data input pin, and the current state is held. 
     When the idle state 201 is entered, an 8-bit identification is automatically loaded into an ID register 301. The 8-bit identification specifies such parametric values as the number of logic blocks on the chip, the number of I/O pins available, etc. and is &#34;hard wired&#34; into the device. Then the Mode pin goes to a logic low, and seven clock pulses are applied to the SCLK pin to shift the identification in ID register 301 out the SDO pin to programming command generator 10 (the least significant bit of the identification already appears on the SDO pin). If programming command generator 10 recognizes the identification, communication is established with the ISP device. 
     As mentioned above, the shift state 202 is entered from the idle state 201 by bringing both the Mode and the SDI pins to a logic high. In the shift state 202, a 5-bit command is shifted serially into the ISP device via the SDI line. The command may be to erase data in the ISP device, send programming data to the ISP device, program the ISP device according to the data sent, extract programming data from the ISP device, or test the ISP device. Execution of the command is effected by bringing state machine 200 to the execute state 203, which is entered from the shift state 202 by bringing both the Mode and SDI pins to a logic high. Using 5-bit commands, 32 commands can be defined. The commands for device 4 are shown in Appendix A. 
     In the execute state 203, the command stored in the ISP device is executed. If the instruction is to load programming data into a data register 302 (i.e., the command &#34;DATASHFT&#34;), for example, the appropriate number of bits are shifted into data register 302 from the SDI pin after the Mode pin goes to a logic low, while the same number of bits in data register 302 are shifted out the SDO pin back to programming command generator 10. After the programming data have been shifted into register 302, a 5-bit command is issued to the ISP device by programming command generator 10 to transfer the programming data to row address 00 in a memory array 303. Array 303 contains a number of memory locations which correspond to programmable connections in the ISP device. After the data have been programmed to address 00, new programming data are sequentially shifted into register 302 and transferred to row address 01 of array 303. This process continues until all of addresses 00 through 44 are filled. Next, state machine 200 is stepped back to the command state 202 and the command to program the ISP device according to the data stored in array 303 is issued by programming command generator 10. The structure of ISP device 4 is illustrated in FIG. 4. State machine 400 is substantially identical to state machine 200 shown in FIG. 2. State machine 400 is activated when the ispENis driven low, and its transitions from one state to another are controlled by the Mode and SDI pins. Initially state machine 400 is instructed to load into an ID register 401 an 8-bit identification which is then shifted out via the SDO line to programming command generator 10. If programming command generator 10 recognizes the identification, communication is established with ISP device 4. Programming command generator 10 then commands state machine 400 to shift the programming data into a data register 402 via the SDI line. State machine 400 is then commanded to shift row selection data into a row register 404. In FIG. 4, row 0 is selected. The programming data are then transferred from data register 402 to row 0 in a programmable array 403. This process is repeated until all of rows 0 through 107 are filled with programming data. The programmable connections in ISP device 4 are then programmed in accordance with the data stored in array 403. 
     Referring again to FIG. 1, it will be noticed that the SCLK, SDI and SDO outputs of programming command generator 10 are connected in common to ISP devices 1-3, while the Mode output is connected to ISP devices 1-3 via demultiplexer 11. The Mode, SCLK, SDI and SDO outputs of programming command generator 10 are connected in common to ISP devices 4-6, while the ispENoutput is connected to ISP devices 4-6 via demultiplexer 11. As noted above, the respective state machines in ISP devices 1-3 are activated via the Mode pin, and the respective state machines in ISP devices 4-6 are activated via the ispENpin. 
     In the embodiment of FIG. 5, a state machine-controlled demultiplexer 50 is connected between programming command generator 10 and ISP devices 1-6. State machine-controlled demultiplexer 50 contains a state machine 51, a counter 52, a decoder 53 and switches 54A-54F. The ispENoutput of programming command generator 10 is connected to an input of state machine 50 and to one side of switches 54D-54F. The Mode output of programming command generator 10 is connected to another input of state machine 50 and to one side of switches 54A-54C. The SDI output of programming command generator 50 is connected to another input of state machine 50. Clock pulses are provided to state machine 50 and counter 52 via the SCLK output of programming command generator 10. 
     State machine 51 and counter 52 may advantageously reside in a Lattice GAL6001, the programming and structure of which are described in Appendix B and at pp. 2-147 to 2-161 of the Lattice GAL Data Book (1992), available from Lattice Semiconductor Corporation and incorporated herein by reference. The control signals for state machine 51 are Mode and SDI. Each GAL6001 device can support 7, ISP devices, since it includes a 3-bit counter. The 3-bit counters of several GAL6001 devices may be cascaded together to support as many ISP devices as required, as illustrated on page 17 of Appendix B. 
     FIG. 6 illustrates a flow chart for state machine 51, which includes fourteen &#34;states&#34;. Movement from one state to the next is controlled by the output of the SDI and Mode lines, and occurs with the clock pulses on the SCLK line. Since the SDI line is connected in common to state machine 51 as well as ISP devices 1-6, it is important to avoid issuing instructions to state machine 51 that would prompt any unwanted actions to be taken by ISP devices 1-6. This concern is accommodated by using the &#34;no operation&#34; command &#34;00000&#34; as a &#34;wake-up&#34; command for state machine 51 (see Appendix A). 
     State machine 51 is activated by bringing the ispENline to a logic low, which places state machine 51 in state 0. The SDI and Mode lines are then brought to a logic high to move state machine 51 to state 1. This moves state machines 200 in ISP devices 103 and state machines 400 in ISP devices 4-6 to the &#34;shift&#34; state 202 (see FIG. 2). Thereafter, the SDI line is brought to a logic low for five consecutive clock pulses, bringing state machine 51 to state 6. ISP devices 1.6 interpret this as a &#34;no operation&#34; command 00000 while it serves as a &#34;wake-up&#34; command for state machine 51. 
     The SDI and Mode lines are then brought to a logic high, bringing state machine 51 to state 7 and the state machines in ISP devices 1-6 to the &#34;execute&#34; state 203. When the SDI and Mode lines are both brought low, state machine 51 moves to state 8, while the state machines in ISP devices 1-6 execute the command. Since the command was &#34;no operation&#34; however no action is taken as a result of this command. The SDI line is then brought high and the Mode line is brought low, moving state machine 51 to state 9, and moving the state machines in ISP devices 1-6 from the &#34;execute&#34; state to the &#34;idle&#34; state. This completes the &#34;wake-up&#34; cycle for state machine 51, and results in the state machines in ISP devices 1-6 being in the &#34;idle&#34; state. These state machines will remain in the &#34;idle&#34; state so long as a logic high does not appear on both the SDI and Mode lines. 
     The SDI and Mode lines are then both brought low, which resets counter 52 to zero. If the SDI and Mode lines remain low, state machine 51 proceeds to state 11. The Mode line is then brought to a logic high, and remains in this condition as programming command generator 10 delivers a number of clock pulses representative of the ISP device to be selected. Each of these clock pulses causes counter 52 to advance one binary word. For example, if ISP device 5 is to be selected, five clock pulses would be delivered to counter 52 leaving it in a &#34;101&#34; state. The binary word in counter 52 is reflected at all times in decoder 53, so that switches 54A, 54B, etc. are closed in succession as counter 52 steps forward. When the desired number is reached (i.e., the desired one of switches 54A-54F is closed) the SDI line is brought to a logic high and state machine 51 moves to state 12. This terminates the clocking of counter 52 and leaves the desired switch closed. 
     States 13 and 14 are optional features that are not required for programming the ISP devices. The use of state 13 allows the user to receive a visual reading of which ISP device has been selected. When state machine 51 arrives at state 11, the Mode line is brought low, moving state machine 51 to state 13. The SDI line is then brought low and the Mode line is brought high and counter 52 is pulsed as described above. At the same time, the user is given a visual indication of which device has been selected. If the visual indication indicates that the correct device has been selected, both the SDI and Mode lines are brought high, causing the device to be enabled. Otherwise, if the Mode line is brought low, the device remains disabled. 
     State 14 is used in the situation where more than seven ISP devices are being programmed. As noted above, since counter 52 is a 3-bit counter this requires that at least one additional counter be cascaded with counter 52. In this configuration, when state machine 51 reaches a &#34;111&#34; the next clock pulse would drive the second counter to a &#34;001&#34;. Each time a counter fills up, a &#34;1&#34; appears on the line connecting it with the next cascaded counter, and in the case of the last counter on the SDO line. When state machine 51 is moved to state 14, programming command generator 10 counts the pulses delivered on the SCLK line while monitoring the SDO line. When a &#34;1&#34; appears on the SDO line, programming command generator 10 can determine the number of counters cascaded by dividing the number of pulses delivered by seven. This enables the user to determine how many counters are cascaded together. 
     FIG. 7 shows an embodiment including switch matrixes 70 and 71. Latch 12 and decoder 13 are identical to the similarly numbered components shown in FIG. 1. Three outputs of decoder 12 control switch groups in matrix 70, which connect the Mode, SCLK, SDI and SDO outputs to ISP devices 1-3, respectively. The remaining three outputs of decoder 13 control switch groups in switch matrix 71, and connect the Mode, SCLK, SDI, SDO and ispENto ISP devices 4-6, respectively. As shown in FIG. 7, if the numeral 001 is delivered to latch 12, decoder 13 will close the switches connecting programming command generator 10 to ISP device 1. ISP Device 1 is then programmed as described above. Similarly, ISP devices 2-6 may be connected to programming command generator 10 and programmed. 
     FIG. 8 illustrates yet another embodiment which includes a state machine controlled switch matrix 80. State machine 51, counter 52 and decoder 53 are identical to the similarly numbered components shown in FIG. 5. These devices function together in the same manner described above in connection with FIG. 5 to close the desired group of switches in switch matrix 80, thereby connecting the required output lines from programming command generator 10 to a desired one of ISP devices 1-6. 
     FIG. 9 illustrates another embodiment which omits the device selector. ISP devices 4-6 are shown connected to program command generator 10. Each of ISP devices 4-6 has a different 8-bit identification, the identification being &#34;0000001&#34; for ISP device 4, &#34;00000010&#34; for ISP device 5, and &#34;00000011&#34; for ISP device 6. Program command generator 10 drives the ispENlow, which results in the identification being loaded into the ID register 401 in each device. 
     Suppose ISP device 4 is to be programmed. Programming command generator 10 shifts the identification of ISP device 4 (&#34;00000001&#34;) into the ID register 401 in each of the devices. A comparison means in each device compares the identification in ID register 401 with the permanently stored identification in the device, and as a result a match occurs only in ISP device 4. Therefore, communication is established only with ISP device 4 for data transfer from programming command generator 10, and ISP devices 5 and 6 are not activated for programming. 
     Programming command generator 10 then shifts the programming data into the data register 402 and the row address information into row register 404 of ISP device 4. Programming command generator 10 then drives the Mode pin high and the SDI pin low and pulses the SCLK pin. This loads the internally stored identification of each device into its respective ID register 401. 
     This process is then repeated except that the identification for ISP device 5 is shifted out of programming command generator 10 and programming data for one row are entered into ISP device 5. Similarly, the identification for ISP device 6 is entered into ID registers 401, and the programming data for one row are entered into ISP device 6. Programming command generator 10 then drives the Mode pin high and the SDI pin low and pulses the SCLK pin. This loads the internally stored identification of each device into its respective register 401. Programming command generator 10 then sends out the programming command. Since at the end of each entry of a row of programming data the internally stored identification is automatically loaded into the corresponding ID register 401, when the programming command is issued there is a match between the identification stored in ID register 401 and the permanently stored identification in each of ISP devices 4-6, and the command is executed for the data held in register 402 in each device. This process is continued until the respective programmable arrays 403 in devices 4-6 are completely programmed. 
     The embodiments described above have various advantages and disadvantages. The system which includes a demultiplexer (FIG. 1) uses a minimal traces on a circuit board and can support any mix of ISP devices. However, it does require the addition of a demultiplexer and additional trace circuitry is required to connect programming command generator 10 with latch 12. 
     The system which includes a state machine-controlled multiplexor (FIG. 5) requires minimal traces on a circuit board and can also support any mix of ISP devices. No additional traces are required to connect programming command generator 10 to state machine-controlled demultiplexer 50, and the programming time is minimized by programming all of the ISP devices simultaneously. However, this system requires a fairly complex IC for the state machine-controlled multiplexor. 
     The embodiments which include a switch matrix (FIGS. 7 and 8) require a greater number of traces on a printed circuit board. 
     The embodiment shown in FIG. 9 requires minimal traces on a circuit board, and no additional component such as a multiplexor is required. Moreover, programming time is minimized because all of the ISP devices can be programmed simultaneously. However, none of the ISP devices may have exactly the same identity. 
     The foregoing embodiments are intended to be illustrative only and not limiting. Additional embodiments will be apparent to those skilled in the art. For example, the embodiments shown in FIG. 9 can be combined with the other embodiments to program a group of ISP devices. All such additional embodiments are included within the broad scope of this invention, which is defined in the following claims. ##SPC1##