Cấu trúc cơ bản của FPGA

Một phần của tài liệu thiết kế hệ thống mã khối bằng công nghệ fpga (Trang 47 - 126)

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 xạ công nghệ (technology mapping), bộ ánh xạ sẽ tối thiểu số khối đƣợc dùng và giảm đƣờng dẫn để tối ƣu về giữ chậm. Sau khi ánh xạ mạch vào các logic block thì cần phải quyết định đặt mỗi khối ở đâu, công việc này do chƣơng trình Placement giải quyết. Bƣớc cuối cùng trong hệ thống CAD là nối kết do phần mềm Rounting thực hiện, chúng ấn định các đoạn dây FPGA và chọn các chuyển mạch có thể lập trình phù hợp với các kết nối trong logic block. Sau khi thực hiện xong bƣớc này, kết quả của CAD sẽ đƣợc nạp vào đơn vị lập trình tạo ra chip FPGA cuối cùng.

Tối ƣu lôgic

Ánh xạ công nghệ Rounting Placement Đơn vị lập trình CAD Sản phẩm Mạch lôgic ban đầu

Hình 2.10. Quá trình thiết kế trên FPGA.

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

2.1.2.2. Tối ưu lô gic.

Đây chính là công việc sửa lại cấu trúc để giảm sự phức tạp của mạch ban đầu. Trong giai đoạn này không chú ý đến kiểu của các phần tử sẽ đƣợc dùng sau này nên đƣợc gọi là tối ƣu không phụ thuộc vào công nghệ (technology-independent).

Tiến hành tối ƣu chính là làm giảm sự dƣ thừa hoặc loại bỏ những biểu thức con chung. Mạch sau khi đƣợc tối ƣu có chức năng tƣơng đƣơng với mạch ban đầu.

2.1.2.3. Ánh xạ công nghệ.

Sau khi tối ƣu logic, ánh xạ công nghệ sẽ biến đổi mạng này thành mạch cuối cùng. Điều này sẽ đƣợc làm bằng cách chọn lựa từng phần của mạng và mỗi cái sẽ đƣợc thực hiện bởi một trong những phần tử của mạch có sẵn, và xác định những mạch này sẽ đƣợc nối với nhau nhƣ thế nào. Sau đây là 3 phƣơng pháp ánh xạ công nghệ chính.

a) Ánh xạ công nghệ dựa vào thư viện: Phƣơng pháp ánh xạ công nghệ này đã đƣợc tiêu chuẩn hoá, trong này là tập các phần tử mạch có sẵn sẽ đƣợc biểu diễn nhƣ một thƣ viện các hàm và xây dựng tối ƣu đƣợc chia thành 3 vấn đề nhỏ: Phân rã (decomposition), so trùng (matching), lập phủ (convering). Đầu tiên mạng phân rã để biểu diễn bởi các cổng NAND 2 đầu vào, sự phân rã bảo đảm rằng không có nút nào trong mạng là quá lớn. Sau khi phân rã, mạng sẽ đƣợc phân hoạch thành một rừng cây, mạch con tối ƣu che phủ từng cây và cuối cùng mạch che phủ toàn bộ mạng đƣợc tập hợp từ các mạch con.

b) Ánh xạ công nghệ dùng bảng dò tìm: Bảng dò tìm (Lookup table _ LUTs) là cơ sở của những khối lôgíc trong FPGA. Một bảng gồm K đầu vào là một bộ nhớ kỹ thuật số mà nó có thể thực hiện bất kì hàm Boolean nào gồm K biến. K đầu vào

đƣợc sử dụng để định vị cho 2K

bit nhớ đƣợc lƣu trữ trong bảng sự thật của hàm Boolean. Với bảng LUT gồm K đầu vào có thể thực hiện đƣợc

K

2

2 hàm Boolean

khác nhau. Tuy nhiên thƣ viện biểu diễn bảng LUT K đầu vào lại không cần tất cả

K

2

2 hàm khác nhau do có sự hoán vị các đầu vào, đảo ngƣợc các cổng vào và 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

c) Ánh xạ công nghệ dùng bộ dồn kênh (Multiplexer): Khối lôgic dựa trên Multiplexer bao gồm chủ yếu là một cây của những bộ Multiplexer, cổng vào của khối logic là bộ dồn kênh có cổng vào lựa chọn và cổng vào dữ liệu. Một khối logic độc lập đƣợc riêng biệt hoá để hiện thực những hàm khác nhau thông qua việc nối những cổng vào của nó tới các biến là các hằng số 0, 1. Những khối logic dựa trên Multiplexer có thể thực hiện đƣợc rất nhiều những hàm khác nhau và vì thế khó sử dụng ánh xạ công nghệ dựa vào thƣ viện.

2.1.2.4. Sắp xếp các phần tử (Placement).

Giai đoạn này của thiết kế gồm các công việc chính nhƣ sau:

Phân chia hệ thống (System Partitioning): Một hệ thống vi điện tử bao gồm nhiều khối chức năng, nếu một khối chức năng quá lớn thì chúng ta phải thực hiện việc tách hoặc phân chia chức năng của khối đó ra làm các khối nhỏ hơn theo mục đích và định hƣớng mà chúng ta cần chỉ định.

a) Lên sơ đồ mặt bằng, bố trí các khối (Floorplanning): Sau khi phân chia hệ thống xong sẽ thực hiện việc lên sơ đồ mặt bằng, bố trí các khối. Floorplanning thực hiện các công việc nhƣ tối thiểu hóa độ dài kết nối và trễ tín hiệu giữa các khối, sắp đặt các khối đã cố định và đặt lại các khối di độngđƣợc thực hiện trƣớc Placement, công việc sắp đặt, bố trí các phần tử logic trên từng khối, tổ chức các vùng kết nối giữa các khối, phân phối mặt bằng cho nguồn và các đƣờng vào ra...

b) Sắp xếp các phần tử (Placement): Placement là bƣớc tiếp theo của Floorplanning, nó thực hiện việc sắp đặt các phần tử logic vào một khối di động... đây là bƣớc quan trọng trong thiết kế mạch và rất phức tạp, nếu Placement không tốt sẽ dẫn đến việc chiếm diện tích lớn và giảm tốc độ thực thi, nhiều khi còn dẫn tới khả năng không Rounting đƣợc. Rất may là công việc này đƣợc thực hiện hoàn toàn tự động.

Placement, System Partitioning và Floorplanning có thể hiểu chung là phân chia hệ thống trên FPGA - tức là lên sơ đồ mặt bằng, bố trí các khối lô gic, và ta có thể gọi chung là Placement.

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) Mục tiêu và đối tượng của Placement: Mục tiêu chính của một công cụ placement (Sắp đặt bố trí các phần tử logic trên từng khối) là sắp đặt tất cả các phần tử logic trong cùng các khối di động trên một chip. Về lý tƣởng mà nói, đối tƣợng của placement là:

- Bảo đảm công cụ định tuyến có thể hoàn chỉnh bƣớc định tuyến. - Tối thiểu hoá tất cả các khoảng trễ trên đƣờng kết nối.

- Làm cho mật độ của chíp càng cao càng tốt. - Tối thiểu hoá tiêu thụ nguồn.

- Tối thiểu hoá sự xuyên nhiễu giữa các tín hiệu.

Các đối tƣợng đó rất khó để định nghĩa theo cách giải quyết bằng thuật toán và thậm chí trong thực tế rất khó gặp. Các công cụ placement hiện nay thƣờng sử dụng nhiều đặc điểm và các tiêu chuẩn riêng.

d) Gán chân (Pin Assignmen) : Mục đích của việc gán chân là định nghĩa tín

Một phần của tài liệu thiết kế hệ thống mã khối bằng công nghệ fpga (Trang 47 - 126)