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:
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 đó.
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.
- 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.