Chương 1 TỔNG QUAN VỀ FPGA 1. Gii thi u chung Ngày nay việc sử dụng một hệ FPGA ñang là một ñề tài rất ñược quan tâm trên thế giới, sở dĩ như vậy là do các lý do cơ bản sau: - Do sự phát triển rất nhanh của công nghệ bán dẫn, giá thành của chip FPGA ngày càng rẻ. - Việc sử dụng chip FPGA ñể phát triển sản phẩm sẽ rút ngắn ñược rất nhiều thời gian thiết kế cũng như thời gian ñưa sản phẩn ra thị trường so với một số phương pháp thiết kế truyền thống như ASIC. - Sử dụng công nghệ FPGA ñể verification một thiết kế ASIC cũng rút ngắn ñược rất nhiều thời gian simulation cũng như giảm ñược nhiều giá thành và công sức thiết kế.
Dưới ñây trình bày sơ lược về các thiết bị logic khả trình cũng như quy trình thiết kế dựa trên công nghệ FPGA, sở dĩ tác giả chỉ tập trung vào giới thiệu quy trình thiết kế dựa trên công nghệ FPGA là do tác giả sẽ sử dụng chip FPGA của Altera ñể thử Prototype thiết kế của tác giả. Phần ñầu tiên của chương này sẽ giới thiệu về các thiết bị PLD: khái niệm PLD, quá trình phát triển của các thiết bị PLD, cấu trúc của một vài loại thiết bị PLD và FPGA, công nghệ chế tạo cũng như tính năng và ứng dụng. Tng quan v thit b logic kh trình – PLD Field Programmable Device (FPD) – Một thuật ngữ chung ñể chỉ bất cứ loại mạch tích hợp nào ñược sử dụng ñể thực thi một phần cứng số, mà ở ñó con chip có thể ñược cấu hình lại bởi người dùng cuối nhằm thu ñược một thiết kế mới. Người dùng có thể cấu hình lại cho thiết bị ngay tại nơi thiết bị ñược sử dụng mà không cần ñem thiết bị cho nhà sản xuất thực hiện việc cấu hình.
Lập trình cho các thiết bị trên bao gồm việc ñưa con chip vào một thiết bị lập trình ñặc biệt (nạp cấu hình), nhưng một số khác có thể cấu hình ngay trên hệ thống (ISP – In System Programming). Một tên gọi khác của FPD là Programmable Logic Devices (PLD). Sau ñây ta sẽ ñi tìm hiểu kỹ hơn về các thiết bị PLDs cụ thể. PLD – Programable Logic Device là thiết bị logic số lập trình ñược, PLD ñược ñưa ra giới thiệu vào khoảng giữa thập kỷ 70, bắt nguồn từ ý tưởng chế tạo ra một mạch logic tổ hợp có khả năng tái lập trình lại phần cứng (khả trình), nhằm phục vụ cho việc thử nghiệm, tạo mẫu, phát triển ứng dụng, sản xuất ở quy mô nhỏ.
LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 8 Khác với vi xử lý, vi ñiều khiển hay các loại IC số ñã có trước ñây là chạy chương trình lập trình nhưng trên một phân cứng cố ñịnh, khả năng tái lập trình của PLDs nhằm ñạt ñến sự thay ñổi ở mức phần cứng. Nói theo cách khác, một PLDs là một chip ña mục ñích, có thể tái cấu hình lại phần cứng nhiều lần tùy theo ứng dụng khác nhau. PLDs ñầu tiên là các thiết bị PAL – Programmable Arrays Logic (Mảng logic khả trình) hay PLA. Các thiết bị này chỉ sử dụng các cổng logic số AND, OR (không có các flip-flop), cho phép thực hiện các mạch logic tổ hợp và không thực hiện ñược logic dãy.
ðể khắc phục nhược ñiểm này, các thanh ghi cho PLD ñã ñược ñưa ra nhằm thêm vào mỗi ñầu ra một flip-flop, do ñó có thể thực hiện ñược các hàm logic dãy ñơn giản. ðầu thập niên 1980s, một mạch logic mới ñược ñưa vào các ñầu ra của PLD. Cấu trúc tế bào ñầu ra mới gọi là Macro Cell, chứa ñựng các flip-flop, cổng logic và bộ dồn kênh (MUX). Sự cải tiến này ñem lại cho PLDs khả năng linh hoạt hơn trong các thiết kế.
Kiến trúc mới của PLDs ñược gọi là GAL – generic PAL. Các PLA, PAL, GAL ñược gọi chung là thiết bị logic khả trình ñơn giản – Simple PLDs (SPLD). ðến các thế hệ tiếp sau, một vài GAL ñược chế tạo ra, có cấu trúc phức tạp hơn, sử dụng công nghệ bán dẫn tiên tiến và nhiều tính năng hơn (như chuẩn JTAG, giao diện logic với nhiều chuẩn logic khác nhau …). Một thế hệ các thiết bị PLD mới ra ñời và ñược biết tới là thiết bị logic số khả trình phức tạp - Complex PLD (CPLD).
CPLD có mật ñộ tích hợp cao, hiệu suất cao, giá thành thấp (có CPLD giá dưới 1USD) ðến giữa thập kỷ 80, FPGAs (Field Programmable Gate Arrays) ñược ñưa ra giới thiệu. FPGA có nhiều ñiểm khác biệt với CPLD về kiến trúc, công nghệ, tính năng ñi kèm và về giá thành. FPGA nhắm tới những thiết bị mạch logic cỡ lớn, hiệu suất cao. - PLA Simple PLD(SPLD) - PAL - Register PLA/PAL - GAL Complex PLD (CPLD) FPGA (Field Programmable Gate Arrays) Bảng 1 - 1: Tóm tắt về các thiết bị PLD LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 9 Trong các phần tiếp theo ta sẽ ñi tìm hiểu về 2 loại thiết bị PLD ñó là các thiết bị PLD ñơn giản (SPLD) và thiết bị PLD phức tạp (CPLD, FPGA).
Thit b logic kh trình ñ$n gin – Simple PLD Như ñã ñề cập ở trên, các thiết bị PAL, PLA và GAL ñược gọi chung là các thiết bị logic khả trình ñơn giản – Simple PLD. Dưới ñây sẽ trình bày cụ thể cấu trúc của mỗi loại SPLDs 1.1 Thiết bị PAL PAL – Programmable Array Logic chip ñược ñưa ra giới thiệu bởi Monolithic Memories khoảng giữa thập kỷ 70. Cấu trúc của PAL: Mảng cổng AND khả trình, theo sau là các cổng OR cố ñịnh. Các ñầu vào ñược nối ñến các cổng AND thông qua ma trận các ñiểm nối lập trình ñược, ñầu ra của các cổng AND ñưa ñến cổng OR và ñến ñầu ra.
Hình dưới ñây mô tả cấu trúc của một PAL (Hình 2. Với cấu trúc phần cứng ñó, khả năng của PAL là chỉ cho phép thực hiện các hàm tổ hợp, nếu gọi a1, a2,. aN là các tìn hiệu ñầu vào, x là tìn hiệu ñầu ra, ta có hàm tổ hợp: x = m1 + m2 +. + mM với m = fi(a1,a2,.aN) lấy ví dụ: x = a1a2 + a2 a3 a4 + a1a2 a3 a4 a5 ðể khắc phục nhược ñiểm này, cuối những năm 70, Registered PALs (RPALs) ñược ñưa ra giới thiệu.
RPALs có thêm các flip-flop tại mỗi ñầu ra của cổng OR, ñiều ñó cho phép RPALs thực hiện ñược cả các hàm logic tổ hợp và logic dãy ñơn giản. Một ví dụ ñiển hình cho các thiết bị PAL thông dụng là chíp PAL16L8 có 16 ñầu vào, 8 ñầu ra nhưng với kiểu ñóng vỏ PDIP-20 nên chỉ có 10 chân là vào cho tín hiệu, 2 chân ra cho tín hiệu và 6 chân vào/ra. Thiết bị PLA ðưa ra giới thiệu vào giữa những năm 70 bởi hãng Signetics. Cấu trúc PLA khác với PALs ở chỗ, các thiết bị PLAs có mảng kết nối AND và OR ñều lập trình ñược, ñem lại cho PLA tính linh hoạt hơn PAL trong các thiết kế logic số.
Nhược ñiểm: Số ñiểm nối nhiều dẫn ñến tốc ñộ chậm Một PLA ñiển hình là Signetics PLS161 với 12 vào và 8 ra. Công nghệ chế tạo ra PLA giống với công nghệ chế tạo PAL. Mặc dù ngày nay các thiết bị PLA ñã cũ, xong chúng lại ñược xuất hiện trở lại gần ñây như là một khối kiến trúc trong họ CPLDs tiêu thụ năng lượng thấp, họ CoolRunner (Xilinx) LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 10 Kết nối lập trình ñược Hình 1 - 1 Cấu trúc một thiết bị PAL. Hình 1 - 2 Cấu trúc một thiết bị PLA.
LUAN VAN CHAT LUONG download : add luanvanchat@agmail. Thiết bị GAL ðược giới thiệu bởi Lattice vào ñầu những năm 1980 Thiết bị GAL ra ñời có nhiều cải tiến quan trọng trong cấu trúc so với 2 loại PLD trước ñó là PAL, PLA ở các ñiểm sau: - Các tế bào ñầu ra phức tạp hơn ñược ñưa ra (còn gọi là Macro Cell – MC). Mỗi MC chứa 1 FF, một vài cổng và một bộ MUX. - Mỗi MC ñều có thể lập trình ñược, cho phép nhiều chế ñộ hoạt ñộng.
- Có tín hiệu phản hồi từ ñầu ra MC trở lại mảng lập trình. - EEPROM ñược sử dụng thay thế cho PROM và EPROM Hình dưới trình bày cấu trúc của GAL (Hình 1. Hình 1 - 3: Cấu trúc chip GAL 16V8. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 12 GAL16V8 có 16 ñầu vào và 8 ñầu ra ñược bố trí ñóng vỏ 20 chân, 8 vào và 8 vào/ra.
Mỗi ñầu ra có một MC GAL sử dụng công nghệ CMOS, EEPROM hay Flash và tốc ñộ có thể lên tới 250MHz Một số nhà sản xuất GAL: Lattice, Atmel, TI… 1. Thit b logic kh trình ph*c t+p – Complex PLD Sự ra ñời của các thiết bị số khả trình phức tạp – CPLD và FPGA là một cuộc cách mạng trong ngành công nghiệp ñiện tử. Một thiết kế logic phức tạp với hàng chục, hàng trăm các loại cổng logic cùng với ñó là các vấn ñề về nguồn tiêu thụ, trễ truyền ñạt, tính ổn ñịnh của hệ thống…tất cả sẽ ñược tích hợp trong một linh kiện số duy nhất. CPLDs là thiết bị PLD có cấu trúc phức tạp hơn các SPLDs khác.
Bên trong mỗi CPLD chứa ñựng nhiều PLDs khác ( thường thuộc loại GAL ) ñược chế tạo như là một chip ñơn. Ngoài ra, CPLD còn một ma trận chuyển mạch ñể kết nối các PLDs với các ñầu vào ra. Chức năng của CPLD bao gồm: Mỗi ñầu ra có kết nối ñến các Macrocells Có thêm tính năng như JTAG Hỗ trợ chuẩn giao tiếp với các mức logic khác nhau: 1V8, 2V5, 3V3, 5V Hình 1 - 4: Cấu trúc chung của một CPLD. ðể làm rõ hơn, ta ñi vào phân tích thêm cấu trúc CPLD họ XC9500 của hãng Xilinx.
Mỗi một CPLD gồm có nPLD mà ở ñây mỗi PLD chính là GAL36V18 (giống như kiến trúc của GAL16V8, nhưng có 36 ñầu vào và 18 ñầu ra, thay vì 16 ñầu vào và 8 ñầu ra của GAL16V8, do ñó GAL36V18 có 18 Macrocells cho mỗi ñầu ra). Khối I/O LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 13 Blocks quản lý các chân vào/ra dữ liệu của PLD. Khối kết nối giữa các I/O Blocks và GAL36V18 là một ma trận chuyển mạch tốc ñộ cao (Fast CONNECT II Switch Matrix). Chính nhờ cấu trúc linh hoạt và tốc ñộ kết nối cao (Trễ truyền ñạt chỉ cỡ 5nS), các thiết bị CPLD là một giải pháp thay thế cho các mạch số cồng kềnh, tốc ñộ chậm, làm tăng hiệu năng hệ thống và tăng tốc ñộ xử lý thông tin.
Hình 1 - 5 Cấu trúc CPLD XC9500 của Xilinx Một số nhà cung cấp các linh kiện PLD và CPLD Xilinx (XC9500, CoolRunner…) Altera (Max3000.