Nghiên cứu, thiết kế vi xử lý 8 bit dựa trên công nghệ FPGA

  • Số trang: 102 |
  • Loại file: PDF |
  • Lượt xem: 18 |
  • Lượt tải: 0
nhattuvisu

Đã đăng 26946 tài liệu

Mô tả:

1 MỤC LỤC DANH MỤC BẢNG.......................................................................................................... 3 DANH MỤC HÌNH VẼ...................................................................................................... 4 LỜI NÓI ðẦU .................................................................................................................. 6 CHƯƠNG 1 TỔNG QUAN VỀ FPGA.............................................................................. 7 1.1. Giới thiệu chung.................................................................................................................................................... 7 1.2. Tổng quan về thiết bị logic khả trình – PLD ...................................................................................................... 7 1.3. Thiết bị logic khả trình ñơn giản – Simple PLD ................................................................................................ 9 1.4. Thiết bị logic khả trình phức tạp – Complex PLD........................................................................................... 12 1.5. FPGA – Field Programmable Gate Arrays ..................................................................................................... 15 CHƯƠNG 2 THIẾT KẾ TẬP LỆNH ............................................................................... 22 2.1. Mô tả chung về tập lệnh. .................................................................................................................................... 22 2.2. Thiết kế chi tiết tập lệnh..................................................................................................................................... 23 CHƯƠNG 3 THIẾT KẾ KIẾN TRÚC VI XỬ LÍ .............................................................. 27 3.1. Giới thiệu. ............................................................................................................................................................ 27 3.2. Thiết kế datapath và ñiều khiển cho RICS....................................................................................................... 28 3.4. Xây dựng module ñiều khiển ............................................................................................................................. 45 3.5. Tổ chức bộ nhớ.................................................................................................................................................... 45 CHƯƠNG 4: THIẾT KẾ TESTBENCH VÀ PHƯƠNG PHÁP MÔ PHỎNG TRÊN MODELSIM ................................................................................................................... 51 4.1. Giới thiệu ............................................................................................................................................................. 52 4.2. Thiết kế hệ mô phỏng. ........................................................................................................................................ 53 4.3. Mô phỏng ñể kiểm tra thiết kế........................................................................................................................... 55 CHƯƠNG 5: THIẾT KẾ CHI TIẾT CHỨC NĂNG CỦA VI ðIỀU KHIỂN VÀ MÔ PHỎNG TRÊN MODELSIM......................................................................................................... 58 5.1. Giới thiệu chung.................................................................................................................................................. 58 2 5.2. Thiết kế và mô phỏng chức năng của các module cơ bản trong vi xử lý. ............................................... 59 5.3 Thiết kế bộ mô phỏng hệ thống tự ñộng. ................................................................................................... 68 5.4 Mô phỏng vi ñiều khiển thực hiện một ñoạn chương trình ñơn giản, kiểm tra chức năng các module trong vi ñiều khiển. .................................................................................................................................................... 72 CHƯƠNG 6 TRIỂN KHAI TRÊN KÍT DE2 VÀ MỘT ỨNG DỤNG ðƠN GIẢN ............. 79 6.1 Tổng quan về Kit DE2 ......................................................................................................................................... 79 6.2 Triển khai và chạy thử trên kít DE2. ................................................................................................................. 80 6.3 Một ứng dụng nhỏ sử dụng vi ñiều khiển 8 bít.................................................................................................. 81 KẾT LUẬN. ................................................................................................................... 83 TÀI LIỆU THAM KHẢO................................................................................................. 85 Phụ lục 1: Các chương trình test bench dùng ñể mô phỏng và kiểm tra chức năng của vi ñiều khiển.............. 86 Phụ lục 2. Mã nguồn Verilog của nhân vi ñiều khiển. ............................................................................................ 88 3 DANH MỤC BẢNG Bảng 1 - 1: Tóm tắt về các thiết bị PLD .............................................................................. 8 Bảng 1 - 2 Altera CPLD. ................................................................................................... 14 Bảng 1 - 3 Xilinx CPLD. .................................................................................................... 14 Bảng 2- 1: Các lệnh hướng byte của vi ñiều khiển............................................................ 24 Bảng 2- 2: Các lệnh hướng bít của vi ñiều khiển .............................................................. 25 Bảng 2- 3: Các lệnh rẽ nhánh của vi ñiều khiển ............................................................... 26 Bảng 3 - 1: Các thanh ghi chức năng ñặc biệt .................................................................. 47 Bảng 3 - 2: Thanh ghi trạng thái của vi ñiều khiển........................................................... 48 Bảng 5 - 1: Lối vào ñiều khiển của ALU ........................................................................... 61 Bảng 5 - 2: Mã nguồn chương trình ñược mô phỏng. ....................................................... 73 Bảng 5 - 3: Các testbench ñược dùng ñể mô phỏng và kiểm tra chức năng của vi ñiều khiển................................................................................................................................... 78 4 DANH MỤC HÌNH VẼ Hình 1 - 1 Cấu trúc một thiết bị PAL............................................................................................. 10 Hình 1 - 2 Cấu trúc một thiết bị PLA............................................................................................. 10 Hình 1 - 3: Cấu trúc chip GAL 16V8............................................................................................. 11 Hình 1 - 4: Cấu trúc chung của một CPLD. .................................................................................. 12 Hình 1 - 5 Cấu trúc CPLD XC9500 của Xilinx ............................................................................. 13 Hình 1 - 6: Cấu trúc chung của FPGA. ......................................................................................... 16 Hình 1 - 7: Cấu trúc một CLB trong FPGA họ XC40000E ........................................................... 17 Hình 1 - 8: Cấu trúc một Logic Cell trong Spartan-IIE ................................................................ 18 Hình 1 - 9 Cấu trúc IOB trong Spartan-IIE................................................................................... 18 Hình 1 - 10: Liên kết trong một chuyển mạch. .............................................................................. 19 Hình 1 - 11 Mạng liên kết giữa các CLB. ...................................................................................... 19 Hình 1 - 12 Các kết nối trực tiếp giữa các khối trong FPGA........................................................ 20 Hình 1 - 13 FPGA Spartan IIE của Xilinx..................................................................................... 20 Hình 2- 1: ðịnh dạng các lệnh hướng byte ................................................................................... 23 Hình 2- 2 ðịnh dạng các lệnh hướng bít ....................................................................................... 24 Hình 2- 3: ðịnh dạng các lệnh rẽ nhánh ...................................................................................... 25 Hình 2- 4: ðịnh dạng của lệnh goto .............................................................................................. 25 Hình 3- 1: Một datapath ñơn giản và mô ñun ñiều khiển tương ứng ............................................ 28 Hình 3- 2: Tổng quan về kiến trúc của vi ñiều khiển..................................................................... 30 Hình 3- 3: Mô hình ñiều khiển datapath........................................................................................ 31 Hình 3- 4: Bộ nhớ chương trình, PC và module tính PC+1 ñược kết nối với nhau tạo thành datapath ñơn giản .......................................................................................................................... 33 Hình 3- 5: Tệp thanh ghi (register file) ......................................................................................... 33 Hình 3- 6: Bộ logic và số học ALU................................................................................................ 34 Hình 3- 7: Kết nối bộ logic và số học với register file .................................................................. 34 Hình 3- 8: Datapath ñơn giản sau khi ñã kết nối các thành phần của vi ñiều khiển với nhau. .... 35 Hình 3- 9: Datapath của vi ñiều khiển sau khi ñã ñược thêm vào các thanh ghi pipeline ñể có thể thực hiện ñược kĩ thuật xử lý ñường ống. ...................................................................................... 39 Hình 3- 10: Trạng thái của datapath khi thực hiện pha ñầu tiên, tìm và nạp lệnh. ...................... 40 Hình 3- 11: Trạng thái của datapath khi thực hiện bước giải mã lệnh và ñọc dữ liệu từ register file. ................................................................................................................................................. 41 Hình 3- 12: Trạng thái của datapath khi thực hiện bước thực thi lệnh......................................... 42 5 Hình 3- 13: Datapath sau khi ñã thêm khối ñiều khiển. ................................................................ 43 Hình 3- 14: Tổ chức bộ nhớ chương trình của vi ñiều khiển......................................................... 46 Hình 3- 15: Tiến trình thực hiện lệnh GOTO ................................................................................ 48 Hình 3- 16: Tiến trình thực hiện lệnh CALL.................................................................................. 49 Hình 3- 17: Tổ chức bộ nhớ dữ liệu, bao gồm cả thanh ghi chức năng ñặc biệt và thanh ghi chức năng chung..................................................................................................................................... 49 Hình 3- 18: Sơ ñồ kiến trúc của vi xử lý. ....................................................................................... 50 Hình 4 - 1 Môi trường ñồng mô phỏng ñồng nhất......................................................................... 54 Hình 4 - 2 Môi trường ñồng mô phỏng không ñồng nhất .............................................................. 55 Hình 5 - 1: Bộ lô gic và số học ALU.............................................................................................. 60 Hình 5 - 2 MUX lựa chọn lối vào cho S1 của bộ ALU. ................................................................. 60 Hình 5 - 3: Bộ nhớ RAM single port ñược dùng làm bộ nhớ chương trình................................... 62 Hình 5 - 4: Sơ ñồ khối của bộ nhớ chương trình ........................................................................... 63 Hình 5 - 5: Sơ ñồ khối của bộ chia tần số ..................................................................................... 64 Hình 5 - 6: Sơ ñồ khối của bộ nhớ chương trình ........................................................................... 64 Hình 5 - 7: IP core ñược dùng ñể làm bộ nhớ chương trình ......................................................... 66 Hình 5 - 8: Sơ ñồ bên trong của register file................................................................................. 67 Hình 5 - 9: Bộ nhớ Stack................................................................................................................ 68 Hình 5 - 10: Kết quả mô phỏng PC và bộ nhớ chương trình của vi ñiều khiển ........................... 74 Hình 5 - 11: Kết quả mô phỏng khối ALU ..................................................................................... 75 Hình 5 - 12: Kết quả mô phỏng register file.................................................................................. 76 Hình 6 - 1 Sơ ñồ các thành phần trên kít phát triển DE2.............................................................. 80 Hình 6 - 2: Lưu ñồ thuật toán thực hiện chạy chữ trên LCD. ....................................................... 82 6 LỜI NÓI ðẦU Với xu hướng phát triển rất nhanh của các bộ vi xử lý cũng như yêu cầu ngày càng cao của người dùng, việc phát triển một một bộ vi xử lý với tốc ñộ tính toán thật mạnh ñã và ñang là yêu cầu khẩn thiết ñối với những nhà phát triển công nghệ. Việc thiết kế các bộ vi xử lý có khả năng tính toán cao không còn là một vấn ñề mới mẻ trên thế giới, nhưng với Việt Nam nó vẫn ñòi hỏi phải vượt qua những khó khăn nhất ñịnh. Trong luận văn này tác giả không có tham vọng thiết kế một bộ vi xử lý có khả năng tính toán cao mà chủ yếu tập trung vào phân tích kiến trúc và thiết kế một vi xử lý ñơn giản. Mục ñích chính của tác giả là nắm ñược kiến trúc, quy trình thiết kế, triển khai và kiểm ñịnh một vi xử lý. Trên cơ sở ñó tác giả sẽ mở rộng, cải tiến một vài mô ñun, chức năng của vi xử lý ñể nâng cao dần hiệu suất tính toán của vi xử lý. Kết quả của luận văn sẽ là tiền ñề ñể tác giả có thể phát triển những vi xử lý mới có tốc ñộ xử lý cao hơn. Luận văn sẽ bắt ñầu với việc tìm hiểu về xu hướng cũng như những loại thiệt bị lôgic lập trình ñược hiện nay, tìm hiểu, thiết kế tập lệnh, datapath và bộ ñiều khiển cho một vi xử lý 8 bít ñơn giản dựa trên kiến trúc RISC với 33 lệnh trong tập lệnh, tiến hành triển khai bằng ngôn ngữ Verilog và mô phỏng kiểm tra chức năng của vi xử lý bằng phần mềm ModelSim. Mục ñích chính của phần ñầu này là hiểu về quy trình thiết kế và xây dựng môi trường phát triển. Sau ñó tác giả sẽ cải tiến dần vi xử lý ñể có thể có khả năng tính toán tốt hơn, như áp dụng kĩ thuật ñường ống pipeline, nâng ñộ sâu của bộ nhớ stack, mở rộng không gian nhớ của bộ nhớ chương trình và bộ nhớ dữ liệu dùng kĩ thuật banking. Cuối cùng thực hiện tổng hợp thiết kế trên kít FPGA DE2 của Altera và chạy thử các chương trình nhỏ. Phần cuối cùng tác giả sẽ trình bày về một ứng dụng nhỏ sử dụng vi ñiều khiển vừa ñược thiết kế. Kết quả cho thấy, vi ñiều khiển có thể thực hiện ñúng ñược những chức năng cơ bản. 7 Chương 1 TỔNG QUAN VỀ FPGA 1.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. 1.2. 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ỏ. 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 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). 1.3. 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.3.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.1). 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. 1.3.2. 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) 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. 11 1.3.3. 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.3). Hình 1 - 3: Cấu trúc chip GAL 16V8. 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.4. 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 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.Max7000…)  Lattice  Atmel  Cypress 14 Dưới ñây là bảng liệt kê một số loại CPLDs do 2 hãng cung cấp lớn trên thế giới là Xilinx và Altera Bảng 1 - 2 Altera CPLD. Bảng 1 - 3 Xilinx CPLD. 15 1.5. FPGA – Field Programmable Gate Arrays 1.5.1. Giới thiệu về FPGA FPGA ñược ñưa ra giới thiệu lần ñầu tiên giữa những năm 1980 bởi Xilinx. FPGA là từ viết tắt của Field Programmable Gate Arrays – Mảng cổng khả trình. FPGA cũng là một thiết bị FPD mà ta ñã ñề cập ở trên. Từ “Field” trong thuật ngữ FPGA bao hàm ý nghĩa về khả năng tái cấu hình lại phần cứng cho FPGA bởi người dùng cuối (enduser) ngay tại nơi sử dụng mà không cần mang trở lại cho nhà sản xuất cấu hình. ðó chính là một ñiểm mạnh của FPGA cũng như các thiết bị PLD khác. Ross Freeman, người ñồng sáng lập ra hãng Xilinx, phát minh ra FPGA vào năm 1984. FPGA bắt nguồn từ sự phát triển của thiết bị logic khả trình phức tạp (CPLD_Complex Programmable Devices) có từ giữa những năm 80 của thế kỉ 20. CPLD và FPGA ñều chứa một số lượng lớn các thành phần logic khả trình có liên quan ñến nhau. Trong khi mật ñộ cổng logic trong CPLD chỉ có vài nghìn ñến vài chục nghìn thì trong FPGA có khoảng từ vài chục nghìn ñến vài triệu cổng. FPGA có nhiều khác biệt so với CPLDs về cấu trúc, công nghệ lưu trữ, tính năng hỗ trợ và giá thành, hiệu suất cao, cho phép thực hiện những mạch tích hợp cỡ lớn. FPGA là một vi mạch chứa các logic cells. Mỗi logic cells thực hiện chức năng của các mạch logic và ñược kết nối với nhau bởi ma trận kết nối và chuyển mạch lập trình ñược. FPGA là tập hợp các phần tử rời rạc ñược kết nối theo một cách chung. Một ñiểm khác biệt cần chú ý giữa FPGA và CPLD là sự có mặt của các hệ nhúng trong hầu hết các sản phẩm FPGA. Sự khác biệt quan trọng là có nhiều FPGA hiện ñại hỗ trợ ñầy ñủ hoặc một phần khả năng cấu hình lại trong hệ thống, cho phép thiết kế có thể ñược thay ñổi cũng như nâng cấp hệ thống hoặc cho việc cấu hình ñộng trở lại như là một phần bình thường của hệ ñiều hành. Một vài FPGA có khả năng cấu hình riêng cho phép một phần của thiết bị ñược lập trình lại trong khi những phần khác vẫn hoạt ñộng bình thường. Xu hướng phát triển gần ñây là việc kết hợp các khối logic, các liên kết trong FPGA truyền thống với vi xử lý nhúng và những ngoại vi có liên quan ñể tạo nên một “hệ thống trên một chip khả trình” hoàn thiện. Ta có thể tìm thấy những thiết kế ñó trong một số thiết bị Xilinx Virtex-II PRO và Virtex-4 có chứa một hoặc nhiều lõi xử lý nhúng Power PC trong phạm vi kết cấu logic của FPGA. Atmel FPSLIC là một thiết bị tương tự cũng có lõi vi xử lý AVR kết hợp với cấu trúc logic khả trình của Atmel. Ngoài các lõi vi xử lý cứng còn có các lõi vi xử lý mềm là một thành phần trong phạm vi tài nguyên logic của FPGA. Những lõi này bao gồm: Xilinx MicroBlaze và Pico Blaze, vi xử lý Altera 16 Nios và Nios II, và nguồn mở LatticeMicro32 và LatticeMicro 8, giống như là lõi xử lý thứ 3. Nhiều FPGA hiện ñại có khả năng ñể lập trình lại trong khi ñang hoạt ñộng, và ñiều này rất quan trọng cho ý tưởng của việc tính toán cấu hình lại hoặc hệ thống cấu hình lại ñể tự cấu hình lại phù hợp với hoạt ñộng sắp tới. Những công cụ FPGA hiện nay chưa hoàn toàn hỗ trợ ñầy ñủ cho phương thức này. Hiện nay FPGA không có cấu trúc ñang bắt ñầu xuất hiện. Vi xử lý cấu hình phần mềm như Stretch S5000 chọn hướng tiến ñến hệ lai bằng cách cung cấp một mảng các lõi xử lý và FPGA giống như lõi khả trình trên cùng một chip. Các thiết bị khác cung cấp các mảng của các ñối tượng khả trình cấp cao nằm giữa khỗi logic của FPGA và các xử lý phức tạp. 1.5.2. Kiến trúc của FPGA Hình dưới trình bày cấu trúc cơ bản của một FPGA (Hình 1 - 6) Hình 1 - 6: Cấu trúc chung của FPGA. Kiến trúc cơ bản của một FPGA gồm có: - Các khối logic có thể cấu hình lại ñược – CLB (Configuable Logic Blocks) - Ma trận chuyển mạch (Swith Matrix) ñể kết nối các CLBs – kết nối lập trình ñược - Các khối vào ra – IOB (In/Out Blocks) 17 Khối CLB: Cấu trúc bên trong của các CLBs rất khác biệt so với PLD. ðầu tiên, thay vì sử dụng các cổng logic AND và OR như trong các SPLD, mỗi CLB hoạt ñộng dựa trên một LUT (Lookup Table) – Bộ tạo hàm. Nhiệm vụ của LUT là xác ñịnh giá trị các ñầu ra dựa trên giá trị của các ñầu vào. IN OUT 0110 0 1011 0 1100 1 Hình 1 - 7: Cấu trúc một CLB trong FPGA họ XC40000E Mỗi CLB gồm 4-logic-cell, Logic cell gồm 2 LUT giống nhau, mỗi LUT gồm 4 ngõ vào, tín hiệu ñiều khiển và FF-D. Trong mỗi CLB có hai bộ ñiều khiển ngõ ra 3 trạng thái (BUFT). Mỗi BUFT có chân ñiều khiển và ngõ vào ñộc lập. 18 Hình 1 - 8: Cấu trúc một Logic Cell trong Spartan-IIE Khối vào ra – IOB: Tín hiệu vào ñi qua 1 bộ ñệm, tín hiệu ra qua bộ ñệm 3 trạng thái, theo các chuẩn, bộ nhớ/giao tiếp Bus. Mỗi IOB gồm 3 Flip-Flop chia chung 1 tín hiệu Clock và các tín hiệu CE (Clock Enable), ñiều khiển ñộc lập cho từng Flip-Flop. Hình 1 - 9 Cấu trúc IOB trong Spartan-IIE. Ma trận chuyển mạch: Như ta thấy trên hình 1-11, ma trận chuyển mạch bao gồm vô số các dây nối, các kênh liên kết ñan chéo ngang dọc bên trong FPGA bao quanh 19 các CLB (kênh ngang và kênh dọc). Các CLB thông qua mạng chuyển mạch và thuật toán ñịnh tuyến có thể kết nối ñến bất kỳ một CLB nào khác. Tại ñiểm phân cắt của kênh ngang và kênh dọc ñều có một hộp chuyển mạch. Trong cấu trúc này, khi một dây ñi vào một hộp chuyển mạch, có 6 công tắc khả trình cho phép nó kết nối ñến các dây còn lại trong các ñoạn liền kề. Mô hình topology của chuyển mạch sử dụng trong cấu trúc này là phẳng hoặc trong phạm vi cấp cơ sở của topology hộp chuyển mạch. Trong topology hộp chuyển mạch này, một dây trong track số một chỉ nối với dây trong track số một của các ñoạn liền kề, những dây trong track 2 chỉ nối với những dây trong track 2, và cứ tiếp tục như vậy. Hình 1-10 dưới ñây sẽ mô tả những liên kết trong một hộp chuyển mạch: Hình 1 - 10: Liên kết trong một chuyển mạch. Hình 1 - 11 Mạng liên kết giữa các CLB. Các kết nối trực tiếp: Trong FPGA, việc kết nối giữa các CLB thông qua mạng chuyển mạch, còn có các kết nối trực tiếp khác ñó là: 20 - Kết nối giữa CLB liền kề - Kết nối giữa các CLB cách xa nhau - Kết nối giữa CLB ñến IOB Hình 1 - 12 Các kết nối trực tiếp giữa các khối trong FPGA. Hình 1 - 13 FPGA Spartan IIE của Xilinx. 1.5.3. Các khối chức năng của FPGA và ứng dụng FPGA Các khối chức năng của FPGA:
- Xem thêm -