Microcontroller
From CVL Wiki
A typical microcontroller
The programming model
Memory
ROM
PROM
EPROM
EEPROM
Flash EEPROM
RAM
Central Processor Unit (CPU)
The I/O interface
The address, data, and control buses
Electrical lines that travel between microcontroller components (such as memory[1] and the CPU[2]) are called buses. Buses[3] are either wires (typically insulated if they are free-standing), or copper lines printed on a circuit board. Buses carry data between microcontroller components. The data carried over these buses are in digital form, which means with the exception of transition periods, they are discrete voltage values. There are three types of buses: address, data, and control buses. The two most popular microprocessor architectures, Harvard[4] and Princeton[5], each have different interconnects between components (such as memory, control, and processing); they, however, use the same buses to communicate with each other.The address bus carries address data of varying size, depending on the platform and design of the microcontroller. For the MicroBlaze microcontroller, addresses are in 32-bit word form. This allows for up to 232 or 4,294,967,296 different addresses in any given component. The main components that communicate via the address bus are the processor (CPU) and memory (either data memory or instruction memory). Memory addresses are needed so that the reads and writes to memory are done in the right memory locations.
The data bus passes actual data through its communication lines. Again, the bandwidth of this bus can vary, but for the MicroBlaze it is 32 bits. The data bus is mostly used between memory and another microcontroller component. The address information for data to be passed goes through the address bus, but the actual data with reads and writes are passed through the data bus.
The control bus passes instructions and other control information between microcontroller components. This bus is mainly used to and from a major control component (a CPU or control circuit, or otherwise). A main job of the control component is to decide whether the data bus is to perform a read or write. The control circuitry also prioritizes instructions that need to be performed, and is in charge of executing them in sequence. In other words, the control bus keeps everything in order, and prevents data from being moved unsystematically.