Điện điện tử - Chương IV: Thiết kế vi mạch số trên FPGA

1 Tổng quan về kiến trúc FPGA 1.2 Khái niệm FPGA FPGA là công nghệ IC lập trình mới nhất và tiên tiến nhất hiện nay. Thuật ngữ Field-Programmable chỉ quá trình tái cấu trúc IC có thể được thực hiện bởi người dùng cuối, trong điều kiện bình thường, hay nói một cách khác là người kỹ sư lập trình IC có thể dễ dàng hiện thực hóa thiết kế của mình sử dụng FPGA mà không lệ thuộc vào một quy trình sản xuất hay cấu trúc phần cứng phức tạp nào trong nhà máy bán dẫn. Đây chính là một đặc điểm làm FPGA trở thành một công nghệ PLD được phát triển và nghiên cứu nhiều nhất hiện nay.

pdf81 trang | Chia sẻ: hoang10 | Lượt xem: 820 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Điện điện tử - Chương IV: Thiết kế vi mạch số trên FPGA, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương III -Thiết kế vi mạch số trên FPGA 1 Chương IV: Thiết kế vi mạch số trên FPGA 1 Tổng quan về kiến trúc FPGA 1.2 Khái niệm FPGA FPGA là công nghệ IC lập trình mới nhất và tiên tiến nhất hiện nay. Thuật ngữ Field-Programmable chỉ quá trình tái cấu trúc IC có thể được thực hiện bởi người dùng cuối, trong điều kiện bình thường, hay nói một cách khác là người kỹ sư lập trình IC có thể dễ dàng hiện thực hóa thiết kế của mình sử dụng FPGA mà không lệ thuộc vào một quy trình sản xuất hay cấu trúc phần cứng phức tạp nào trong nhà máy bán dẫn. Đây chính là một đặc điểm làm FPGA trở thành một công nghệ PLD được phát triển và nghiên cứu nhiều nhất hiện nay. Để có được khả năng đó, FPGA ra đời hoàn toàn là một công nghệ mới chứ không phải là một dạng mở rộng của các chip khả trình kiểu như PAL, PLA. Sự khác biệt đó thứ nhất nằm ở cơ chế tái cấu trúc FPGA, toàn bộ cấu hình của FPGA thường được lưu trong một bộ nhớ động (thông thường SRAM), quá trình tái cấu trúc được thực hiện bằng cách đọc thông tin từ RAM để lập trình lại các kết nối logic trong IC. Nói một cách khác cơ chế đó làm việc giống như phần mềm máy tính cũng được lưu trữ trong RAM và khi thực thi sẽ được đọc lần lượt nạp vào vi xử l{. Cũng như vậy việc lập trình lại cho FPGA cũng dễ dàng như lập trình lại phần mềm trên máy tính. Như vậy về mặt nguyên tắc thì quá trình khởi động của FPGA không diễn ra tức thì mà cấu hình từ SRAM phải được đọc sau đó mới diễn ra quá trình tái cấu trúc theo thông tin chứa trong SRAM. SRAM chỉ lưu trữ được trong trạng thái làm việc, nghĩa là có nguồn cấp, chính vì vậy để lưu giữ cấu hình cho FPGA thường phải dùng thêm một ROM ngoại vi. Đến những dòng sản phẩm FPGA gần đây thì các ROM ngoại vi này dần được thay thế bằng các ROM tích hợp sẵn, việc tích hợp này làm FPGA nạp cấu hình nhanh hơn nhưng cơ chế thực hiện vẫn phải thông qua một bộ nhớ SRAM như cũ. Ngoài khả năng đó điểm thứ hai làm FPGA khác biệt với các PLD thế hệ trước là FPGA có khả năng tích hợp logic với mật độ cao hơn hẳn, với số cổng logic tương đương lên tới hàng trăm nghìn, hàng triệu Chương III -Thiết kế vi mạch số trên FPGA 2 cổng. Khả năng đó có được nhờ sự đột phá trong kiến trúc của FPGA. Nếu hướng mở rộng của CPLD tích hợp nhiều mảng PAL, PLA lên một chip đơn, trong khi bản thân các mảng này có kích thước lớn và cấu trúc không đơn giản nên số lượng mảng tích hợp nhanh chóng bị hạn chế, dung lượng của CPLD nhiều nhất cũng chỉ đạt được con số trăm nghìn cổng tương đương. Đối với FPGA thì phần tử logic cơ bản không còn là mảng PAL, PLA mà thường là các khối logic lập trình được cho 4 bit đầu vào và 1 đầu ra ( thường được gọi là LUT). Việc chia nhỏ đơn vị logic cho phép tạo một cấu trúc khả trình linh hoạt hơn và tích hợp được nhiều hơn số lượng cổng logic trên một chíp bán dẫn. Bên cạnh đó hiệu quả làm việc và tốc độ làm việc của FPGA cũng vượt trội so với các IC khả trình trước đó. Vì có mật độ tích hợp lớn và tốc độ làm việc cao nên FPGA có thể được ứng dụng cho lớp những bài toán số phức tạp đòi hỏi không những tốc độ cao mà còn nhiều tài nguyên logic. Hiện nay công nghệ FPGA đang được phát triển rộng rãi bởi nhiều công ty bán dẫn khác nhau. Dẫn đầu là Xilinx với các dòng sản phẩm như Virtex 3,4,5,6 và Spartan, Altera với Stratix, Cyclone, Arria, Bên cạnh đó còn có sản phẩm của Lattice Semiconductor Company, Actel, Achronix, BlueSilicon Tecnology Khái niệm FPGA board, hay FPGA KIT là khái niệm chỉ một bo mạch in trên đó có gắn chíp FPGA và các phần tử khác như cổng giao tiếp, màn hình, led, nút bấm và bao giờ cũng có phần giao tiếp với máy tính để nạp cấu hình cho FPGA. Ngoài ra board còn chứa các thiết bị ngoại vi được liên kết với các cổng vào ra của FPGA nhằm mục đích thử nghiệm. Tài nguyên logic của FPGA được thể hiện ở bảng so sánh sau: IC Transitor count Process Manufacture Pentium 2 7 500 000 0.35um Intel Pentium 4 42 000 000 180nm Intel Core 2 Duo 291 000 000 65nm Intel Six core Xenon 1 900 000 000 45nm Intel AMD K8 106 000 000 130nm AMD Virtex 4 1 000 000 000 90nm Xilinx Virtex 5 1 100 000 000 65nm Xilinx Chương III -Thiết kế vi mạch số trên FPGA 3 Starix IV 2 500 000 000 40nm Altera Virtex 6 ~2 600 000 000 65 nm Xilinx Theo bảng so sánh trên có thể thấy khả năng tích hợp của FPGA là rất lớn, những FPGA mới nhất hiện nay có khả năng tích hợp lớn tương đương như các chíp chuyên dụng cho server như Xenon 6 nhân. Còn bản thân các chip cỡ nhỏ như Pentium hay thậm chí Core duo nếu so sánh về mức độ tích hợp thì chúng có thể được “nạp” hoàn toàn vào một FPGA. Khả năng này của FPGA mở ra một hướng mới cho ứng dụng FPGA đó là sử dụng FPGA như một phương tiện để kiểm tra thiết kế ASIC (ASIC prototyping with FPGA). Kế thừa của phương pháp này là công nghệ có tên gọi “Hard-copy” là công nghệ cho phép sao chép toàn bộ các thiết kế đã được nạp vào FPGA thành một IC ASIC độc lập. Tính tối ưu của thiết kế này không cao nhưng đơn giản và giảm đáng kể chi phí nếu so sánh với semi-custom ASIC. 1.2 Ứng dụng của FPGA trong xử lý tín hiệu số Do khả năng tái cấu trúc đơn giản và sở hữu một khối tài nguyên logic lớn FPGA có thể được ứng dụng cho nhiều các lớp bài toán xử lý tín hiệu số cỡ lớn mà các công nghệ trước đó không làm được hoặc làm được nhưng với tốc độ và hiệu suất thấp. Các lớp ứng dụng đó là: - Các ứng dụng chung về xử lý số như lọc tín hiệu, tìm kiếm, phân tích, giải mã, điều chế tín hiệu, trộn tín hiệu - Các ứng dụng về mã hóa, giải mã giọng nói, nhận dạng giọng nói, tổng hợp giọng nói. Xử lý tín hiệu âm thanh bao gồm lọc nhiễu , trộn, mã hóa, giải mã, nén, tổng hợp âm thanh - Ứng dụng trong xử lý ảnh số, nén và giải nén, các thao tác biến đổi, soạn thảo, nhận dạng ảnh số - Ứng dụng trong các hệ thống thông tin như các hệ thống Voice IP, Voice mail. Modem, điện thoại di động, mã hóa và giải mã truyền thông trong mạng LAN, WIFI trong truyền hình, radio -Ứng dụng trong điều khiển các thiết bị điện tử: ổ cứng, máy in, máy công nghiệp , dẫn đường, định vị, robots. Chương III -Thiết kế vi mạch số trên FPGA 4 1.3 Công nghệ tái cấu trúc FPGA Trong lĩnh vực công nghệ tái cấu trúc IC hiện nay có tất cả 5 công nghệ fuse, EPROM, EEPROM, SRAM based, Antifuse trong đó SRAM-based là công nghệ phổ biến được sử dụng cho FPGA. SRAM-based Hình 3.1 SRAM-based FPGA Cấu hình của FPGA bản chất là mô tả các điểm kết nối giữa các thành phần có chứa trong IC, có hai dạng kết nối cơ bản là kết nối giữa các đường kết nối dẫn bằng ma trận chuyển mạch (switch matrix), và kết nối nội bộ trong các khối logic. Kết nối trong switch matrix là kết nối giữa hai kênh dẫn được thực hiện thông qua các pass-transitor, hay gọi là transitor dẫn. 1 bit thông tin từ bộ nhớ SRAM được sử dụng để đóng hoặc mở pass-transitor này, tương ứng sẽ ngắt hay kết nối giữa hai kênh dẫn. Kiểu cấu trúc thứ hai phổ biến trong các khối logic là lập trình thông qua khối dẫn kênh Multiplexer. Thông tin điều khiển từ SRAM cho phép Multiplexer chọn một trong số các đầu vào để đưa ra. Nếu khối lượng đầu vào là 2n, thì yêu cầu số bit điều khiển từ SRAM là n-bit. Kiểu cấu trúc thứ 3 được gọi là Look_Up Table (LUT), mỗi một LUT có thể được lập trình để thực hiện bất kz một hàm logic bất kz nào của đầu ra phụ thuộc các đầu vào. Cơ chế làm việc của LUT có thể tóm tắt như sau, giả sử cần thực hiện một hàm m đầu vào và n đầu ra thì cần một bộ nhớ 2mx(n), chứa thông tin về n đầu ra đối với tất cả các khả năng đầu vào. Khi làm việc thì m-bit đầu vào đóng vai trò như địa chỉ để truy cập (Look-up) lên bộ nhớ Chương III -Thiết kế vi mạch số trên FPGA 5 (Table). Về bản chất cấu trúc này cũng giống như khối chọn kênh (Multiplexer) cỡ lớn. Trong FPGA điển hình sử dụng các LUT có 4 bit đầu vào và 1 bit đầu ra. Như vậy tính khả trình của FPGA được thực hiện nhờ tính khả trình của các khối logic và tính khả trình của hệ thống kênh kết nối, ngoài ra là tính khả trình của các khối điều khiển cổng vào ra. Sau đây ta sẽ đi vào nghiên cứu cấu trúc cụ thể của họ FPGA Spartan 3E của Xilinx, về cơ bản, cấu trúc của các họ Xilinx FPGA khác tương tự như cấu trúc này. 1.4 Kiến trúc tổng quan Hình 3.2 trình bày cấu trúc tổng quan nhất cho các loại FPGA hiện nay. Cấu trúc chi tiết và tên gọi của các thành phần có thể thay đôi tùy theo các hãng sản xuất khác nhau nhưng về cơ bản FPGA được cấu thành từ các Khối Logic (Logic Block) số lượng của các khối khối này thay đổi từ vài trăm (Xilinx Spartan) đến vài chục nghìn (Xilinx Virtex6) được bố trí dưới dạng ma trận, chúng được nối với nhau thông qua hệ thống các kênh kết nối khả trình. Hệ thống này còn có nhiệm vụ kết nối với các cổng giao tiếp vào ra (IO_PAD) của FPGA. Số lượng các chân vào ra thay đổi từ vài trăm đến cỡ hơn một nghìn. Bên cạnh các thành phần chính đó, những FPGA cỡ lớn còn được tích hợp những khối thiết kế sẵn mà thuật ngữ gọi là IP cores, các IP cores này có thể là các bộ nhớ RAM, ROM, khối thực hiện phép nhân, khối thực hiện phép nhân cộng (DSP)... Chương III -Thiết kế vi mạch số trên FPGA 6 LOGIC BLOCK LOGIC BLOCK LOGIC BLOCK.. LOGIC BLOCK LOGIC BLOCK LOGIC BLOCK.. LOGIC BLOCK LOGIC BLOCK LOGIC BLOCK.. IO_PAD IO_PAD IO_PAD IO _ P A D IO _ P A D IO_PAD IO_PAD IO_PAD IO _ P A D IO _ P A D IO _ P A D .. .. . . IO _ P A D IP_COREs, RAM, ROM... Interconnect wires Hình3.2. Kiến trúc tổng quan của FPGA 2. Kiến trúc chi tiết Xilinx FPGA Spartan-3E. Để hiểu chi tiết về cấu trúc của FPGA phần dưới đây ta sẽ đi nghiên cứu một cấu trúc cụ thể của FPGA Spartan 3E, tài liệu gốc có thể tìm thấy trên trang web của Xilinx, người đọc nên tham khảo thêm để hiểu kỹ hơn vấn đề. Hình vẽ dưới đây thể hiện cấu trúc tổng quan của họ FPGA này. Chương III -Thiết kế vi mạch số trên FPGA 7 Hình 3.3. Kiến trúc tổng quan của Spartan 3E FPGA FPGA Spartan 3E được cấu trúc từ các thành phần sau: CLBs (Configurable Logic Blocks) Là các khối logic lập trình được chứa các LUTs và các phần tử nhớ flip-flop có thể được cấu trúc thực hiện các hàm khác nhau. IOBs (Input/Output Blocks) là các khối điều khiển giao tiếp giữa các chân vào của FPGA với các khối logic bên trong, hỗ trợ được nhiều dạng tín hiệu khác nhau. Các khối IO được phân bố xung quanh mảng các CLB. Block RAM các khối RAM 18Kbit hỗ trợ các cổng đọc ghi độc lập, với các FPGA họ Spartan 3 block RAM thường phân bố ở hai cột, mỗi cột chứa một vài module RAM 18Kbit, mỗi khối RAM được nối trực tiếp với một khối nhân 18 bit. Dedicated Multiplier: Các khối thực hiện phép nhân với đầu vào là các số 18 bit. DCM (Digital Clock Manager) Các khối làm nhiệm vụ điều chỉnh, phân phối tín hiệu đồng bộ tới tất cảc các khối khác. DCM thường được phân bố ở giữa, với hai khối ở trên và hai khối ở dưới. Ở một số đời FPGA Spartan 3E DCM còn được bố trí ở giữa. Chương III -Thiết kế vi mạch số trên FPGA 8 Interconnect: Các kết nối khả trình và ma trận chuyển dùng để liên kết các phần tử chức năng của FPGA với nhau. 2.1 Khối logic khả trình Khối logic khả trình của FPGA Xilinx có tên gọi đầy đủ là Configurable Logic Blocks (CLBs). CLBs là phần tử cơ bản cấu thành FPGA, là nguồn tài nguyên logic chính tạo nên các mạch logic đồng bộ lẫn không đồng bộ. Mỗi CLB được cấu thành từ 4 Slices, mỗi Slice lại được cấu thành từ 2 LUTs (Look Up Tables). Phân bố của các CLB thể hiện ở hình 3.4: Hình 3.4. Phân bố của các CLB trong FPGA Các CLB được phân bố theo hàng và theo cột, mỗi một CLB được xác định bằng một tọa độ X và Y trong ma trận, đối với Spartan 3E số lượng hàng thay đổi từ 22 đến 76, số lượng cột từ 16 đến 56 tùy thuộc vào các gói cụ thể. 2.1.1. SLICE Mỗi CLB được cấu tạo thành từ 4 slices và 4 slices này chia làm hai nhóm trái và phải. Nhóm 2 slices bên trái có khả năng thực hiện các chức năng logic và làm việc như phần tử nhớ nên được gọi là SLICEM. Nhóm 2 silces bên phải chỉ thực hiện được các chức năng logic nên được gọi là SLICEL. Thiết kế như vây xuất phát từ thực tế là nhu cầu thực hiện logic thường lớn hơn so với nhu cầu lưu trữ dữ liệu do vậy việc hỗ trợ một nửa làm việc như phần tử nhớ làm Chương III -Thiết kế vi mạch số trên FPGA 9 giảm kích thước và chi phí cho FPGA, mặt khác làm tăng tốc độ làm việc cho toàn khối. Hình 3.5 Bố trí slice bên trong 1 CLB SLICEL chỉ thực hiện chức năng logic nên chỉ chứa các thành phần gồm LUT, chuỗi bít nhớ (Carry Chain), chuỗi số học (Arithmetic chain), các bộ chọn kênh mở rộng (wide multiplexer) F5MUX và F5MUX, 2 Flip-flop. Còn đối với SLICEM thì ngoài các thành phần trên LUT còn có thể được cấu hình để làm việc như một thanh ghi dịch 16 bit Shift-Register(SRL16), hoặc RAM phân tán 16x1bit (Distributed RAM), như trình bày trên hình 3.6. Chương III -Thiết kế vi mạch số trên FPGA 10 Hình 3.6 Phân bố tài nguyên trong SLICEM và SLICEL Cấu trúc chi tiết của một Slices được thể hiện ở hình dưới đây: Hình 3.7. Cấu trúc chi tiết của Slice Chương III -Thiết kế vi mạch số trên FPGA 11 Những đường gạch đứt thể hiện những kết nối tới các tài nguyên mà chỉ SLICEM mới có, những đường gạch liền chỉ những kết nối mà cả hai dạng SLICEs đều có. Mỗi một slice chia làm hai phần với cấu trúc gần như nhau là phần trên và phần dưới, mỗi phần chứa các thành phần giống nhau nhưng được ký hiệu khác nhau, ví dụ G-LUT chỉ LUT ở phần trên, F-LUT chỉ LUT ở phần dưới . Tín hiệu đồng bộ CLK, tín hiệu cho phép của xung nhịp CE (Clock Enable), tín hiệu cho phép ghi dữ liệu vào SLICEM SLICEWE1 và tín hiệu RS (Reset/Set) là các tín hiệu dùng chung cho cả phần trên và phần dưới của SLICE. Các đường dữ liệu cơ bản trong Slices là các đường bắt đầu từ các đầu vào F[4:1] và G[4:1] thẳng tới F-LUT và G-LUT tương ứng, tại đây sẽ thực hiện hàm logic tổ hợp theo yêu cầu và gửi ra ở các đầu ra D. Từ đây đầu ra D được gửi ra các cổng ra của SLICE thông qua các đường sau:  Kết thúc trực tiếp tại các đầu ra X, Y và nối ra ngoài với ma trận kết nối.  Thông qua FMUX (GMUX) rồi DMUX làm đầu vào cho phần tử nhớ FFX (FFY) sau đó gửi ra thông qua các đầu ra QX (QY) tương ứng của các phần tử nhớ.  Điều khiển CYMUXF (CYMUXG) của chuỗi bit nhớ (chi tiết về Carry chain dưới đây).  Gửi tới cổng XORF (XORF) để tính tổng hoặc tích riêng trong chuỗi nhớ.  Làm đầu vào cho F5MUX (FIMUX) trong trường hợp thiết kế các khối logic, các chuỗi nhớ, thanh ghi dịch, RAM mở rộng. Bên cạnh các đường dữ liệu cơ bản trên thì trong Slice tồn tại các đường dữ liệu “tắt” bắt đầu từ các đầu vào BX, BY và kết thúc qua một trong những đường sau:  Bỏ qua cả LUT lẫn phần tử nhớ và kết thúc ở các đầu ra BXOUT, BYOUT rồi ra ma trận kết nối.  Bỏ qua LUT nhưng làm đầu vào cho các phần tử nhớ và kết thúc ở các đầu ra QX, QY.  Điều khiển F5MUX hoặc FiMUX.  Thông qua các multiplexers, tham gia như một đầu vào của chuỗi bit nhớ. Chương III -Thiết kế vi mạch số trên FPGA 12  Làm việc như đầu vào DI của LUT (khi LUT làm việc ở chế độ Distributed RAM hay Shift Register).  BY có thể đóng vai trò của tín hiệu REV cho phần tử nhớ (xem chi tiết về REV tại mô tả về phần tử nhớ) 2.1.2. Bảng tham chiếu Hình 3.8: Phân bố các LUT trên một Slice Bảng tham chiếu (Look-Up Table) gọi tắt là các LUT được phân bố ở góc trên trái và góc dưới phải của Slice vvà được gọi tên tương ứng là F-LUT và G- LUT. Phần tử nhớ đóng vai trò là đầu ra của các LUT được gọi tương ứng là FFX và FFY. LUT là đơn vị logic và là tài nguyên logic cơ bản của FPGA, LUT có khả năng được cấu trúc để thực hiện một hàm logic bất kz với 4 đầu vào. Cấu trúc của LUT được thể hiện ở hình sau: Hình 3.9 Cấu trúc của LUT LUT bản chất là một bộ chọn kênh 16 đầu vào (Multiplexer), các đầu vào của LUT A*3:0+ đóng vai trò tín hiệu chọn kênh, đầu ra của LUT là đầu ra của Multiplexer. Khi cần thực hiện một hàm logic bất kz nào đó, một bảng nhớ Chương III -Thiết kế vi mạch số trên FPGA 13 SRAM 16 bit được tạo để lưu trữ kết quả bảng chân lý của hàm, tổ hợp 16 giá trị của hàm tương ứng sẽ là các kênh chọn của Multiplexer. khi làm việc tùy vào giá trị của A*3:0+ đầu ra sẽ nhận một trong số 16 giá trị lưu trữ tương ứng trong SRAM. 2 LUTs có trong SLICEM có thể được cấu trúc để làm việc như 16x1 RAM gọi là Distributed RAM hoặc được cấu trúc để làm việc như một thanh ghi dịch 16-bit SHL16. Cấu trúc của các phần tử này sẽ được nghiên cứu kỹ hơn ở phần 1.3.2.6 và 1.3.2.7. Các LUT có thể được kết hợp với nhau để thực hiện các hàm logic tùy biến có số lượng đầu vào lớn hơn 4 thông qua các bộ chọn kênh mở rộng wide- multiplexers. 2.1.3. Phần tử nhớ Phần tử nhớ (Storage elements) có trong CLB FFX, FFY có thể được cấu hình là các D flip-flop hoặc là Latch, làm việc với các tín hiệu điều khiển đồng bộ hoặc không đồng bộ vì vậy cấu trúc của phần tử nhớ trong FPGA phức tạp hơn so với cấu trúc của D-flipflop thông thường. Các đầu ra QX, QY của phần tử nhớ cũng là các đầu ra của Slices. Trong phần lớn các ứng dụng thường gặp phần tử nhớ được cấu trúc để làm việc như D-flipflop đồng bộ. Các cổng giao tiếp của một phần tử nhớ bao gồm:  D, Q là các cổng dữ liệu vào và ra tương ứng.  C là cổng vào xung nhịp đồng bộ.  GE (Gate Enable) cổng cho phép xung nhịp C khi làm việc ở chế độ latch  CE (Clock Enable) cổng cho phép xung nhịp C khi làm việc ở chế độ flip- flop  S, R là các cổng Set và Reset đồng bộ cho Flip-flop.  PRE, CLR Cổng Set và Clear không đồng bộ  RS Cổng vào của CLB cho S, R, PRE, hay CLR.  REV Cổng vào pha nghịch so với RS, thường có đầu vào từ BY, có tác dụng ngược với RS. Khi cả hai cổng này kích hoạt thì giá trị đầu ra của phần tử nhớ bằng 0. Chương III -Thiết kế vi mạch số trên FPGA 14 2.1.4. Bộ chọn kênh mở rộng Trong cấu trúc của Slice có chứa hai bộ chọn kênh Multiplexer đặc biệt gọi là Bộ chọn kênh mở rộng (Wide-multipexer) F5MUX và FiMUX. Hình 3.9: FiMUX và F5MUX Mỗi một LUT được thiết kế để có thể thực hiện được mọi hàm logic 4 đầu vào. Mục đích của các bộ chọn kênh này là tăng tính linh động của FPGA bằng cách kết hợp các phần tử logic chức năng như LUT, Carry chain, Shift- register, Distributed RAM ở các Slices, CLBs khác nhau để tạo ra các hàm tùy biến với nhiều đầu vào hơn. Ví dụ ở bảng sau thể hiện cách sử dụng 2 LUT 4 đầu vào và 1 F5MUX để tạo ra một hàm logic tùy biến 5 đầu vào. X5 X4 X3 X2 X1 Y 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 0 0 0 1 1 0 1 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 1 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 0 1 1 0 1 0 1 LUT0 LUT1 OUT0 OUT1 OUT Chương III -Thiết kế vi mạch số trên FPGA 15 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 Hình 3.10 Nguyên lý làm việc vủa F5MUX Đầu tiên đối với hàm 5 biến OUT = F(X1, X2, X3, X4, X5) bất kz ta thành lập bảng chân l{ tương ứng, bảng này được chia làm hai phần, phần trên với tất cả các giá trị của X5 bằng 0, ta gọi hàm này có tên là: OUT0 = F(X1, X2, X3,X4,0) = F0(X1, X2, X3, X4); phần dưới với tất cả các giá trị của X5 bằng 1, ta gọi hàm này có tên là: OUT1 = F(X1, X2, X3, X4,1). = F1(X1, X2, X3, X4); Hai hàm F1, F2 là các hàm 4 đầu vào được thực hiện ở tương ứng bởi LUT1, LUT2. Tín hiệu X5 được sử dụng làm tín hiệu chọn kênh cho F5MUX chọn 1 trong hai giá trị đầu ra của LUT1, LUT2, đầu ra của F5MUX chính là kết quả của hàm 5 biến cần thực hiện. OUT = F0(X1, X2, X3, X4) nếu X5 = 0 = F1(X1, X2, X3, X4) nếu X5 = 1; Hình 3.11 Cấu tạo của F5MUX F5MUX được thiết kế dựa trên nguyên l{ trên nhưng trên FPGA thực tê ngoài cổng ra thông thường O theo đó kết quả gửi ra phần tử nhớ củ