IC logic lập trình có độ phức tạp khác nhau được sử dụng để làm gì?


10

Logic lập trình có thể được triển khai trong widget của bạn ở nhiều phổ khác nhau, từ ghi một vài cổng hoặc sử dụng MUX đến FPGA mới nhất với vi điều khiển tích hợp và các thiết bị ngoại vi IO, không kể đến PrimeCell GPIO của ARM hay các ví dụ cụ thể khác . Đối với những ứng dụng nào, mức độ phức tạp của thiết bị logic lập trình được sử dụng? Mặc dù việc phân nhóm dường như hòa trộn với nhau gần các thái cực của định nghĩa của chúng , tôi nghĩ rằng đây là một danh sách có thể chấp nhận:

  1. PAL / PLA / GAL : Mảng logic lập trình được; dường như được liệt kê dưới dạng'Nhúng - PLD'tại Digikey, bao gồm 10/8 I / O không đồng bộ (ATF16V8C) thành50 MHz, 192 macrocell, (CY7C341B) và hầu hết có thể lập trình lại.
  2. CPLD : Thiết bị logic lập trình phức tạp; Digikey liệt kê chúng như vậy, có sẵn trong 7.5ns 10 I / O (ATF750C) đến 233 MHz, 428 I / O "CPLD ở mật độ đồ họa" (CY39100V484B).
  3. FPGA : Mảng cổng lập trình trường; có sẵn trong 58 I / O (XC2064) đến 1023 I / O con thú BGA (EP1S80F1508C7N).
  4. FPGA với MCU cứng : đây là khi MCU được đặt vật lý trong IC IC, không được mô phỏng.

Trích dẫn Wikipedia:

Sự khác biệt giữa các GPU và CPLD là các GPU được đặt bên trong dựa trên các bảng Tra cứu (LUT) trong khi các CPLD tạo thành các hàm logic với các cổng biển (ví dụ: tổng các sản phẩm). CPLD có nghĩa là cho các thiết kế đơn giản hơn trong khi các FPGA có nghĩa là cho các thiết kế phức tạp hơn. Nhìn chung, CPLD là một lựa chọn tốt cho các ứng dụng logic tổ hợp rộng trong khi các GPU phù hợp hơn với các máy trạng thái lớn (ví dụ như bộ vi xử lý).

Điều này không giải thích được sự khác biệt giữa việc sử dụng CPLD 233 MHz, 400 I / O và một GPU tương đương ; hoặc giữa 192 macrocell PLDCPLD tương đương . Tôi không thể grep hướng dẫn đáng tin cậy bằng cách thu hẹp các tùy chọn thiết kế. Lưu ý rằng hiện tại tôi không có một ứng dụng cụ thể nào, nhưng thường tự hỏi, "tôi sẽ sử dụng cái gì để làm điều đó?"

Tôi đã nhận được lời khuyên tuyệt vời ngoài trang web về các yêu cầu cụ thể, nhưng vẫn nghĩ rằng câu hỏi này có thể được hưởng lợi từ một số ví dụ cho thấy sự ưu tiên đối với một gia đình PLD khi một người khác có thể phù hợp như nhau hoặc phù hợp hơn.


XC2064 là một phần cổ xưa. Tôi không biết nếu CY7C341B và CY39100V484B vẫn được sản xuất. Bạn nên xem xét rằng khi đưa ra bất kỳ so sánh / quyết định.
Brian Carlton

2
FYI, với bất kỳ bộ phận nào trong số này, có một sự khác biệt rất lớn giữa sự đa dạng của các nhà sản xuất đưa vào tài liệu của họ, và sự kết hợp nhỏ hơn của các kết hợp đếm / gói / tốc độ và nhiệt độ mà bạn thực sự có thể mong đợi để có được trong tay số lượng nhỏ trong ít hơn nửa năm của thời gian đầu. Vì vậy, khi thiết kế với họ, kiểm tra tính sẵn sàng thực sự đầu tiên. Ngay cả khi tôi biết việc mua muốn lấy chúng từ phân phối, tôi vẫn thích chọn các thiết bị mà tôi biết một nhà cung cấp theo định hướng nguyên mẫu hơn thực sự có chúng để qua đêm với tôi nếu cần.
Chris Stratton

Lời khuyên tốt, @ChrisStratton. Đây thường là điều đầu tiên tôi kiểm tra với hầu hết các bộ phận, nhưng vẫn tốt khi biết rằng nó đặc biệt có vấn đề với PLDs.
tyblu

Câu trả lời:


7

Có hai tiêu chí mà bạn có thể sử dụng để đánh giá một dự án kỹ thuật số giúp bạn quyết định phần nào phù hợp nhất với tiêu chí của bạn. Đầu tiên là kích thước / độ phức tạp của thiết kế - có bao nhiêu logic liên quan. Thứ hai là các yêu cầu đầu vào và đầu ra về số lượng pin. Tốc độ có thể được xác định nếu bạn có thể ước tính chức năng chậm nhất của mình là gì. Các công cụ của nhà cung cấp (Altera Quartus II, Xilinx ISE, v.v.) sẽ giúp bạn một khi bạn vào đúng sân bóng.

  • PAL / PLA / GAL: Chúng được dùng để thay thế các mạch có kích thước nhỏ đến trung bình mà bạn thường có thể triển khai như các chip logic LSI (7400, 4000 series). Chúng có thể cung cấp bố trí bảng tốt hơn do ánh xạ lại I / O và rất nhiều chức năng logic đơn giản. Các chip này chứa bộ nhớ không bay hơi (hoặc cầu chì lập trình một lần) và không yêu cầu thời gian cấu hình bật nguồn. Chúng có thể không chứa các yếu tố lưu trữ dữ liệu.

  • CPLD: Đây là những người anh em họ lớn hơn của PLA. Các thiết kế có thể là các máy trạng thái nhỏ, hoặc thậm chí là một lõi vi xử lý rất đơn giản. Hầu hết các chip CPLD mà tôi đã thấy không có bất kỳ SRAM trên chip nào, mặc dù CPLD Cypress lớn mà bạn đã liên kết. Các CPLD có nhiều khả năng được lập trình lại với bộ nhớ flash và chúng cũng không yêu cầu thời gian cấu hình khi bật nguồn.

  • FPGA: Không giống như CPLD, các khối logic dựa trên SRAM thay vì bộ nhớ flash, dẫn đến hoạt động logic nhanh hơn. Mặt trái chính của các GPU là vì cấu hình được lưu trữ trong SRAM, mỗi khi thiết bị được cấp nguồn, FPGA phải tải chương trình của nó vào SRAM này. Tùy thuộc vào kích thước thiết kế của bạn và tốc độ lưu trữ không bay hơi của bạn, điều này có thể gây ra sự chậm trễ đáng chú ý từ bật nguồn đến hoạt động đầy đủ. Một số đồ họa có flash trên chip để lưu trữ dữ liệu của chúng, nhưng hầu hết sử dụng các chip bộ nhớ riêng. Các GPU thường sẽ có các hệ số nhân có dây cứng, PLL và các chức năng logic khác để cải thiện tốc độ tính toán. Khối lớn RAM trên chip cũng có sẵn. Bạn cũng sẽ có thể sử dụng các thông số kỹ thuật I / O hiệu suất cao như LVDS, PCI và PCI-Express.

  • FPGA với lõi cứng của bộ vi xử lý: Tôi không quen với những thứ này, nhưng tôi sẽ tưởng tượng rằng thiết kế của bạn sẽ xoay quanh chương trình vi điều khiển, và FPGA sẽ tăng cường vi điều khiển. Các bộ phận bạn đã xác định làm cho nó trông giống như bạn sẽ bắt đầu thiết kế của mình với một vi điều khiển và một đồ họa, sau đó kết hợp cả hai thành một chip / gói.

Cách quyết định cái nào phù hợp với bạn:

Cách tốt nhất là hoàn thành mã của bạn (Verilog / VHDL), sau đó sử dụng các công cụ của nhà cung cấp để thử và khớp mã đó vào phần nhỏ nhất có thể. Tôi biết công cụ của Altera cho phép bạn thay đổi mục tiêu lập trình khá dễ dàng, vì vậy bạn có thể tiếp tục chọn các GPU nhỏ hơn, và sau đó CPLD nhỏ hơn cho đến khi mức sử dụng thiết kế của bạn đạt gần 75%. Nếu bạn yêu cầu hiệu suất, sau đó thử chọn các thiết bị có tính năng (số nhân nhanh) làm giảm yêu cầu tốc độ của logic. Một lần nữa, các công cụ của nhà cung cấp sẽ giúp bạn xác định xem bạn cần nâng cấp hay nếu bạn có thể hạ cấp.

Một yếu tố khác của phần để sử dụng là dễ sử dụng. Sử dụng logic PAL / PLA / GAL có lẽ tốn nhiều công sức hơn so với việc xây dựng hàm bằng các cổng logic rời rạc (74HC *, 4000, v.v.). CPLD thường chỉ yêu cầu một điện áp cung cấp duy nhất và không yêu cầu thêm mạch. Họ có hiệu quả độc lập. Các GPU bắt đầu sử dụng nhiều nguồn cung cấp cho I / O và lõi logic, các tiêu chuẩn I / O phức tạp, bộ nhớ chương trình riêng biệt, PCB nhiều lớp (> 2) và các gói BGA.

Các bước để thu hẹp yêu cầu thiết kế của bạn sẽ bao gồm:

  1. Xác định tất cả các đầu vào và đầu ra cho FPGA / CPLD của bạn. Đây thường là một phần dễ dàng của giai đoạn thiết kế. Bằng cách này, bạn biết gói nào bạn đang xem và mức độ bạn có thể cắt nó đến mức đó.

  2. Vẽ sơ đồ khối của logic bên trong. Nếu các khối của bạn trông đơn giản (mỗi khối sẽ có đầy đủ các cổng và thanh ghi logic), thì có lẽ bạn có thể sử dụng CPLD. Tuy nhiên, nếu các khối của bạn có các nhãn như "Bộ chuyển đổi Ethernet", "Giao diện PCI-Express x16", "Bộ điều khiển DDR2" hoặc "Mã hóa / giải mã h264", thì bạn gần như chắc chắn đang nhìn vào một FPGA và sử dụng HDL.

  3. Nhìn và xem các giao diện của bạn có các yêu cầu I / O đặc biệt, chẳng hạn như điện áp đặc biệt, LVDS, DDR hoặc SERDES tốc độ cao. Dễ dàng có được một con chip hỗ trợ nó hơn là có thêm một con chip dịch.

Ví dụ ứng dụng CPLD:

  • PWM đa kênh với giao diện SPI
  • Mở rộng I / O
  • Giải mã không gian địa chỉ CPU
  • Đồng hồ (Giữ thời gian)
  • Hiển thị đa kênh
  • DSP đơn giản
  • Một số chương trình đơn giản có thể được chuyển đổi thành thiết kế CPLD

Ví dụ về các ứng dụng đồ họa sở thích:

  • Thiết kế hệ thống nhỏ trên chip (SoC)
  • Video
  • Cầu giao thức phức tạp
  • Xử lý tín hiệu
  • Mã hóa / Giải mã
  • Thi đua hệ thống kế thừa
  • Phân tích logic / Trình tạo mẫu

Đối với hầu hết các công việc có sở thích, bạn sẽ bị giới hạn ở các GPU tương đối nhỏ trừ khi bạn muốn hàn các gói BGA. Tôi sẽ chọn giữa một CPLD lớn hoặc một FPGA giá rẻ, và các yêu cầu về kích thước / tốc độ sẽ quyết định cái nào tôi cần.


mở rộng câu trả lời của bạn một chút, tôi sẽ nghiêng nhóm PAL / PLA / GAL vào cùng một giỏ với PLD / CPLD vì lý do khởi động ngay lập tức mà không có thời gian cấu hình và các nhà cung cấp đang bắt đầu đẩy CPLD lên trước PAL / PLA / Thiết bị GAL. Ví dụ, tôi đang làm việc với một số thiết bị mạng và IC gia đình CPLD của họ rẻ hơn đáng kể và cung cấp nhiều cổng hơn sau đó là anh em họ PAL / GAL / PLA. Chi phí của cái sau là nghiêm ngặt cho những gì họ cung cấp khi so sánh với cái trước.
smashtastic

Các dòng chắc chắn là làm mờ một chút. Tôi không nghĩ PAL / PLA / GAL có các yếu tố lưu trữ hoặc CLPD có SRAM cho đến khi tôi tra cứu các phần tyblu được liệt kê. Có vẻ như PAL / PLA / GAL giống như băng vịt trong thiết kế hơn là một phần cốt lõi.
W5VO

3

Một danh sách "quy tắc ngón tay cái" tốt sẽ có dạng như thế này:

  • PAL / PLA / GAL: Được sử dụng thay cho các cổng logic IC rời rạc trên PCB
  • CPLD: Được sử dụng khi cần các tác vụ phức tạp, không phải DSP và có thể là thời gian quan trọng (tải mã khởi động vào một bộ nhớ từ bộ nhớ, bộ tạo hình sin LUT cho DAC, v.v.)
  • FPGA: Được sử dụng khi cần có thời gian quan trọng, nhân hoặc khả năng DSP (Bộ lọc FIR, FFT, v.v.)
  • FPGA với MCU cứng: Được sử dụng khi cần có chức năng của FPGA và các thiết bị ngoại vi trên FPGA phải được tích hợp (cảm biến tạm thời) hoặc để cho phép một tác vụ ít nhạy cảm với thời gian hơn được thực hiện trong C thay vì VHDL để đơn giản (chức năng cổng UART / serial, PCB vệ sinh, vv)

Với một CPLD giá rẻ dưới một số lượng nhỏ, PAL / PLA / GAL đã chết khá nhiều ngoại trừ các ứng dụng cũ.
Chris Stratton

Tôi sẽ không tranh luận rằng. Tôi chỉ có thể hình ảnh rằng có thể sử dụng năng lượng (pin) nhỏ (kích thước nhỏ) là một hạn chế mà chúng vẫn có thể được sử dụng vì chúng có thể có lợi thế hơn CPDL, nhưng tôi vẫn sử dụng CPLD nhỏ nhất / hiệu quả về năng lượng nếu là thiết kế.
Joel B

2

Một câu trả lời đơn giản có thể là có hai cách:

1. Trước tiên, bạn thiết kế hệ thống của mình ở mức độ trừu tượng cao (giả sử HDL hoặc sơ đồ). Sau đó, bạn cố gắng lắp nó vào PAL / CPLD / FPGA và chọn những cái thỏa mãn yêu cầu của bạn (số cổng / phần tử logic, hiệu suất, v.v.) và sau đó chọn cái rẻ nhất trong số này tùy thuộc vào giá rẻ nhất của bạn (chi phí phát triển so với chi phí sản xuất, vv).

2. Nhưng thông thường trước khi bạn bắt đầu bất kỳ sự phát triển sơ đồ hoặc mã hóa HDL nào, bạn đã có thể ước tính mức độ phức tạp của hệ thống (bạn cần bao nhiêu cổng, nếu có vẻ như bạn cần MCU 8 bit hoặc MCU 32 bit hoặc không có vi điều khiển tại tất cả). Dựa vào đó bạn cũng có thể chọn thiết bị lập trình của mình. Điều này sẽ ít chính xác hơn nhưng sẽ cho phép thiết kế phần cứng kỹ thuật số và tương tự không thể lập trình của bạn song song với phần cứng và phần mềm có thể lập trình (nếu có).


2

Các GPU với lõi cứng được sử dụng vì nó có diện tích ít hơn một bộ vi điều khiển riêng biệt và nhanh hơn bộ vi xử lý lõi mềm. Tuy nhiên, giá cả thường tệ nhất so với một bộ vi điều khiển và vi điều khiển riêng biệt. Trong phần mềm nói chung và do đó, một vi điều khiển tốt hơn cho các trường hợp (tương đối) chậm và hiếm như cấu hình các tham số và xử lý lỗi; logic là tốt hơn cho các quá trình liên tục. Ví dụ, trong xử lý gói, ghi vào bộ nhớ phải theo logic; xử lý thời gian chờ thời gian sống nên ở trong phần mềm.

Trong không gian đồ họa có các bộ phận rẻ / rẻ và các bộ phận đắt / nhanh. Nói chung, vi điều khiển chỉ ở trong một đắt tiền; điều này làm cho giao dịch chi phí so với MCU rời rạc thậm chí còn tồi tệ hơn đối với giải pháp trên-FPGA.

Không ai sử dụng PAL trong các thiết kế mới, ít nhất là trong hơn 10 năm. CPLD đã chiếm lĩnh thị trường đó.

Trong 5 cuối? Năm CPLD giống như bên trong FPGA, nhưng có bộ nhớ để giữ cấu hình trên chip. Vì các GPU bây giờ là 100 MHz MHz, tốc độ ít hơn nhiều lý do để đưa logic vào CPLD so với 10-15 năm trước. Tuy nhiên, các GPU vẫn có các tính năng khác như hệ số nhân, bộ nối tiếp và nhiều bộ nhớ có thể buộc một thiết kế thành một ngay cả khi nó không có nhiều logic như vậy.


1
Một lý do để giữ CPLD là các CPLD chi phí thấp hiện tại vẫn đang được sản xuất trong các công nghệ điện áp cung cấp đơn, trong khi hầu hết các loại GPU hiện tại đều yêu cầu một số điện áp cung cấp. Vì vậy, nếu bạn không cần phải làm rẻ hơn để đặt một cpld lên bảng - nhưng nếu bạn đang nói về một CPLD lớn, một fpga cấp thấp có thể rẻ hơn và cung cấp cho bạn nhiều cơ hội hơn để cải thiện trong tương lai, đặc biệt là nếu bạn đã có sẵn nguồn cung cấp điện áp lõi vì một số lý do khác.
Chris Stratton

Cảm ơn bạn đã trả lời, @BrianCarlton và các bình luận, @ChrisStratton. Các ví dụ cho trước và ý kiến ​​hiện tại là thông tin tuyệt vời.
tyblu
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.