Vi điều khiển

Vi điều khiển là một máy tính được tích hợp trên một chip, nó thường được sử dụng để điều khiển các thiết bị điện tử. Vi điều khiển, thực chất, là một hệ thống bao gồm một vi xử lý có hiệu suất đủ dùng và giá thành thấp (khác với các bộ vi xử lý đa năng dùng trong máy tính) kết hợp với các khối ngoại vi như bộ nhớ, các module vào/ra, các module biến đổi số sang tương tự và tương tự sang số,... Ở máy tính thì các module thường được xây dựng bởi các chip và mạch ngoài.

Vi điều khiển thường được sử dụng để xây dựng các hệ thống nhúng. Nó cũng được sử dụng trong các thiết bị điện, điện tử như máy giặt, lò vi sóng, điện thoại, đầu đọc DVD, thiết bị đa phương tiện hay dây chuyền sản xuất tự động,...

Phân loại vi điều khiển
Có thể phân loại vi điều khiển theo theo độ dài thanh ghi và theo kiến trúc

Phân loại theo độ dài thanh ghi
Dựa vào độ dài của các thanh ghi và các tập lệnh của vi điều khiển mà vi điều khiển có thể chia thành các dòng 8 bit, 16 bit hay 32 bit,... Vi điều khiển có thanh ghi nhiều bit hơn thì sẽ có độ dài tập lệnh lớn hơn, do đó số lượng các tập lệnh cũng nhiều hơn các dòng có thanh ghi ít bit hơn.

Phân loại theo kiến trúc CISC và RISC

Phân loại theo kiến trúc Harvard và kiến trúc Von-Neumann
Kiến trúc Harvard sử dụng bộ nhớ riêng biệt cho chương trình và dữ liệu, với bus địa chỉ và bus dữ liệu độc lập với nhau nên quá trình truyền nhận dữ liệu đơn giản hơn. Hầu hết các vi điều khiển ngày nay được xây dựng dựa trên kiến trúc Harvard, kiến trúc này định nghĩa bốn thành phần cần thiết của một hệ thống nhúng. Những thành phần này là lõi CPU, bộ nhớ chương trình (thông thường là ROM hoặc bộ nhớ flash), bộ nhớ dữ liệu (RAM), một hoặc vài bộ định thời và các cổng vào/ra để giao tiếp với các thiết bị ngoại vi và các môi trường bên ngoài - tất cả các khối này được thiết kế trong một vi mạch tích hợp.

Kiến trúc Von-Neumann sử dụng chung bộ nhớ cho chương trình và dữ liệu, làm giảm kích thước và giá thành của vi điều khiển.

Kiến trúc của vi điều khiển

CPU hoặc vi xử lý
CPU (central processing unit) hay bộ xử lý trung tâm chịu trách nhiệm nạp lệnh, giải mã và thực thi các tập lệnh. Từ đó, tất cả mọi hoạt động của của vi điều khiển đều là do CPU điều khiển. CPU giao tiếp với các phần khác trong vi điều khiển thông qua hệ thống bus.

Hệ thống xung clock
Hệ thống xung clock làm nhiệm vụ cấp xung nhịp cho toàn vi điều khiển. Thông số kĩ thuật tốc độ xung clock tối đa (maximum clock speed hay maximum CPU speed) của các dòng vi điều khiển, ví dụ như vi điều ATmega328 có tốc độ xung nhịp tối đa là 20&nbsp;MHz, cho biết tốc độ xử lý tối đa mà vi xử lý trong vi điều khiển này có thể đáp ứng được. Hệ thống xung clock được thiết kế chủ yếu từ các mạch tạo xung (oscillator circuit) trong vi điều khiển.

Bộ nhớ
Bộ nhớ (tiếng Anh: memory) là nơi lưu trữ chương trình hoặc là nơi chứa các thông tin mà CPU đang làm việc. Có 2 kiểu bộ nhớ cơ bản:

RAM (Random access memory) là bộ nhớ lưu các dữ liệu mà CPU đang làm việc. Dữ liệu trogn RAM sẽ bị xóa khi mất điện
ROM/EPROM/EEPROM hoặc flash: là bộ nhớ lưu trữ chương trình vận hành của vi điều khiển, chúng được ghi khi vi điều khiển được nạp chương trình. Nội dung trong các loại bộ nhớ này không bị mất khi mất điện hoặc reset.

Các ngoại vi
Hệ thống ngoại vi trên vi điều khiển rất đa dạng theo nhiều dòng vi điều khiển khác nhau, nhưng nhìn chung các dòng vi điều khiển đều có những ngoại vi cơ bản như sau:

Ngõ vào ra (I/O Ports hay GPIO)
Các chuẩn giao tiếp phổ biến như I2C, SPI, UART,...
Bộ đếm thời gian và bộ đếm sự kiện (timer và counter)
ADC/DAC
Interrupt

Nạp chương trình
Để đưa chương trình vào được vi điều khiển thì phải thông qua mạch nạp. Mạch nạp được thiết kế để đưa file file thực thi (thường là file .hex) từ máy tính xuống vi điều khiển, thông qua các chuẩn ngoại vi có sẵn trên vi điều khiển, ví dụ như board Arduino IDE hỗ trợ nạp chương trình qua mạch nạp ISP nối vào các chân SPI có sẵn của board. Các mạch nạp phổ biến có thể kể đến như ST Link, JTAG, ISP,...

Vi điều khiển và vi xử lý
Vi điều khiển khác với các bộ vi xử lý đa năng ở chỗ là nó có thể hoạt động chỉ với vài vi mạch hỗ trợ bên ngoài.

Các vi điều khiển thông dụng
Họ vi điều khiển AMCC (do tập đoàn "Applied Micro Circuits Corporation" sản xuất). Từ tháng 5 năm 2004, họ vi điều khiển này được phát triển và tung ra thị trường bởi IBM.
403 PowerPC CPU
PPC 403GCX
405 PowerPC CPU
PPC 405EP
PPC 405GP/CR
PPC 405GPr
PPC NPe405H/L
440 PowerPC Book-E CPU
PPC 440GP
PPC 440GX
PPC 440EP/EPx/GRx
PPC 440SP/SPe
Họ vi điều khiển Atmel
Dòng 8051 (8031, 8051, 8751, 8951, 8032, 8052, 8752, 8952)
Dòng Atmel AT91 (Kiến trúc ARM THUMB)
Dòng AT90, Tiny & Mega – AVR (Atmel Norway design)
Dòng Atmel AT89 (Kiến trúc Intel 8051/MCS51)
Dòng MARC4
Họ vi điều khiển Cypress MicroSystems
CY8C2xxxx (PSoC)
Họ vi điều khiển Freescale Semiconductor. Từ năm 2004, những vi điều khiển này được phát triển và tung ra thị trường bởi Motorola.
Dòng 8-bit
68HC05 (CPU05)
68HC08 (CPU08)
68HC11 (CPU11)
Dòng 16-bit
68HC12 (CPU12)
68HC16 (CPU16)
Freescale DSP56800 (DSPcontroller)
Dòng 32-bit
Freescale 683XX (CPU32)
MPC500
MPC 860 (PowerQUICC)
MPC 8240/8250 (PowerQUICC II)
MPC 8540/8555/8560 (PowerQUICC III)
Họ vi điều khiển Fujitsu
F²MC Family (8/16 bit)
FR Family (32 bit)
FR-V Family (32 bit RISC)
Họ vi điều khiển Intel
Dòng 8-bit
8XC42
MCS48
MCS51
8061
8xC251
Dòng 16-bit
80186/88
MCS96
MXS296
Dòng 32-bit
386EX
i960
Họ vi điều khiển Microchip
PIC 8-bit (xử lý dữ liệu 8-bit, 8-bit data bus)
Từ lệnh dài 12-bit (Base-line): PIC10F, PIC12F và một vài PIC16F
Từ lệnh dài 14-bit (Mid-Range và Enhance Mid-Range): PIC16Fxxx, PIC16F1xxx
Từ lệnh dài 16-bit (High Performance): PIC18F
PIC 16-bit (xử lý dữ liệu 16-bit)
PIC điều khiển động cơ: dsPIC30F
PIC có DSC: dsPIC33F
Phổ thông: PIC24F, PIC24E, PIC24H
PIC 32-bit (xử lý dữ liệu 32-bit): PIC32MX
Họ vi điều khiển National Semiconductor
COP8
CR16
Họ vi điều khiển STMicroelectronics
ST 62
ST7
STM8
STM32 (Cortex-Mx)
Họ vi điều khiển Philips Semiconductors
LPC2000
LPC900
LPC700

Tham khảo

Xem thêm

Danh sách các vi điều khiển thông dụng
Danh sách các vi điều khiển hỗ trợ WiFi
Microbotics
Programmable logic controller
Vi điều khiển đơn board

Liên kết ngoài
Vi điều khiển, thông tin tại trang Curlie