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 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

Hệ thống nhúng