Làm thế nào để chọn một FPGA?


17

Tôi cần xử lý tín hiệu số trên 8 đường analog ở 10 kHz. Đây là một nhiệm vụ khá khó khăn và tôi đã nghĩ rằng một đồ họa có thể là phương pháp phù hợp. Tôi hiện đang xem xét các bộ phát triển từ Xilinx và vì tôi không có kinh nghiệm với FPGA, tôi thấy rất khó để biết cách chọn chip phù hợp. Tôi tưởng tượng bằng cách sử dụng bộ công cụ dev và mở rộng nó bằng các chân I / O để kết nối với chip A / D 8 kênh và chip D / A 8 kênh.

Sự khác biệt giữa việc sử dụng Spartan, Virtex, Altera, v.v. là gì? Tôi thậm chí không biết làm thế nào để ước tính tôi sẽ cần bao nhiêu cổng. Có bất kỳ quy tắc của ngón tay cái cho điều đó? Làm thế nào để tôi đảm bảo tốc độ đồng hồ sẽ đủ (như là một hàm của số lần cộng và nhân). Có khó khăn gì khi thực hiện xử lý dấu phẩy động trên một đồ họa không, tôi có nên bám vào toán học điểm cố định không? Cách tốt nhất để bắt đầu là gì?

Tôi yêu cầu một giải pháp có thể lập trình bằng Linux. Xilinx cung cấp điều này, nhưng tôi không chắc những hạn chế là gì.


5
Nó sẽ giúp rất nhiều để biết loại thuật toán bạn cần thực hiện. Rất có thể là bạn hoàn toàn không cần một đồ họa, điều này sẽ giúp bạn tiết kiệm rất nhiều thời gian phát triển ;-)
geschema

Tôi đồng ý với geschema; bạn có thể không cần một đồ họa. Có lẽ một DSP là một giải pháp tốt hơn. Trong mọi trường hợp, họ sẽ dễ dàng bắt đầu hơn nếu bạn chỉ có kinh nghiệm về uC. FPGA rất khác nhau!
stevenvh

Câu trả lời:


13

Tôi sẽ không sử dụng một FPGA.

Bạn đề cập rằng bạn không có kinh nghiệm với FPGA, và bạn vẫn quan tâm đến việc xử lý tín hiệu số trên một đồ họa ... xử lý số + xử lý tín hiệu đủ khó để sử dụng ngay trên máy tính / DSP / bộ vi xử lý, trong đó các công cụ lập trình là thông thường lập trình. Dường như với tôi rằng việc sử dụng một dự án xử lý tín hiệu kỹ thuật số cho một dự án FPGA đầu tiên có thể là một công thức cho sự thất vọng.

Nếu bạn muốn tìm hiểu các GPU, hãy thử làm một cái gì đó phù hợp hơn với các công cụ phát triển, như các máy trạng thái hoặc xử lý gói truyền thông.

Đối với dự án DSP như những gì bạn đã mô tả, thay vào đó, tôi khuyên dùng DSP hoặc Cypress PSOC hoặc Thiết bị tương tự Microconverter (= vi điều khiển có tích hợp ADC + DAC).

(tiết lộ đầy đủ, cung cấp một số bối cảnh cho lời khuyên của tôi: Tôi không sử dụng bản thân mình. Tôi đã sử dụng logic lập trình = PLD trong các trường hợp hiếm hoi. Chính quyền của tôi thường xuyên sử dụng FPGA và tôi đã thấy đủ mã VHDL / Verilog nhìn qua Anh ấy là một kỹ sư dày dạn kinh nghiệm với các thao tác bit, trong một cuộc trò chuyện gần đây với anh ấy, anh ấy đã làm một số phép toán khá đơn giản trên các số nguyên với độ rộng bit khác nhau, tôi nói với anh ấy rằng anh ấy cần thực hiện mở rộng ký hiệu trên số chiều rộng bit ngắn hơn để trừ nó một cách chính xác và anh ta có diện mạo này trên khuôn mặt của mình, như "trời ơi, tôi không muốn phải thực hiện gia hạn ký hiệu ..." Thêm và trừ không phải là rất khó trong một FPGA. Ngoài việc cộng và trừ, bạn thực sự cần phải biết các công cụ và thư viện.Và xử lý dấu phẩy động ??!? !! ??!? !!?)


2
MyHDL cố gắng khắc phục một số vấn đề đó.
Shawn J. Goff

Tôi không nghĩ rằng các GPU khó sử dụng hơn micros, chúng chỉ đơn giản là có một bộ khác.
Sói Connor

10

Tất cả đều khá tốt. Bạn sẽ không cần quá nhiều từ FPGA để làm một cái gì đó đơn giản như vậy, vì vậy, bất kỳ FPGA mới bắt đầu (như dòng Spartan-3) đều đủ.

Mặc dù chỉ là một lời cảnh báo, lập trình một FPGA là một LOOOOTTTTTT khác với một cái gì đó như C ++, C, perl ... Tôi khuyên bạn nên bắt đầu với verilog bởi vì có lẽ việc chuyển đổi sang ... VHDL rất dễ dàng như vậy nhưng Verilog tương tự như các ngôn ngữ lập trình hiện đại.

Về tốc độ đồng hồ: đừng lo lắng về nó. Lợi thế của việc sử dụng các GPU là chúng song song ồ ạt, do đó, trong khi xung nhịp 50 MHz có vẻ chậm một cách kỳ cục bởi các tiêu chuẩn ngày nay, hãy nhớ rằng chúng có thể làm hàng trăm thứ cùng một lúc, trong khi CPU "bình thường" ở 3GHz phải xếp hàng lên từng cái một Đây là lợi thế để sử dụng FPGA: song song. Vì vậy, đối với một cái gì đó chuyên dụng, bạn không cần phải lo lắng về tốc độ rất nhiều.

Nhưng giống như các bình luận khác, đó là một mô hình hoàn toàn khác. Đường cong học tập dốc, nhưng một khi bạn nắm được ngôn ngữ, tất cả đều có ý nghĩa (chỉ cần đảm bảo bạn hiểu các khối xây dựng).

Chúc mừng đồ họa :)


2
VHDL thực sự dựa trên Ada! Leon
Leon Heller

2
Ngoài ra, trong việc chọn Verilog hoặc VHDL, hãy xem ngôn ngữ của nó là một khoản đầu tư vào khả năng tiếp thị trong tương lai của bạn. Ở Mỹ, Verilog phổ biến hơn trong phát triển IC / chip so với VHDL, vì vậy việc biết Verilog (và phiên bản nâng cao của nó, System Verilog) có thể sẽ là một khoản đầu tư dài hạn tốt hơn. Dường như tất cả các công ty EDA lớn đang đầu tư vào verilog và verilog hệ thống, trong khi VHDL không được chú ý nhiều. (chứng kiến ​​sự mô phỏng hỗn hợp của VCS với sự khác biệt về hiệu suất của trình mô phỏng vhdl vs VCS). (xếp hàng lửa) Có bạn có thể học cả hai, nhưng tại sao không ưu tiên.
Ross Rogers

Bạn có thể viết nó bằng một trong hai ngôn ngữ. Tôi nghĩ rằng các công cụ Xilinx có thể sử dụng Verilog và VHDL, ngay cả trong cùng một dự án. FWIW, tôi đang ở Mỹ và tôi chưa bao giờ sử dụng Verilog.
ajs410

1
"VHDL rất giống như COBOL". Không phải bởi một triệu dặm!
stevenvh

9

Một thời gian trước, tôi đã đưa ra một biểu đồ so sánh các bảng đồ họa cấp nhập cảnh , từ hai nhà cung cấp đồ họa Xilinx và Altera. Họ là hai người chơi chính trong các loại GPU, giống như PIC vs AVR hoặc Sony vs Nintendo. Họ cung cấp bang-for-buck tốt nhất. Có những nhà cung cấp khác cung cấp các tính năng cụ thể, nhưng bạn thường phải trả nhiều tiền hơn hoặc mất tính năng / sức mạnh xử lý.

Tôi biết điều này không trực tiếp trả lời câu hỏi cụ thể của bạn, nhưng nó sẽ hữu ích cho bất kỳ ai đang muốn bắt đầu với một bảng đồ họa.


7

Rất nhiều câu hỏi; Hãy thử trả lời chúng theo thứ tự:

  1. Yêu cầu tài nguyên để xử lý tín hiệu: Để xác định phần cứng nào bạn cần sử dụng / xây dựng, bạn cần có ý tưởng về lượng xử lý bạn muốn thực hiện đối với các tín hiệu được đề cập. 8 kênh @ 10 kHz không phải là tốc độ dữ liệu rất cao, vì vậy trừ khi các yêu cầu của bạn là rất đặc biệt, hầu hết các GPU và DSP đều có thể xử lý dữ liệu.
  2. Làm thế nào để tôi chọn đúng thiết bị? Dựa trên các yêu cầu xử lý tín hiệu của bạn, bạn sẽ có thể tìm ra thiết bị nào được yêu cầu cho ứng dụng của mình. Điểm chính là yêu cầu bộ nhớ, yêu cầu số nhân cứng, cân nhắc IO đặc biệt, v.v. Hầu hết các nhà cung cấp đồ họa có công cụ (dựa trên web) cho phép bạn tìm kiếm danh mục đầu tư của họ dựa trên các yếu tố đó.
  3. Làm thế nào để tôi bắt đầu với DSP? DSP chỉ là các máy tính thông thường thường có các lệnh SIMD [Hướng dẫn đơn, Nhiều dữ liệu] có liên quan để xử lý tín hiệu. Để bắt đầu, bạn chỉ cần hiểu các giới hạn của phần cứng "nhúng" và trình biên dịch C để bạn có thể kiểm tra mã của mình trên một PC thông thường.
  4. Làm thế nào để tôi bắt đầu với các GPU? Các GPU được lập trình bằng Ngôn ngữ Mô tả Phần cứng. Chúng khác biệt đáng kể so với các ngôn ngữ tuần tự như C hoặc Java. Để phát triển cho FPGA, bạn cần hiểu bản chất đồng thời của phần cứng thực. Các công cụ bạn cần để bắt đầu là một trình giả lập HDL như Simili (miễn phí cho các thiết kế nhỏ) hoặc Modelim. Điều này cho phép bạn mô phỏng mã của bạn trên PC. Sau đó, bạn cần một công cụ tổng hợp cụ thể của nhà cung cấp để biên dịch mã HDL của bạn thành một tệp bit được sử dụng để định cấu hình cho FPGA. Nếu bạn nhận được một bộ khởi động từ Altera, Actel hoặc Xilinx, tất cả các công cụ bạn cần là một phần của bộ công cụ.
  5. Hỗ trợ Linux: Các công cụ FPGA từ hầu hết các nhà cung cấp chạy trên Linux, nhưng trong lĩnh vực DSP, bạn thường buộc phải sử dụng các trình biên dịch chỉ dành cho Windows trừ khi DSP của bạn được GCC hỗ trợ (Blackfin từ Analog và một số mô hình từ Texas Cụ).

+1 cho "8 kênh @ 10 kHz không phải là tốc độ dữ liệu rất cao" - Tôi không thể tin rằng chưa có ai nói điều đó.
Kevin Vermeer

Không, nếu anh ấy thực hiện FFT 8 kênh ...
ajs410

DSP thường là các đơn vị xử lý song song đơn luồng, mỗi đơn vị có khả năng thực hiện một lệnh khác nhau (không giống như SIMD nơi tất cả các đơn vị chia sẻ cùng một lệnh).
Ben Voigt


4

Chỉ cần về bất kỳ nhà cung cấp đồ họa sẽ làm. Giống như Intel so với AMD ... có sự khác biệt giữa Xilinx và Altera, nhưng chúng tương tự nhau về mặt chức năng. Mua bất kỳ bộ phát triển nào nằm trong phạm vi giá của bạn - Cá nhân tôi thích Spartan 3 từ Xilinx - và chạy với nó.

Về số lượng cổng, bộ dev thường sẽ rất lớn, hy vọng lớn hơn nhiều so với bạn cần. Khi bạn sẵn sàng chuyển sang PCB của riêng mình, các công cụ tổng hợp sẽ ước tính cho bạn có bao nhiêu cổng mà thiết kế của bạn yêu cầu. Bạn có thể sử dụng điều này để chọn một FPGA nhỏ hơn, mặc dù bạn có thể phát hiện ra rằng các ràng buộc gói (QFP so với BGA) cũng đóng một vai trò quan trọng.

Với các kỹ thuật thiết kế phù hợp, tốc độ đồng hồ sẽ không phải là vấn đề. Trên thực tế, bạn thường có thể sử dụng một tinh thể tốc độ tương đối thấp, như 12 MHz và FPGA có thể tổng hợp đồng hồ nhanh hơn nhiều (hoặc nhiều đồng hồ nhanh hơn!) Nếu bạn thực sự lo lắng về phép nhân, tôi biết rằng dòng Virtex4 có các lát DSP chuyên dụng có thể tăng tốc các tính toán đó. Nhưng các GPU song song ồ ạt, vì vậy bạn không cần quá nhiều MHz để thực hiện rất nhiều công việc.

Tôi chắc chắn sẽ gắn bó với điểm cố định nếu bạn có thể. Bạn có thể thực hiện dấu phẩy động và Xilinx thậm chí còn có Bộ tạo lõi sẽ cung cấp cho bạn lõi điểm nổi, nhưng điểm cố định sẽ là cách, nhanh hơn và sẽ yêu cầu ít cổng hơn. Một lợi thế khác là bạn có thể làm một số điểm cố định lẻ; bạn có thể sử dụng bao nhiêu bit tùy thích, nó không phải là số bit có sức mạnh bằng 2 bit và / hoặc bạn có thể sử dụng các điểm cố định lớn hơn cho các giai đoạn trung gian.

Cách tốt nhất để bắt đầu với các GPU? Tìm một lớp học hoặc một cuộc hội thảo hoặc một cái gì đó. Nếu bạn không quen thuộc với công nghệ, các công cụ phát triển sẽ rất khó hiểu, bởi vì có rất nhiều điều có thể sai. Các công cụ cho MCU dễ tha thứ hơn nhiều và đòi hỏi ít sự thân mật hơn với kiến ​​trúc cơ bản.

Ồ, và bạn nên đọc bảng dữ liệu của FPGA, từ trước ra sau.


0

Hãy nhìn vào XMOS

Chúng có thể được sử dụng để thay thế các GPU trong nhiều ứng dụng.


0

Nếu bạn muốn ước tính số lượng cổng bạn chưa cần mua phần cứng - các nhà sản xuất đồ họa chính có phần mềm miễn phí và nhiều người sẽ có chú thích khi thực hiện dsp. Bạn có thể thiết kế và mô phỏng công cụ mà không cần phần cứng và phần mềm sẽ cho bạn biết những tài nguyên nào được sử dụng. Tuy nhiên, để xử lý tín hiệu, một dsp thường sẽ là bước đầu tiên và chỉ có khi bạn hết năng lượng xử lý.

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.