CHƯƠNG 1: CÔNG NGHỆ FPGA Chương này tác giả trình bày về công nghệ FPGA, giới thiệu lịch sử phát triển của các vi mạch lập trình được, cấu trúc của công nghệ FPGA và mô tả chức năng của FPGA. Tác giả trình bày các khối cơ bản Board SPANRTN 3E của Xinlinx sẽ được ứng dụng để xây dựng cho bài thực hành môn điện tử số tại trường đại học CN Việt-Hung. GIỚI THIỆU VỀ CÔNG NGHỆ FPGA Công nghệ chế tạo mạch vi điện tử ngày nay đang có một sự thay đổi lớn: Từ một mạch tính hợp vi điện tử với cơ sở thiết bị công nghệ tiên tiến chế tạo ra với số lượng lớn chuyển dần sang các mạch chuyên dụng sản xuất với lô nhỏ tại các cơ sở có điều kiện công nghệ chưa phát triển. Sự thay đổi đó được hình thành nhờ các công cụ thiết kế tự động.
Động lực chính của quá trình thay đổi này là giảm thời gian thiết kế, chế tạo vi mạch và tăng tính linh hoạt cho ngừời thiết kế lập trình với những ứng dụng riêng biệt. FPGA (Field-Programmable Gate Array), là mạch tích hợp cỡ lớn trong đó cho phép người lập trình thay đổi các thiết kế của mình mà không phải sử dụng bất kỳ một công cụ chế tạo mạch tích hợp nào. FPGA là công nghệ tiên tiến nhất hiện nay của ngành công nghệ chế tạo IC (Integrated Circuit) chuyên biệt. Sự phát triển của các vi mạch lập trình được Các vi mạch lập trình được đóng vai trò quan trọng, lâu dài trong thiết kế các vi mạch với những ứng dụng riêng biệt trong ngành điện tử-viễn thông.
Chúng là các chíp đa dụng có thể được cấu hình theo nhiều cách cho ứng dụng. Các loại vi mạch lập trình đơn giản đầu tiên được sử dụng rộng rãi là PROM (Programmable Read Only Memory). 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. Hai biến thể của PROM là EPROM (Erasable Programmable Read Only Memory) và EEPROM (Electrically Erasable Programmable Read Only Memory) chúng điều có chung một ưu điểm là có thể xoá và lập trình nhiều lần.
15 Một loại vi mạch lập trình được khác được thiết kế đặc biệt để thể hiện các mạch lôgíc là PLD (Programmable Logic Device ). Một PLD thông thường 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. Có 2 loại cơ bản nhất của PLD là PAL (Programmable Array Logic), PLA (Programmable Logic Array). - PAL gồm một khối các cổng AND lập trình được nối đến một khối các cổng OR cố định [7].1: Cấu trúc của PAL Theo hình 1.1 các chân đầu vào được nối vào các đường theo chiều đứng, các đường nằm ngang được nối với các cổng AND – OR.
Cấu trúc này có các mắt lưới của các đường nối theo chiều ngang và chiều đứng. Tại mỗi điểm giao nhau là một cầu chì, với sự trợ giúp của các công cụ phần mềm, người thiết kế có thể lựa chọn mối nối nào không được nối thì huỷ cầu chì. Điều này được thực hiện bởi một bộ nạp chương trình. - PLA cũng có cấu trúc giống PAL nhưng tất cả các kết nối là lập trình được.2: Cấu trúc của PLA .Cả hai loại PAL và PLA cho phép thực hiện các mạch lôgí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 mạch lôgíc cỡ nhỏ.
Để thực thi các mạch yêu cầu nhiều đầu vào và nhiều đầu ra có nhiều chíp tinh vi hơn gọi là thiết bị lôgíc lập trình phức hợp CPLD (Complex Programmable Logic Devices). CPLD là kết hợp vài PLA vào trong một IC đơn để tạo ra các thiết bị logic phức hợp lập trình được [7].3: Cấu trúc của CPLD 17 Các CPLDs cực kỳ thích hợp trong việc mô tả các cổng logic phức tạp với tốc độ lớn 200 Mhz. Khuôn mẫu thời gian cho CPLD rất dễ tính toán, bởi thế trước khi bắt đầu thiết kế chúng ta có thể tính toán các tốc độ từ đầu vào đến đầu ra của mình dựa trên khuôn mẫu này. CPLDs đưa ra cách đơn giản nhất để thực hiện một thiết kế, một thiết kế có thể được mô tả bởi các sơ đồ hoặc bằng một ngôn ngữ mô tả phần cứng, đơn giản khi sử dụng các công cụ phát triển để tối ưu hoá, nạp và mô phỏng thiết kế.
Các công cụ thiết kế tạo ra một file chương trình mà file này được dùng để đưa các chuẩn logic vào trong một chip CPLD cùng với chức năng mong muốn. Giả sử nếu cần có một một sự thay đổi về thiết kế, chúng ta có thể đưa sự thay đổi thiết kế đó vào trong công cụ phát triển CPLD và thực thi trên nó sau đó có thể kiểm tra lại ngay thiết kế. CPLD có mức tích hợp rất cao và được đóng gói trong một khuôn dạng rất nhỏ. Điều này đã cung cấp một giải pháp tuyệt vời cho những người thiết kế cần sản phẩm của mình được đóng gói nhỏ gọn với diện tích bo mạch bị giới hạn về khoảng không.
Cấu trúc cơ bản của FPGA FPGA được công ty Xilinx giới thiệu lần đầu vào năm 1985 nhằm tạo ra một thiết bị lập trình có mật độ tích hợp cao. Kể từ đó cho đến nay có rất nhiều các hãng thiết kế và cung cấp các loại FPGA như Xilinx, Altera, Actel, Plus Logic… 18 1.Cấu trúc tổng quát của FPGA Hình 1.4: Cấu trúc chung của FPGA 1. Mô tả chức năng logic FPGA bao gồm một mảng các CLB(Configurable Logic Blocks) được đặt trong một ma trận của các kênh kết nối( Programmable Iterconnects). Đầu vào và đầu ra của các tín hiệu nhận được thông qua một sự thiết lập của các khối I/O Blocks xung quanh CLB và các kênh kết nối.
- Các khối logic (logic block): Kiến trúc của khối logic có thể được thiết kế theo nhiều cách khác nhau. CLB có thể chỉ là các cổng NAND 2 đầu vào, có thể nó là một bộ dồn kênh (multiplexer), hay các bảng tìm kiếm LUT (Luck-Up Table). Trong một số loại FPGA các khối logic có thể có cấu trúc hoàn toàn giống như PAL. Các khối logic chứa một số loại flip-flop để hỗ trợ cho việc thực hiện các mạch tuần tự.
CLB được sử dụng để thực hiện hầu hết các chức năng logic trong FPGA. Cấu trúc của các CLB được trình bày như sau: + Cấu trúc CLB là một bộ dồn kênh (multiplexer) hình 1.5: Tạo hàm 3 đầu vào bằng MUX + Cấu trúc CLB là một bảng tìm kiếm LUT (Luck-Up Table) hay được dùng trong FPGA, hình 1.6 mô tả LUT với 3 đầu vào [8].6: Bảng tìm kiếm LUT 3 đầu vào LUT thực hiện chức năng tạo hàm 3 đầu vào được mô tả như hình 1.7: Tạo hàm 3 đầu vào bằng LUT Ví dụ FPGA của Xilinx: CLB gồm các logic cell(LC), FPGA của hãng Altera gồm các logic element (LE), tuy nhiên LC và LE không khác nhau nhiều. Mỗi logic cell là một LUT 4 đầu vào được mô tả như hình 1.8 Mỗi LC chứa 1 flip-flop dùng làm thanh ghi (lưu trữ) các đầu ra của bộ tạo hàm, flip-flop và bộ tạo hàm có thể được sử dụng độc lập nhờ đầu vào e thông qua bộ chọn đường MUX, Flip-Flop được đồng bộ bởi xung clock, xung nhịp cho phép clock enable và tín hiệu điều khiển set/reset.8: Cấu trúc của môt LC trong FPGA của Xilinx 21 Bộ tạo chức năng của FPGA thực hiện như LUT có bốn đầu vào. Mỗi một LUT có thể cung cấp một RAM 16x1bit đồng bộ.
Hơn nữa hai LUT trong một Slice có thể được kết hợp để tạo RAM 16x2 bit hoặc 32x1 bit đồng bộ .9: CLB gồm có 4 Slice của FPGA - Các nguồn tài nguyên kết nối: Các nguồn kết nối trong FPGA được gọi là kiến trúc routing (routing architecture). Kiến trúc routing gồm các đoạn dây nối và các chuyển mạch lập trình được. Các chuyển mạch lập trình được có thể có nhiều cấu tạo khác nhau như : Transitor truyền (pass - transitor) được điều khiển bởi cell SRAM, cầu chì nghịch (anti - fuse), EPROM transitor và EEPROM transitor. Các đường dây ngang và dọc, đơn và đôi giao nhau trong một một ma trận chuyển mạch chương trình.
Mỗi Ma trận kết nối gồm chương trình có thể lập trình được thông qua transistor sử dụng để thiết lập kết nối giữa các đường như hình 1.10: Ma trận kết nối dùng Transitor truyền trong FPGA 22 + Kết nối giữa các CLB : Các kết nối giữa các CLB thông qua các ma trận kết nối để nối các CLB với nhau chạy dọc theo mỗi hàng và mỗi cột của mảng CLB. Các cách kết nối với nhau được mô tả trong hình 1. Các đường dây nối đơn: Các đường chiều dài đơn cung cấp kết nối thông một cách mềm dẻo nhất và đem lại sự định đường nhanh giữa các khối kề cận. Có 8 đường đơn dài dọc và 8 đường đơn dài ngang được kết hợp với từng CLB.
Nó được kết nối với ma trận chuyển mạch mà ma trận chuyển mạch này thì được định vị trong từng hàng và từng cột của CLB(hình 1. Các đường dây nối đôi: Đường dài đôi chứa một lưới các đoạn kim loại có độ dài bằng hai lần dây đơn. Chúng chạy qua hai CLB trước khi vào một ma trận chuyển mạch. Đường đôi được gộp trong một cặp xoắn với ma trận chuyển mạch và được đảo từng đường đi qua một ma trận chuyển mạch trong từng hàng, cột của CLB( hình 1.
Có 4 đường đôi ngang và 4 đường đôi dọc được kết nối với từng CLB.Các đường này cung cấp sự định đường tín hiệu nhanh hơn vượt khoảng cách trung gian, trong khi duy trì sự định đường mềm dẻo. Các đường dây nối dài: Các đường dây nối dài có dạng lưới gồm các đoạn dây dẫn kim loại kết nối bên trong theo chiều ngang hoặc chiều dọc của mảng. Đường dây dài dành cho các đầu ra cao, các mạng tín hiệu đồng bộ thời gian hoặc các mạng được phân bố với khoảng cách dài.11 a) + Kết nối giữa các IOB: Các kết nối ở IOB có dạng một vòng chạy xung quanh bên ngoài của mảng CLB. Kết nối I/O với các kênh kết nối CLB bao gồm 8 đường đôi và 4 đường đơn, đáp ứng hoàn toàn khả năng trao đổi chân, thiết kế lại.
mà không ảnh hưởng tới vẽ mạch.11: Các loại kết nối trong FPGA 1. Các khối vào ra(IOB) Người sử dụng có thể đặt cấu hình các khối vào ra IOB để tạo giao diện giữa các chân đóng vỏ bên ngoài với chức năng logic bên trong. Mỗi IOB điều khiển một chân đóng vỏ và có thể đặt cấu hình cho đầu I/O hoặc tín hiệu 2 chiều.12 minh hoạ chức năng đơn giản của IOB. Tín hiệu vào IOB có thể được đưa vào trực tiếp từ các kết nối(thông qua I1 I2 ở hình 1.