✨FPGA

FPGA

small|right|thumb|Spartan XC3S400 của hãng [[Xilinx, có 400.000 cổng và tần số 50MHz-80Mhz]] small|right|thumb|Dòng FPGA Stratix của hãng [[Altera]]

Field-programmable gate array (FPGA) là một loại mạch tích hợp cỡ lớn dùng cấu trúc mảng phần tử logic mà người dùng có thể lập trình được. Chữ field ở đây muốn chỉ đến khả năng tái lập trình "bên ngoài" của người sử dụng, không phụ thuộc vào dây chuyền sản xuất phức tạp của nhà máy bán dẫn. Vi mạch FPGA được cấu thành từ các bộ phận:

  • Các khối logic cơ bản lập trình được (logic block)
  • Hệ thống mạch liên kết lập trình được
  • Khối vào/ra (IO Pads)
  • Phần tử thiết kế sẵn khác như DSP slice, RAM, ROM, nhân vi xử lý...

FPGA cũng được xem như một loại vi mạch bán dẫn chuyên dụng ASIC, nhưng nếu so sánh FPGA với những ASIC đặc chế hoàn toàn hay ASIC thiết kế trên thư viện logic thì FPGA không đạt đựợc mức độ tối ưu như những loại này, và hạn chế trong khả năng thực hiện những tác vụ đặc biệt phức tạp, tuy vậy FPGA ưu việt hơn ở chỗ có thể tái cấu trúc lại khi đang sử dụng, công đoạn thiết kế đơn giản do vậy chi phí giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng.

Còn nếu so sánh với các dạng vi mạch bán dẫn lập trình được dùng cấu trúc mảng phần tử logic như PLA, PAL, CPLD thì FPGA ưu việt hơn các điểm: tác vụ tái lập trình của FPGA thực hiện đơn giản hơn; khả năng lập trình linh động hơn; và khác biệt quan trọng nhất là kiến trúc của FPGA cho phép nó có khả năng chứa khối lượng lớn cổng logic (logic gate), so với các vi mạch bán dẫn lập trình được có trước nó.

Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn ngữ mô tả phần cứng HDL như VHDL, Verilog, AHDL, các hãng sản xuất FPGA lớn như Xilinx, Altera thường cung cấp các gói phần mềm và thiết bị phụ trợ cho quá trình thiết kế, cũng có một số các hãng thứ ba cung cấp các gói phần mềm kiểu này như Synopsys, Synplify... Các gói phần mềm này có khả năng thực hiện tất cả các bước của toàn bộ quy trình thiết kế IC chuẩn với đầu vào là mã thiết kế trên HDL (còn gọi là mã RTL).

Lịch sử

FPGA được thiết kế đầu tiên bởi Ross Freeman, người sáng lập công ty Xilinx vào năm 1984, kiến trúc mới của FPGA cho phép tích hợp số lượng tương đối lớn các phần tử bán dẫn vào 1 vi mạch so với kiến trúc trước đó là CPLD. FPGA có khả năng chứa tới từ 100.000 đến hàng vài tỷ cổng logic, trong khi CPLD chỉ chứa từ 10.000 đến 100.000 cổng logic; con số này đối với PAL, PLA còn thấp hơn nữa chỉ đạt vài nghìn đến 10.000.

CPLD được cấu trúc từ số lượng nhất định các khối SPLD (Simple programmable devices, thuật ngữ chung chỉ PAL, PLA). SPLD thường là một mảng logic AND/OR lập trình được có kích thước xác định và chứa một số lượng hạn chế các phần tử nhớ đồng bộ (clocked register). Cấu trúc này hạn chế khả năng thực hiện những hàm phức tạp và thông thường hiệu suất làm việc của vi mạch phụ thuộc vào cấu trúc cụ thể của vi mạch hơn là vào yêu cầu bài toán.

Kiến trúc của FPGA là kiến trúc mảng các khối logic, khối logic, nhỏ hơn nhiều nếu đem so sánh với một khối SPLD, ưu điểm này giúp FPGA có thể chứa nhiều hơn các phần tử logic và phát huy tối đa khả năng lập trình của các phần tử logic và hệ thống mạch kết nối, để đạt được mục đích này thì kiến trúc của FPGA phức tạp hơn nhiều so với CPLD.

Một điểm khác biệt với CPLD là trong những FPGA hiện đại được tích hợp nhiều những bộ logic số học đã sơ bộ tối ưu hóa, hỗ trợ RAM, ROM, tốc độ cao, hay các bộ nhân cộng (multiplication and accumulation, MAC), thuật ngữ tiếng Anh là DSP slice dùng cho những ứng dụng xử lý tín hiệu số DSP.

Ngoài khả năng tái cấu trúc vi mạch toàn cục, một số FPGA hiện đại còn hỗ trợ tái cấu trúc cục bộ, tức là khả năng tái cấu trúc một bộ phận riêng lẻ trong khi vẫn đảm bảo hoạt động bình thường cho các bộ phận khác.

Ứng dụng

small|thumb|Một con robot sử dụng FPGA EPXA1 của hãng Altera Ứng dụng của FPGA bao gồm: xử lý tín hiệu số DSP, các hệ thống hàng không, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC (ASIC prototyping), các hệ thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mô hình phần cứng máy tính, máy đánh cờ bạc (Máy đánh cờ bạc Hydra có 32 bộ vi xử lý cộng thêm FPGA đã chiến thắng kiện tướng quốc tế Michael Adams trong năm 2005.)...

Do tính linh động cao trong quá trình thiết kế cho phép FPGA giải quyết lớp những bài toán phức tạp mà trước kia chỉ thực hiện nhờ phần mềm máy tính, ngoài ra nhờ mật độ cổng logic lớn FPGA được ứng dụng cho những bài toán đòi hỏi khối lượng tính toán lớn và dùng trong các hệ thống làm việc theo thời gian thực.

Kiến trúc

Cấu trúc tổng thể của một FPGA được minh họa ở hình sau.

giữa

Khối logic

Khối logic FPGA Phần tử chính của FPGA là các khối logic (logic block). Khối logic được cấu thành từ LUT và một phần tử nhớ đồng bộ flip-flop, LUT (Look up table) là khối logic có thể thực hiện bất kì hàm logic nào từ 4 đầu vào, kết quả của hàm này tùy vào mục đích mà gửi ra ngoài khối logic trực tiếp hay thông qua phần tử nhớ flip-flop. nhỏ|Configurable Logic  Blocks  (CLBs) Trong tài liệu hướng dẫn của các dòng FPGA của Xilinx còn sử dụng khái niệm SLICE, 1 Slice tạo thành từ gồm 2 khối logic, số lượng các Slices thay đổi từ vài nghìn đến vài chục nghìn tùy theo loại FPGA. 4 slices tạo thành một Configurable Logic Blocks (CLBs). CLBs là phần tử cơ bản cấu thành FPGA, là nguồn tài nguyên logic chính tạo nên các mạch logic đồng bộ lẫn không đồng bộ.

Nếu nhìn cấu trúc tổng thể của mảng LUT thì ngoài 4 đầu vào kể trên còn hỗ trợ thêm 2 đầu vào bổ sung từ các khối logic phân bố trước và sau nó nâng tổng số đầu vào của LUT lên 6 chân. Cấu trúc này là nhằm tăng tốc các bộ số học logic.

Hệ thống mạch liên kết

Khối chuyển mạch của FPGA Mạng liên kết trong FPGA được cấu thành từ các đường kết nối theo hai phương ngang và đứng, tùy theo từng loại FPGA mà các đường kết nối được chia thành các nhóm khác nhau, ví dụ trong XC4000 của Xilinx có ba loại kết nối: ngắn, dài và rất dài. Các đường kết nối được nối với nhau thông qua các khối chuyển mạch lập trình được (programmable switch), trong một khối chuyển mạch chứa một số lượng nút chuyển lập trình được đảm bảo cho các dạng liên kết phức tạp khác nhau.

Các phần tử tích hợp sẵn

Ngoài các khối logic tùy theo các loại FPGA khác nhau mà có các phần tử tích hợp thêm khác nhau, ví dụ để thiết kế những ứng dụng SoC, trong dòng Virtex 4,5 của Xilinx có chứa nhân xử lý PowerPC, hay trong Atmel FPSLIC tích hợp nhân AVR…, hay cho những ứng dụng xử lý tín hiệu số DSP trong FPGA được tích hợp các DSP Slide là bộ nhân cộng tốc độ cao, thực hiện hàm A*B+C, ví dụ dòng Virtex của Xilinx chứa từ vài chục đến hàng trăm DSP slices với A, B, C 18-bit.

Block RAM

Ngoài ra những FPGA của Xilinx còn có block RAM, có thể mường tượng như là bộ nhớ nhỏ nằm trong FPGA. Những block RAM này tuy nhỏ (khoảng vài chục ký lô bit cho đến vài triệu bit tùy theo loại FPGA) nhưng có thể dùng để tạo một bộ nhớ nhỏ như ROM, FIFO

👁️ 5 | 🔗 | 💖 | ✨ | 🌍 | ⌚
small|right|thumb|Spartan XC3S400 của hãng [[Xilinx, có 400.000 cổng và tần số 50MHz-80Mhz]] small|right|thumb|Dòng FPGA Stratix của hãng [[Altera]] **Field-programmable gate array** (FPGA) là một loại _mạch tích hợp cỡ lớn_ dùng cấu trúc mảng phần
thumb|right|Các chip Mạch tích hợp cho ứng dụng cụ thể (ASIC). **ASIC** (phát âm: ay-sik), viết tắt của _application-specific integrated circuit_ trong tiếng Anh, là một thuật ngữ chỉ các vi mạch tích hợp chuyên
Máy bẻ khóa trị giá 250.000 [[đô la của EFF này có thể bẻ khóa được thuật toán DES trong vài ngày. Hình chỉ một phần bản mạch của máy với 64 con chip bẻ
thumb|Hình ảnh board mạch Open Graphics Development **Open Graphics Project **(OGP) được thành lập với mục tiêu thiết kế một phần cứng nguồn mở / kiến ​​trúc mở và tiêu chuẩn cho các card đồ
**RISC-V** (phát âm là "risk-five") là một kiến trúc tập lệnh (ISA) mã nguồn mở dựa trên kiến trúc tập lệnh _máy tính với tập lệnh đơn giản hóa_ (RISC). Dự án bắt đầu từ
right|thumb|350x350px|Một nút nhấn iButton nhựa được sử dụng cho [[Akbil (smart ticket)|vé xe thông minh ở Istanbul]] right|thumb|200x200px|Một **chiếc nhẫn Java** với iButton tích hợp **1-Wire** là một hệ thống bus giao tiếp với thiết
[[Siêu máy tính song song hàng loạt Blue Gene/P của IBM]] **Tính toán song song** (tiếng Anh: _Parallel computing_), là một hình thức tính toán trong đó nhiều phép tính và tiến trình được thực
**Hệ thống trên một vi mạch** (còn gọi là hệ thống trên chip, hay hệ thống SoC, tiếng Anh: _system-on-a-chip_, viết tắt là **SoC** hay **SOC**) là một vi mạch (IC) được tích hợp các
**Đặng Lương Mô** (1936 – 6 tháng 5 năm 2025) là một nhà khoa học người Việt Nam trong lĩnh vực vi mạch. Phần lớn cuộc đời ông sống và làm việc tại Nhật Bản.
**Field-programable device** (FPD) là thuật ngữ chỉ những vi mạch (chip) bán dẫn có khả năng tái cấu trúc bởi người dùng cuối. Vi mạch thường được lập trình bằng ngôn ngữ mô tả phần
phải|[[Sơ đồ khối của bộ điều khiển PID]] Một **bộ điều khiển vi tích phân tỉ lệ** (**PID- Proportional Integral Derivative**) là một cơ chế phản hồi vòng điều khiển tổng quát được sử dụng
thumb|right|Một _hệ thống nhúng_ trên thẻ trình cắm có bộ xử lý, bộ nhớ, nguồn điện và giao diện bên ngoài **Hệ thống nhúng** () là một thuật ngữ để chỉ một hệ thống có
nhỏ|phải|Hai [[Vôn kế điện tử]] **Điện tử học**, gọi tắt là **khoa điện tử**, là một lĩnh vực khoa học nghiên cứu và sử dụng các thiết bị điện hoạt động theo sự điều khiển
thumb|CPU [[Intel 80486 DX2 có kích thước 12×6.75 mm.]] **Vi mạch** (tiếng Anh: _microchip_) hay **vi mạch tích hợp**, hoặc **mạch tích hợp** (tiếng Anh: _integrated circuit_, gọi tắt **IC**, còn gọi là **chip** theo
Sinclair ZX80 Máy **Sinclair ZX80** là một máy tính nhà đến với thị trường vào năm 1980 bởi Sinclair Research của Cambridge, Anh Quốc. Nó có danh tiếng vì được biết đến như là máy
Trong mật mã học, **RSA** là một thuật toán mật mã hóa khóa công khai. Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc
Các **linh kiện bán dẫn** hay _phần tử bán dẫn_ là các _linh kiện điện tử_ khai thác tính chất điện tử của _vật liệu bán dẫn_, như silic, germani, và arsenua galli, cũng như
Trong tin học, **dấu phẩy động** được dùng để chỉ một hệ thống biểu diễn số mà trong đó sử dụng một chuỗi chữ số (hay bit) để biểu diễn một số hữu tỉ. Thuật
nhỏ|Mã nguồn VHDL cho một [[mạch cộng có dấu]] **VHDL** (**VHSIC-HDL, Very High-Speed Integrated Circuit Hardware Description Language**, tạm dịch: Ngôn ngữ Mô tả Phần cứng cho Vi mạch tích hợp Tốc độ cao) là
thumb|right|Cổng vào hãng Xilinx **Xilinx**, Inc. () ( ) là một công ty bán dẫn Mỹ. Hãng này sáng chế ra FPGA (_field programmable gate array_). Ra đời năm 1984 ở Silicon Valley, công ty
**Deep Blue** là một hệ chuyên gia chơi cờ vua chạy trên một siêu máy tính đơn mục đích do IBM phát triển. Nó là máy tính đầu tiên thắng được một ván, và sau
**Chiết áp số** hay **chiết áp kỹ thuật số**, **digipot** là linh kiện điện tử được điều khiển kỹ thuật số để mô phỏng các chức năng tương tự của chiết áp . Chiết áp
**Viện Công nghệ Thông tin, Đại học Quốc gia Hà Nội** là một Viện nghiên cứu thành viên của Đại học Quốc gia Hà Nội, được thành lập từ năm 2001 trên cơ sở tổ
Một **tập lệnh**, hoặc **kiến trúc tập lệnh** (tiếng Anh: instruction set architecture, viết tắt _ISA_), là một phần của kiến trúc máy tính liên quan đến lập trình, bao gồm các bản địa các
nhỏ|Một vi xử lý [[Sun Microsystems|Sun UltraSPARC II (1997)]] **SPARC** (**Scalable Processor Architecture**) là một kiến trúc tập lệnh (ISA) RISC ban đầu được phát triển bởi Sun Microsystems và Fujitsu. Thiết kế của nó