Làm thế nào để biết MCU 8 bit là đủ hay MCU 16 bit là cần thiết? [đóng cửa]


7

Bộ điều khiển vi mô 16 bit mạnh hơn bộ điều khiển 8 bit và bộ điều khiển 32 bit ở cấp độ hoàn toàn khác nhau. Như đã nói, trong khi chúng ta có thể quyết định những thiết bị ngoại vi nào chúng ta cần cho một ứng dụng và cố gắng tìm giải pháp thay thế rẻ nhất (và dễ sử dụng tức là chuỗi công cụ), làm thế nào để biết liệu có nên sử dụng bộ điều khiển vi mô 8 bit cho ứng dụng không hoặc 16 bit một hay 32 bit?

Tôi hiểu sự khác biệt giữa chúng vì vậy tôi sẽ đặt câu hỏi theo một cách khác.

Hãy nói rằng tôi có một ứng dụng trong đó tôi sẽ có màn hình LCD được sử dụng để hiển thị hình ảnh bitmap, bàn phím 16, bộ rung, cảm biến nhiệt độ và độ ẩm và đầu vào chuột. Một bộ điều khiển vi mô 8 bit cao cấp có thể dễ dàng thực hiện tất cả những điều này trong thời gian thực. Bây giờ nếu tôi chuyển sang màn hình LCD màu, thì tôi có thể cần một vi điều khiển 32 bit có thể cập nhật màn hình màu đủ nhanh và có nhiều bộ nhớ hơn. Tuy nhiên, tôi chỉ có thể phát hiện ra rằng vi điều khiển 8 bit cao cấp của tôi yếu, sau khi tôi đã thử nó trong dự án.

Vì vậy, trước khi chúng tôi bắt đầu làm việc với dự án, làm thế nào để chúng tôi biết kích thước và bao nhiêu vi điều khiển mạnh mẽ cần thiết cho dự án?


Bạn thực sự nên làm một ước tính như bạn đã làm. Các tác vụ thời gian thực / nhanh thường cần MCU, xử lý hình ảnh / đầu vào / đầu ra nâng cao (không phải thời gian thực) hoạt động tốt hơn với ARM. Về cơ bản, bạn có thể nhìn vào những dự án mà Arduino có so với Raspberry Pi. Mặc dù thậm chí có MCU 32 bit có thể làm những thứ khá tuyệt vời. Kiểm tra những gì quan trọng cho dự án của bạn, lấy một cái gì đó hợp lý, bạn luôn có thể thu nhỏ lại nếu cần.
Paul

Câu trả lời:


13

Thông thường, quyết định về vi điều khiển là sự cân bằng giữa:

  1. Các tính năng đặc biệt (ví dụ tiêu thụ điện năng thấp)
  2. Thời gian phát triển.
  3. Giá vốn hàng hóa trong sản xuất.

Nếu thời gian phát triển ngắn có nhiều ưu tiên hơn chi phí hàng hóa, thì hãy tìm bộ điều khiển cơ bắp hơn. Bạn có thể thực hiện tối ưu hóa chi phí sau này như một giai đoạn riêng biệt. Costoptimization sớm [sic] thường làm hỏng các dự án.

Nếu bạn đang trong giai đoạn tối ưu hóa chi phí, thì bạn bắt đầu từ một sản phẩm đang hoạt động. Phiên bản không được tối ưu hóa sớm hoạt động như một nguyên mẫu cho phiên bản được tối ưu hóa. Các phiên bản đầu tuôn ra các yêu cầu.

Liên quan: Làm thế nào để chọn một nền tảng MCU?


Mọi người sẽ không tin mức độ phổ biến của chuỗi đánh giá thực hiện thiết kế (hoặc chu trình, nếu bạn muốn).
yo '

6

trước khi chúng tôi bắt đầu làm việc với dự án, làm thế nào để chúng tôi biết kích thước và bao nhiêu bộ vi điều khiển mạnh mẽ cần thiết cho dự án?

Bạn không thể biết. Và đó là một vấn đề lớn. Nếu bạn chọn một vi điều khiển quá nhỏ, bạn có thể hết tài nguyên (bộ nhớ / chân / thanh ghi / các tính năng khác) và các tài nguyên này có thể khó ước tính chính xác cho đến khi quá muộn. Nhưng nếu bạn chọn một vi điều khiển quá lớn, bạn đang trả tiền cho các tài nguyên bạn không sử dụng và điều đó làm tăng thêm chi phí hệ thống.

Đôi khi bạn có thể đoán được bao nhiêu tài nguyên mà ứng dụng của bạn sẽ cần ... nếu bạn đang thực hiện các phép tính FFT, bạn có thể tính toán chính xác dung lượng bộ nhớ mà các mẫu sẽ yêu cầu. Nhưng thật khó để xác định đáng tin cậy bao nhiêu không gian mã đối tượng mà phần mềm sẽ yêu cầu, cho đến sau khi nó được viết.

Một hàng rào tốt chống lại việc hết bộ nhớ mã, là chọn một họ vi điều khiển có khả năng mở rộng qua một số điểm giá / hiệu suất khác nhau. Đây là một điểm bán hàng lớn của ARM , Microchip PIC , Atmel AVR và các micro có thể mở rộng khác. Khi bạn phát triển phần mềm của mình, bạn có thể chuyển từ hệ thống phát triển lớn hơn sang hệ thống mục tiêu nhỏ hơn, giảm chi phí sản phẩm cuối cùng.

Có thể mở rộng có nghĩa là tất cả các bộ vi điều khiển trong gia đình đó có (hầu hết) cùng một tập lệnh và (hầu hết) các thanh ghi giống nhau. Vì vậy, phần mềm được viết cho một người, sẽ hoạt động trên một người khác trong cùng một gia đình. (Mã PIC của Microchip sẽ không chạy trên ARM, nhưng nếu bạn học PIC14, thật dễ dàng để chuyển xuống PIC12 hoặc lên tới PIC16.)

Nếu bạn chỉ xây dựng một nguyên mẫu một lần, thay vì một dòng sản phẩm đầy đủ, lựa chọn tốt nhất của bạn là gắn bó với một hệ thống phát triển lớn hơn một chút so với bạn nghĩ, nhưng có chỗ để phát triển.


3

Một yếu tố lớn là kích thước của các biến thường được sử dụng nhất của bạn. Nếu bạn đang sử dụng hầu hết các biến 8 bit và bạn chỉ cần truy cập các cổng 8 bit, thì có lẽ bạn có thể nhận được bằng MCU 8 bit.

Tuy nhiên, nếu bạn có nhiều biến số 16 bit và thậm chí chỉ có một vài biến 32 bit, thì bạn sẽ cần xem xét MCU 16 bit (hoặc thậm chí 32 bit) kể từ khi truy cập biến 16 bit bằng MCU 8 bit cần một lượng mã lớn.

Và nếu bạn định sử dụng bất kỳ biến số dấu phẩy động nào, tôi khuyên bạn nên đề xuất MCU 16 bit hoặc 32 bit.

Ngay cả khi bạn không có thời gian để viết nhiều mã bạn sẽ cần sử dụng, tôi khuyên bạn nên viết trước một số mã và biên dịch cho bất kỳ bộ vi điều khiển nào bạn có thể đang sử dụng. Hầu hết các nhà sản xuất vi điều khiển đều có phiên bản miễn phí của trình biên dịch, có lẽ bị giới hạn bởi kích thước của tệp đầu ra hoặc bằng cách giới hạn số lượng tối ưu hóa.


2

Lý tưởng nhất là trước khi bạn thiết kế một bảng mới, bạn thực hiện một dự án bằng chứng bằng cách sử dụng một bảng phát triển (hoặc bất kỳ bảng có sẵn trên thị trường) hoặc một bảng còn lại từ một trong các dự án trước đó của bạn.


2

Chà, trước khi bạn thực sự bắt đầu viết mã, trước tiên bạn phải thực hiện một số nghiên cứu về những gì bạn cần để hiện thực hóa một dự án. Đó là một phần của công việc.

Nếu bạn đã quen thuộc với vi điều khiển, hãy thực hiện một số nghiên cứu xem liệu uC 8 bit có đủ hay không. Nó phụ thuộc vào độ phức tạp, liệu nó có được mở rộng hay không (như từ màn hình LCD đơn sắc sang màn hình LCD màu), về lâu dài, nó có phải tiêu thụ điện năng thấp, sử dụng bộ nhớ thấp hay không ...

Tôi đã phải thực hiện một số nghiên cứu về ARM uC mà tôi phải chọn và trình biên dịch nào (dựa trên giá cả và mức độ phổ biến). Trong tình huống của tôi, điều quan trọng là kiểm tra sự sẵn có của các thiết bị ngoại vi.

Vì vậy, chỉ đơn giản là có hoặc không là không thể. Vì vậy, chào mừng bạn đến với thế giới Kỹ thuật :)


2

Thông thường, MPU 32 bit thường nhanh hơn do tần số cao hơn, nhưng cũng do khả năng của chúng hoặc một số 'thủ thuật' mà chúng có thể làm.

Như đã nói bởi @tcrosley, MCU 32 bit có thể thêm hai số nguyên 32 bit trong một lần, trong khi MCU 8 bit sẽ phải theo byte này theo byte. Số dấu phẩy động cần ít nhất 16 bit và toán học của chúng phức tạp hơn, điều đó có nghĩa là rất nhiều công việc cho MCU 8 bit. Một MCU 32 bit có thể làm toán trong phần cứng, vì vậy một lần nữa, trong một lần. Một trong những thủ thuật có thể là thực hiện bốn lần bổ sung các biến 8 bit cùng một lúc. Tải bốn giá trị 8 bit vào thanh ghi và thêm các giá trị 8 bit cho mỗi giá trị.

Nhưng đó không phải là tất cả.
Cũng có một cái nhìn cẩn thận về ngoại vi phần cứng, không nhất thiết phải mạnh hơn trên các MCU 32 bit!
Một trải nghiệm:

Tại trường đại học của tôi, chúng tôi đã chế tạo một máy hiện sóng bao gồm PIC18F2550 (8 bit, 10 bit ADC, USB), một opamp để nhận ra một số dải điện áp và một số nắp và điện trở. Điều này có nghĩa là dao động rất đơn giản, rất rẻ cho các trường học với tỷ lệ mẫu là ... Tôi đoán là khoảng 50khz. Chuyển được thực hiện thông qua CDC cho khả năng tương thích cao.

Khi microchip xuất hiện với MCU PIC32, nó có vẻ đầy hứa hẹn. Giá gần như nhau, 120MIn / s thay vì 12, USB tốc độ cao thay vì tốc độ đầy đủ. Điểm cuối cùng rất thú vị bởi vì thông lượng là yếu tố giới hạn của PIC18 và điểm chuẩn của vi mạch cho thấy thông lượng USB cao hơn đáng kể.

Cuối cùng, hóa ra PIC18 đã làm tất cả các công cụ USB trong phần cứng, trong khi PI32 dường như làm được nhiều hơn trong phần mềm - ngay khi PIC32 có nhiều việc phải làm, thông lượng giảm xuống. Do đó, chúng tôi không thể nhận ra một máy hiện sóng nhanh hơn với PIC32.

(Tôi không tham gia vào việc này - vì vậy tôi không biết chi tiết)


1

Một từ cung cấp câu trả lời - KINH NGHIỆM.

Cho đến khi bạn thử mọi thứ và học hỏi để có được kinh nghiệm.

Cũng nên nhớ rằng có những nhiệm vụ mà bạn có thể đặt thành bất kỳ MCU nào có thể rơi thẳng vào mặt họ nếu phương pháp thiết kế sai được sử dụng cho các thuật toán. Từ lâu, tôi đã mã hóa phần sụn cho MCU 8 bit 4,9 MHz sử dụng thuật toán thông minh và có thể theo dõi trạng thái bật / tắt và phát hiện trạng thái chuông bằng cách lọc tín hiệu điện áp vòng ~ 20Hz trên tất cả 28 dòng điện thoại và sau đó báo cáo trạng thái đó cho trạm điều khiển trung tâm trong khi chạy màn hình LCD và vận hành giao diện người dùng khá phức tạp với các âm DTMF được phát hiện. Công cụ thú vị.


Tôi ước tôi có thể làm những việc như thế trong công việc của mình
quantum231
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.