I have a general basic question. Most of the Integrated circuits (apart from power IC) that are used in applications (Data transmission/communication IC) require some sort of programming or configuration.

In MCU, I see that we are programming the IC through JTAG lines provided. Where as, in one Deserializer IC, there are no lines/pins provided in the IC for programming. Upon researching, I found out that Deserializer or some other ICs do not require programming but they require configuration. Configuration, in the sense of configuring of registers. Can someone help me understand the difference between the programming and configuration methods? Why do we program an MCU but not a deserializer? What is the benefit/purpose of those register settings? Why don't we program the deserializer itself instead of configuring its registers?

It would be great if someone could break the answer in easier terms for clarity.


closed as too broad by Chris Stratton, RoyC, Dmitry Grigoryev, Brian Carlton, Eugene Sh. Aug 15 at 14:15

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.


The meaning of ‘program’ depends on context.

In one use, the terms ‘configure’ and ‘program’ are often interchangeable, to mean device set-up. That is, we load values into device registers to prepare it for use. So we might say ‘program the baud rate generator to be 9600 baud’ and the meaning is still clear from context. We could also say ‘set up’, ‘load’, ‘configure’ with the exact same meaning. Later, we may manipulate these registers while we’re using the device, under control of a piece of software, usually a device driver.

Which brings me to another meaning of ‘program’: the act of loading instructions - code - into a computer to be run later. Here, we might also say ‘download’ or ‘reflash’. The loaded instructions are then executed by the computer.

We call those instructions software, firmware, or microcode... which is also called a ‘program’, meaning a collection of instructions that direct a computer to perform operations. Synonymous with ‘code’.

And where does that code come from? Why, from a person who ‘programs’, that is, does the task of software development.


Difference between "programming" and "configuring" -- don't read too much into these inexact marketing terms. "Programming" tends to imply some kind of control language, while "configuring" implies setting initial values to enable features or set threshold values. But there is no standard meaning of these two terms. (Or rather, the word "programming" is overloaded with different definitions in different contexts.) You have to read the IC manufacturer's datasheets for each one, to determine exactly how to program/configure the device.

"Why can't we follow a common protocol" -- I don't understand what you mean by "follow a common protocol." ICs have been designed at great expense to solve customer problems over many decades, by many different companies. There's not some single master plan that all IC manufacturers have been following since earliest times. Each IC is defined by itself with the intention of solving some market problem. In some cases, an IC might be aimed at the general purpose market, but a lot of ICs are designed with specific customer input.

It's not just a distinction between "programming to contain a sequence of instructions" and "configuring at runtime with a set of initial values", there are other possible ways to modify IC behavior. There can be One-Time-Programmable (OTP) features programmed by blowing fuses inside the chip. There can be metal-mask options determined during IC fabrication. Some ICs (such as FTDIchip.com FT232) actively read configuration information from another chip. There is no "common protocol", and no single standard way to set up the behavior of an IC -- that is part of the reason why each IC has a datasheet.

"Can you provide an example or an analogy with some IC" -- Analogy? I'm not really sure what kind of example of some IC you're looking for. I would not expect any kind of MCU look anything like a deserializer. There's really not a general answer to how to configure random ICs, you have to look at the IC datasheet. A lot of the ICs that I support use the SPI interface for register configuration, and even there I see a lot of variation.

Maybe things could be clearer if you would edit your initial question with links to the specific datasheets or part numbers that you are asking about? I'm not sure even which MCU family you might be talking about, ARM or 8051 or AVR or PIC or powerPC?? Without knowing exactly what specific manufacturer/part numbers you're looking at, it's hard to get anything but a vague, general answer.

  • \$\begingroup\$ thank you. but why do we program or provide control language for some ICs. but set initial values for other ICs? why can't we follow a common protocol \$\endgroup\$ – Newbie Aug 13 at 7:00
  • \$\begingroup\$ can you provide an example or an analogy with some IC \$\endgroup\$ – Newbie Aug 13 at 7:01
  • 2
    \$\begingroup\$ Who is “we”? There are thousands of IC companies, each doing their own thing. Some follow standards, but the problem with standards is that their are so many to choose from! \$\endgroup\$ – hotpaw2 Aug 13 at 9:00
  • \$\begingroup\$ I think what OP is asking is why some ICs (e.g. accelerometers, deserializer etc.) are configured/programmed by writing to registers over a protocol like I²C while microcontrollers are usually programmed over JTAG. \$\endgroup\$ – Michael Aug 13 at 20:15

Originally, none of the ICs (before LSI) were configurable or programmable. Early computers and communication system were configured by hard wiring, circuit board layout, wiring patch panels (often done by women with the job title “computer”), or by manually entering a boot program via front panel switches (or punched paper tape, etc.). Some computer systems had vast amounts of front panel switches for configuration. Then came PROMs and PLAs(PALS), etc. that were “programmed” by applying high voltages to blow internal fuses to configure their logic and memories. When microprocessors were booted-up, they would then configure the other subsystems or peripheral ICs by writing to their control registers in code.

At higher levels of integration these methods were often combined: a system might be configured by programming internal memories with instructions (code, software) that a processor would then use to configure other functional blocks on the chip (including other processors, which would then configure yet more subsystems, etc.)


Not the answer you're looking for? Browse other questions tagged or ask your own question.