Whenever I see a new product announcement saying an analog or mixed-signal component is "programmable," my first thought is simple: "in what way?" Often, it's not called out clearly or until the end of the press release.
The reason I wonder is that "programmable" is a term that can take on many different realities. Back in the day, a programmable IC (such as an op amp or filter) was one where the user could set the gain, cutoff frequency, or other characteristics via external resistors. Soon, IC vendors incorporated these resistors inside the device, so the programmability was done by jumpers on the PC board.
There were pros and cons to this setup: On the pro side, lower total cost and a simpler BOM (no need to get your own resistors, which usually had to be tightly matched for best performance). On the con side, you were limited in your settings of gain or cutoff. For most users, the choice was easy: Using internal resistors with fixed settings was a very acceptable restriction versus the benefits.
Later on, programmable parts took on a different meaning. Users could set the operating parameters via a standard I/O port, usually I2C or SPI, rather than hard-wired with resistors or jumpers. In other implementations, the programmability was via a DC voltage or current on one of the IC pins. Either way, the programmability was dynamic and could be changed during run time, rather than static and fixed at the manufacturing stage.
Analog programmability can also be done in a way that is comparable to the digital world's FPGA. Instead of gates and logic functions, you have an array of analog functions and can configure their interconnect topology and some operating parameters in a one-time setup. (See Programmable analog ICs: designer's delight or dilemma?)
Although the concept is attractive in many ways, it does not seem to have gained a large market share among designers, except in limited cases. I suspect there are just too many compromises that the user has to make, and the cost/benefit ratio isn't favorable enough. Once again, the analog world has a set of priorities and constraints very different from those in the digital world.
Our latest perspective on programmable analog comes with the availability of very highly integrated ICs, which combine analog I/O and peripherals with lots of digital functionality. Are these programmable? It depends on what you mean by programmable, of course. Many of these components are not programmable for general-purpose functions; instead, they target a very specific application. Consider these highly integrated mixed-signal IC examples:
- Maxim's MAX14920/MAX14921, battery-measurement analog front-ends, which sample cell voltages in multicell packs, and provide level shifting to ground to simplify A/D conversion
- Analog Devices' AD9671 octal receiver with 5 Gbit/s JESD204B serial interface, which reduces ultrasound system I/O data-routing requirements
Although they are programmable in terms of setup and operating modes, their internal topology is fixed by design. They can't be reconfigured or made to do something other than their intended, integrated function.
Is this fixed, non-programmable topology a limitation from the user's perspective? Probably not, since designers select them for a specific, well defined project, and not for broader, general-purpose use. In this sense, these highly integrated ICs (or we could perhaps call them SoCs, or system-on-a-chip, devices) are reducing a complex, multichip schematic to a single IC, rather than trying to simply pack more functions onto a given die.
Undoubtedly, there will be a few designers who wish these ICs did have more functional and topology flexibility. For the others, the gain in smaller footprint, simpler BOM, and higher likelihood of their overall product working both better and sooner is a worthwhile tradeoff.
Do you welcome highly integrated, functionally targeted ICs? Or do you chafe at the apparent restrictions and constraints in overall design flexibility they inherently must provide, to meet their functional and performance requirements?