TỔNG QUAN VỀ FPGA 1

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 7

LỜI MỞ ĐẦU

Xử lý tín hiệu số, xử lý ảnh, viễn thông … là những ngành hết sức cần thiết trong cuộc
sống, các công nghệ mới ngày càng được nghiên cứu và phát triền nhằm nâng cao tính
hiệu quả của nó và FPGA ra đời như một giải pháp nhằm đáp ứng yêu cầu đó. Tính linh
động cao trong quá trình thiết kế cho phép FPGA giải quyết được những bài toán phức
tạp mà trước kia rất khó khăn trong việc sử lý chúng. FPGA với mật độ cao các cổng
logic được tích hợp đượ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. Đặc biệt, với khả năng tái lập
trình, người sử dụng có thể thay đổi lại thiết kế của mình chỉ trong vài giờ.
Với những khả năng ưu việt mà FPGA mang lại, em quyết định tìm hiểu về công
nghệ này để trang bị cho mình kiến thức nền tảng trước khi đi vào nghiên cứu chuyên sâu
để phát triển ứng dụng FPGA vào thiết bị thực.
Do thời gian và kiến thức có hạn nên công trình này không thể tránh khỏi sai sót, vì
vậy em rất mong nhận được ý kiến đóng góp từ thầy cô và các bạn.
Em xin chân thành cảm ơn !

III.TỔNG QUAN VỀ FPGA


3.1 FPGA LÀ GÌ ?
FPGA ( Field – Programmable Gate Array) là vi mạch dùng cấu trúc mảng phần tử
logic mà người dùng có thể lập trình được. Vi mạch FPGA đươc cấu thành từ các phần tử
kĩ thuật số được kết nối với nhau bằng kết nối vật lý mà chúng ta có thể thực hiện kết nối
vật lý này bằng ngôn ngữ mô tả phần cứng (code).
Thành phần cơ bản nhất của FPGA là các cổng (Gate) logic : OR, AND, NOT, XOR,
…, các bản tra LUT, flip-flop. Các thành phần này có thể ghép nối thành những IC có
tính năng nhất định bằng cách viết CODE và nạp vào FPGA.
Điều đặc biệt của FPGA là thực hiện được số lượng lớn các phép toán song song
( cùng một lúc ) khác với vi xử lý chỉ thực hiện tuần tự các phép toán. Khả năng xử lý
song song này làm cho FPGA rất mạnh mẽ trong các ứng dụng yêu cầu tốc độ cao như xử
lý ảnh, viễn thông, xử lý tín hiệu kĩ thuật số, và nhiều ứng dụng khác.
So sánh FPGA với ASIC và các ví mạch bán dẫn khác :
ASIC ( Application – Specific Intergrated Circuit) là một vi mạch IC được thiết kế
dành cho một ứng dụng cụ thể.
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 này 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ệ 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.
Để dễ hình dung hơn, nếu như những ai đã biết về lập trình vi điều khiển hoặc
ARM, thì những vi điều khiển này như (AT89/PIC/MSP430, …) hoặc ARM SoC
(STM32, …) đều là loại chip được thiết kế trên công nghệ ASIC, tức kiến trúc phần cứng
do nhà sản xuất thiết kế được cố định trong quá trình sản xuất, người dùng không thể nào
thay đổi hoặc chỉnh sửa được. Người kĩ sư lập trình ứng dụng hoặc lập trình firmware
đều phải nghiên cứu nắm vững kiến trúc của từng loại VĐK trên để phát triển phần mềm,
giải thuật tương ứng. Do đó, lập trình vi điều khiển còn được hiểu là lập trình phần mềm
dựa trên phần cứng có sẵn. Còn đối với FPGA, người dùng có thể tự thiết kế lại kiến trúc
phần cứng theo ý mình muốn, kèm theo xây dựng các driver tương ứng để phát triển các
phần mềm ứng dụng và giải thuất tối ưu hơn.
Như vậy, ưu điểm thứ nhất của FPGA là tính linh động đối với người dùng, giúp phát
triển các giải pháp tốt hơn mà không phụ thuộc vào phần cứng của nhà sản xuất. Chúng
ta có thể sử dụng FPGA để thiết kế cũng như lập trình được hầu hết các chức năng của
bất kì mạng số nào.

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.
 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 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).
3.2 LỊCH SỬ RA ĐỜI FPGA
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. Tiền thân trước đó của FPGA chính là CPLD. 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à hiệu suất không cao.
Kiến trúc của FPGA là kiến trúc mảng các khối logic, 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. 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ẻ (partial configuration)
trong khi vẫn đảm bảo hoạt động bình thường cho các bộ phận khác.

3.3 CẤU TRÚC FPGA

Kiến trúc cơ bản của FPGA gồm 3 thành phần chính sau: Khối I/O (hay gọi là Pad
hoặc các pin FPGA), Kết Nối  (Interconnect), các Khối logic (LB – Logic Blocks). Các
khối LB được tổ chức sắp xếp theo mảng theo 2 hướng dọc và ngang như hình dưới đây

Chi tiết mỗi thành phần như sau:


Khối Logic ( Logic Block ) 
Thực thi các chức năng logic, cung cấp các tính toán và phần tử nhớ cơ bản được sử
dụng trong hệ thống số. LBs 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ộ. Một LB cơ bản gồm một
mạch tổ hợp có thể lập trình (còn gọi là LUT), một Flip-Flop hoặc một chốt
(latch).  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 (số đầu vào này sẽ tùy thuộc vào từng dòng chip của mỗi hãng và sẽ được thảo luận
chi tiết trong bài viết khác), 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. Ngoài khối logic cơ bản đó, nhiều
Chip FPGA hiện nay gồm một hỗn hợp các khối khác nhau, một số trong đó chỉ được
dùng cho các chức năng cụ thể, chẳng hạn như các khối bộ nhớ chuyên dụng, các bộ nhân
(multipliers) hoặc các bộ ghép kênh (multiplexers). Tất nhiên, cấu hình bộ nhớ được sử
dụng trên tất cả các khối logic để điều khiển các chức năng cụ thể của mỗi phần tử bên
trong khối đó.
Kết nối ( Interconect) : dùng để liên kết các khối logic và I/O lại với nhau để tạo
thành một thiết kế hoàn chỉnh. 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. 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.
FPGA Interconnect
Khối vào/ra ( I/O): cung cấp giao tiếp giữa các khối logic và kiến trúc định tuyến đến
các thành phần bên ngoài. Một trong những vấn đề quan trọng nhất trong thiết kế kiến
trúc I/O là việc lựa chọn các tiêu chuẩn điện áp cung cấp và điện áp tham chiếu sẽ được
hỗ trợ. Số lượng Pin (I/O) của FPGA tương đối lớn, thường được chia ra làm 2 loại: User
Pin(chân người dùng), Dedicated Pin (chân chuyên dụng).
-User Pin: người dùng có thể lập trình như đầu vào, đầu ra hoặc cả đầu vào – ra. Mỗi pin
được kết nối với một “IO Cell” bên trong FPGA, được cấp bởi các chân VCCIO (IO
power pin).
-Dedicated Pin: được mã hóa cứng với một chức năng cụ thể.
+Power Pin
+Configuration Pin: các pin để cấu hình FPGA
+Dedicated input, hay Clock Pin: điều khiển mạng lưới clock bên trong FPGA.
+Voltage IO: cấp nguồn cho các cổng logic và flip-flops bên trong FPGA.

Ngoài ra còn có các phần tử tich hợp sẵn sẵn khác như DSP slice, RAM, ROM,…
Cũng giống như vi điều khiển, số lần nạp FPGA hầu như không giới hạn. Dữ liệu
(chương trình) nạp cho FPGA sẽ bị mất khi mất nguồn (điện) giống như RAM trong máy
tính. Nếu muốn lưu giữ lại file nạp này thì cần phải có một bộ nhớ ngoài Flash/ROM(do
đặc tính của loại bộ nhớ này là lưu dữ liệu cho dù có mất nguồn) để mỗi lần bật nguồn,
file dạng binary sẽ tự động nạp lại vào FPGA.
Theo thời gian, các kiến trúc FPGA cơ bản đã được phát triển hơn nữa thông qua việc
bổ sung các khối chức năng đặc biệt có thể lập trình, như bộ nhớ trong (Block RAMs),
logic số học (ALU), bộ nhân, DSP-48 và thậm chí là bộ vi xử lý nhúng được thêm vào do
nhu cầu của các nguồn tài nguyên cho một ứng dụng. Kết quả là nhiều FPGA ngày nay
có nhiều nguồn tài nguyên hơn so với các FPGA trước đó.

3.4 ƯU ĐIỂM VÀ ỨNG DỤNG CỦA FPGA


 Ưu điểm
Thứ nhất, do FPGA có kiến trúc mảng phần tử logic nên có thể thực thi song song.
So với vi điều khiển hoặc CPU phải thực thi mã lệnh theo dạng tuần tự. Như vậy với
FPGA, chúng ta có thể tăng hiệu suất/năng suất xử lý của hệ thống, hoặc những ứng dụng
đòi hỏi phải xử lý tốc độ cao hoặc dùng trong các hệ thống làm việc theo thời gian thực.
Thứ hai, vì có thể cấu hình, lập trình lại được, nên FPGA dễ dàng mở rộng các ngoại
vi cũng như giao tiếp với nhiều thiết bị hơn mà các MCU hoặc ASIC lại hạn chế về điểm
này.
Thứ ba, nhìn chung ASIC/ASSP có hiệu suất cao hơn nếu xét về mặt tiêu thụ công
suất và số lượng cổng. Nhưng nếu chỉ cần thực thi một chức năng nhỏ nào đó, một chip
ASIC/ASSP có thể đòi hỏi công suất tiêu thụ lớn hơn và nhiều cổng hơn thực tế yêu cầu.
Với FPGA, firmware có thể xác định được “kích cỡ” của ứng dụng, từ đó giảm số cổng
và công suất cần tiêu thụ.
Thứ tư, nếu xét về giá thành, FPGA không thể nào so sánh được với ASIC hay SoC,
nhưng bù lại, với khả năng tái cấu hình kiến trúc, FPGA đóng vài trò vô cùng to lớn trong
việc giảm giá thành và thời gian chế tạo ASIC. Để rõ hơn, chúng ta cần phải biết quy
trình thiết kế của hai công nghệ này. FPGA và ASIC đều phải trải qua hai giai đoạn:
Front End (ý tưởng, thiết kế ở mức logic sử dụng các ngôn ngữ mô tả phần cứng, kiểm
tra mô phỏng bằng phần mềm, …) và Back End (kiểm tra timing đảm bảo thiết kế sẽ hoạt
động ở tần số yêu cầu, layout chip, …). Ở khâu backend này, với FPGA, các giai đoạn sẽ
được làm tự động bằng phần mềm của nhà sản xuất FPGA và tạo ra 1 file bitstream để
nạp xuống FPGA và chạy thử nghiệm. Còn với ASIC, thì back end cần tốn nhân lực và
thời gian lâu hơn. Sau đó, toàn bộ thiết kế đó được gửi tới nhà máy sản xuất chip (vd như
Intel, TSMC, …) để làm ra chip mẫu với giá thành vài triệu đô la. Tiếp đến là quá trình
test chip trong môi trường thực, nếu thất bại thì phải thực hiện lại từ đầu như qui trình
trên và vài triệu đô trước đó xem như vứt sọt rác. Nhưng với FPGA, không những giúp
rút ngắn thời gian mà còn giảm tối đa chi phí nghiên cứu, thiết kế có thể thử nghiệm trực
tiếp trên FPGA gần với môi trường ASIC thực nhất. Khả năng tái cấu hình cho phép bạn
sửa đi sửa lại thiết kế cho đến khi đạt yêu cầu mà không tốn một xu nào cho nhà sản xuất
chip.

 Các lĩnh vực ứng dụng của công nghệ FPGA :


FPGA là thế hệ sau của IC khả trình nên chúng có thể ứng dụng trong hầu hết các ứng
dụng của hiện đang dùng MPGA, PLD và các mạch tích hợp loại nhỏ (SSI).
a. Các mạch tích hợp là ứng dụng đặc biệt FPGA là thiết bị tổng quát nhất để thực
hiện các mạch lôgic số. Chúng đặc biệt thích hợp cho các mạch tích hợp chuyên dụng đặc
biệt (ASIC) như bộ cộng, bộ điều khiển lôgic Flip-Flop...
b. Thiết kế mạch ngẫu nhiên Mạch lôgic ngẫu nhiên thường được thực hiện bằng
PAL. Nếu tốc độ của mạch không đòi hỏi khắt khe (các PAL nhanh hơn hầu hết các
FPGA) thì mạch có thể thực hiện bằng FPGA. Hiện nay một FPGA cần từ 10 đến 20
PAL.
c. Thay thế các chíp SSI cho mạch ngẫu nhiên Các mạch hiện tại trong các sản phẩm
thương mại thường chứa nhiều chíp SSI. Trong nhiều trường hợp có thể thay thế bằng
FPGA để giảm diện tích bo mạch.
d. Chế tạo mẫu FPGA rất lý tưởng cho việc tạo mẫu các sản phẩm. Giá thành thực
hiện thấp và thời gian thực hiện thiết kế vật lý ngắn, cung cấp các ưu điểm hơn nhiều so
với các phương tiện truyền thống khác để chế tạo mẫu phần cứng. Các mẫu ban đầu có
thể thực hiện rất nhanh và những thay đổi sau đó được thực hiện rất nhanh và ít tốn kém.
e. Máy tính dựa trên FPGA Một loại máy tính dựa trên FPGA có thể tái lập trình ngay
trên FPGA. Các máy này có một bo mạch chứa các FPGA với các chân nối với các chíp
lân cận giống như thông thường. Ý tưởng là là một chương trình phần mềm có thể được
“biên dịch” (sử dụng kỹ thuật tổng hợp mức cao, mức lôgic và mức sơ đồ bằng tay) vào
ngay phần cứng. Phần cứng này sẽ được thực hiện bằng cách lập trình bo mạch FPGA.
Phương pháp này có hai ưu điểm chính: một là không cần 15 quá trình lấy lệnh như các
bộ xử lý truyền thống vì phần cứng đã gộp cả lệnh. Kết quả là tốc độ có thể tăng lên hàng
trăm lần. Hai là, môi trường tính toán có thể thực hiện song song mức cao, làm tăng tốc
thêm nữa.
f. Tái cấu hình thành phần trực tiếp FPGA cho phép có thể thay đổi theo mong muốn
cấu trúc của một máy đang hoạt động. Một ví dụ là các thiết bị máy tính từ xa có thể thay
đổi trực tiếp để khắc phục sự cố hay có lỗi thiết kế. Kiểu FPGA thích hợp nhất cho ứng
dụng này là những FPGA có các chuyển mạch lập trình được.

You might also like