Tại sao phải thực hiện vi điều khiển trong FPGA?


16

Tôi hiện đang "điều tra" các GPU, những gì chúng có thể làm, cách chúng làm, v.v.

Ở nhiều nơi ( ví dụ ở đây ) tôi đã thấy các dự án triển khai một bộ vi điều khiển đơn giản với FPGA.

Vì vậy, câu hỏi của tôi:
Tôi muốn biết, mục đích của việc thực hiện như vậy là gì? Tại sao nên sử dụng một vi điều khiển được triển khai trong FPGA thay vì có một vi mạch trên tàu? Lợi ích là gì? Và có lẽ cũng có nhược điểm gì?


Nhiều người trong số này sử dụng lõi IP đóng hộp, tuy nhiên việc tự mình sử dụng có thể là một trải nghiệm học tập tuyệt vời.
Chris Stratton

1
@ChrisStratton - Bạn có thể nói thêm, hoặc đăng một liên kết về lõi IP đóng hộp không? Vâng, tôi chắc chắn rằng nó có thể là một kinh nghiệm học tập tuyệt vời. Nhưng đó là một trong những lý do tôi hỏi câu hỏi này. Tôi tự hỏi nếu nó là bất cứ điều gì nhiều hơn chỉ là một kinh nghiệm học tập.
James C

1
Hầu hết mọi người thực hiện nó đang sử dụng một cái gì đó như Microblaze, Picobloze, Nios II, v.v. - về cơ bản là các thiết kế bộ xử lý "trong một hộp" (thư viện) mà bạn có thể cấp phép và đưa vào dự án của mình. Sự tương phản sẽ tự phát triển một nguồn trong nguồn HDL, có lẽ từ sơ đồ khối được trình bày trong bài giảng CS101 điển hình của bạn. Có một số thực tiễn thú vị để tranh luận trong việc biến bản vẽ bài giảng thành phần cứng làm việc.
Chris Stratton

1
Xem Lõi mở để biết nhiều ví dụ về lõi CPU nguồn mở.
RBerteig

3
Tôi có một ví dụ. Chúng tôi đã có một vi điều khiển lỗi thời cho một sản phẩm cũ. Chúng tôi không thể tìm thấy một vi điều khiển thay thế phù hợp với sự pha trộn đúng của các thiết bị ngoại vi. Sử dụng một bộ vi xử lý với bộ xử lý nhúng cho phép chúng tôi thực hiện kết hợp các thiết bị ngoại vi lý tưởng của mình trên FPGA.
kkrambo

Câu trả lời:


24

Những lợi ích:

  • giao diện cực nhanh giữa vi điều khiển và bất kỳ giao diện tùy chỉnh hoặc logic I / O trên chip.
  • giao diện xử lý và gỡ lỗi tùy biến
  • Ngoài ra, logic điều khiển thường dễ dàng hơn so với viết mã điều khiển với, giả sử, VHDL

Nhược điểm:

  • Có thể cần nhiều đồ họa đắt tiền hơn để phù hợp với cả vi điều khiển và logic tùy chỉnh, so với việc chỉ có logic tùy chỉnh trên đồ họa
  • Có thể khó thực hiện hơn, đặc biệt là với các bộ nhớ và nếu lõi phức tạp, hơn một bộ vi điều khiển đã sẵn sàng trên một chip riêng.

3
Lợi ích bổ sung: thiết kế đơn giản hơn, một chip ít hơn.
DoxyLover

4
Nhược điểm bổ sung: cấp phép thêm IP
Mikhail

Làm thế nào về tiêu thụ điện năng như một nhược điểm?
Craig McQueen

@CraigMcQueen Về mặt lý thuyết có thể tạo ra một bộ vi điều khiển trong một đồ họa chưa được sản xuất dưới dạng phần cứng độc lập. Trong trường hợp đó, không có mức tiêu thụ năng lượng để so sánh. Trong mọi trường hợp, thiết bị quá cụ thể là một mặt trái / nhược điểm chung.
Cột

Tất cả các ý kiến ​​rất tốt. Và tốt, tôi sẽ nói rằng nói chung, các GPU có mức tiêu thụ năng lượng lớn, bởi vì việc sử dụng logic thường rất xa so với 100% trong một macrocell. Điều này được bù đắp một chút bởi thực tế là các GPU có thể sử dụng các kỹ thuật giảm thiểu năng lượng tinh vi. Các quy trình sản xuất (công nghệ) có thể khá giống nhau giữa một bộ xử lý và bộ xử lý cùng thời. Bộ xử lý có các khối bộ nhớ chuyên dụng, cũng như các GPU. Những thứ này có phù hợp với nhu cầu của bạn hay không, tùy thuộc vào mức độ may mắn của bạn khi tìm thấy một GPU phù hợp chính xác với nhu cầu của bạn.
LOLP

26

Nếu dự án của bạn sẽ sử dụng một FPGA cho các công việc khó khăn, và nó có công suất dự phòng, tại sao sẽ bạn đi đến các chi phí của những Chip thêm vào khi bạn có thể chỉ thực hiện nó trong FPGA?

Đối với nhiều môi trường kiểm soát thủ tục, có thể dễ dàng thực hiện cài đặt được yêu cầu bằng ngôn ngữ như C hơn là cố gắng thực hiện trong VHDL hoặc Verilog. Bằng cách thêm bộ vi điều khiển vào FPGA, bạn sẽ có được cả hai thế giới tốt nhất - sức mạnh của VHDL / Verilog, v.v. cho logic và các hệ thống giao thoa, và sự đơn giản của ngôn ngữ thủ tục cho các hệ thống quản lý và điều khiển cốt lõi.


10
Câu đầu tiên của câu trả lời này là lý do chính. Điều này chủ yếu được thực hiện khi bạn đã có một đồ họa với một số dung lượng dự phòng trên bo mạch. (Ít nhất) một chip ít hơn và độ phức tạp bảng ít hơn. Bạn sẽ không đặt một GPU lên một bảng chỉ để thực hiện một vi điều khiển với nó, nhưng khi bạn đã có một FPGA, đó là một cách hay để cắt giảm chi phí bộ phận và độ phức tạp của bo mạch. Ít nhất đó là lý do tại sao chúng tôi làm điều đó.
thiệu lại vào

13

Để mở rộng câu trả lời của Majenko và PkP:

Xu hướng nhúng CPU vào thiết kế FPGA đã dẫn đến một số hệ thống không đồng nhất như:

  • Gia đình Xilinx 'Zynq-7000
  • Altera's Arria / Cyclon / Stratix SoC
  • Các SmartFusion của MicroSemi

Ngoài ra còn có chip Intel Atom + Altera trên thị trường: http://www.altera.com/devices/ Processor / intel / e6xx / pro-e6x5c.html

Hầu hết các bộ điều khiển vi mô miễn phí cho FPGA đều gặp phải sự hỗ trợ của chuỗi công cụ xấu. CPU ARM nhúng đi kèm với hỗ trợ theo dõi / gỡ lỗi, trình biên dịch (chuỗi công cụ gcc) và hỗ trợ linux đầy đủ. Dưới đây là một khảo sát được trình bày tại FPL 2014: http://dx.doi.org/10.1109/FPL.20146927482

Chỉnh sửa 1:
Ngoài ra còn có lớp thiết bị PSoC (Hệ thống lập trình trên Chip) từ Cypress. Các thiết bị này bao gồm bộ điều khiển vi mô (M8C, 8051, ARM Cortex M0 hoặc Cortex M3) và các thiết bị hoặc bộ điều khiển I / O tích hợp SoC cổ điển (I²C, SPI, Timer, CAN, DAC, ADC, OpAmp, ...) có thể lập trình phần. Phần này không phải là hạt tốt có thể lập trình như các GPU cổ điển, nhưng nó có thể được sử dụng để thực hiện các bộ điều khiển I / O bổ sung hoặc bộ tăng tốc phần cứng được xây dựng. PSoC cho phép bạn sử dụng các thành phần tương tự trong thiết kế của bạn.
http://www.cypress.com/psoc/?source=CY-ENG-HEADER

Tổng quan về PSoC: PSoC


10

Nếu bạn chỉ cần một bộ vi điều khiển và không có một bộ vi xử lý, thì việc sử dụng một bộ vi điều khiển với phần sụn vi điều khiển là điều bất thường. Tuy nhiên, không phải tất cả các dự án phát triển theo hướng đó. Nhiều tác vụ có nhu cầu rõ ràng về một đồ họa, nhưng cuối cùng lại bắt gặp một tác vụ thực sự không phù hợp với giải pháp VHDL. Đôi khi một vấn đề chỉ đơn giản là được xử lý tốt nhất bởi CPU có mục đích chung. Hoặc, đôi khi nó là cách khác: một số tác vụ đơn giản là không phù hợp với CPU có mục đích chung - chúng cần song song.

Lúc đó, bạn có một sự lựa chọn. Bạn có thể thêm một chip bổ sung vào thiết bị của mình hoặc bạn có thể nhận ra rằng bạn có một loạt các cổng dự phòng trên FPGA mà bạn không sử dụng. Cấp phép một chút IP và bạn có thể có CPU mục đích chung hoạt động nhanh chóng!

Một chi tiết thú vị khác là bạn có thể tùy chỉnh một số phần mềm vi điều khiển. Tôi biết các dự án nhúng Power PC, nhưng đã loại bỏ tất cả các cổng cần thiết cho hỗ trợ điểm nổi và một phần tốt của dự đoán chi nhánh. Điều này làm cho nó đủ nhỏ để phù hợp với phần sụn dựa trên VHDL.


9

Có một số lý do hợp lệ để khởi tạo một bộ vi xử lý hoặc vi điều khiển trong một đồ họa. Đây là ba:

  1. Bạn chỉ muốn tìm hiểu về hoạt động của một bộ xử lý. Các GPU cung cấp cho bạn các cách vô hạn để thăm dò những gì xảy ra bên trong bộ xử lý khi nó thực thi mã. Đây chỉ là để học tập.

  2. Bạn đang triển khai một hệ thống lớn đòi hỏi tốc độ cấp phần cứng của một GPU (nhanh hơn so với phần mềm thực thi trên bộ vi xử lý) nhưng thiết kế của bạn yêu cầu một máy trạng thái phức tạp, dễ thực hiện hơn bằng phần mềm chạy trên bộ xử lý đơn giản như Xilinx PicoBlaze hơn trong một FSM phần cứng. Lưu ý rằng PicoBlaze có thể chạy nhanh tới 240 MHz trong các công nghệ xử lý đồ họa mới nhất và bộ xử lý PicoBlaze thực hiện một lệnh mỗi hai chu kỳ xung nhịp, do đó bạn có được một máy trạng thái nhanh, nhất quán, dễ dàng lập trình trong phần mềm.

  3. Mở rộng trên (2), bạn cần một máy trạng thái có thể xử lý các ngắt. Bộ xử lý thực sự tốt cho việc này vì họ đã biết cách lưu và khôi phục trạng thái một cách an toàn trước và sau khi phục vụ ngắt.

Đây là một cảnh báo: Nếu bạn muốn có bộ xử lý nhanh với bộ hướng dẫn tiêu chuẩn và hệ sinh thái phát triển lớn, thì bạn muốn có bộ xử lý nhanh, lõi cứng như hai ARM Cortex-A9 trong Xilinx Zynq SoC. Cấu trúc đồ họa trong Zynq SoC vẫn cho phép bạn khởi tạo nhiều lõi xử lý hơn theo logic lập trình nhưng ARM Cortex-A9 có thể chạy các hệ điều hành tiêu chuẩn như Linux và IDE tiêu chuẩn như Android.

Ở giữa ARM Cortex-A9 và PicoBlaze, có nhiều bộ xử lý mềm bạn có thể thực hiện với logic lập trình có sẵn từ nhiều nguồn. Một số người thích cuộn các bộ xử lý của riêng họ và đó là một hoạt động giáo dục tuyệt vời. Tuy nhiên, bộ vi xử lý cần các công cụ phát triển phần mềm và việc tạo / gỡ lỗi các công cụ đó đòi hỏi nhiều công sức hơn là tạo ra bộ xử lý. Bạn phải luôn đánh đổi lợi ích có thể có của bộ vi xử lý tùy chỉnh theo thời gian và công sức cần thiết để tạo / gỡ lỗi lõi bộ xử lý và các công cụ.

Tiết lộ đầy đủ: Tôi làm việc cho Xilinx nhưng tôi khá chắc chắn rằng tôi đã không nói rằng các GPU luôn là giải pháp. Nếu một vi điều khiển 50 cent có thể thực hiện công việc, bạn nên sử dụng nó. Các FPGA và Zynq SoC dành cho các dự án đòi hỏi nâng hạng nặng vượt quá khả năng của vi điều khiển.


Chào mừng nồng nhiệt, Steven!
LOLP

1
Câu trả lời tốt, nhưng ai cần một bộ máy nhà nước có thể xử lý các cuộc can thiệp? Ngắt là một điều ác cần thiết cho bộ xử lý tìm nạp giải mã vì việc xử lý kích thích bên ngoài đòi hỏi phải sử dụng độc quyền bộ xử lý để chạy ISR. Trong một đồ họa, kích thích bên ngoài được xử lý trong một khối logic riêng trong khi máy trạng thái cũng tiếp tục chạy; không cần tiết kiệm và khôi phục trạng thái. Về cơ bản, ngắt là một giải pháp không hoàn hảo cho vấn đề mà HDL không có ở nơi đầu tiên.
Ben Voigt

Tất nhiên, bạn đúng với các máy trạng thái được triển khai bằng phần cứng, Ben. Bạn luôn có thể nối chân "ngắt" như một đầu vào máy trạng thái khác. Tuy nhiên, nhiều máy trạng thái phức tạp đơn giản dễ hiểu hơn khi được triển khai với bộ xử lý chạy C hoặc ít nhất là dễ hiểu hơn đối với một số nhà phát triển. Đó là khi bạn cần một ngắt.
Steven Leibson

2

Đôi khi bạn có thể sử dụng một FPGA vì bạn có phần mềm chạy trên bộ xử lý vật lý lỗi thời và không có sẵn mà bạn muốn phục hồi. Trong khi không tương thích với pin (mặc dù đã nhìn thấy các kiểu gắn kết kiểu DIP), điều này cho phép bạn có chu kỳ chính xác. Một mô phỏng phần mềm thuần túy trên một bộ vi xử lý hàng hóa dường như không phải là như vậy. Ví dụ: apple2fpga

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.