FPGA là gì: kiến trúc logic, quy trình lập trình và ứng dụng

FPGA (Field-Programmable Gate Array) là một loại vi mạch bán dẫn cho phép lập trình lại logic sau khi đã được sản xuất. Người kỹ sư viết mạch bằng ngôn ngữ mô tả phần cứng như Verilog hoặc VHDL, công cụ tổng hợp biến mã nguồn thành mạch logic thật rồi nạp vào chip. Chính khả năng này giúp FPGA là trung gian hoàn hảo giữa phần cứng chuyên dụng (ASIC) và phần mềm chạy trên vi xử lý, đặc biệt khi bài toán cần xử lý song song ở mức bit, độ trễ thấp và công suất nhỏ.

Kiến trúc bên trong một FPGA

Điểm khác biệt cốt lõi của FPGA so với CPU là nó không tổ chức logic theo kiểu lệnh và thanh ghi, mà theo kiểu mảng cổng logic lập trình được. Mỗi phần tử logic cơ bản (logic cell) trong kiến trúc phổ biến gồm một bảng tra LUT bốn đầu vào, một bộ cộng đầy đủ và một flip-flop D, theo mô tả trong bài viết tổng quan về FPGA trên Wikipedia. Bảng LUT cho phép tái cấu hình bất kỳ hàm boolean nào với tối đa bốn biến, còn flip-flop lưu trạng thái để xây dựng thanh ghi và đồng hồ.

Bản mạch phát triển FPGA Intel Altera Cyclone 10 LP với khối logic lập trình được, bộ nhớ BRAM và cổng mở rộng

Các logic cell được nối với nhau bằng lớp đường dẫn lập trình được (programmable interconnect), cho phép thiết kế định tuyến tín hiệu tùy ý giữa các ô. Ngoài lưới logic, FPGA hiện đại còn tích hợp thêm nhiều khối phần cứng cố định: khối RAM (BRAM), bộ nhân cứng DSP, bộ phát đổi tần số, cổng I/O tốc độ cao và đôi khi cả nhân ARM nhúng sẵn. Lịch sử của công nghệ này bắt đầu với XC2064 của Xilinx năm 1985, chỉ có 64 logic cell với mỗi ô chỉ hai LUT ba đầu vào.

FPGA khác ASIC và CPU như thế nào

Ba lựa chọn phần cứng này phục vụ ba bài toán khác nhau, và hiểu rõ sự khác biệt giúp bạn chọn đúng:

Tiêu chí FPGA ASIC CPU / GPU
Tính linh hoạt Nạp lại bitstream nhiều lần Thiết kế lại từ đầu Chỉ thay đổi phần mềm
Hiệu năng trên mỗi W Trung bình, phụ thuộc thiết kế Tốt nhất Thấp nhất với việc xử lý song song rộng
Chi phí khối lượng lớn Cao Rất thấp khi sản xuất hàng loạt Thấp
Thời gian đưa sản phẩm ra thị trường Tuần đến tháng Năm hoặc lâu hơn Tức thì

Một tài liệu tổng hợp về FPGA ghi nhận đánh đổi điển hình: cùng một chức năng, FPGA cần diện tích lớn hơn, công suất động cao hơn và tốc độ chỉ bằng khoảng một phần ba so với ASIC. Ngược lại, FPGA có thể tái lập trình để đổi chức năng ngay trên thiết bị đang chạy, điều mà ASIC không làm được và CPU phải trả giá bằng tính tổng quát. Quy trình biến mã nguồn thành phần cứng được mô tả trong bài tổng hợp logic (logic synthesis).

Quy trình phát triển với HDL

Làm việc với FPGA bắt đầu bằng mô tả hành vi mạch ở mức Register Transfer Level, không phải mức cổng cụ thể. Verilog (tiêu chuẩn IEEE 1364, nay được hợp nhất vào SystemVerilog) và VHDL là hai ngôn ngữ phổ biến nhất; bạn có thể đọc thêm tại trang giới thiệu Verilog.

  1. Viết mã nguồn mô tả logic theo chu kỳ clock.
  2. Chạy mô phỏng (simulation) để kiểm tra chức năng trên máy tính.
  3. Tổng hợp (synthesis): công cụ ánh xạ mã lên LUT, flip-flop, RAM và DSP, đồng thời báo cáo tài nguyên sử dụng.
  4. Đặt tối ưu và nạp (place and route) để gán ô vị trí thật và nối đường dẫn.
  5. Xuất file bitstream rồi nạp vào bo mạch để kiểm tra thực tế.

Nếu bước tổng hợp cho thấy tài nguyên vượt quá giới hạn chip, bạn phải tối ưu lại mã nguồn hoặc đổi dòng chip lớn hơn. Đây là vòng lặp quen thuộc với bất kỳ ai làm phần cứng nhiều năm.

Số liệu thực tế từ các dòng chip phổ biến

Để có cái nhìn cụ thể về mặt kỹ thuật, ta xét hai họ chip đang được dùng rất nhiều ở phòng thí nghiệm và trong sản xuất. Họ Artix-7 của AMD sản xuất trên tiến trình 28 nm, có dải công suất dưới 1 W và số lượng logic cell từ 13.000 đến 200.000; riêng bộ XC7A35T có 33.280 logic cell, 90 khối DSP và 4 bộ chuyển đổi tốc độ 6,6 Gb/s. So với thế hệ trước Spartan-6, dòng này tăng gấp đôi số logic cell, gấp 2,5 lần block RAM, gấp 5,7 lần khối DSP và giảm khoảng một nửa tổng công suất tiêu thụ.

Bo mạch FPGA Lattice Tang Nano 9K kích thước nhỏ dùng để học và thử nghiệm logic số

Ở phía giá rộng, họ ECP5 của Lattice đưa mức 85K LUT vào package 10 x 10 mm; một kênh SERDES tiêu thụ dưới 0,25 W và bốn kênh dưới 0,5 W, tốc độ đạt 3,2 Gbps, có bản 5 Gbps. Các dòng cao cấp hơn như Mach-N2 dùng dao động nội bộ 400 MHz, trong khi bản Avant-G hỗ trợ tới 28 kênh SerDes 12,5 Gbps với hơn 600 nghìn ô logic. Thông số chi tiết các dòng ECP5 và Mach-N2 nằm trong trang sản phẩm ECP5 và trang sản phẩm Mach-N2 của Lattice.

Khi nào FPGA thắng CPU và GPU

FPGA không cạnh tranh ở mọi bài toán. Nó thắng khi công việc là xử lý song song rộng trên dữ liệu theo luồng, cần độ trễ xác định và không thể chờ khung hình kế tiếp. Nghiên cứu về hệ thống packet processing trên FPGA NIC cho thấy chạy eBPF trên FPGA ở tần số 156,25 MHz chỉ dùng khoảng 15% tài nguyên chip, đạt thông lượng tương đương CPU cao cấp nhưng độ trễ chuyển tiếp thấp hơn 10 lần, theo bài báo hXDP tại arXiv.

Về hiệu năng trên watt, một nghiên cứu so sánh FPGA Arria 10 với GPU Tesla K40m cho thấy FPGA tiêu thụ điện thấp hơn 3 đến 4 lần và hiệu suất năng lượng tốt hơn tới 30,7 lần, xem tại bài nghiên cứu về FPGA ở rìa. Ở mảng thị giác, triển khai mạng nơ-ron tích chập trên Zynq UltraScale+ cho thấy thông lượng cao hơn 3,3 đến 5,8 lần so với cả CPU lẫn GPU ở cùng nhiệm vụ.

Tóm lại, hãy chọn FPGA khi yêu cầu độ trễ cố định, công suất thấp, luồng dữ liệu song song rộng hoặc cần sửa thiết kế sau khi đã triển khai. Chọn CPU khi thuật toán thay đổi liên tục, chọn ASIC khi sản xuất hàng triệu bản và chi phí thiết kế chấp nhận được.

Bo mạch IoT Maker MAX1000 tích hợp FPGA Intel MAX 10 với nhiều cổng giao tiếp
Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

OLED là gì: công nghệ màn hình tự phát sáng và cách hoạt động

OLED là gì: công nghệ màn hình tự phát sáng và cách hoạt động OLED là gì? OLED (Organic Light-Emitting Diode) là công nghệ hiển thị sử dụng lớp vật…

Xem thêm

RAID là gì: các mức dự phòng dữ liệu từ RAID 0 đến RAID 6

RAID là gì: các mức dự phòng dữ liệu từ RAID 0 đến RAID 6 RAID (Redundant Array of Independent Disks) là kỹ thuật kết hợp nhiều ổ cứng vật…

Xem thêm

WebAuthn là gì: chuẩn xác thực công khai thay thế mật khẩu

WebAuthn là gì: chuẩn xác thực công khai thay thế mật khẩu WebAuthn là chuẩn W3C và FIDO cho việc xác thực bằng public key thay vì mật khẩu, được…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất