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ểnSửa đổi

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 ghiSửa đổi

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à RISCSửa đổi

Phân loại theo kiến trúc Harvard và kiến trúc Von-NeumannSửa đổi

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ểnSửa đổi

CPU hoặc vi xử lýSửa đổi

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 clockSửa đổi

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à 20MHz,[1] 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ớSửa đổi

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 viSửa đổi

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ìnhSửa đổi

Để đư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.[2] 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ýSửa đổi

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ụngSửa đổi

Tham khảoSửa đổi

  1. ^ “Atmel 8-bit AVR Microcontrollers ATmega328/P Datasheet Complete” (PDF). Truy cập ngày 11 tháng 2 năm 2022.
  2. ^ “Arduino as ISP and Arduino Bootloaders”. arduino.cc. 10 tháng 5 năm 2022. Truy cập ngày 11 tháng 2 năm 2022.

Xem thêmSửa đổi

Liên kết ngoàiSửa đổi