Khác biệt giữa bản sửa đổi của “FPGA”
(Không hiển thị 40 phiên bản của 26 người dùng ở giữa) | |||
Dòng 1: | Dòng 1: | ||
<!--Hình thiếu thông tin về bản quyền [[Hình:virtex_provi.JPG|thumb|FPGA Virtex của Xilinx]] --> |
<!--Hình thiếu thông tin về bản quyền [[Hình:virtex_provi.JPG|thumb|FPGA Virtex của Xilinx]] --> |
||
[[ |
[[Tập tin:Xerox ColorQube 8570 - Main controller - Xilinx Spartan XC3S400A-0205.jpg|small|right|thumb|220px|Spartan XC3S400 của hãng [[Xilinx]], có 400.000 cổng và tần số 50MHz-80Mhz]] |
||
[[ |
[[Tập tin:Altera StratixIVGX FPGA.jpg|small|right|thumb|220px|Dòng FPGA Stratix của hãng [[Altera]]]] |
||
'''Field-programmable gate array''' (FPGA) là |
'''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'') |
* 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 |
* Hệ thống mạch liên kết lập trình được |
||
* Khối vào/ra (''IO Pads'') |
* 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ý... |
* Phần tử thiết kế sẵn khác như [[DSP slice]], [[RAM]], [[Bộ nhớ chỉ đọc|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#ASIC đặc chế hoàn toàn|ASIC đặc chế hoàn toàn]] hay [[ASIC#ASIC thiết kế trên thư viện logic|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. |
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#ASIC đặc chế hoàn toàn|ASIC đặc chế hoàn toàn]] hay [[ASIC#ASIC thiết kế trên thư viện logic|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 [[ASIC#ASIC dựa trên mảng logic|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 |
Còn nếu so sánh với các dạng [[ASIC#ASIC dựa trên mảng logic|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]]). |
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ế [[Vi mạch|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ử == |
== 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,<ref>{{ |
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,<ref>{{Chú thích web |
||
| |
|tiêu đề=Xilinx Spartan 6 Data sheet |
||
|url = http://www.xilinx.com/support/documentation/data_sheets/ds160.pdf |
|url = http://www.xilinx.com/support/documentation/data_sheets/ds160.pdf |
||
| |
|nhà xuất bản=Xilinx |
||
}} |
}}</ref> |
||
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. |
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. |
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, [[ |
Kiến trúc của FPGA là kiến trúc mảng các khối logic, [[field-programmable gate array#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]]. |
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ố [[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. |
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 == |
== Ứng dụng == |
||
[[ |
[[Tập tin:Cyclope robot.jpg|small|thumb|right|220px|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]]<ref>{{ |
Ứ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]]<ref>{{Chú thích web|tiêu đề=Tăng tốc mật mã học dùng FPGA|url=http://mil-embedded.com/articles/accelerating-cryptography-fpga-clusters/}}</ref>, mô hình phần cứng máy tính, máy đánh cờ bạc (Máy đánh cờ bạc [[Máy đánh cờ Hydra|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 (kỳ thủ cờ vua)|Michael Adams]] trong năm 2005.<ref>{{Chú thích web |
||
|url= http://www.chess-poster.com/english/great_games/hydra_adams/hydra_adams.htm |
|url= http://www.chess-poster.com/english/great_games/hydra_adams/hydra_adams.htm |
||
| |
|tiêu đề=Hydra vs Michael Adams |
||
| |
|nhà xuất bản=Chess-poster.com |
||
}}</ref><ref>{{ |
}}</ref><ref>{{Chú thích web |url=http://www.chessbase.com/newsdetail.asp?newsid=2476|tiêu đề=Adam vs Hydra}}</ref><ref>{{Chú thích web |
||
|url = http://www.macauleypeterson.com/Print/Chess/Adams-Hydra%20Sept%2005/pg_0001.htm |
|url = http://www.macauleypeterson.com/Print/Chess/Adams-Hydra%20Sept%2005/pg_0001.htm |
||
| |
|tiêu đề = Michael Adams and the many headed Hydra |
||
}}{{Liên kết hỏng|date = ngày 8 tháng 3 năm 2021 |bot=InternetArchiveBot }}</ref>)... |
|||
⚫ | |||
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. |
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. |
||
Dòng 48: | Dòng 48: | ||
Cấu trúc tổng thể của một FPGA được minh họa ở hình sau. |
Cấu trúc tổng thể của một FPGA được minh họa ở hình sau. |
||
[[Tập tin: |
[[Tập tin:tongquan fpga.jpg|nhỏ|250px|giữa]] |
||
=== Khối logic === |
=== Khối logic === |
||
[[Tập tin: |
[[Tập tin:logic block fpga vi.jpg|nhỏ|200px|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, |
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. |
||
[[Tập tin:Configurable Logic Blocks.png|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 |
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. |
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. |
||
Dòng 60: | Dòng 60: | ||
=== Hệ thống mạch liên kết === |
=== Hệ thống mạch liên kết === |
||
[[Hình:switch box.svg|nhỏ|200px|Khối chuyển mạch của FPGA]] |
[[Hình:switch box.svg|nhỏ|200px|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ó |
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 === |
=== 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 [[Họ vi điều khiển Atmel|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. |
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 [[Họ vi điều khiển Atmel|AVR]]…, hay cho những ứng dụng xử lý tín hiệu số [[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. |
||
<!--Hình thiếu thông tin về bản quyền [[Hình:DSP_slice.jpg|frame|center|Cấu trúc DSP Xilinx slices của Virtex 4]] --> |
<!--Hình thiếu thông tin về bản quyền [[Hình:DSP_slice.jpg|frame|center|Cấu trúc DSP Xilinx slices của Virtex 4]] --> |
||
=== Block RAM === |
=== 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 |
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ư [[Bộ nhớ chỉ đọc|ROM]], [[FIFO]] |
||
<ref>{{Chú thích web |url =http://www.xilinx.com/support/documentation/application_notes/xapp463.pdf |
|||
<ref> {{cite web |url = |
|||
⚫ | |||
https%3A%2F%2Ffanyv88.com%3A443%2Fhttp%2Fwww.xilinx.com%2Fsupport%2Fdocumentation%2Fapplication_notes%2Fxapp463.pdf&ei=3fR6UKCwAbCQ0QHn6YDoDw&usg=AFQjCNH02nxHSFSpte7OveZyOyYajfGTzg&sig2=ZWOeoSmcy2P58o4tWEq2Wg |
|||
|nhà xuất bản=Xilinx |
|||
⚫ | |||
⚫ | |||
|publisher=Xilinx |
|||
}} |
|||
== Xem thêm == |
== Xem thêm == |
||
Dòng 90: | Dòng 89: | ||
* [http://www.eecg.toronto.edu/~jayar/pubs/brown/survey.html Architecture of FPGAs and CPLDs] |
* [http://www.eecg.toronto.edu/~jayar/pubs/brown/survey.html Architecture of FPGAs and CPLDs] |
||
* [http://www.fpga-faq.org/ FPGA FAQ Repository] |
* [http://www.fpga-faq.org/ FPGA FAQ Repository] |
||
* [http://www.altera.com/ Quartus] - Design suite for Altera devices |
* [http://www.altera.com/ Quartus] - Design suite for Altera devices |
||
* [http://www.xilinx.com/ ISE] - Design suite for Xilinx devices |
* [http://www.xilinx.com/ ISE] - Design suite for Xilinx devices |
||
* [http://www.modelsim.com/ ModelSim] - Mixed-languages simulator |
* [http://www.modelsim.com/ ModelSim] - Mixed-languages simulator |
||
* [http://www.synplicity.com/ Synplify] - FPGA synthesis tool |
* [http://www.synplicity.com/ Synplify] - FPGA synthesis tool |
||
* [http://www.ni.com/fpga LabVIEW FPGA] - Graphical Programming FPGAs on COTS Hardware |
* [http://www.ni.com/fpga LabVIEW FPGA] - Graphical Programming FPGAs on COTS Hardware |
||
* [http://www.fpgacentral.com FPGA Central] |
* [http://www.fpgacentral.com FPGA Central] {{Webarchive|url=https://web.archive.org/web/20190627070133/http://www.fpgacentral.com/ |date = ngày 27 tháng 6 năm 2019}} |
||
==Tham khảo == |
==Tham khảo == |
||
{{tham khảo}} |
|||
<references/> |
|||
== Liên kết ngoài == |
|||
{{thể loại Commons|FPGA}} |
|||
{{Hệ thống nhúng}} |
|||
{{Kiểm soát tính nhất quán}} |
|||
[[Thể loại:Mạch tích hợp]] |
|||
{{sơ khai}} |
|||
[[Thể loại:Linh kiện bán dẫn]] |
|||
{{Commonscat|FPGA}} |
|||
[[Thể loại:Linh kiện điện tử]] |
|||
[[Thể loại: |
[[Thể loại:Mạch điện tử]] |
||
[[Thể loại:Điện tử học]] |
|||
[[Thể loại:Phát minh của Hoa Kỳ]] |
|||
[[ar:مصفوفات البوابات المنطقية القابلة للبرمجة في الميدان]] |
|||
[[id:FPGA]] |
|||
[[bn:ফিল্ড-প্রোগ্রামেবল গেইট অ্যারে]] |
|||
[[bar:Field Programmable Gate Array]] |
|||
[[bg:FPGA]] |
|||
[[ca:FPGA]] |
|||
[[cs:Programovatelné hradlové pole]] |
|||
[[da:Field-Programmable Gate Array]] |
|||
[[de:Field Programmable Gate Array]] |
|||
[[et:FPGA]] |
|||
[[el:FPGA]] |
|||
[[en:Field-programmable gate array]] |
|||
[[es:Field Programmable Gate Array]] |
|||
[[eo:Agordebla Matrico de Logikaj Elementoj]] |
|||
[[fa:افپیجیای]] |
|||
[[fr:Circuit logique programmable#FPGA]] |
[[fr:Circuit logique programmable#FPGA]] |
||
[[ko:FPGA]] |
|||
[[hi:एफपीजीए]] |
|||
[[it:Field Programmable Gate Array]] |
|||
[[he:FPGA]] |
|||
[[hu:Field-programmable gate array]] |
|||
[[mk:FPGA]] |
|||
[[nl:Field-programmable gate array]] |
|||
[[ja:FPGA]] |
|||
[[no:FPGA]] |
|||
[[nn:FPGA]] |
|||
[[pl:Field Programmable Gate Array]] |
|||
[[pt:Field-programmable gate array]] |
|||
[[ro:FPGA]] |
|||
[[ru:Программируемая пользователем вентильная матрица]] |
|||
[[sk:Field programmable gate array]] |
|||
[[sr:FPGA]] |
|||
[[fi:FPGA]] |
|||
[[sv:Field-programmable gate array]] |
|||
[[th:เอฟพีจีเอ]] |
|||
[[tr:FPGA]] |
|||
[[uk:FPGA]] |
|||
[[zh:现场可编程逻辑门阵列]] |
Bản mới nhất lúc 15:49, ngày 16 tháng 6 năm 2022
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ử
[sửa | sửa mã nguồn]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,[1] 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
[sửa | sửa mã nguồn]Ứ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[2], 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.[3][4][5])...
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
[sửa | sửa mã nguồn]Cấu trúc tổng thể của một FPGA được minh họa ở hình sau.
Khối logic
[sửa | sửa mã nguồn]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.
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
[sửa | sửa mã nguồn]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
[sửa | sửa mã nguồ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
[sửa | sửa mã nguồn]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 [6]
Xem thêm
[sửa | sửa mã nguồn]Liên kết ngoài
[sửa | sửa mã nguồn]- Architecture of FPGAs and CPLDs
- FPGA FAQ Repository
- Quartus - Design suite for Altera devices
- ISE - Design suite for Xilinx devices
- ModelSim - Mixed-languages simulator
- Synplify - FPGA synthesis tool
- LabVIEW FPGA - Graphical Programming FPGAs on COTS Hardware
- FPGA Central Lưu trữ 2019-06-27 tại Wayback Machine
Tham khảo
[sửa | sửa mã nguồn]- ^ “Xilinx Spartan 6 Data sheet” (PDF). Xilinx.
- ^ “Tăng tốc mật mã học dùng FPGA”.
- ^ “Hydra vs Michael Adams”. Chess-poster.com.
- ^ “Adam vs Hydra”.
- ^ “Michael Adams and the many headed Hydra”.[liên kết hỏng]
- ^ “Spartan 6 FPGA block RAM” (PDF). Xilinx.