Gần đây tôi đã lắp ráp một bộ chuyển đổi điện áp công suất cao cho một khách hàng, và trong suốt quá trình thiết kế, tôi đã cố gắng tránh sử dụng MCU. Khi khách hàng muốn thêm chức năng điều chỉnh độ sáng vào bảng mạch, tôi buộc phải thêm một linh kiện nhỏ với EEPROM 100,000 chu kỳ. Đối với tôi, điều này không phải là vấn đề lớn vì chỉ cần chi thêm $0.33 cho mỗi bảng mạch để thêm chức năng này, đồng thời cũng cho phép hệ thống được cấu hình lại sau này. Điều này khiến tôi suy nghĩ về một câu hỏi thú vị: khi nào bạn nên chọn FPGA thay vì MCU?
Các nhà thiết kế mà tôi làm việc với sống và thở với các mô-đun/SoCs MCU của Arm, STM, TI và Nordic, chủ yếu nhờ vào sự hỗ trợ từ nhà sản xuất thông qua SDKs. Còn về FPGA thì sao? Bạn có thể mong đợi mức độ hỗ trợ tương tự không, và bạn có nên chọn sử dụng FPGA cho một thành phần nhúng không? Câu trả lời cho loại câu hỏi này không phải lúc nào cũng đơn giản. Dưới đây là những điều bạn nên xem xét khi lựa chọn giữa FPGA và MCU và nơi bạn có thể tìm thấy các thành phần mới cho bảng mạch của mình.
Tôi nhớ khi mới bắt đầu làm việc nghiêm túc trong thiết kế điện tử và bắt đầu đọc qua "bảng chữ cái" của các từ viết tắt cho các thành phần khác nhau. Ban đầu, việc nhìn thấy sự khác biệt giữa một số bộ xử lý số là khó khăn, nhưng việc hiểu rõ giới hạn của từng thành phần cho các ứng dụng khác nhau đã giúp ích rất nhiều cho tôi. Giới hạn của những gì bạn có thể lập trình vào các bộ xử lý này cũng rất quan trọng để hiểu khi nào nên chọn loại thành phần nào.
Tôi sẽ đi vào những khía cạnh này ngay lập tức, nhưng tôi vẫn đôi khi nhận được câu hỏi từ một nhà thiết kế trẻ: FPGA và MCU là gì? Chúng đều cung cấp sức mạnh tính toán, vậy chúng phải là sự thay thế hoàn hảo, phải không? Điều đó tùy thuộc vào ứng dụng bạn cần thực hiện.
Để hiểu rõ sự khác biệt giữa các thành phần FPGA và MCU, việc so sánh chúng với ASICs là hữu ích. Chữ “A” trong ASIC cho bạn biết thành phần được thiết kế cho một ứng dụng cụ thể trong một hệ thống lớn hơn. Ví dụ bao gồm:
Danh sách còn tiếp tục từ đó. Bất kỳ ASIC nào cũng cung cấp các chức năng cụ thể, đôi khi có thể lập trình cho một phạm vi nhiệm vụ hẹp. Mức độ tích hợp trong một ASIC cũng thay đổi tùy theo chip. Một vi điều khiển cũng có thể lập trình ở một mức độ nào đó, mặc dù các nhiệm vụ có thể thực hiện rộng hơn so với những gì được xây dựng trong firmware của một ASIC. MCU được xây dựng để có thể thích nghi và thực hiện bất kỳ nhiệm vụ nào bạn có thể lập trình vào thiết bị với SDK của nhà sản xuất.
Niềm vui và sự phức tạp đến từ FPGA. Tôi thích nghĩ về FPGA như là ASIC có thể tùy chỉnh. Nếu cụm từ đó làm bạn khó chịu, hãy biết rằng bạn có thể sử dụng FPGA như một phần của quá trình chế tạo mẫu khi thiết kế ASIC. Điều này là bởi vì tất cả các khối logic trên FPGA đều có thể cấu hình (chúng cơ bản là các ô SRAM). Bạn đang xây dựng firmware từ đầu, và bạn có thể định nghĩa cách thức thực hiện các nhiệm vụ trên thiết bị ở cấp độ phần cứng. Đây là điều bạn không thể làm với MCU hoặc ASIC.
FPGA vs. MCU vs. ASICs: phổ cụ thể vs. tổng quát.
Điều thú vị về SoCs là chúng có thể nằm ở bất cứ đâu từ cụ thể đến tổng quát về khả năng tính toán. Các nhà sản xuất linh kiện sẽ gắn thuật ngữ “SoC,” “SoM,” hoặc “SiP” vào một mạch tích hợp mới thực hiện một loạt các nhiệm vụ, miễn là những nhiệm vụ đó trước đây yêu cầu nhiều mạch tích hợp riêng biệt. Những linh kiện này được tích hợp cao, và chúng có thể nằm ở bất cứ đâu trên phổ cụ thể vs. tổng quát.
Đâu đó bên phải của FPGA trong hình trên sẽ là MPUs. Những thiết bị này chạy hệ điều hành, kết nối với nhiều thiết bị ngoại vi, và là trụ cột của tính toán mục đích chung. Một số người có thể tranh luận rằng MCU và FPGA nên đổi chỗ về mức độ tổng quát (xem lý do bên dưới), nhưng cả FPGA và MCU đều không được thiết kế cho cùng loại tính toán mục đích chung như MPU.
Bảng dưới đây cho thấy một so sánh ngắn gọn về một số khía cạnh quan trọng nhất của MCUs và FPGAs. Mỗi loại linh kiện đều có ưu điểm của mình, và việc quyết định loại nào tốt nhất cho hệ thống của họ là tùy thuộc vào nhà thiết kế. Cá nhân tôi thích MCUs vì tôi có một số kinh nghiệm làm việc với C và tôi chưa bao giờ học HDL. Tuy nhiên, FPGAs có thể được lập trình để có một số chức năng giống như ASIC chuyên biệt, miễn là bạn biết cách mã hóa chúng.
| | FPGA | MCU | | ---------- | ---------- | ---------- | | Lập trình lại| Hoàn toàn có thể lập trình lại ở cấp độ phần cứng | Thay đổi: phụ thuộc vào hệ điều hành nhúng, động | | Thời gian lập trình | Lâu hơn: yêu cầu mã hóa và biên dịch lại tất cả thành mã máy | Ngắn hơn: được hỗ trợ bởi SDK và thư viện của nhà sản xuất | | Dễ dàng lập trình | Được coi là có đường học tập dốc hơn | Dễ dàng: bất kỳ ai quen với ngôn ngữ phổ biến có thể lập trình | | Mức tiêu thụ năng lượng | Cao hơn | Thấp hơn | | Song song hóa | Có thể được cấu hình trong quá trình lập trình | Bị giới hạn bởi kiến trúc phần cứng | | Điểm cố định vs. điểm nổi | Được cấu hình cho điểm cố định, nhưng điểm nổi có thể được triển khai trong quá trình lập trình | Cả hai đều có thể truy cập | | Ngôn ngữ | Ngôn ngữ mô tả phần cứng (HDL) | Ngôn ngữ C/Assembly, ngôn ngữ khác nếu được hỗ trợ bởi RTOS (ví dụ: Python) |
Vì FPGA thường được coi là khó lập trình đối với các nhà phát triển mới, một MCU thường được xem là bộ xử lý tốt nhất cho một thiết bị nhúng. Điều này phần lớn được hỗ trợ bởi cộng đồng mã nguồn mở, và một số dự án mã nguồn mở có thể được sử dụng làm kiến trúc cơ bản hoặc bằng chứng thực nghiệm cho một sản phẩm mới. Thêm vào đó là sự hỗ trợ từ các nhà sản xuất, và bạn sẽ có đủ công cụ để lập trình MCU.
Mặc dù có đường cong học tập trong việc lập trình FPGA, chúng có thể được cấu hình mạnh mẽ hơn về kiến trúc firmware. Việc song song hóa có thể được lập trình vào thiết bị, tùy thuộc vào số lượng LUTs và ALUs có sẵn. Điều này làm cho FPGA trở thành lựa chọn tuyệt vời khi firmware của bạn cần được thiết kế cho các ứng dụng cụ thể. Ví dụ bao gồm suy luận trong AI, xử lý hình ảnh, thuật toán điều khiển phần cứng, và các nhiệm vụ khác đòi hỏi tính toán lặp đi lặp lại (hoặc song song).
Hệ thống nhúng tiếp theo của bạn sẽ không đi đến đâu nếu không có các linh kiện phù hợp, và bạn có thể tìm thấy linh kiện bạn cần khi sử dụng một công cụ tìm kiếm linh kiện điện tử như Octopart. Các chức năng lọc nâng cao giúp bạn thu hẹp xuống các linh kiện bạn cần và có thể giúp bạn nhanh chóng lựa chọn giữa FPGA so với MCU cho hệ thống tiếp theo của bạn. Bạn có thể tìm thấy FPGA và MCU trên Octopart.
Hãy cập nhật với các bài viết mới nhất của chúng tôi bằng cách đăng ký nhận bản tin của chúng tôi.