1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2

80 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Tác giả Trần Thế Anh
Người hướng dẫn TS. Đinh Đức Anh Vũ
Trường học Đại Học Quốc Gia Thành Phố Hồ Chí Minh TRƯỜNG ĐẠI HỌC BÁCH KHOA
Chuyên ngành Khoa Học Máy tính
Thể loại Luận văn thạc sĩ
Năm xuất bản 2012
Thành phố Tp. HCM
Định dạng
Số trang 80
Dung lượng 3,01 MB

Cấu trúc

  • Chương 1. TỔNG QUAN (15)
    • 1.1. Giới thiệu về FPGA (15)
    • 1.2. Ứng dụng của FPGA (16)
    • 1.3. Giới thiệu board mạch DE2-115 (17)
    • 1.4. Cỏc cụng trỡnh liờn quan đến board mạch De2-115 và àClinux (20)
  • Chương 2. KIẾN TRÚC CPU NIOS-2 (22)
    • 2.1. Tổng quan về vi xử lý mềm Nios2 (22)
    • 2.2. Các đơn vị chức năng (24)
      • 2.2.1 Thanh ghi (24)
      • 2.2.2 Bộ xử lý số học (ALU) (26)
      • 2.2.3 Xử lý exception và interrupt (26)
      • 2.2.4 Tổ chức bus và giao tiếp I/O (27)
      • 2.2.5 Khối debug JTAG (28)
    • 2.3. Các nhóm tập lệnh (29)
    • 2.4. Tổ chức bộ nhớ (32)
    • 2.5. Memory management unit (MMU) (34)
  • Chương 3. XÂY DỰNG CÁC KHỐI PHẦN CỨNG (35)
    • 3.1. Giới thiệu (35)
    • 3.2. Xây dựng CPU (37)
    • 3.3. Xây dựng khối memory onchip TLB (38)
    • 3.4. Xây dựng các khối memory SDRAM (39)
    • 3.5. Xây dựng các khối memory CFI Flash (40)
    • 3.6. Xây dựng các khối Phase locked loop (PLL) (42)
    • 3.7. Xây dựng các khối Ethernet MAC (44)
      • 3.7.2 Triple speed ethernet MAC (45)
      • 3.7.3 Scatter gather DMA Receive (45)
      • 3.7.6 Module reset chip Marvell PHY (47)
    • 3.8. Xây dựng các khối I/O (48)
    • 3.9. Gán địa chỉ ánh xạ bộ nhớ (49)
    • 3.10. Tổng hợp phần cứng (51)
  • Chương 4. CHUYỂN NHÂN LINUX SANG KIẾN TRÚC NIOS-2 (53)
    • 4.1. Giới thiệu về àCLinux (53)
    • 4.2. Chuẩn bị mã nguồn (54)
    • 4.3. Chuẩn bị toolchain compiler (55)
    • 4.4. Tạo file DeviceTree (55)
    • 4.5. Tựy chỉnh nhõn Linux và biờn dịch àClinux (56)
    • 4.6. Nạp zImage vào CFI Flash để hệ thống tự chạy khi cấp điện (63)
  • Chương 5. CHUYỂN IPTABLES VÀ SNORT SANG KIẾN TRÚC NIOS-2 (64)
    • 5.1. Giới thiệu (64)
      • 5.1.1 Iptables (64)
      • 5.1.2 Snort (66)
    • 5.2 Các bước biên dịch iptables và snort (67)
    • 5.3. Sửa lỗi của cross compiler (68)
    • 5.4. Sửa lỗi khi biên dịch snort (69)
    • 5.5. Thử nghiệm chức năng cơ bản (70)
    • 5.6. Thử nghiệm board De2-115 làm tường lửa (71)
  • Chương 6. KẾT LUẬN (76)
  • TÀI LIỆU THAM KHẢO (77)
    • Chương 7. Phụ Lục (78)
      • 7.1. Cài đặt Quartus 12.0 sp2 Web edition trên Ubuntu 12.04 64bit (78)
      • 7.2. Cài đặt các gói hỗ trợ cho toolchain nios2 (79)

Nội dung

Do đó, FPGA được sử dụng rất nhiều trong các lãnh vực kiểm thử ASIC, trong thiết bị mạng, các hệ thống nhúng cần tùy biến phần cứng riêng nhưng số lượng sản xuất thấp… Do FPGA có khả năn

TỔNG QUAN

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

Hình 1.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

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)

Để thiết kế các mạch logic trên FPGA, người dùng có thể sử dụng ngôn ngữ mô tả phần cứng (HDL) hoặc một lược đồ thiết kế (schematic design) HDL mô tả hành vi của mạch logic, trong khi lược đồ thiết kế mô tả cách kết nối các cổng logic cơ bản như AND, OR, NOR, v.v.

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

Ban đầu, FPGA chủ yếu được sử dụng như một thành phần liên kết logic trên bo mạch PCB, tương tự như CPLD Tuy nhiên, với sự gia tăng về độ phức tạp, tốc độ và khả năng tính toán, ứng dụng FPGA đã mở rộng đáng kể Hiện nay, một số chip FPGA tích hợp nhiều thành phần đến mức được quảng cáo như một hệ thống trên một chip (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 Giá $300

• NetFPGA của hãng Digilent Giá $600

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 …

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 NAND flash 8MB, 4Mx16

• SD Card socket, SPI hoặc 4bit mode

• 18 công tắc dạng gạt (slide switch)

• 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)

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

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)" tổng hợp khối MAC cho chip ethernet Davicom DM9000A, sử dụng 1 card mạng ethernet 100Mbps và phiên bản àClinux với khai báo phần cứng custom/config.h Tuy nhiên, cách khai báo này không áp dụng được với các phiên bản àClinux mới và đề 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 độ của card mạng chỉ có thể thay đổi được khi ngắt nguồn điện và cấp lại nguồn Điều này có nghĩa là card mạng không thể hoạt động bình thường nếu bạn rút dây mạng từ switch 1Gbps và cắm vào 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.

KIẾN TRÚC CPU NIOS-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

• 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:

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ý

Tập lệnh tùy chỉnh: người dùng có thể tích hợp một mạch logic vào trong bộ số học (ALU) của CPU nhằm làm tăng hiệu năng xử lý

Nios2 có 2 chế độ hoạt động:

Supervisor mode: thực thi tất cả các chỉ thị lệnh, truy cập được mọi vùng nhớ

In User mode, if the NIOS II system includes an MMU (memory management unit) or an MPU (memory protection unit), applications running in this mode have limited ability to execute instructions and access memory regions.

Các đơn vị chức năng

Vi xử lý Nios 2 có 32 thanh ghi

• Thanh ghi r0 luôn mang giá tr

• Thanh ghi r24 không thể truy c

Hình 2.1:Các khối chức năng bên trong Nios2 ị ức năng

Nios 2 có 32 thanh ghi đa dụng số nguyên 32 bit:

Thanh ghi r0 luôn mang giá trị 0

Thanh ghi r1 chứa giá trị tạm, không lưu giá trị khi có ng Thanh ghi r24wr và r29 được sử dụng trong xử lý exception, user mode ể truy cập r25 và r30 được sử dụng độc quyền bởi JTAG module.

Thanh ghi r27 và r28 quản lý stack Thanh ghi 31 chứa địa chỉ trở về khi gọi chương trình con. ng bên trong Nios2 ị khi có ngắt (interupt) ử lý exception, user mode ề ởi JTAG module ình con

Bảng 2.1: Chức năng thanh ghi

Nios2 có 6 thanh ghi điều khiển cơ bản Các thanh ghi này chỉ được truy xuất trong mode supervisor:

• Thanh ghi ctl0 chứa tình trạng hoạt động của cpu: supervisor hoặc user mode, interupt có được phép hay không, tình trạng của khối MMU / MPU

• Thanh ghi ctl1 chứa bản copy của ctl0, trước khi bị exception

• Thanh ghi ctl2 chứa bản copy của ctl0, trước khi xử lý debug break

• Thanh ghi ctl3 cho phép ngắt xảy ra Mỗi bit tương ứng với 1 ngắt

• Thanh ghi ctl4 cho biết có ngắt nào đang chờ được xử lý hay không

• Thanh ghi ctl5 chứa CPUID

Bảng 2.2: Thanh ghi điều khiển

2.2.2Bộ xử lý số học (ALU)

Bộ xử lý số học của Nios 2 hỗ trợ các tác vụ sau:

• Cộng trừ nhân chia số nguyên

• Dịch và quay Với 1 số cấu hình tiết kiệm, bộ nhân / chia sẽ không được tổng hợp Khi thực thi chương trình có chứa các chỉ thị nhân chia, một exception sẽ được phát ra để phần mềm có thể xử lý tình huống này

2.2.3Xử lý exception và interrupt

Nios2 cung cấp cơ chế xử lý exception đơn giản Khi gặp một exception, CPU sẽ chuyển tới thực thi tại một địa chỉ Địa chỉ này được xác định lúc tổng hợp ra hệ thống

Nios 2 hỗ trợ 32 ngắt cứng ngoài và hỗ trợ ngắt lồng nhau Độ ưu tiên của các ngắt được xác định bằng phần mềm

Phần mềm cũng có thể cho phép / cấm ngắt bằng cách gán / xóa bit trên thanh ghi điều khiển

Quá trình xử lý exception gồm các bước cơ bản sau:

• Chép nội dung trong thanh ghi status ctl0 vào thanh ghi estatus

• Xóa bit PIE trong thanh ghi status để cấm ngắt

• Lưu địa chỉ của lệnh thực thi tiếp theo vào thanh ghi r29

• Nhảy tới địa chỉ của trình xử lý ngoại lệ

2.2.4Tổ chức bus và giao tiếp I/O

Nios 2 sử dụng bus lệnh và dữ liệu độc lập với nhau Kiến trúc bus lệnh và dữ liệu do hãng Altera đề xuất, đặt tên là Avalon - Memory Mapped

Các thành phần IO được kết nối vào Avalon bus, hoạt động ở chế độ slave Nios 2 IO port kết nối vào Avalon hoạt động ở master mode

Bộ nhớ và thiết bị ngoại vi được ánh xạ vào không gian địa chỉ của master port

Data is stored in little-endian mode The instruction master port and data master port of Nios 2 can be combined with cache blocks to improve performance.

Ngoài ra, người dùng có thể tăng tốc truy cập bộ nhớ bằng cách tổng hợp khối tightly coupled memory (TCM) Khối TCM cho phép CPU truy cập bộ nhớ trực tiếp mà không cần thông qua Avalon bus Để kết nối với các thành phần ngoại vi như SRAM, SDRAM, Flash, cần phải tổng hợp các khối giao tiếp bộ nhớ tương ứng Các khối này sẽ kết nối với Avalon bus.

Hình 2.2:Sơ đồ kết nối cpu - bộ nhớ

Kiến trúc Nios II hỗ trợ khối debug JTAG trên chip, giúp điều khiển cpu từ máy tính Khối debug JTAG được kết nối với mạch JTAG trên chip FPGA Phần mềm debug có thể kết nối với khối JTAG để thực hiện những chức năng sau:

• Nạp chương trình vào bộ nhớ

• Sau khi nạp xong chương trình vào trong bộ nhớ, khối debug JTAG có thể thoát khỏi chế độ debug và chuyển sang thực thi lệnh

• Bắt đầu và kết thúc việc thực thi lệnh

• Có thể cho processor chạy từng bước để kiểm tra theo vết (tracing) dữ liệu

• Thiết lập các breakpoint mềm và cứng

• Breakpoint mềm cung cấp khả năng thiết lập breakpoint trong mã thực thi nằm trong bộ nhớ RAM Breakpoint cứng cung cấp khả năng thiết lập breakpoint nằm trong mã thực thi nằm trong bộ nhớ ROM hay Flash

• Xem nội dung các thanh ghi và bộ nhớ

• Thu thập các dữ liệu trong lúc cpu đang thực thi lệnh.

Các nhóm tập lệnh

Tập lệnh của Nios II được chia thành 7 nhóm lần lược mô tả trong các bảng sau

Nhóm lệnh chuyển dữ liệu:

Nios II sử dụng kiến trúc load và store Lệnh load và store có thể thực hiện chuyển dữ liệu giữa thanh ghi, bộ nhớ và thiết bị ngoại vi

Bảng 2.3: Nhóm lệnh chuyển dữ liệu 32bit

Lệnh Mô tả ldw stw

Lệnh ldw và stw dùng để load và store dữ liệu 32 bit từ/đến bộ nhớ Địa chỉ hiệu dụng được tính bằng tổng giá trị của một thanh ghi và một số tức thời ldwio stwio Dùng để trao đổi dữ liệu với các thiết bị ngoại vi

Bảng 2.4:Nhóm lệnh chuyển dữ liệu byte, half-word

Lệnh Mô tả ldb ldbu stb ldh ldhu sth ldb, ldbu, ldh và ldhu dùng để load 1 byte hay half-word từ bộ nhớ vào thanh ghi stb và sth dùng để store giá trị 1 byte và half-word ldb, ldh, stb, sth dùng cho dữ liệu có dấu ldbu, ldhu, stbu, sthu dùng cho dữ liệu không dấu ldbio ldbuio stbio ldhio ldhuio sthio ldbio, ldbuio, ldhio và ldhuio dùng để load 1 byte hay half-word từ thiết bị ngoại vi vào thanh ghi stb và sth dùng để store giá trị 1 byte và half-word ldbio, ldhio, stbio, sthio dùng cho dữ liệu có dấu ldbuio, ldhuio, stbuio, sthuio dùng cho dữ liệu không dấu

Lệnh Mô tả mov movhi movi movui movia mov chép giá trị 1 thanh ghi đến 1 thanh ghi movi chép số tức thời 16bit vào thanh ghi movuiand movhi chép số tức thời không dấu 16bit vào thanh ghi

Movia chép một địa chỉ vào một thanh ghi

Nhóm lệnh số học và luận lý

Bảng 2.6: Nhóm lệnh số học và luận lý

Lệnh Mô tả and or xor nor

Thực hiện các phép toán luận lý với 2 toán hạng là hai thanh ghi andi ori xori

Thực hiện các phép toán luận lý trên số tức thời có dấu, sau đó đưa kết quả vào thanh ghi andhi orhi xorhi

Thực hiện các phép toán luận lý trên số tức thời không dấu, sau đó đưa kết quả vào thanh ghi add sub mul div divu

Toán hạng là 2 thanh ghi, kết quả được lưu vào thanh ghi thứ 3 addi subi muli

Thực hiện pháp toán trên số tức thời có dấu mulxss mulxuu Dùng để truy xuất bit 33 trở lên trong pháp toán nhân 2 số hạng 32 bit mulxsu Dùng để nhân 2 số hạng 64bit

Bảng 2.7: Nhóm lệnh so sánh

Lệnh Mô tả cmpeq == cmpne != cmpge Có dấu >= cmpgeu Không dấu >= cmpgt Có đấu > cmpgtu Không dấu > cmple Có dấu , cần khối vi xử lý và SDRAM controller

Khi ngắt điện, nội dung trong Ram sẽ mất, do đó, cần nơi lưu trữ nội dung thực thi nhân Linux lâu bền (persistent) => Flash controller

Muốn hệ thống hoạt động với chức năng router / firewall thì tất nhiên phải có ít nhất 2 khối Ethernet => Triple speed ethernet

Do nhân Linux là multi-thread, nên cần bộ định thời => timer Để đơn giản trong việc thao tác nhập xuất với hệ thống, VGA controller không được sử dụng, chỉ sử dụng cổng serial RS-232 để giao tiếp

Quá trình tổng hợp của Quartus báo cáo có một số critical path không đáp ứng được yêu cầu về thời gian, do đó, tác giả đã sử dụng clock domain 10MHz cho các thành phần hóa trong giai đoạn place-and-route Để Avalon bus có thể giao tiếp được với nhau, cần phải có khối clock bridge.

Theo khuyến cáo của hãng Altera [6] , để giảm bớt các critical path, tăng throughput, tăng xung clock có thể tổng hợp, pipeline bridge nên được sử dụng

Hình 3.2: Sơ đồ logic khối router sẽ tổng hợp

Hình 3.3:Các khối chức năng trong SOPC Builder

CFI Flash Pipeline bridge CPU - Flash Onchip RAM

PIO Switch PIO LedG PIO LedR

Xây dựng CPU

Thành phần chính trong hệ thống đương nhiên là vi xử lý Dùng công cụ SOPC Builder, tạo ra CPU Nios2 với các thông số như sau:

• Có hardware nhân / chia số nguyên

• Reset vector chỉ về bộ nhớ flash

• Exception vector chỉ về bộ nhớ sdram

• MMU sử dụng onchip ram làm Translation Lookaside Buffer (TLB) cache

Hình 3.4: Chỉ định thông số chính của Nios2

Hình 3.6: Chỉ định tham số TLB cache

Xây dựng khối memory onchip TLB

Tạo một khối memory onchip RAM, dung lượng 4KBytes, dùng làm cache cho TLB Khối này khi tổng hợp sẽ sử dụng khối SRAM bên trong chip FPGA.

Xây dựng các khối memory SDRAM

Tạo SDRAM controller, dùng để kết nối vi xử lý - chip SDRAM bên ngoài Các tham số timing tham khảo từ project demo Golden SOPC trong dĩa CD đi kèm kit De2-115 Để tăng băng thông truy xuất SDRAM, cần nối thêm thành phần Pipeline Bridge Avalon-MM vào giữa CPU - SDRAM controller Pipeline bridge cho phép các yêu cầu trao đổi dữ liệu, thông qua avalon bus được xử lý pipeline, tăng băng thông

Hình 3.10:Kết nối Pipeline bridge CPU - SDRAM

Xây dựng các khối memory CFI Flash

Để Nios2 có thể nạp hệ điều hành từ bộ nhớ Flash, cần phải thêm flash controller vào hệ thống

CFI flash gồm 2 thành phần: Avalon tristate bridge và CFI flash controller

Cần sử dụng tri-state bridge vì bus dữ liệu giữa cpu - flash controller chia sẻ chân tín hiệu cho cả thao tác đọc và thao tác ghi

Hình 3.11:Avalon tri-state bridge

Tương tự, Pipeline Bridge cũng được sử dụng để kết nối CPU - CFI flash:

Hình 3.13: Kết nối Cpu - pipeline bridge - CFI flash

Bộ nhớ flash sẽ chứa compressed image của nhân linux Mỗi khi reset, cpu nios2 sẽ nhảy về reset vector trong bộ nhớ flash để nạp hệ điều hành.

Xây dựng các khối Phase locked loop (PLL)

Do xung clock nguồn thạch anh cung cấp từ bên ngoài là 50MHz, nên phải tổng hợp thêm 2 PLL để cấp xung clock cho các thành phần trên board DE2-115

• PLL_system: phát ra các xung clock sau: o c0: 100Mhz, dùng cho toàn bộ hệ thống o c1: 100Mhz, dịch pha sớm -65⁰, cấp xung cho SDRAM chip Phải dịch pha vì có độ trễ trên bus từ chip FPGA đến SDRAM chip o c2: 10Mhz, dùng cho các thiết bị ngoại vi phụ trợ như led, key, switch, timer Sử dụng xung clock thấp để giảm thiểu số lượng các timing path phải đạt tốc độ cao o c3: 125Mhz, dùng cho khối MAC bên trong chip FPGA, hoạt động ở 1GBit mode o c4: 125Mhz, dịch pha trễ 90⁰, cấp xung cho chip Ethernet Marvell 88E1111, hoạt động ở 1GBit RGMII mode

• PLL_network: phát xung clock cho các khối ethernet o c0: 25Mhz, dùng cho khối TSE MAC Hoạt động ở 100Mbit RGMII mode o c1: 25Mhz, dịch pha trễ 90⁰, cấp xung cho Marvell, 100Mbit RGMII mode o c2: 2.5Mhz, dùng cho khối TSE MAC 10Mbit RGMII mode o c3: 2.5Mhz, dịch pha trễ 90⁰, cấp xung cho Marvell, 10Mbit RGMII mode

Do chip SDRAM được gắn riêng biệt trên bo mạch nên xảy ra hiện tượng lệch pha xung nhịp (clock skew) Để khắc phục, cần cấp xung nhịp cho chip SDRAM sớm hơn xung nhịp cho chip Cyclone 3ns Tần số hoạt động của chip SDRAM và bộ điều khiển SDRAM là 100 MHz, do đó -3ns tương ứng với -65⁰.

Chế độ hoạt động m Reduce Gigabit Media Independance Interface (RGMII) input data tại cạnh lên và c cho chip Marvell phải có s pháp đơn giản cho việc canh bi trễ hơn xung clock của chip Cyclone 90

Tùy vào tín hiệu bắ MAC + PHY sẽ khác nhau tín hiệu RX và TX cho kh

// clock for eth0 wire ena_10_from_the_tse_mac_0 wire eth_1g_mode_from_the_tse_mac_0; wire enet_rx_clk_to_tse_0 = ENET0_RX_CLK

// mac tx line lấy clock tùy vào carrier sense mode wire enet_tx_clk_to_tse_0 = (eth_1g_mode_from_the_tse_mac_0)

// phy tx line wire enet_tx_clk_to_phy_0 = (eth_1g_mode_from_the_tse_mac_0) ạ động mặc định của chip Marvell Ethernet trên Reduce Gigabit Media Independance Interface (RGMII) [8] Mode RGMII ên và cạnh xuống của xung điều khiển [9] ải có sẵn tại thời điểm xung cạnh lên và xung c ản cho việc canh biên tín hiệu là dịch pha xung clock cho chip Marvell ủa chip Cyclone 90⁰ ệu bắt tay (carrier sense signal), mà xung clock c ẽ khác nhau [10] Sau đây là mã nguồn Verilog, cấ à TX cho khối MAC + PHY: wire ena_10_from_the_tse_mac_0; // 10mbit mode wire eth_1g_mode_from_the_tse_mac_0; // 1gbit mode wire enet_rx_clk_to_tse_0 = ENET0_RX_CLK; // rx line lấy clock từ Marvell PHY y clock tùy vào carrier sense mode wire enet_tx_clk_to_tse_0 = (eth_1g_mode_from_the_tse_mac_0)

? clk_eth_tse_1g : (ena_10_from_the_tse_mac_0 == 0 ? clk_eth_tse_100m : clk_eth_tse_10m); wire enet_tx_clk_to_phy_0 = (eth_1g_mode_from_the_tse_mac_0)

? clk_eth_phy_1g : (ena_10_from_the_tse_mac_0 == 0 ? clk_eth_phy_100m : clk_eth_phy_10m); chip Marvell Ethernet trên board De2-115 là

Chuẩn RGMII sử dụng xung mẫu để ghép vào dữ liệu đầu vào và xung cạnh xuống Giải pháp này giúp giảm gánh nặng xử lý cho chip Marvell bằng cách cung cấp xung clock cho khối xử lý Verilog và cấp xung clock cho

Vì lý do tín hiệu xung clock cấp cho 2 chip Marvell phải đi ra bên ngoài, hãng Altera khuyến cáo nên sử dụng bộ đệm DDR (double data rate buffer) để làm vuông tín hiệu xung clock

// sử dụng double data rate buffer để làm xung cạnh lên vuông vức hơn ddr_o clk_buffer_to_phy_0(.datain_h(1'b1), datain_l(1'b0),

outclock(enet_tx_clk_to_phy_0), dataout(ENET0_GTX_CLK) );

Xây dựng các khối Ethernet MAC

Hệ thống gồm 2 khối Ethernet MAC Mỗi khối ethernet MAC có cấu trúc bên trong [10] như hình sau:

Hình 3.15: Cấu trúc khối Ethernet MAC

3.7.2Triple speed ethernet MAC Đây là khối chức năng xử lý ethernet frame, tầng MAC trong mô hình OSI Chỉ định khối TSE MAC với cấu hình sau:

• Reduce Gigabit Media Independent Interface (RGMII)

• MDIO clock 2.5MHz (xung clock cấp cho TSE là 100Mhz => phải chia 40 để ra clock 2.5MHz)

Hình 3.16:Thông số khối TSE 3.7.3Scatter gather DMA Receive:

Khối SGDMA có chức năng chuyển kiểu dữ liệu tuần tự sang khối (block) 32 bytes, rồi ghi vào memory SGDMA có 2 loại giao tiếp Avalon bus:

Avalon MM: kết nối với SDRAM, đọc hoặc ghi dữ liệu theo khối byte

Avalon ST: kết nối với TSE MAC, đọc ghi từng bit

Hình 3.17:Thông số SGDMA receiver 3.7.4Scatter gather DMA Transmit:

Khối SGDMA chuyển dữ liệu từng block 32 bytes sang kiểu tuần tự để ghi ra chip Marvell PHY

Hình 3.18:Thông số SGDMA transmiter

3.7.5DMA descriptor memory: Đây là vùng nhớ chứa các entry thông tin cho khối Scatter Gather DMA hoạt động

Hình 3.19:DMA descriptor memory 3.7.6Module reset chip Marvell PHY

Khi được cấp điện, chip Marvell 88E1111 PHY cần tín hiệu reset trong trạng thái kích hoạt (active) trong khoảng 500ms [9] , thì mới hoạt động bình thường

Sau đây là mã nguồn Verilog của module phát xung reset: module gen_reset_n( tx_clk, reset_n_in, reset_n_out ); input tx_clk; input reset_n_in; output reset_n_out; reg reset_n_out; parameter ctr_width = 20; // richard 16; reg [ctr_width-1:0] ctr; // Reset counter begin if (!reset_n_in) begin reset_n_out /proc/sys/net/ipv4/conf/all/forwarding echo 1 > /proc/sys/net/ipv4/conf/default/forwarding

Gõ lệnh make để biên dịch lại zImage

Sau khi biên dịch xong, trong thư mục nios2-linux/ucLinux-dist/image/ sẽ có file zImage Dùng lệnh sau để nạp zImage vào bộ nhớ của hệ thống: nios2-download -rg image/zImage Để giữ cấu hình khi mất điện, dùng công cụ elf2flash để chuyển thành định dạng flash, cuối cùng, dùng lệnh nios2-flash-programmer để ghi vào flash

Nạp file bitstream sof vào board De2-115, nếu đã nạp zImage vào flash, thì àClinux sẽ tự khởi động

Cắm cáp serial nối máy tính và cổng DB-9 trên board De2-115, các nhập xuất tương tác với linux console sẽ thông qua giao tiếp này

Để cấu hình giao diện mạng, bạn có thể sử dụng lệnh ifconfig để gán địa chỉ IP và khởi động giao diện Sau khi cấu hình giao diện mạng, bạn có thể sử dụng lệnh snort để bắt đầu phân tích gói tin Để thử nghiệm, hãy ping đến địa chỉ IP của giao diện mạng đã cấu hình và kiểm tra các tệp nhật ký trong thư mục /var/log/snort để xem các gói tin ICMP đã được phân tích.

Thử nghiệm board De2-115 làm tường lửa

Để thử nghiệm board De2-115 làm tường lửa, người dùng có thể kết nối board De2-115 giữa máy tính và modem / router Internet Sử dụng các giao thức http, pop3, ftp, voip

Sau đây là sơ đồ thử nghiệm băng thông của tính năng router + firewall + snort:

Hình 5.4: Sơ đồ kết nối mạng thử nghiệm băng thông

Server là một máy ảo, Windows 2008R2 64 bit, chạy trên server IBM 3650 M3

Server nối với switch gigabit Cisco 3560-X

Thông thường, người dùng sẽ cắm cáp nối máy tính với switch Cisco Trong kịch bản thử nghiệm, board De2-115 sẽ nằm giữa user và switch Cisco

Sau đây là kết quả thử nghiệm

Hình 5.5: ICMP delay khi thông qua De2-115

Hình 5.6: ICMP delay khi đi trực tiếp

Ping delay khi có thêm De2 vào chính giữa user và server vào khoảng +800 micro giây

Ping delay không cải thiện khi tăng xung clock cho vi xử lý Nios2

Hình 5.7: ICMP delay khi thông qua De2, xung 166MHz

Sau đây là kết quả thử nghiệm băng thông

Hình 5.8: Băng thông TCP giữa user và server thông qua De2

Hình 5.9:Băng thông giữa user và server không thông qua De2

Băng thông mạng đạt được vào khoảng 2.8Mbytes/s, với xung clock cấp cho Nios2 và các khối ethernet là 100MHz

Nếu tăng xung clock cấp cho cpu Nios2, các thành phần khác vẫn giữ nguyên xung clock 100MHz, thì băng thông có cải thiện chút ít

Biểu đồ sau thống kê băng thông trong trường hợp chỉ sử dụng chức năng NAT, và sử dụng NAT + Snort, ở các mức xung clock 100, 133, 166 Mhz Board De2-115 không khởi động được cpu ở xung clock cao hơn nữa

Snort thử nghiệm trong biểu đồ sau chỉ so khớp gói tin ICMP

Hình 5.10:Băng thông hệ thống ở các xung clock khác nhau

Ngày đăng: 24/09/2024, 14:09

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[3] Huỳnh Bảo Trọng và Ngô Văn Trung, “Quản lý tải dữ liệu trên board De2”, LV Đại Học, ĐHBK, 1-2009 Sách, tạp chí
Tiêu đề: “Quản lý tải dữ liệu trên board De2”
[2] Website http://www.altera.com/products/ip/processors/ipm-index.jsp Link
[11] Website http://www.alterawiki.com/wiki/Devicetree Link
[12] Website http://www.alterawiki.com/wiki/Linux_Desktop_Install [13] Website http://www.alterawiki.com/wiki/Sopc2dts Link
[14] Website http://www.alterawiki.com/wiki/New_Qsys_Issues Link
[1] DE2-115 Development and Education Board User Manual, Terasic Inc Khác
[4] Introduction to the Altera Nios II Soft Processor, Altera Khác
[5] Nios2 processor reference handbook, Altera Khác
[6] Avalon Interface Specifications, Altera Khác
[7] Using the SDRAM Memory on Altera’s DE2 Board with Verilog Design, Altera Khác
[8] De2-115 User manual, Terasic Inc Khác
[9] Marvell 88E1111 Product Brief Gigabit Ethernet Transceiver, Marvell Khác
[10] Triple-Speed Ethernet MegaCore Function User Guide, Altera Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.1:  Cấu trúc chip FPGA - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Hình 1.1 Cấu trúc chip FPGA (Trang 15)
Hình 1.3: Mặt trên board De2-115 - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Hình 1.3 Mặt trên board De2-115 (Trang 18)
Hình 1.4: Sơ đồ kết nối board De2-115 - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Hình 1.4 Sơ đồ kết nối board De2-115 (Trang 20)
Bảng 2.1: Chức năng thanh ghi - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Bảng 2.1 Chức năng thanh ghi (Trang 25)
Hình 2.2: Sơ đồ kết nối cpu - bộ nhớ - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Hình 2.2 Sơ đồ kết nối cpu - bộ nhớ (Trang 28)
Hình 2.3: Sơ đồ phân bố địa chỉ vật lý - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Hình 2.3 Sơ đồ phân bố địa chỉ vật lý (Trang 33)
Hình 3.3: Các khối chức năng trong SOPC Builder - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Hình 3.3 Các khối chức năng trong SOPC Builder (Trang 36)
Hình 3.6: Chỉ định tham số TLB cache - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Hình 3.6 Chỉ định tham số TLB cache (Trang 38)
Hình 3.8: Onchip ram TLB  3.4. Xây dựng các khối memory SDRAM - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Hình 3.8 Onchip ram TLB 3.4. Xây dựng các khối memory SDRAM (Trang 39)
Hình 3.12: CFI flash controller - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Hình 3.12 CFI flash controller (Trang 41)
Hình 3.15: Cấu trúc khối Ethernet MAC - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Hình 3.15 Cấu trúc khối Ethernet MAC (Trang 44)
Hình 3.16: Thông số khối TSE  3.7.3 Scatter gather DMA Receive: - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Hình 3.16 Thông số khối TSE 3.7.3 Scatter gather DMA Receive: (Trang 45)
Hình 3.17: Thông số SGDMA receiver  3.7.4 Scatter gather DMA Transmit: - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Hình 3.17 Thông số SGDMA receiver 3.7.4 Scatter gather DMA Transmit: (Trang 46)
Hình 3.19: DMA descriptor memory  3.7.6 Module reset chip Marvell PHY - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Hình 3.19 DMA descriptor memory 3.7.6 Module reset chip Marvell PHY (Trang 47)
Bảng 3.1: Ánh xạ phần cứng vào không gian địa chỉ - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Bảng 3.1 Ánh xạ phần cứng vào không gian địa chỉ (Trang 50)
Hình 3.21: Ánh xạ địa chỉ khối DMA descriptor - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Hình 3.21 Ánh xạ địa chỉ khối DMA descriptor (Trang 50)
Hình 3.22: Số logic element của hệ thống - Luận văn thạc sĩ Khoa học máy tính: Chuyển TCP/IP stack và nhân Linux sang kiến trúc vi xử lý NIOS 2
Hình 3.22 Số logic element của hệ thống (Trang 51)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN