Computational Systems— Pt 1
What is a microcontroller?
A microcontroller could be everywhere around you nowadays, remote controls, calculators, microwaves. Bottom line is that they work for a specific task. They’re designed for low consumption applications, anything that doesn’t not require a lot of computing power or saving large amounts of data.
Microprocessors
A microprocessor is very different from a microprocessor in the sense that it’s not usually made for low power applications. If we’d like to check simple things like how many people entered a room, we could just check using a microcontroller and sensors at the entrance of the room. In contrast, a microprocessor is made for bigger computational tasks, they can execute millions of instructions per second.
For the course i’m in this semester we will be focusing on ARM processors
ARM
ARM stands for Advanced RISC Machine, and RISC, if you are not familiar, stands for Reduced Instruction Set Computer. To be honest, this was the first time I’ve ever seen an acronym be part of another acronym. In this course we will specifically be using the NUCLEO — L476RG board which uses an ARM microcontroller. This board is part of the Cortex-M family, M for microcontroller. Cortex has other families, Cortex R and Cortex A, they’re related to Real time, and Applications. Real time because they have architecture optimized for real time tasks, and the same goes for the Cortex A for operating systems on cell phones or smart TVs even.
Choosing
Basic rule of thumb when choosing what to choose for a given project is to know your task well, if you know it’s not a labor intensive job or the task doesn’t require a sophisticated control unit, then a microcontroller is the way to go. If on the other hand you need to process large amounts of data or processing signals in a very fast manner consider using a microcontroller or even a FPGA.
ASIC
ASIC stands for Application Specific Integrated Circuit, and they usually don’t exist. This is because sometimes in engineering, specially in microelectronics, more often than not, you find yourself in need of a specific integrated circuit that does a task very well and very fast, this is because not always software is fast enough. Take the MIPS image above as an example, we know that an ALU here doesn’t “know” how to multiply, but we could write could defining what multiplication is, however multiplying by adding could be time consuming. It’s possible to design a digital circuit specific for multiplication and add it as another function in the ALU. Designing an ASIC is works similar to this. You have a task or an idea, it may be possible to design and prototype a digital circuit in a FPGA to make your ASIC come to life. That is why usually they “don’t exist” because for your application, you need to create it.
Common terminology
- FPGA.- Field Programmable Gate Array, we use these devices to design and prototype digital circuits
- RISC.- Reduced Instruction Set Computer is a term used to describe computers that have a highly optimized set of instructions to accomplish tasks.
- CISC.- Complex Instruction Set Computer is term for computers with a larger “dictionary” they are capable of more complex computational tasks than RISC machines.
- Peripherals.- Hardware that is usually an extension of a processor to help communicate or receive data from the external world. i.e. a keyboard.
- MCU.- Abbreviation for microcontroller unit.
- GPIO.- General Purpose Input Output.
- ADC/DAC .- Analog to Digital / Digital to Analog Converters.
- MUX.- Multiplexers are used to control which data bits go where.
- Watchdog Timers.- a type of timer that aids when a
- Interrupts.-
Some knowledge that will help in this course
Computer Design Fundamentals
- Understanding how registers interact with program memory, ALU, multiplexers, and data buses will make it easier to understand how the NUCLEO architecture works. Because for us engineers it’s not enough to know how to program, we need to know what happens under the hood.
Embedded Systems
- Knowledge on how the peripherals like ADCs or Timers, and understanding how interruptions work are very important too.