CHƯƠNG I: TỔNG QUAN VỀ CÔNG NGHỆ FPGA 1. Lịch sử ra đời 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.
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 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.
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. Sự phát triển của FPGA Các thiết bị lập trình được, gọi chung là các thiết bị khả trình, có vai trò rất quan trọng trong thiết kế phần cứng số. Chúng là các chíp đa dụng có thể được cấu hình theo nhiều cách cho nhiều ứng dụng khác nhau. 4 + Loại đầu tiên của thiết bị khả trình được sử dụng rộng rãi là Programmable read-only Memory-PROM.
PROM là thiết bị lập trình chỉ được một lần gồm một dãy các ô nhớ chỉ đọc. PROM có thể thực hiện bất kỳ một hàm logic theo bảng sự thật nào đó, bằng cách sử dụng các đường địa chỉ như các ngõ nhập vào và ngõ xuất đựơc xác định nội dung các bít nhớ. Có hai loại PROM cơ bản là Mask-Programmable và Field-Programmable. - Mask-Programmable là loại thiết bị được lập trình bởi nhà sản xuất.
Các chíp này thường sản xuất các chíp lôgíc tốc độ cao vì các kết nối bên trong thiết bị được thực hiện bằng phần cứng ngay từ khi sản xuất. - Field-Programmable là thiết bị được lập trình bởi người dùng. Các kết nối bên trong của Field-Programmable luôn cần đến một số chuyển mạch lập trình được (cầu chì, transistor truyền…) vì vậy tốc độ truyền chậm hơn của thiết bị nối cứng ( Mask-Programmable). Tuy nhiên nó có nhiều ưu điểm như:.
Các chíp Field-Programmable có thể lập trình trong thời gian ngắn (khoảng vài phút hay vài giờ đồng hồ) còn các chíp Mask-Programmable khi sản xuất phải thực hiện trong thời gian dài (hàng tuần hay hàng tháng). Các chíp Field-Programmable rẻ hơn nhiều so với Mask- Programmable khi sản xuất với số lượng nhỏ. Hai biến thể của PROM là EPROM chúng đều có chung ưu điểm là có khả năng xoá và lập trình lại nhiều lần. Tiếp đến là các thiết bị PLD, chúng thông thường có cấu tạo gồm một dãy các cổng AND được nối với một dãy các cổng OR.
Loại cơ bản của PLD là PAL, PAL gồm một khối các cổng AND lập trình được nối đến các khối cổng OR cố định. Một loại nữa của PLD linh hoạt hơn PAL là PLA. PLA cũng có cấu trúc giống PAL nhưng các kết nối khả trình. Trong PLA cũng có hai loại là Mask-Programmable và Field-Programmable.
Cả hai loại PLD trên cho phép thực hiện các mạch logic có tốc độ cao tuy nhiên cấu trúc đơn giản của chúng chỉ cho phép thực hiện được các mạch logic cỡ nhỏ. 5 Loại thiết bị khả trình tổng quát nhất gồm dãy các phần tử rời rạc có thể kết nối với nhau theo mô tả của người sử dụng, được gọi là Mask-Programmable Gate Array (MPGA) chúng có cấu trúc cơ bản nhất là gồm các hàng transistor có thể được kết nối với nhau để thực hiện các mạch logic. Các kết nối do người dùng định nghĩa này có thể trong cả hàng và cả cột. Ưu điểm chính của MPGA so với PLD là nó cung cấp các kiến trúc tổng quát cho phép thực hiện các mạch logic lớn hơn.
Vì cấu trúc của chúng có thể mở rộng lớn hơn cùng với số lượng logic lớn hơn. FPGA đã kết hợp khả năng lập trình của PLD và kết cấu nối có thể mở rộng của MPGA. Do đó các thiết bị lập trình loại này có mật độ logíc cao hơn. FPGA được công ty Xilinx giới thiệu lần đầu tiên vào năm 1985 và đến nay đã có nhiều công ty phát triển như: Actel, Altera, Plessey, Plus logic, Quick.
Cấu trúc FPGA Hình 1-1. Cấu trúc FPGA 6 FPGA là mạch tích hợp chứa nhiều (64 đến hơn 10.000) ô logic (logic cell) giống nhau có thể xem là các thành phần chuẩn. Mỗi ô logic giữ một hay một số chức năng độc lập (Hình 1-1). Các ô giống nhau được kết nối bởi một ma trận đường dẫn và các chuyển mạch khả trình.
Người thực hiện thiết kế bằng các đặc trưng lôgic đơn của mỗi ô và lựa chọn đóng các chuyển mạch trong ma trận kết nối. Mảng của các ô lôgic và kiểu kết nối là kết cấu xây dựng khối cơ bản trong mạch lôgic. Các thiết kế phức tạp được tạo ra bằng cách kết hợp các khối cơ bản để tạo ra các mạch được mô tả. Mô hình tổng quát của FPGA gồm một dãy hai chiều các khối lôgic (logic block) có thể được kết nối bằng các nguồn kết nối chung.
Các nguồn kết nối gồm các đoạn kết nối (segment) có thể có chiều dài khác nhau. Bên trong các kết nối là các chuyển mạch lập trình được dùng để nối các khối lôgic với các đoạn dây, các khối vào/ra hay các đoạn dây với nhau. Mạch lôgic cài đặt trong FPGA bằng cách ánh xạ lôgic vào các khối lôgic riêng rẽ và sau đó nối các khối lôgic cấu hình (Configurable logic Block) cần thiết qua các chuyển mạch. Các khối CLB cung cấp các phần tử chức năng với cấu trúc sử dụng logic.
Các khối vào/ra (I/O Block) cung cấp giao diện giữa các gói chân và các đường tín hiệu bên trong. Tài nguyên kết nối khả trình cung cấp các bộ phận truyền dẫn tới kết nối đầu vào và đầu ra của các CLB và các IOB trong mạng riêng. Vậy cấu trúc FPGA gồm ba phần tử chính: Các khối lôgic cấu hình (CLB), các khối vào/ra (IOB) và các kết nối. Các khối lôgic cấu hình: Cấu trúc và nội dung của logic block được gọi theo kiến trúc của nó.
Kiến trúc của khối lôgic có thể thiết kế theo nhiều cách khác nhau, có thể là các cổng AND 2 ngõ nhập, các bộ dồn kênh (Multiplexer) hay các bảng tìm kiếm (Lock- up Table). Ngoài ra có thể chứa các Flip-Flop để hỗ trợ cho việc thực hiện một cách tuần tự. Các nguồn kết nối : Các nguồn kết nối có cấu trúc và nội dung được gọi là kiến trúc đường 7 (Routing Architecture). Kiến trúc Routing gồm các đoạn đây nối và các chuyển mạch khả trình.
Các chuyển mạch khả trình có cấu tạo khác nhau như pass- transistor, được điều khiển bởi các cell SRAM, các phần tử cầu chì nghịch, EPROM transistor và EEROM transitor. Giống như các khối lôgic có nhiều cách khác nhau để thiết kế các kiến trúc routing. Một số FPGA cung cấp nhiều kết nối đơn giản giữa các khối logic, một số khác cung cấp ít kết nối hơn nên routing phức tạp hơn. Phân loại FPGA FPGA có nhiều loại khác nhau có cấu trúc và đặc tính riêng tuỳ theo từng hãng sản xuất, tuy nhiên chúng có bốn loại chính sau: cấu trúc mảng đối xứng (Symmetrical Array), cấu trúc PLD phân cấp (hierachircal PLD), cấu trúc hàng (Row base) và cấu trúc đa cổng (Sea of Gate) mô tả dưới đây.2 Các loại cấu trúc FPGA 8 1.
Các công nghệ lập trình FPGA Có nhiều cách thực hiện các phần tử lập trình, các công nghệ lập trình hiện đang sử dụng là: RAM tĩnh, cầu chì nghịch (anti-fuse), EPROM transistor và EEROM transistor. Mặc dù công nghệ lập trình khác nhau, tất cả các phần tử lập trình đều có chung tính chất là có thể cấu hình được trong một trong hai trạng thái ON hoặc OFF. Các phần tử lập trình được dùng để thực hiện các kết nối lập trình được giữa các khối lôgic của các FPGA, còn FPGA thông thường có thể hơn 100.000 phần tử lập trình. Vì vậy các phần tử lập trình phải có những tính chất sau: - Chiếm càng ít diện tích của chíp càng tốt.
- Có trở kháng thấp khi ở trạng thái ON và trở kháng cao khi ở trạng thái OFF. - Có điện dung ký sinh thấp khi kết nối các đoạn dây. - Có thể chế tạo một cách tin cậy số lượng lớn phần tử lập trình trên một chíp. Có thể tuỳ thuộc vào ứng dụng cụ thể và có các số lượng phần tử lập trình có thể có các đặc tính khác.
Về mặt chế tạo, các phần tử lập trình nếu có thể chế tạo theo công nghệ CMOS chuẩn là tốt nhất. Dưới đây sẽ trình bày chi tiết các công nghệ lập trình FPGA. Công nghệ lập trình dùng RAM tĩnh Công nghệ lập trình dùng RAM tĩnh (SRAM) sử dụng công nghệ CMOS tiêu chuẩn. Các kết nối lập trình được điều khiển bằng các transistor khác trên chíp hoặc bật (On) các transistor truyền dẫn cũng như các cổng transistor để tạo một kết nối hay tắt (Off) để ngắt kết nối.3 Công nghệ lập trình ram tĩnh Trong trường hợp transistor truyền dẫn và cổng transistor như hình trên, phần tử RAM Cell điều khiển cổng truyền bật hoặc tắt.
Khi tắt giữa hai dây nối với cổng truyền dẫn sẽ có một trở kháng rất cao. Khi bật nó sẽ tạo một trở kháng thấp kết nối giữa hai dây nối. Đối với bộ dồn kênh, SRAM Cell điều khiển ngõ nhập nào của bộ dồn kênh sẽ được nối với ngõ ra của nó. Cách này thường dùng để kết nối tuỳ chọn từ một hay nhiều ngõ nhập của một khối logic.
Trong các FPGA sử dụng công nghệ lập trình SRAM, các khối logic có thể được kết hợp với nhau qua cách kết hợp cả bộ dồn kênh (Multiplexer) và cổng truyền dẫn (pass-gate).