~Welcome to the world of soft-core CPU with infinite possibilities~
Introduction
If you see the model i8080A, MC6800, MCS6502, Z80... and immediately know what it is, you are probably my age or around that age. These are all product names of 8-bit microcomputers (hereafter abbreviated as microcomputers) that were installed in personal computers (hereafter abbreviated as personal computers) released in the late 1970s.
See the digital world when you see a board on which TTL (Transistor-Transistor-Logic) DIPs (Dual In-line Packages) of about 14 to 28 pins are neatly arranged along with 40-pin peripheral LSIs such as serial/parallel I/O and timers. I felt the arrival of
At the time of single-function chips, they were called by various manufacturers, such as CPU (Central Processing Unit) and MPU (Micro Processing Unit). However, in the current commercially available microcomputers called SoC (System On Chip), which includes peripheral functions, it is common to call the functional part responsible for arithmetic and sequence control a CPU, so in this series we will use the CPU. I will let you.
This time, after explaining the components of a microcomputer system centered on the CPU, I would like to explain the problems that a system with a commercial microcomputer + FPGA has and why an FPGA with a soft-core CPU can be a solution to those problems. think.
Microcomputer system components and initial design procedure
Figure 1 shows the typical components that make up a microcomputer system. Logic such as address decoder is omitted. The peripheral module INTC is an interrupt controller, Timer is an interval timer, and I/O is a parallel or serial input/output port for external input/output. A microcomputer system must have 1. CPU, 2. Memory (ROM/RAM), and 3. I/O (a system that does not exchange anything with the outside is impossible), and the rest are added as needed. Please understand that it is a thing.
Figure 1 Components of a microcomputer system
| 3 steps of programming from power-on in embedded devices |
1) When the power is turned on and the reset is released, the CPU first executes the program placed on the ROM,
To set the stack pointer, initialize peripheral modules, and function as a microcomputer system
complete the preparations for
2) Next, prepare to run the application program, such as booting the OS.
This program can be executed in either ROM or RAM, which is determined during system design.
In the era of 8-bit microcomputers, when the memory space was as narrow as 64k bytes, the program was ROM and the work area was RAM.
Although it was clearly separated, nowadays 32-bit RISC with wide memory space is mainstream, and it does not have an external bus
With the exception of single-chip microcomputers, programs are often run on RAM, which is faster than ROM.
3) Finally, the application program running on the OS is executed, and the product starts working.
When microcomputers began to release hardware that could run programs in the above procedure,
Below are the steps on how it was designed.
1) Decide on a CPU.
2) Determine the installed capacity of memory (ROM/RAM) according to the program to be run.
3) Select the ones necessary for the system from among the peripheral LSIs of the determined CPU family.
4) Determine memory and peripheral address assignments.
5) When using interrupts (and DMA), determine the level (priority) for each factor.
6) Design logic such as address decoder based on TTL.
I wrote it as a procedure, but the order is not important.
Please remember only what kind of items there are in order to compare with the following explanations.
question:
If each function explained so far is an independent part,
Would you put extra parts into the product you design?
The answer is···
Of course, no matter who answers, right?
However, there is a problem with the development of commercial microcomputer-based devices.