MCU-HCMC: “Chúng ta cần gì ở các MCU?”

Ngày xuân con én đưa thoi

Thiều quang chín chục đã ngoài sáu mươi

Cỏ non xanh rợn chân trời

Cành lê trắng điểm một vài bông hoa

Truyện Kiều-Nguyễn Du

Rượu xuân đã mời, mâm ngũ quả cũng đã dọn xong, thêm chút trầm thơm để mang mùi Tết tới!

Ta đã điểm qua một số tính năng của các dòng sản phẩm MCU hiện nay đang phổ dụng, vậy, các tính năng ấy phục vụ gì cho nhu cầu của người lập trình và khách hàng của họ?

Để trả lời câu hỏi trên, ta phải trả lời câu hỏi: “Hiện nay, chủ yếu dân lập trình MCU dùng vi điều khiển của mình vào việc gì?” Theo tôi-những ứng dụng thường thấy trong môi trường Đại học là: điều khiển động cơ <DC, step, servo> cho robot, cánh tay máy, bắt line, lập trình hiển thị led, LCD, làm đèn giao thông..v.v.. có thể tóm gọn: đọc cảm biến và điều khiển mạch công suất, mạch hiển thị, giao tiếp với các vi điều khiển/vi xử lý khác. Quá trình xử lý trung gian có thể đơn giản hay phức tạp tùy sự điều khiển và mức độ chính xác đặt ra!

Thử xem qua chức năng của một computer đơn giản:

‘Theo nghĩa rộng, máy tính là thiết bị có thể nhận thông tin từ thế giới bên ngoài, xử lý thông tin đó bằng các phép tính logic hoặc/và toán học, ra quyết định dựa vào kết quả xử lý. Sau cùng, trả thông tin đã được xử lý ra thế giới bên ngoài dưới một dạng mới.

-Phần tử chính cấu thành hệ thống máy tính là đơn vị xử lý trung tâm(CPU)

-Các thiết bị nhớ như ROM và RAM dùng để lưư trữ dữ liệu và chương trình <chuỗi các chỉ lệnh>

-Các cổng xuất/nhập cần thiết để giao tiếp giữa computer và thế giới bên ngoài.’

Bộ não của computer là CPU,  nó ra tất cả các quyết định cho hệ thống, 2 ngõ vào của CPU thường thấy là Reset và xung nhịp hệ thống:

-Xung nhịp này dùng để đồng bộ các hoạt động bên trong và ngoài CPU.

-Chân Reset để đưa CPU vào lại hoạt động đã biết trước, nếu có thể vì lý do nào đấy chương trình bị lỗi hoặc không kiểm soát được.’[1]

Như vây, ta có thể xem MCU là một máy tính đơn giản, được sự thỏa hiệp của người sử dụng về mức độ chính xác dựa trên các tín hiệu vào/ra không quá phức tạp.

Ta xem qua các chức năng:

  • Ngõ vào/ra của MCU chính là các pin xuất/nhập.

o       Dữ liệu của ngõ vào nhận được có thể do các mức chuyển 0/1<high/low> trực tiếp trên các pin, hoặc từ ngõ vào analog <MCU có ADC>. Tùy theo mục đích cụ thể, nó có thể ở các dạng khác nhau: Capture, Compare, Counter, Input Only, Quasi Bidirection, ADC…

o       Dữ liệu của ngõ ra có được cũng do sự chuyển các mức 0/1 trên pin, hoặc mức analog <MCU có DAC>. Nó có thể xuất hiện dưới dạng PWM <điều xung>, Output Only, DAC…

  • Các bus truyền dữ liệu, định địa chỉ, tín hiệu điều khiển: thường là 8 hoặc 16 bits.
  • ROM/RAM/FLASH: các loại bộ nhớ lưu trữ/truy xuất dữ liệu/chương trình. Sự mô phỏng chức năng nhớ của con người: bộ nhớ cảm giác<sensory memory>, bộ nhớ thời đoạn ngắn<short-term memory>, bộ nhớ thời gian dài<long-term memory>[2] đưa ra các loại bộ nhớ RAM-<truy cập ngẫu nhiên>- ROM-<Chỉ đọc>- FLASH-<Một loại kết hợp RWM-Read Write Memory>- Kích thước các bộ nhớ quyết định chương trình xử lý ngắn hay dài, độ phức tạp đến đâu, tuy nhiên, nó không quyết định được hoàn toàn công việc tính toán và đáp ứng thời gian thực của hệ thống.
  • CPU: đơn vị này trong MCU thường được gán cho ALU-xử lý các phép toán số học, cách thức tổ chức-thực thi lệnh của CPU quyết định có sự tận dụng tối đa chu kì xung nhịp để làm tốc độ xử lý hay không?
  • ISP/IAP/ICP: thuận lợi trong việc đổ chương trình từ PC xuống MCU mà không cần thêm vi điều khiển trung gian. Do làm việc qua cổng nối tiếp nên tốc độ chính là yếu điểm của phương pháp ISP!
  • Realtime clock: thường được làm đồng hồ hệ thống, tương thích trong việc lập trình thời gian thực.
  • Watchdog Timer: Reset hệ thống khi gặp sự cố về phần mềm, hoặc phần cứng.
  • Dao động trên chip: ta có thể bỏ luôn thạch anh gắn ngoài tạo nguồn dao động, lúc này, có thể dùng MCU như một device chuyên dụng.
  • Tiết kiệm nguồn: Các sản phẩm portable, có khả năng linh hoạt cao, đòi hỏi thời gian sử dụng lâu dài, chức năng Power saved tỏ ra rất hữu dụng. Các nhà chế tạo phần cứng đang cố gắng giảm mức điện áp tích cực trên mỗi transistor xuống mức tối thiểu, 5V,3.3V, 3V đang cố gắng tiến dần tới 1.5V và thấp hơn nữa. Họ hiểu hơn ai hết các vùng cần năng lượng trong chip khi hoạt động nhiều, ít hoạt động, ở chế độ rảnh rỗi…-anh ta đưa ra các lựa chọn để người lập trình firmware có thể tối ưu sản phẩm của mình. Bởi vậy, cần có sự kết hợp giữa người lập trình phần cứng-phần mềm trong một sản phẩm ở cả những chức năng đơn giản đến phức tạp.
  • Nhiều mức ưu tiên ngắt và nhiều loại ngắt: Phục vụ các yêu cầu đa dạng của người dùng, tuy nhiên, đi đôi với nó cũng là vấn đề nan giải về bài toán quản lý thời gian thực.
  • UART/I2C/USB/SPI/PSP/CAN: các chuẩn giao tiếp thông dụng, cần thiết để lập trình cho hệ thống có nhiều vi điều khiển và nhiều thiết bị, hoặc khi cần mở rộng ngoại vi..v.vv…

Các sản phẩm MCU hiện nay thường đa tính năng và các nhà sản xuất phần cứng luôn cố gắng để các tính năng ấy là chuyên biệt, nhằm phục vụ nhu cầu đa dạng và khắc khe của cả những khách hàng khó tính. Mọi cố gắng đều đáng trân trọng! Và khi xét ở một khía cạnh nào đấy, ta có thể nói sự cạnh tranh và hoàn thiện sản phẩm là một quá trình đổi mới liên tục-thúc đẩy sự tiến bộ của kĩ thuật.


[1]Theo Computer and Caculator–Paul Schwartz-TechOnline

[2] Theo ‘Static and Dynamic neural network’

Các bài viết liên quan:

  1. Bài 1: “Điểm mặt anh tài”
  2. Bài 2: “Tính năng của từng dòng sản phẩm”
  3. Bài 3: “Chúng ta cần gì ở các MCU?”
  4. Bài 4: “Chúng ta đã làm gì với các MCU?”
  5. Bài 5: “Nhìn lại quanh ta-Nhìn ra thế giới”

Comments

comments

This entry was posted in Hệ thống nhúng, Thời cuộc. Bookmark the permalink.

One Response to MCU-HCMC: “Chúng ta cần gì ở các MCU?”

  1. Pingback: MCU-HCMC: “Chúng ta đã làm gì với các MCU?” « KHVT

Leave a Reply

Your email address will not be published. Required fields are marked *