Chương 1. Giới thiệu về FPGA Field-programmable gate array (FPGA) là mạch điện tử tích hợp (integrated circuit), được thiết kế sao cho người dùng hoặc nhà sản xuất có thể cấu hình lại được (configurable), sau khi xuất xưởng. Mạch FPGA chứa các khối logic có thể cấu hình lại, được gọi là "logic blocks", và một mạng lưới các kết nối khả cấu hình (reconfigurable interconnects), sao cho các khối phần cứng có thể kết nối với nhau linh hoạt tùy vào cấu hình cụ thể. Khối logic có thể được cấu hình để hiện thực các hàm tổ hợp phức tạp (complex combinational functions), hoặc chỉ đơn giản là cổng logic AND XOR.
Trong đa số FPGA, khối logic còn bao gồm các đơn vị nhớ. Các đơn vị nhớ có thể đơn giản chỉ là mạch flip-flop hoặc khối bộ nhớ SRAM phức tạp.1: Cấu trúc chip FPGA Một khối logic (gọi tên là Configurable Logic Block, CLB, hoặc Logic Array Block, LAB), chứa vài tế bào logic (logical cell; gọi là ALM, Logic Element, Slice. Trần Thế Anh - 10070471 Trang 1 -2- Một tế bào logic thông thường chứa: bảng tra 4 ngõ nhập (4-input Lookup Table - LUT), bộ cộng (Full adder - FA), và một flip-flop loại D (D-type flip-flop).2: Cấu trúc một tế bào logic Để định nghĩa các kết xuất của FPGA, người dùng sử dụng ngôn ngữ mô tả phần cứng (hardware description language - HDL), hoặc một lược đồ thiết kế (schematic design - mô tả cách kết nối các cổng AND OR NOR. Sau đó, người dùng sử dụng công cụ hỗ trợ thiết kế, thường do nhà sản xuất chip cung cấp, để tạo ra netlist.
Dựa trên netlist, công cụ hỗ trợ thiết kế sẽ tiến hành bước lựa chọn các vị trí tốt nhất trong chip để đặt các khối chức năng (place and route). Sau giai đoạn place-and-route, công cụ sẽ tiến hành phân tích timing, kiểm thử xem vị trí đặt có hợp lý chưa. Cuối cùng file mã nhị phân (binary stream) được ghi ra để người dùng có thể nạp vào chip FPGA. Người dùng nạp nội dung nhị phân vào chip FPGA bằng giao tiếp serial (JTAG) hoặc ghi vào bộ nhớ EEPROM.
Ứng dụng của FPGA Ứng dụng ban đầu của FPGA tương tự như CPLD, đó là kết nối logic (glue logic) các thành phần trên board PCB. Sau này, khi độ phức tạp, tốc độ, khả năng Trần Thế Anh - 10070471 Trang 2 -3- tính toán tăng lên, ứng dụng sử dụng FPGA ngày càng rộng lớn. Có vài chip FPGA tính hợp nhiều thành phần đến mức được tiếp thị với vai trò System-on-a-chip. FPGA thường được sử dụng trong các ứng dụng có số lượng thành phẩm thấp, vì khi đó tổng chi phí cho FPGA thấp hơn tổng chi phí sản xuất ASIC.
Sau đây là vài ứng dụng phổ biến của FPGA: • Asic prototype: mẫu thí nghiệm chip asic trước khi sản xuất hàng loạt • Digital signal processor: chip xử lý tín hiệu số • Thiết bị mạng: switch 10Gbe Arista 7124FX, tường lửa Palo Alto PA- 5060, load balancer F5 BigIP,. Giới thiệu board mạch DE2-115 Do mục đích của đề tài là chuyển nhân Linux + TCP/IP stack sang kiến trúc Nios2, và ứng dụng đi kèm sẽ tập trung về hướng router / firewall; nên việc đầu tiên là lựa chọn board mạch FPGA thích hợp. Để thực hiện chức năng router / firewall, thì phần cứng phải có ít nhất 2 giao tiếp mạng Ethernet. Vào thời điểm khảo sát khả thi trước khi nhận đề tài, trên thị trường có các board mạch thuộc phân khúc phổ thông (giá thấp hơn 1000 USD), và có nhiều hơn 1 cổng Ethernet sau: • De2-115 của hãng Terasic.
• NetFPGA của hãng Digilent. Do chi phí thấp, số đơn vị logic nhiều hơn, và trên board De2-115 có tích hợp các chip phụ trợ khác, nên tác giả đã chọn board De2-115. Board mạch De2-115 [1] là một kit lập trình FPGA do công ty Terasic sản xuất. Board mạch gồm có 1 chip FPGA Cyclone IV của hãng Altera, và các phụ kiện ngoại vi như chip Marvell GBit Ethernet, SDRAM, SRAM, Flash, Audio codec, VGA DAC, cổng hồng ngoại, cổng USB … Trần Thế Anh - 10070471 Trang 3 -4- Hình 1.3: Mặt trên board De2-115 Các thành phần phần cứng có trên board De2-115: • Chip FPGA Altera Cyclone IV EP4CE115F29, 114,480 LEs, 432 memory blocks, 3,888 Kbits embedded memory, 4 PLLs.
• Chip flash chứa bitstream: Altera Serial Configuration – EPCS64, 64Mbit. • Mạch USB Blaster để nạp cấu hình và debug; hoạt động trong chế độ JTAG hoặc Active Serial (AS). • Chip SRAM 2MBytes, 1Mx16 • 2 chip SDRAM 64MBytes • Chip NAND flash 8MB, 4Mx16 • Chip EEPROM 32Kbit • SD Card socket, SPI hoặc 4bit mode. • 4 nút nhấn • 18 công tắc dạng gạt (slide switch) Trần Thế Anh - 10070471 Trang 4 -5- • 18 LED màu đỏ • 9 LED màu xanh • Thạch anh cấp xung clock 50MHz • Chip CODEC âm thanh 24-bit, nối với ngõ line-in, line-out, microphone.
• Chip DAC VGA DAC (8-bit high-speed triple DACs) with VGA-out connector • Chip giải mã TV (NTSC/PAL/SECAM), jack TV-in. • 2 chip Gigabit Ethernet PHY 88E1111 của hãng Marvell, nối với đầu RJ45. • Chip RS-232 transceiver, đầu nối 9-pin • Đầu nối PS/2 mouse/keyboard • Bộ nhận tín hiệu IR. • 2 đầu nối SMA để gởi/nhận xung clock bên ngoài.
• Một đầu cắm mở rộng 40-pin. • Một đầu cắm card mở rộng tốc độ cao (High Speed Mezzanine Card - HSMC) • Khối LCD 16x2. Sau đây là sơ đồ khối kết nối giữa các thành phần trên board mạch. Dựa trên khả năng tái cấu hình linh hoạt của chip FPGA, người dùng có thể xây dựng bất cứ hệ thống nào.
Trần Thế Anh - 10070471 Trang 5 -6- Hình 1.4: Sơ đồ kết nối board De2-115 Vì lý do board De2-115 chỉ có chip FPGA Cyclone IV, không tích hợp sẵn nhân CPU cứng, nên tác giả bắt buộc phải chọn lõi IP CPU mềm để thực thi hệ điều hành µClinux. Lõi IP cpu mềm hiện tại chạy trên chip FPGA của hãng Altera [2] có rất nhiều dòng: Nios2, ARM Cortex M1, ARM Cortex A9, MP32,. Chỉ có dòng Nios2 là được cung cấp sẵn miễn phí cho mục đích nghiên cứu học thuật. Các công trình liên quan đến board mạch De2-115 và µClinux Đề tài "QUẢN LÝ TẢI DỮ LIỆU TRÊN BOARD DE2 (HARDWARE DOWNLOAD MANAGER)", luận văn Đại Học của tác giả Huỳnh Bảo Trọng và Ngô Văn Trung [3], có đề cập việc tổng hợp khối MAC cho chip ethernet Davicom DM9000A.
Trong đề tài này chỉ sử dụng 1 card mạng ethernet 100Mbps. Phiên bản µClinux trong đề tài này sử dụng khai báo phần cứng custom/config.h, không còn Trần Thế Anh - 10070471 Trang 6 -7- được áp dụng đối với các phiên bản µClinux mới. Đề tài này sử dụng chip Nios2 không có đơn vị quản lý bộ nhớ MMU. Kit De2-115 do hãng Terasic bán cách thời điểm quyết định giao đề tài 4 tháng.
Phần cứng ethernet trên kit khác hoàn toàn với những kit cũ có trong phòng LAB ĐHBK, và các kit mà các nhóm (sinh viên) khác đã sử dụng. Ứng dụng demo Webserver của hãng Terasic đi kèm theo kit có những vấn đề sau: • Tại 1 thời điểm chỉ sử dụng được 1 card mạng. • Tốc độ card mạng đạt 1Gbps, 100Mbps, 10Mbps, chỉ bắt tay được khi ngắt điện rồi cấp điện lại. Không thể hoạt động trong trường hợp rút dây mạng từ switch 1Gbps cắm sang switch có tốc độ khác.
• Tốc độ 1Gbps không ổn định. • Do cấu trúc khối PLL nên không thể sử dụng đồng thời 2 card, mỗi card nối với một switch, nhưng 2 switch có tốc độ khác nhau. Tài liệu hướng dẫn cách nối kết các khối MAC - PHY, cung cấp xung clock sao cho đạt tốc độ 1Gbps, trên website hãng Altera không cung cấp đủ thông tin. Trong phạm vi tìm hiểu của tác giả, chưa đề tài nào có đề cập đến việc sử dụng Nios2 làm vai trò router / firewall.
Chưa có đề tài có sử dụng khối pipeline bridge, có sử dụng cross clock domain bridge. Trong quá trình thực hiện luận văn, đặc biệt trong lúc chuyển (porting) ứng dụng demo, có những vấn đề sau phát sinh: • Ứng dụng iptables: cross compiler có bug, gây lỗi segfault. • Ứng dụng Snort: các thư viện phụ thuộc thiếu sót, dẫn đến việc không thể biên dịch được. Do đó, đề tài này tập trung vào hướng chuyển (porting) nhân linux, tcp/ip, qua kiến trúc cpu Nios2.
Và sử dụng tất cả các khối phần cứng có liên quan đến mảng network, mà kit De2-115 cung cấp. Trần Thế Anh - 10070471 Trang 7 -8- Chương 2. KIẾN TRÚC CPU NIOS-2 2. Tổng quan về vi xử lý mềm Nios2 Vi xử lý Nios 2 là chip thuộc dòng họ RISC (load store) do hãng Altera tạo ra [4].
Có những đặc điểm sau: • Tập lệnh chiều dài cố định 32 bit • 32 thanh ghi đa dụng • 32 ngắt • Little endian • Tính toán số thực dấu chấm động • Giao tiếp được với nhiều thiết bị ngoại vi • Tập lệnh tương thích với tất cả processor thuộc dòng Nios 2 • Tốc độ xử lý tùy thuộc vào tài nguyên phần cứng mà người lập trình lựa chọn cấp phát lúc tổng hợp. Nios 2 là một vi xử lý có khả năng tinh chỉnh cấu hình linh hoạt. Nghĩa là người lập trình có thể tùy chỉnh các khối chức năng bên trong của vi xử lý. Người dùng có thể bỏ bớt vài chức năng không sử dụng.
Người dùng cũng có thể tự tạo thêm các khối chức năng chuyên dụng, hoặc lệnh riêng để có thể đáp ứng yêu cầu ứng dụng đặc thù riêng. Từ “mềm” được mô tả là khả năng tổng hợp vi xử lý, với các thành phần bên trong linh hoạt, thành dạng bitstream, rồi nạp bitstream kia vào bất cứ chip FPGA nào của hãng Altera, với điều kiện chip FPGA còn trống đủ số logic element để hoạt động. Điểm khác biệt của Nios II so với các vi xử lý cứng khác, là sự linh hoạt trong việc kết nối với các khối chức năng. Do bản chất "mềm" của Nios II nên chúng ta có thể xây dựng hệ thống sử dụng Nios II có chính xác những khối chức năng, và các khối thiết bị ngoại vi mà ứng dụng yêu cầu.
Có 2 loại khối chức năng: Trần Thế Anh - 10070471 Trang 8 -9- Khối chức năng chuẩn: Altera cung cấp những khối phổ thông như: Flash controller, SDRAM controller,… Khối chức năng tùy chỉnh: người dùng tự tạo ra khối chức năng mới, và tích hợp vào trong hệ thống Nios II. Để tăng hiệu năng, người dùng có thể thiết kế một khối chức năng xử lý một tác vụ mà làm tiêu tốn rất nhiều chu kỳ thực thi lệnh của CPU. Với kỹ thuật này người dùng đạt được 2 lợi ích chính: phần cứng chạy nhanh hơn phần mềm, CPU rảnh có thể thực hiện các tác vụ khác trong lúc khối kia đang xử lý.