2.1.1. 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.
2.1.1.1. Sự phát triển của các thiết bị lập trình được.
Các thiết bị 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. Loại đầu tiên của thiết bị lập trình đƣợ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.
Có hai loại PROM cơ bản, một loại chỉ có thể lập trình bởi nhà sản xuất gọi là
mask programmable và một loại có thể lập trình bởi ngƣời sử dụng gọi là field programmable. Các chíp mask programmable có tốc độ làm việ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. Ngƣợc lại, các kết nối của field programmable luôn cần đến một số loại chuyển mạch lập trình đƣợc (cầu chì, transistos truyền...) vì vậy tốc độ chậm hơn kết nối cứng. Tuy nhiên, thiết bị field programmable có nhiều ƣu điểm giá trị hơn là sự hạn chế về tốc độ nhƣ:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
- Các chíp field programmable rẻ hơn các chíp mask programmable khi sản xuất với số lƣợng nhỏ.
- Các chíp field programmable có thể lập trình tức thì trong một thời gian rất ngắn, trong khi các chíp mask programmable khi sản xuất phải mất hàng tháng.
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.
Một loại thiết bị 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. Loại cơ bản nhất của
PLD là PAL (Programmable Array Logic). 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. Một loại PLD khác linh hoạt hơn
đó là PLA (Programmable Logic Array) 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.
Hình 2.1: Cấu trúc của PLA Hình 2.2: Cấu trúc của PAL
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 trì, 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 trì mà không cần dùng đó đi (nung nóng và thổi đứt cầu trì đó). Điều này đƣợc thực hiện bởi một bộ nạp chƣơng trình.
Theo hình 2.2 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, lần lƣợt các đƣờng này đƣợc
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
nối với các Flip - Flop (nhƣ: D, T, RS).
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), họ này là kết quả của việc tăng mật độ của họ PLDs lên nhiều lần . Khái niệm này đƣợc hiểu là có một số khối PLD hoặc các macrocell (tế bào vĩ mô) ở trong một thiết bị đơn cùng với các đƣờng nối liền đa năng giữa chúng. Các đƣờng nối của các đơn vị logic đơn giản có thể đƣợc thực thi ở trong một khối đơn. Nhiều đơn vị logic phức tạp yêu cầu nhiều khối và sử dụng các đƣờng nối đa năng giữa chúng để tạo nên các kết nối phức tạp hơn.
Hình 2.3: Cấu trúc của CPLD
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ự
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
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.
FPGA (mảng cổng có thể lập trình đƣợc theo hàng) đƣợ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…
2.1.1.2. Cấu trúc cơ bản của FPGA.
FPGA gồm một dãy các phần tử rời rạc có thể đƣợc kết nối với nhau bằng các nguồn kết nối chung. Các kết nối giữa các phần tử có thể lập trình đƣợc. Hình 2.4 giới thiệu về mô hình tổng quát của một FPGA. Nó gồm dãy 2 chiều các logic block có thể đƣợc kết nối bằng các nguồn kết nối chung. Nguồn kết nối là các đoạn dây (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 logic block với các segment hoặc giữa các segment với nhau. Mạch lôgíc đƣợc cài đặt trong FPGA bằng cách ánh xạ lôgíc vào các logic block riêng rẽ và sau đó nối các logic block cần thiết qua các chuyển mạch. Trong đó có các khối:
- Các khối logic (logic block): cấu trúc và nội dung của logic block đƣợc gọi
là kiến trúc của nó. Kiến trúc của khối logic có thể đƣợc thiết kế theo nhiều cách khác nhau. Một số khối logic có thể chỉ là các cổng NAND 2 đầu vào, tuy nhiên cũng có thể nó là một bộ dồn kênh (multiplexer), hay các bảng tìm kiếm LUT (Look-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. Hầu hết 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ự.
- Các nguồn tài nguyên kết nối: Cấu trúc và nội dung của 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
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
trình đƣợc có thể có nhiều cấu tạo khác nhau. Giống nhƣ khối logic, có nhiều cách để thiết kế kiến trúc routing. 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 này có thể 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...
Logic Block
Tài nguyên kết nối
I/O Cell
Hình 2.4: Mô tả mô hình của một FPGA.
- Các cổng vào/ra: Các đặc tính I/OB của các đầu vào và đầu ra đƣợc hỗ trợ tới 19 các chuẩn tín hiệu khác nhau bao gồm: LVDS, BLVDS, LVPECL, LVCMOS,
HSTL, SSTL và GTL.
Các khối cơ bản của LB (Logic Block) của FPGA chính là Logic Cell (LC: gọi
là tế bào logic).
- Mỗi một Logic Cell bao gồm một bộ tạo chức năng (hay bộ tạo hàm) 4 đầu vào, logic nhớ và phần tử lƣu trữ (Flip-Flop loại D). Đầu ra bộ tạo chức năng của mỗi Logic Cell điều khiển cả đầu ra LB hoặc đầu vào D của Flip-Flop. Mỗi một LB có chứa bốn Logic Cell và đƣợc tổ chức thành hai Slice tƣơng tự nhau, một slice đơn có dạng nhƣ hình 2.5.
- Look-Up Tables (LUT): Các bộ tạo chức năng của FPGA thực hiện nhƣ LUT có bốn đầu vào. Để hoạt động nhƣ một bộ tạo chức năng, 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
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
hợp để tạo RAM 16x2 bit hoặc 32x1 bit đồng bộ .
- Storage Element: Các phần tử lƣu trữ trong slice của FPGA có thể đƣợc xắp đặt nhƣ một Flip-Flop loại D kích hoạt bằng sƣờn, hoặc nhƣ một bộ chốt nhạy mức. Các đầu vào D có thể đƣợc điều khiển hoặc bởi bộ tạo chức năng trong slice hoặc trực tiếp từ đầu vào các slice (bỏ qua bộ tạo chức năng). Thêm các đƣờng Clock
(CLK) và Clock Enable(CE) (hình 2.5), mỗi Slice có các tín hiệu Set và Reset đồng
bộ (SR và BY). Đƣờng SR ép các phần tử lƣu trữ về trạng thái khởi tạo, đặc biệt trong trƣờng hợp nhồi cấu hình. Đƣờng BY ép phần tử lƣu trữ về trạng thái ngƣợc lại. Nhƣ đã đƣợc lựa chọn hai đƣờng này có thể đƣợc xắp xếp để hoạt động không đồng bộ. Tất cả các tín hiệu điều khiển có thể đảo ngƣợc một cách hoàn toàn độc lập và chúng đƣợc chia sẻ bởi hai Flip - Flop trong một Slice.
- Block RAM: Trong FPGA 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à SelectRAM +), điều này cần bổ xung các LUT RAM đã đƣợc phân phối và kiến trúc bộ nhớ không bền vững này đƣợc thực hiện trong các LB, các khối bộ nhớ Block RAM đƣợc tổ chức theo các cột.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Hình 2.5: Cấu trúc Logic Cell trong FPGA.
Một FPGA có cấu trúc của các Logic Cell (hoặc các module) và các đƣờng nối (hình 2.6), mà các đƣờng nối này nằm dƣới sự điều khiển của ngƣời thiết kế. Có nghĩa là chúng ta có thể thiết kế, lập trình và thay đổi mạch khi muốn. Với họ FPGA ngày nay đã vƣợt qua giới hạn 10 triệu cổng.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Hình 2.6: Cấu trúc của FPGA. 2.1.1.3. Phân loại FPGA.
Có nhiều loại FPGA của các nhà sản xuất khác nhau, tuy nhiên chúng có thể đƣợc chia thành 4 loại chính nhƣ hình 2.7.
Cấu trúc mảng đối xứng (symmetrical array), cấu trúc hàng (row-based), cấu
trúc PLD phân cấp (hierachical PLD), cấu trúc đa cổng (sea-of-gate).
Xét về mặt sử dụng có hai loại linh kiện cấu hình cho các kết nối của FPGA :
Loại SRAM (Static Random Access Memory) có thể lập trình lại nhiều lần và loại
OTP (One - Time Programmable) lập trình một lần. Hai loại này khác nhau ở chỗ thực thi của logic cell và kỹ thuật tạo sự kết nối trong thiết bị.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Mảng đối xứng
Nối kết
Logic Block
Cấu trúc hàng
Cấu trúc đa cổng
(Kết nối phủ lên Logic Block)
Logic Block
PLD Block Nối kết
Cấu trúc PLD phân cấp
Hình 2.7: Bốn loại FPGA điển hình.
Kiểu hay đƣợc dùng hơn cả là kiểu SRAM vì nó có thể lập trình đƣợc nhiều lần. Thực tế thì SRAM FPGA đƣợc nạp chƣơng trình lại mỗi khi bật nguồn, bởi vì FPGA loại này thực chất là một chíp nhớ theo ý muốn. Vậy tại sao lại cần một chip PROM nối tiếp hoặc bộ nhớ hệ thống cùng với mỗi SRAM FPGA. Cấu trúc của hai loại đƣợc thể hiện trong hình 2.8 và 2.9.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Hình 2.8: Cấu trúc SRAM FPGA (SRAM Logic Cell).
- Loại SRAM có thể lập trình lại :
+ SRAM xác định các đƣờng nối.
+ SRAM xác định đơn vị logic trong bảng tra LUT.
Hình 2.9: Cấu trúc của OTP FPGA (OTP Logic Cell).
- Loại OTP cho phép lập trình một lần :
+ Các đƣờng nối không đƣợc phép nối nhƣ dạng cầu chì. + Logic là các cổng truyền thống.
Trong SRAM Logic Cell, thay vì các cổng thông thƣờng, một bảng tra LUT xác định đầu ra dựa vào giá trị của các đầu vào.
Trong OTP FPGAs sử dụng kết nối giữa các đƣờng theo dạng nối ngƣợc (có nghĩa ngƣợc với cầu trì, sự kết nối đƣợc tạo ra và không bị nóng chảy trong suốt thời gian nạp chƣơng trình) để tạo ra các kết nối cố định trong chip. Hơn nữa, OTP
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
FPGA không cần SPROM nào khác, điều đó có nghĩa là nạp chƣơng trình vào thẳng FPGA. Tuy nhiên mỗi lần thay đổi một thiết kế phải vứt bỏ đi một chip. Loại OTP Logic Cell tƣơng tự nhƣ họ PLD với các cổng và flip-flop nhƣ D, T, hay RS .
2.1.1.4. Ứng dụng của FPGA.
FPGA có thể sử dụng trong hầu hết các ứng dụng hiện đang dùng CPLD, PLD và các mạch tích hợp nhỏ. Dƣới đây là các ứng dụng điển hình của FPGA:
1. Các mạch tích hợp ứng dụng đặc biệt: FPGA là một phƣơng tiện tổng quát nhất để thực hiện các mạch logic số.
2. Thiết kế mạch ngẫu nhiên: Mạch logic ngẫu nhiên thƣờng đƣợc thực hiện bằng PAL. Nếu tốc độ của mạch không đòi hỏi khắt khe thì mạch có thể thực hiện thay thế bằng FPGA.
3. Thay thế các chíp tích hợp nhỏ cho mạch ngẫu nhiên: Các mạch trong các
sản phẩm thƣơng mại thƣờng chứa nhiều chíp SSI (Small Scale Integrated). Trong
nhiều trƣờng hợp các chip SSI này có thể đƣợc thay thế bằng FPGA và kết quả là giảm diện tích của bo mạch đi đáng kể.
4. Chế tạo mẫu: FPGA rất lý tƣởng cho các ứng dụng tạo sản phẩm mẫu. Giá thành thực hiện thấp, thời gian ngắn.
5. Máy tính dựa trên FPGA: Một loại máy tính mới có thể đƣợc chế tạo với các FPGA có thể tái lập trình ngay trên mạch FPGA. Các máy này có một bo mạch chứa các FPGA mà các chân nối với các chip lân cận giống nhƣ thông thƣờng.
2.1.2. Quá trình thiết kế cơ bản trên FPGA.
2.1.2.1. Gi i thiệu về quá trình thiết kế.
Quá trình thiết kế trên FPGAs sử dụng hệ thống CAD (Computer Aided Design). Hình 2.10 biểu diễn các bƣớc trong hệ thống CAD tiêu biểu để tạo ra một mạch FPGA. Từ trên hình vẽ ta thấy, điểm bắt đầu cho mạch thiết kế là mạch lôgic ban đầu. Bƣớc này cần một sơ đồ biểu diễn mạch, hay một mô tả VHDL hoặc một đặc tả các biểu thức Boolean. Từ các đầu vào nhƣ vậy, chúng đƣợc chuyển thành dạng chuẩn nhƣ là các biểu thức Boolean. Các biểu thức Boolean này đƣợc xử lý bằng công cụ tối ƣu lôgíc (rút gọn các biểu thức), mục đích của việc này là để tối ƣu
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
về diện tích và tốc độ của mạch thiết kế. Sau khi đã đƣợc tối ƣu, các biểu thức Boolean đƣợc chuyển tới mạch lôgíc block của FPGA thông qua chƣơng trình ánh