Systems and methods for programming programmable devices

Static information storage and retrieval – Floating gate

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C365S230010

Reexamination Certificate

active

06414871

ABSTRACT:

FIELD OF THE INVENTION
This invention relates generally to programmable devices, and more particularly concerns methods and systems for remotely programming programmable devices such as non-volatile memory devices.
BACKGROUND OF THE INVENTION
Programmable integrated circuit (IC) devices such as complex programmable logic devices (CPLDs) are typically a non-volatile type of device in which the configuration of the device is held in some sort of permanent memory that is local to the chip on which the device is fabricated. An IC device typically originates as a blank device that is not programmed to implement any specific type of functionality. The functionality of the device is derived from configuration data that is used to program or configure the device. The configuration data generally originates at a location that is remote from the chip on which the device is fabricated, and must be introduced onto the chip so that it can be programmed accordingly.
In the past, different approaches or programming methods have evolved for programming these types of devices or providing the necessary configuration data for imparting the desired functionality to the device.
An exemplary programming method makes use of stand alone programming tools. In such a tool, an individual might have a programming unit sitting next to and operably coupled with a personal computer or work station. A device to be programmed is placed into a programming socket in the programming unit, and a configuration file is accessed by the host programmer. The configuration file is then converted into a binary structure that is then downloaded onto the device to program it. The programmed device can then be tested and used for its intended purpose.
This type of programming can be inconvenient and slow. One primary reason that this and other known programming methods are slow is because the external hardware that is utilized to program the device must often wait while programming activities take place incrementally on the device. For example, in some programming devices, the external stand alone tools are responsible for producing not only the configuration data, but also programming pulses that are used by the device for programming. The stand alone programmers are only able to provide measured amounts of the configuration data, and then must wait until the programming pulses are used by the programmable device. Once the programming pulses are used by the device, additional programming data and pulses can be provided. In addition, programming using stand alone programmers requires additional hardware that some users might not have on hand.
In some programmable devices, such as the CoolRunner® CPLDs from Xilinx, Inc., the configuration data is first loaded into a non-volatile memory, then copied from the non-volatile memory into a “shadow memory” that actually controls the device. This modification reduces power consumption and allows reconfiguration from the non-volatile memory after power-down. However, this technique does not reduce programming time, because the non-volatile memory still requires programming pulse delays of meaningful duration.
As programming methods evolved, so-called “in-system” techniques were developed and began to find use. In-system programming or “ISP” opened up a wide range of manufacturing, design and test techniques that had not previously existed. These techniques allow for a completely blank (unprogrammed) device to be placed on a circuit board, connected to a communication port of a PC, work station, or automated test equipment (ATE) box (e.g., using four or more wire connections), and configured while on the circuit board. This technique eliminates the need for stand alone programming units and addresses some of their associated problems such as pin damage due to mishandling and electrostatic discharge (ESD).
One problem with ISP, however, is that it employs serial and sequential operations. This means that data and programming control commands have to be shifted in serially and applied in a time consuming manner. Another problem with ISP is that the programmable device takes a relatively long time to program, especially with technologies such as EEPROM (e
2
) and flash memory. For example, to program these types of devices, one typically has to shift a block of data into a shift register inside of the device. This block of data is held in the shift register for a short period of time while internal control circuitry prepares to program the block of data into the device. The internal control circuitry typically examines a specific address that has been shifted in with the data, which determines where it is going to place the data in the device's long term or permanent memory. The internal control circuitry then loads the data into the appropriate position in permanent memory and provides a programming pulse or delay to adequately complete the programming of the data block. A programming pulse can take a fairly long time, on the order of 10 milliseconds (ms) or more. With flash memory this process is typically longer, because the floating gate charge level must be checked to ensure that over-programming or over-erasing has not occurred. Accordingly, long periods of time are required by the process while these devices are being programmed. For each block of data that is shifted in, there is a delay until the next block of programming data can be shifted in. When there are many blocks of data to be shifted in (as there usually are), these sequential delays accumulate and can become significant. A compounding problem is the situation where multiple devices are desired to be programmed. If the data is not interleaved using a special algorithm (which is typically complex and expensive to develop), one must wait until all of the data for a particular device has been shifted in before moving on to a new device.
One adaptation that has evolved has been the use of automated test equipment (ATEs) to do both testing and programming. ATEs allow users to examine a complete, assembled printed circuit board (PC board) and make sure, by applying a series of so-called vector tests, that all the solder points are connected to all the other appropriate solder points on the board. According to one method, an ATE performs vector tests by applying signals through so-called boundary scan technology. This is primarily the purpose of ATE technology. ATE engineers, however, also found that they could manipulate the JTAG (Joint Test Actions Group) port (i.e., the boundary scan port) to allow for in-system programming while they were doing ATE processing. This technique is known as “programming-at-time-of-test”. This approach works well, because it allows engineers to take a PC board including a blank device, place the board into a test environment, program the device, and then do a boundary scan test to test the device and board.
One problem with using an ATE in this manner is that ATE test time can be fairly expensive in terms of dollar cost per minute. Additionally, ATE programming using the boundary scan technique is typically a serial programming technique. Thus, if there are multiple devices on a board, the user may program one device, shift data to a second device, program the second device, and so on. When programming is done sequentially, it takes a very long period of time to program multiple devices; board tests usually cannot proceed until all of the devices are programmed.
Thus, programming multiple programmable devices such as CPLDs (or any sort of programmable logic—e.g., micro controllers, memory, or any type of programmable logic element) takes a fairly long period of time. One continuing goal is to reduce the amount of time that is required to program a device. Further, the length of time required to program single or multiple programmable devices using known methods renders impractical the programming or re-programming of these devices over a shared network such as the internet.
Accordingly, this invention arose out of concerns associated with improving efficiencies with which programmable

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Systems and methods for programming programmable devices does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Systems and methods for programming programmable devices, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Systems and methods for programming programmable devices will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2858338

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.