CHƯƠNG 1: TỔNG QUAN VỀ CÔNG NGHỆ FPGA VÀ ỨNG DỤNG FPGA là viết tắt của (Field-Programmable Gate Array) là vi mạch dùng cấu trúc mảng phần tử logic cho phép người thiết kế lập trình thay đổi các thiết kế của mình [6],[7]. 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ý… Ưu điểm: - Có thể tái cấu trúc lại khi đang sử dụng, tác vụ tái lập trình thực hiện đơn giản. - Công đoạn thiết kế đơn giản, khả năng lập trình linh động. - Chi phí thấp, rút ngắn thời gian đưa vào sử dụng. - Có khả năng chứa khối lượng lớn cổng logic (logic gate) - Linh hoạt và tốc độ xử lý nhanh.
Lịch sử ra đời của FPGA Năm 1984 Ross Freeman là người đầu tiên thiết kế PFGA và cũng là người sáng lập công ty Xilinx. Kiến trúc mới của FPGA cho phép tích hợp số lượng lớn các phần tử bán dẫn vào một vi mạch so với kiến trúc trước đó là CPLD. FPGA có khả năng chứa từ 100.000 đến vài tỷ cổng logic, trong khi CPLD chỉ chứa từ 10.000 cổng logic, con số này đối với PAL vá PLA còn thấp hơn rất nhiều chỉ đạt vài nghìn đến 10. CPLD được cấu trúc từ số lượng nhất định các khối SPLD (Simple Programable devices) (Thuật ngữ chung chỉ PAL, PLA).
SPLD thường là một 5 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 xuấ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 (multication 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, FPGA hiện tại còn hỗ trợ 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. Cấu trúc tổng thể của một FPGA được minh họa ở Hình 1. I/O logic block Programmable Interconnect Hình 1.1: Cấu trúc tổng thể một FPGA 6 Khối logic FPGA output 4 input S1 D Look Up S SE Q S2 Table D (LUT) C END R CLR Q Clock Flip - Flop Hình 1.2: 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.
Khối vào/ra (IO) Khối vào/ra nhiều hay ít là tùy thuộc vào từng loại FPGA. Chúng có thể được kết nối với các thiết bị bên ngoài như LED, USB, RAM … tùy theo mục đích sử dụng. LUT (Look up table) là khối logic có thể thực hiện bất kỳ hàm logic nào từ bốn đầu vào, kết quả của hàm này tùy thuộc 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. Nếu nhìn cấu trúc tổng thể mảng LUT thì ngoài bốn đầu vào kể trên còn hỗ trợ thêm hai đầ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 nhằm tăng tốc các bộ số học logic. Hệ thống mạch liên kết là 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, 7 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ụ: công cụ SoPC Builder của hãng Altera khai thác kiến trúc (System Interconnect Fabric) công nghệ tạo ra các kết nối của SoPC Builder dùng các nguồn tài nguyên logic bên trong FPGA tích hợp các thành phần vào hệ thống để phát triển các thiết kế. Ngoài các thành phần thường có trong một SoPC như CPU nhúng, bộ điều khiển SDRAM, bộ điều khiển SRAM, bộ điều khiển chuyển tiếp mạng, UART … [8],[9] Có hai loại FPGA cơ bản: Loại SRAM (Static Random Access Memory) có thể Arithmetic Logic Bộ dồn kênh F5IN ở trong mỗi slice được kết hợp các đầu ra, bộ tạo chức năng được chỉ ra như trong Hình 1.
8 CLB Slice MUXF6 LUT LUT MUXF5 Slice LUT LUT MUXF5 Hình 1.3: Bộ dồn kênh F5 và F6 Sự kết hợp này sẽ đưa ra hoặc một bộ tạo hàm mà nó có thể thực thi bất kỳ 5 đầu vào chức năng hoặc một bộ dồn kênh 4:1 hoặc các chức năng được chọn lựa của chin đầu vào. Tương tự, bộ dồn kênh F6 kết hợp các đầu ra của bốn bộ tạo chức năng trong CLB bằng việc chọn một trong hai đầu ra của bộ dồn kênh F5. Điều này cho phép thực thi bất kỳ một hàm 6 đầu vào, một bộ dồn kênh 8:1, hoặc chức năng được chọn lựa lên đến 19 đầu vào. Block RAM Họ Spartan-IIE của Xilinx hợp nhất một vài bộ nhớ RAM theo khối thành khối lớn hơn (gọi là Select RAM+), có nghĩa cần phải bổ sung thêm các LUT RAM đã được dung.
Kiến trúc bộ nhớ không bền vững này được thực hiện trong các CLB. Các khối bộ nhớ RAM Block chúng được tổ chức theo các cột. Hầu hết họ Spartan-IIE có chứa hai cột như nhau, mỗi một cột được bố trí dọc theo chiều đứng. Họ XC2S400E có bốn cột RAM khối, mỗi cột này được kéo dài hết chiều 9 cao của chip.
Mỗi một khối nhớ chính gồm bốn CLB cao và vì vậy mỗi Spartan- IIE có 8 CLB cao sẽ chứa hai khối nhớ trên mỗi cột và tổng cộng có bốn khối. Delay-locked loop (DLL) Delay-locked loop được kết hợp với mỗi bộ đệm đầu vào clock toàn cục và là một vòng khóa độ giữ chậm số DLL mà nó loại trừ được sự lệch giữa bộ đệm đầu vào clock và các chân đầu vào clock bên trong thiết bị. bộ DLL giám sát toàn bộ clock đầu vào và clock được phân phối, tự động điều chỉnh phần tử giữ chậm clock. DLL cung cấp các pha vuông 900 của clock nguồn mà có thể nhân đôi, hoặc chia bới cho hệ số 1.
CLKIN Variable CLKOUT Clock Delay Line Distributio n Network CLKFB Control Hình 1.4: Sơ đồ khối của khối lặp xóa độ giữ chậm Altera là hãng đầu tiên giới thiệu LUT khả phân (Fracturable Look-Up Table – LUT có khả năng phân chia thành các cấu hình LUT nhỏ hơn) với 8 ngõ vào trong họ Stratix II năm 2004. Lõi của nó là các mô-đun logic thích nghi ALM (Adaptive Logic Module) 8 ngõ vào nhưng có thể thực thi như một LUT 6 ngõ vào đầy đủ hoặc lựa chọn các chức năng 7 ngõ vào. [4] ALM còn có thể được phân chia hiệu quả thành các LUT nhỏ hơn và độc lập với nhau. Như vậy, sẽ cung cấp các lợi điểm về hiệu xuất đối với các LUT lớn hơn 10 và hiệu quả về diện tích khi dung các LUT nhỏ hơn.
Dòng Stratix còn trội hơn các FPGA khác nhờ định tuyến thông qua các kết nối MultiTrack, cung cấp khả năng kết nối tốt nhất trong công nghiệp. Vào thời điểm năm 2006 Altera tự hào tuyên bố kiến trúc FPGA của họ đi trước ít nhất mội thế hệ và kiến trúc định tuyến bên trong FPGA thì đi trước hai thế hệ so với các đối thủ. Chìa khóa của cấu trúc hiệu xuất cao và hiệu quả về diện tích chính là kết cấu logic của ALM. ALM bao gồm mạch tổ hợp, hai thanh ghi, hai bộ cộng như hình minh họa sau (Hình 1.5): ALM Combinational Logic 1 Register Regout (0) 2 Adder 3 ALM 4 Combout (0) Input 5 s 6 7 Adder Regout (1) 8 Register Combout (1) LUT khả phân 8 ngõ vào 2 bộ cổng 2 thanh ghi Hình 1.5: Sơ đồ khối “Mô đun logic thích nghi” ALM Phần mạch tổ hợp có tám ngõ vào và một LUT có khả năng chia thành hai LUT thích nghi (ALUT – Adaptive LUT) nhỏ sử dụng công nghệ LUT.
Một ALM toàn vẹn được dung để thực hiện một chức năng 6 ngõ vào bất kỳ, nhưng vì nó có đến 8 ngõ vào đưa đến khối logic tổ hợp nên một ALM có thể thực hiện các kết 11 hợp khác nhau của hai chức năng. Sau đây là bảng mô tả thể hiện tính linh động của ALM. Quy trình thiết kế FPGA tổng quát Quy trình này được trình bày tại Hình 1.6 QUY TRÌNH THIẾT KẾ FPGA QUÁ TRÌNH NHIỆM VỤ CÔNG CỤ BẢN VẼ MÔ TẢ THIẾT KẾ NGÔN NGỮ HDL MÔ TẢ SPECIFLCATION MÔ PHỎNG CHỨC NĂNG MÔ PHỎNG TỔNG HỢP LOGIC CÔNG CỤ SYNT HE SYS HIỆU CHỈNH KẾT NỐI PHÂN TÍCH THỜI GIAN ÁNH XẠ MAPPING THỰC THI IMPLEMENTATION ĐẶT KHỐI CÔNG CỤ ĐẶT KHỐI VÀ ĐỊNH ĐỊNH TUYẾN TUYẾN CẤU HÌNH CÔNG CỤ CẤU CONFIGURATION NẠP HAY LẬP TRÌNH HÌNH Hình 1.6: quy trình thiết kế FPGA 12 Mô tả ban đầu về thiết kế Khi xây dựng một chip khả trinh FPGA với ý nghĩa dành cho một ứng dụng riêng biệt, xuất phát từ ứng dụng thực tiễn cuộc sống sẽ đặt ra yêu cầu thiết kế IC thực hiện tối ưu nhất những ứng dụng đó. Bước đầu của quy trình thiết kế này có nhiệm vụ tiếp nhận các yêu cầu của thiết kế và xây dựng nên kiến trúc tổng quát của thiết kế.
[8] Mô tả thiết kế: Trong bước này từ những yêu cầu của thiết kế và dựa trên khả năng của công nghệ hiện có, người thiết kế kiến trúc sẽ xây dựng nên toàn bộ kiến trúc tổng quan cho thiết kế và mô tả được những vấn đề chủ yếu sau: Thiết kế những khối nào? Mỗi khối có chức năng gì?