IC programming
IC programming[1] is the process of transferring a computer program into an integrated computer circuit. Older types of IC including PROMs and EPROMs and some early programmable logic was typically programmed through parallel busses that used many of the device's pins and basically required inserting the device in a separate programmer.
Modern ICs are typically programmed in circuit though a serial protocol (sometimes JTAG sometimes something manufacturer specific). Some (particularly FPGAs) even load the data serially from a separate flash or prom chip on every startup.artup.
History
1830’s
integrated circuits have been around for an extremely long time, with the first one being discovered in 1833. Michael Faraday found that if energy/heat is applied to the semi-conductors it holds a charge, and when the energy/heat is taken away it loses it. He found this out by studying the effect on silver sulfide when temperature fluctuates. He held a lamp over the substance and recorded his observations of the reactions.[2]
1940’s
In World War II, semiconductor technology had increased exponentially due to the time period’s recent findings of Microwave communications. The semiconductor was the most efficient way to convert these signals, compared to the vacuum tube dials. Silicon and germanium was the primary resource used for the integrated circuits. Research was primarily done to have these two substances become as pure as possible, in order to create the most efficient circuits. By the end of World War II, a Silicon could be refined to 99.999% purity. Thus giving semiconductors more accuracy and efficiency.[3]
1960’s
In 1961, both germanium and silicon chips were both equally useful. Silicon was more more stable, while germanium chips were much faster. Computer architect Seymour Cray gave Fairchild semiconductor $500,000 for a development contract in order to create a more efficient computer chip. He requested gold to add gold impurities to the silicon chips, and the process was successful. For the first time a silicone circuit was faster than a germanium circuit.[4]
In 1966, we see the first usage of Computer Aided Design (CAD). With integrated circuits growing more and more complicated, the aid of a computer sped up the time needed to create this chips, and helped eliminate errors in the chips. “After Koford joined Fairchild R&D he worked with Hugh Mays, Ed Jones, and others to apply this process to monolithic ICs. Their efforts created logic simulators (FAIRSIM), test program generators, and place and route software for gate arrays and standard cells (1967 Milestone) that laid the groundwork for generations of EDA tools.”[5]
In 1966 the first semiconductor Random Access Read-Write Memories (RAM) was invented. Allowing computers to have large memory storage, and alterations/ recalling of the information. Magnetic Ferrite cores were the main RAM’s used in this time period, and with this innovation coasts of memory storage decreased.[6]
1970’s
Reusable programmable ROMs were introduced in 1971, by Bell Labs and Sperry Rand. The introduction of this new access and abilities to alter MicroChips helped with the development of experimental codings for the microchips. Although the programmable versions of these circuits are slower than the previous bipolar circuits, this allows more versatility to the processing of the chips.[7]
In 1978, logic creators realized that PROMS could be used for simple logic functions. Soon after many devices were created solely for logic applications. The first FPLA (Field Programmable Logic Array) was created, allowing chips to be programmed electronically. With boolean statements, one could program and see an IC’s application on the desktop of their computers. Now creating Integrated Circuits cost was lowered, and speed increased. And creating more complicated devices is possible with the ability to create complex logic statements within the chips. Allowing the ease of creation for all devices and programs. Thus started the process of IC programming.[8]
How to do it
In order to tell an intricate circuit what you want it to do, first you must code its operations on a separate system. Mainly the program uses 16, 32, and 64 bit words to program these devices, with one-word operations. The process also follows the Hexadecimal system. This process is necessary, because for programmer to engineer a process for a chip in machine code is practically impossible. With the software, one can talk to the chip in their own language, and the computer language will translate it into machine code. The separate system compiles the program into simple binary code, 1’s and 0’s, and then upload this algorithm into the chip’s Flash Memory, or ROM. Now the IC can perform the tasks you intend for it.
Programs to use:
When programming an integrated circuit you would need
-Code/Text Editor
-Assembler
-Compiler
-Burner/Programmer
Code/Text Editor
The code/text editor is used to write the program for your circuit. The file format to save this in is dependent on the Assembler Chosen.
Assembler
The assembler is used to convert the file you created from the code/text editor and change it from source code file into machine code file.
Compiler
The compiler converts the Assembler file into machine code that is understandable to the circuit.
Burner/Programmer
This final process is the transfer of your compiled process into the flash memory/ROM of the IC.
Notes
- ^ Depending on the context, just programming or the type of IC may also be used
- ^ "1833: First Semiconductor Effect is Recorded | The Silicon Engine | Computer History Museum". www.computerhistory.org. Retrieved 2017-10-19.
- ^ "1941: Semiconductor diode rectifiers serve in WW II | The Silicon Engine | Computer History Museum". www.computerhistory.org. Retrieved 2017-10-19.
- ^ "1961: Silicon Transistor Exceeds Germanium Speed | The Silicon Engine | Computer History Museum". www.computerhistory.org. Retrieved 2017-10-19.
- ^ "1966: Computer Aided Design Tools Developed for ICs | The Silicon Engine | Computer History Museum". www.computerhistory.org. Retrieved 2017-10-19.
- ^ "1966: Semiconductor RAMs Serve High-speed Storage Needs | The Silicon Engine | Computer History Museum". www.computerhistory.org. Retrieved 2017-10-19.
- ^ "1971: Reusable Programmable ROM Introduces Iterative Design Flexibility | The Silicon Engine | Computer History Museum". www.computerhistory.org. Retrieved 2017-10-19.
- ^ "1978: PAL User-Programmable Logic Devices Introduced | The Silicon Engine | Computer History Museum". www.computerhistory.org. Retrieved 2017-10-19.