Abstract:
The present invention provides a method and architecture for allowing a device using a traditional one-time programmable technology to be programmed multiple times within the package. The present invention provides multiple programming without introducing the additional complexity of external pins or specialized packaging. An address counter and main array is provided using one-time programmable technology. The address counter selects a page in the main array to write the programmable information. The desired programming information is programmed into a first page while the additional pages remain unprogrammed. When additional information needs to be configured, the address counter is incremented and points to a new page in the main array where the new programming information may be stored. As a result, a number of programming configurations can be programmed into a one-time programmable technology. The advantages of erasable technology may be implemented using the simplicity of one-time programmable technology.

Description:
FIELD OF THE INVENTION 
     The present invention relates to programmable technology generally, and more particularly, to a method and architecture for reprogramming conventionally non-reprogrammable technology. 
     BACKGROUND OF THE INVENTION 
     It is desirable to provide external programming of a pre-manufactured device in order to change the configuration after the device is manufactured. One way to provide a variety of programming options is to use a technology that can be programmed multiple times, such as an electrically erasable programmable read only memory (EEPROM). Another possibility would be to use external pins to select an unused page in a programmable array. Yet another possibility would be to use special packaging which would allow the electrically programmable array to be erased and re-programmed. Such a technology may include ultraviolet (UV) erasure of an electrically programmable read only memory. 
     A disadvantage with any of these methods is the fact that they require relatively complex technology to implement a programmable structure that can be written to more than one time. The method of providing additional pins increases the entire pin count of the device, which reduces the desirability of the technology. The possibility of providing a special package that allows a one-time programmable structure to be erased is also more complex than a traditional plastic package. 
     Referring to FIG. 1, a circuit 10 is shown implementing an EEPROM as a programmable memory. The circuit 10 generally comprises a number of internal components, an EEPROM portion 12, one or more programming control inputs 14 and one or more outputs 16. The output 16 may be, in an example of a clock generator circuit, an output clock. The internal components, in the example of a clock generator circuit, may be a phase-locked loop PLL 18, a PLL 20 and a miscellaneous logic block 22. The programming control received at the input 14 is presented to an input 24 of the EERPOM 12. The EEPROM 12 presents a signal to an input 28 of the miscellaneous logic block 22. The miscellaneous logic block 22 presents an output 30 that presents a signal to the output 16. Whatever function is implemented with the miscellaneous logic block 22, the EEPROM 12 presents control information in response to configuration information received from the external inputs 14. However, it would be desirable to replace the EEPROM 12 with a less complex one-time programmable technology without losing the ability to program the circuit 10 more than one time. 
     SUMMARY OF THE INVENTION 
     The present invention provides a method and architecture for allowing a device using a traditional one-time programmable technology to be programmed multiple times within the package. The present invention provides multiple programming without introducing the additional complexity of external pins or specialized packaging. An address counter and main array is provided using one-time programmable technology. The address counter selects a page in the main array to write the programmable information. The desired programming information is programmed into a first page while the additional pages remain unprogrammed. When additional information needs to be configured, the address counter is incremented and points to a new page in the main array where the new programming information may be stored. As a result, a number of programming configurations can be programmed into a one-time programmable technology. The advantages of erasable technology may be implemented using the simplicity of one-time programmable technology. 
     The object features and advantages of the present invention include providing a one-time programmable technology that may be programmed more than one time. The present invention does not incur the additional complexities of added external pins, special packaging or complex erasable technology. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     These and other objects, features and advantages of the present invention will be apparent from the following detailed description and the appended claims and drawings in which: 
     FIG. 1 is a block diagram of a previous approach to providing reprogrammable circuits; 
     FIG. 2 is a block diagram of a preferred embodiment of the present invention; and 
     FIG. 3 is a block diagram of an alternate embodiment of the present invention implemented in a multi-page memory array. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Referring to FIG. 2, a block diagram of a circuit 40 is shown in accordance with a preferred embodiment of the present invention. The circuit 40 generally comprises a number of internal components, a memory portion 42, one or more programming control inputs 44 and an output 46. The circuit 40 may be used to perform a variety of operations. In one example, where the circuit 40 is used as a clock generator, the output 46 represents one or more clock outputs. The internal components, in the example of a clock generator circuit, may be a PLL 48, a PLL 50 and a miscellaneous logic block 52. The programming control received at the inputs 44 is generally presented to an input 62 of the memory 42. The memory 42 generally presents a signal to an input 64 of the miscellaneous logic 52. The miscellaneous logic 52 may present an output 60 that may present a signal to the output 46. Whatever function is implemented with the miscellaneous logic block 52, the memory 42 generally presents control information in response to information that may have been received from the external inputs 44. 
     The memory 42 generally has an output 66 that may present an incrementing signal that may be received at an incrementing input 68. Each time a new programming control signal is received at the input 62, the incrementing signal received from the output 66 presents a new value at the incrementing input 68. The incrementing signal may be implemented as an address counter or other means that provides a new address location each time the programming control signal changes. The new address location may be any non-repetitive counter. For example, a counter that increments to a new successive address each time a new programming control signal is presented at the input 44 may be the simplest type of counter. However, a non-sequential but non-repetitive counter may be useful. For example, a counter that selects an address location in the first page of the memory, then the third page of the memory, then the second page of the memory, then the fifth page of the memory, may be implemented to meet the design criteria of a particular application. Any non-repetitive counter may be used. 
     The memory 42 may be implemented using a variety of non-volatile technologies including but not limited to, an EPROM, an interconnect matrix, an anti-fuse, a fuse link, or other one-time programmable technology. In its simplest form, the memory 42 may be implemented as a two page, or 2-word, EPROM. A first page (or word) is used to program the circuit in the first instance. A second page (or word) is used to program the circuit in the second instance. With such a simplified two page configuration, the address counter may be implemented as a single-bit incrementing signal that switches between the first and second page between programming configurations. The incrementing signal received at the input 68 may be a feedback from the output 66. 
     In an implementation using a multi-page EPROM, one page may be used for testing the part, while the remaining pages may be used to provide the desired product configuration. Alternatively, each page may be used to implement separate standard program circuits. For example, the first page may be used to configure a clock generation circuit while the second page may be used to configure a buffer circuit. As a result, a manufacturer may reduce the inventory that is required to be stocked in any given time by using a standard generic part to produce a variety of products. 
     Referring to FIG. 3, an alternate embodiment circuit 80 is shown. The circuit 80 generally comprises a programmable address counter 82, a memory 84 and a decoder 85. The memory 84 generally comprises a row driver 86, a bit-line driver/sense amplifier 88 and an address portion 90. The address portion 90 has an input 92 that receives a signal, through the decoder 85, from the programmable address counter 82. The address portion 90 also has an input 94 that receives a signal from one or more external address pins. The bit-line driver/sense amplifier 88 has one or more outputs 96 that present the configuration information that may be used to configure an external circuit, for example, the miscellaneous logic 52. The memory 84 also has a programmable main array 98 that comprises a plurality of individual pages, for example, page 0, page 1 . . . page n. The number of pages in the array is equal to n+1 pages, where n is the number of the highest order page. Each of the pages may be configured, one at a time, to provide the desired configuration information at the output 96. Each time a new configuration page is desired, the programmable address counter 82 may be programmed to increment the address 90 to write to a separate page of the programmable main array 98. The configuration information received at the output 90 may be used to either change minor controls, such as the output frequency of a clock generator, or to make major changes, such as changing between a clock generator and an output buffer. 
     The number of pages implemented in the memory 84 may be controlled by the programmable address counter 82 and a decoder 85. The decoder 85 has an input 87 that may receive an n-bit signal from the programmable address counter 82. The decoder generally has an output that presents a p-bit signal to the input 92. For example, a single-bit signal at the input 92 may control a two page memory 84. A two-bit signal at the input 87 may control a three page memory. A three-bit signal (IP1, IP2 and IP3) at the input 87 may control a four page memory. In the example of a single-bit signal received at the input 94, a &#34;0&#34; may indicate the first page may be programmed and a &#34;1&#34; may indicate a second page to be programmed. The example of a two-bit signal (IP1 and IP2) received at the input 87 may control a three page memory 84. The following TABLE 1 illustrates the three independent states provided by a two-bit signal (i.e., IP1 and IP2): 
     
                       TABLE 1______________________________________   IP1 IP2______________________________________   0   0   0                     1   1                     1______________________________________ 
    
     The following TABLE 2 illustrates the four independent states provided by a three-bit input received at the input signal (i.e., IP1, IP2 and IP3): 
     
                       TABLE 2______________________________________IP1            IP2   IP3______________________________________0              0     00                               10                               11                               1______________________________________ 
    
     The configuration shown in TABLE 1 and TABLE 2 show each of the inputs IP1, IP2 and IP3 transitioning from a first state (i.e.,a &#34;0&#34;) to a second state (i.e., a &#34;1&#34;). The states where the input would transition back from a &#34;1&#34; to &#34;0&#34; are not implemented due to the nature of the external address inputs. The decoder 85 essentially decodes the four states shown in TABLE 2 into a two-bit signal that may be presented at the input 92. In the example shown in TABLE 1, the three page implementation is converted back into a two-bit signal that is presented at the input 92. 
     An example of a practical application of the present invention may be shown in reference to an electrically programmable clock generator as shown in U.S. Pat. No. 5,684,434, which is hereby incorporated by reference in its entirety. In the cited reference, a programmable clock generator is programmed using a non-volatile programmable memory to store configuration information that is used to adjust the frequency of an output clock. The present invention may be used to expand the programmable memory and to allow reconfiguration of the clock generator after the initial configuration. In reference to the example shown in FIG. 2, the programming control input 44 receives information to configure the clock generator that is first stored in page 0 of the memory 42. The input 64 may be an input on the clock generator that is used to configure the output frequency of the clock generator. When an additional configuration is desired, the programming control 44 presents programming information that is stored in, for example, page 1 of the memory 42. As such, the desired reprogramming of the clock generator may be realized while maintaining the cost effective one-time programmable nature of the memory 42. 
     To implement the memory 42 as an interconnect matrix, an anti-fuse, a fuse link or other one-time programmable technology, the example of a multi-page EPROM may be extended. Specifically, different portions of the particular one-time programmable technology are generally configured as being independently programmable. A first portion of the technology may be used to store a particular configuration while a second portion of the technology may be used to store another particular configuration. In one example, a number of fuse links may be used to form a first programmable section of a fuse link matrix, while a second number of links may be used to create a second programmable portion of a fuse link matrix. As with the example described in FIG. 2, the particular one-time programmable technology may be implemented, in its simplest form, as a two page (or two portion) programmable technology. 
     While the invention has been particularly shown and described with reference to preferred embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made without departing from the spirit and scope of the invention.