Advanced Digital Devices

3.4.2 Advanced Digital Devices

When it is necessary to carry out a complex digital design, composed of thousands or millions of transistors, there are several families of advanced digital devices that can be used: specific circuits, programmable logic and microcontrollers or microprocessors. This section explains the main advantages and disadvantages of each of them. Assuming that these three options of advanced digital devices are compared using scaled alternatives for a given design, the comparison would look as in Table 5.



Switching Frequency

Power Consumption



Very High




Programmable Logic











Table 5: Comparison of scaled alternatives of advanced digital devices for a certain complex digital design. Application-Specific Integrated Circuit (ASIC)

As its name suggests, an application-specific integrated circuit (ASIC) consists of a digital design that exclusively implements the logic gates necessary for the specific application [1]. Therefore, on a technical level it is a perfectly valid option for any application. As it is a specific design, and provided the correct level of integration is used, high switching frequencies and very low power consumption can be obtained.

However, this option has very high fixed costs, since it is necessary to make low-level masks for the manufacture of the device. Closely related to the above, the risks are high, because the cost of each prototype can reach hundreds of thousands or even millions of Euros. And prototypes often fail….

Consequently, the design of an ASIC only makes sense when the sales volume of the device is very high. For example, a digital terrestrial television decoder or an ASIC for mining cryptocurrencies. The following devices that are explained are also ASICs from the manufacturer’s perspective, but they have been designed so that they can be programmed and adapted to multiple applications by the end user. Consequently, some of the fundamental properties of an ASIC designed for a single application will be lost. Programmable Logic

Within the framework of programmable logic come the devices that allow configuration or programming (one or multiple times) to implement the digital circuit that the end user needs. The most flexible and therefore more relevant are known as FPGAs (“field-programmable gate array”) where field means end-user premises [2].

Going into more detail, an FPGA is made up of thousands or even millions of cells that can emulate any logic gate or combination of them, with outputs terminated or not in a flip-flop. These cells are linked by configurable interconnection buses as shown in Figure 11. Additionally, there are also logical input / output blocks that interface with the outside world. There are FPGAs of many sizes, capable of emulating logic circuits of different complexities.

The main advantage of using FPGAs is to implement a more or less complex digital circuit much cheaper than an ASIC. In this way, FPGAs make many applications viable or more affordable where the volume would not be enough to make ASIC manufacturing profitable. The disadvantages of FPGAs with respect to ASICs are mainly two. First of all, configurable logic requires many more logic gates than strictly necessary for an ASIC, which translates into much higher power consumption. Second, and related to the foregoing, the existence of configurable logical paths and interconnections implies greater complexity, longer propagation time of the signal or voltage and, consequently, much lower switching frequencies.

Generic FPGA Simplified Schematic
Figure 11: Generic FPGA Simplified Schematic.

For the definition of a digital circuit, hardware description languages (HDL) are used. The two most widely used HDL languages are Verilog and VHDL (from VHSIC HDL, where VHSIC means “very high speed integrated circuit”). HDL languages are used to design ASICs and FPGAs. In the case of FPGAs, an interpreter program uses the user-defined HDL to synthesize the configuration that is entered in the FPGA, which shows the “simplicity” with which a digital integrated circuit is implemented from a code. On the other hand, although the HDL description/design of a circuit that will be implemented in an FPGA is of a high level, thinking of ‘1’s and’ 0’s and not of voltages/currents, it is necessary to ensure that the design implemented in the FPGA can work at the required switching frequency. Micro-controllers and Micro-processors

While programmable logic allows the implementation of “any” digital circuit, microprocessors (uP) and microcontrollers (uC) are made up of predetermined digital circuits that execute instructions sequentially. The combination of circuits and instructions is designed to be able to solve generic problems, which makes them very versatile [3]. As the digital blocks are already implemented beforehand, the logic is highly optimized and the working frequencies can be much higher than those obtained with an FPGA.

The uP have their main application in computing as the brain of a computer. They are also called Central Processing Unit (CPU). They can perform simultaneously multiple tasks, as different as unzipping an audio file or writing text. The uCs are the brain in simpler applications, such as an industrial device or a network hard disk. Figure 12 shows in a basic way the structure and differences between a uP and a uC.

Microprocessor vs Microcontroller
Figure 12: Microprocessor vs Microcontroller

The uPs are the core of a more complex system and are made up of:

  • Registers: they store the temporary values that are used to perform operations or the results of the same operations.
  • Control Unit: performs the search and interpretation of instructions.
  • Mathematical Operation Units: they include a stage for simple or Boolean operations known as the arithmetic logic unit (ALU), and stages for more complex operations with floating point numbers.
  • Input/Output buses: for communication with external devices and peripherals.

The memory, where the program instructions and the data that it works with are located, is external. This architecture that shares program and data memory is known as Von Neumann. Finally the uP is also communicating with both simple and complex peripheral controllers.

UCs also act as the core of applications, but simpler than uPs. The blocks they make up are usually simplifications of those found in a uP. They tend to be self-contained, that is, all blocks can be part of the same integrated circuit. They also work at lower frequencies. They can use different memories for program and data, architecture known as Harvard. A uC can be focused on a very particular market, integrating highly specialized peripherals, such as for the automotive industry.

As the core of complicated systems, the instructions that uPs execute on computers have traditionally been very sophisticated, which is why they are called Complex Instruction Set Computing (CISC). Each instruction may take several clock cycles to complete. In contrast to CISC instructions, uCs use simpler instructions, called Reduced Instruction Set Computing (RISC). These are usually instructions that perform the most simplified tasks within the device, ensuring that they can be executed in a single clock cycle. It should be noted that there are also uPs that use RISC instructions, especially in applications where performance with respect to consumed power is a priority over gross computing power (mobile devices). Recently, there are movements in the industry that use RISC architectures in applications where the power supply is permanent. Therefore RISC devices also have the potential to displace CISCs in computing power.

uC and uP can be programmed with:

  • Low-Level Languages: Known as assembler or machine language. They consist of the own instructions that the device natively and inherently understands. They require knowing in detail the registers and internal blocks of the uP or uC.
  • High-Level Languages: In this case the programmer can be completely abstracted from the device’s circuitry and even from the ‘1’s and’ 0’s [4]. A compiler will translate the high-level programming into machine language instructions that the micro understands natively.

Bibliography (Sponsored)
[1] ASIC Basics: An Introduction to Developing Application Specific Circuits, Elaine Rhodes, 2005.
[2] Advanced FPGA Design: Architecture, Implementation, and Optimization, Steve Kilts, 2007.
[3] Microprocessors and Microcontrollers, Senthil Kumar, 2016.
[4] The C Programming Language, Kernighan, 1988.

<= Digital Electronics

Hardware, Software, Firmware =>

If you liked this contribution, feel free to subscribe to our newsletter: