Giới thiệu dự án

Trong kỷ nguyên vạn vật kết nối (IoT), hệ thống nhúng thông minh và xử lý dữ liệu tốc độ cao tại biên (Edge Computing), nhu cầu truyền nhận dữ liệu băng thông lớn với độ trễ cực thấp (Ultra-low Latency) trở thành yêu cầu sống còn. Các hệ thống thu thập dữ liệu công nghiệp (DAQ), hệ thống xử lý ảnh thời gian thực, radar và viễn thông hiện đại đòi hỏi tốc độ truyền thông tối thiểu 1 Gbps.

Tuy nhiên, các giải pháp truyền thống dựa trên vi điều khiển hoặc CPU nhúng thực thi ngăn xếp mạng (Network Stack) bằng phần mềm (như lwIP) gặp phải nút thắt cổ chai nghiêm trọng: độ trễ xử lý gói tin dao động từ 50 µs đến 200 µs và chiếm dụng tới 80–95% năng lực xử lý của CPU khi hoạt động ở lưu lượng mạng xấp xỉ 1 Gbps.

+-------------------------------------------------------------------------+
|                  TRUYỀN DỮ LIỆU MẠNG TRONG HỆ THỐNG NHÚNG               |
+------------------------------------+------------------------------------+
|  GIẢI PHÁP TRUYỀN THỐNG (SOFTWARE) |  GIẢI PHÁP ĐỀ XUẤT (HARDWARE RTL)  |
|  CPU + lwIP Stack                  |  Dedicated Ethernet IP Core        |
|  - Trễ cao: 50 - 200 µs            |  - Trễ phần cứng: < 1 µs           |
|  - Chiếm 80-95% tài nguyên CPU     |  - 0% CPU overhead khi stream      |
|  - Bị drop gói ở tốc độ 1 Gbps     |  - Line-rate throughput: 1000 Mbps |
+------------------------------------+------------------------------------+

Đồ án khóa luận "Thiết kế và hiện thực IP Ethernet 1Gbps trên FPGA" giải quyết triệt để vấn đề này bằng cách thiết kế một lõi IP phần cứng chuyên dụng (Hardware IP Core) trên vi mạch mảng phần tử logic lập trình được (FPGA), đảm nhận toàn bộ quy trình đóng gói, giải mã và xử lý lỗi các khung truyền mạng theo thời gian thực ở tốc độ đường truyền (Line-rate).

Mục tiêu dự án

  1. Thiết kế hoàn chỉnh các tầng giao thức phần cứng: Xây dựng các khối chức năng GMII (Gigabit Media Independent Interface), MAC (Media Access Control), IPv4 (Internet Protocol version 4), ARP (Address Resolution Protocol) và UDP (User Datagram Protocol) tuân thủ tiêu chuẩn IEEE 802.3z.
  2. Tối ưu hóa giao tiếp bus nội bộ: Tích hợp giao diện truyền dữ liệu luồng tốc độ cao AXI4-Stream (AXIS) 8-bit, hoạt động đồng bộ tại tần số 125 MHz nhằm đạt thông lượng lý thuyết 1000 Mbps.
  3. Hiện thực thuật toán kiểm tra lỗi tốc độ cao: Xây dựng bộ tính toán kiểm tra chuỗi khung (FCS - Frame Check Sequence) sử dụng mã kiểm tra dư thừa tuần hoàn CRC-32 với cấu trúc thanh ghi dịch phản hồi tuyến tính Galois (Galois LFSR) xử lý song song trên từng byte dữ liệu.
  4. Hiện thực và kiểm thử trên phần cứng thực tế: Tổng hợp và nạp thiết kế lên kit phát triển Xilinx Virtex-7 VC707, kiểm chứng khả năng giao tiếp UDP/IP thông suốt với máy tính qua cổng Ethernet RJ45.
  5. Tích hợp hệ thống trên vi mạch (SoC): Kết nối IP Ethernet vào hệ thống SoC hoàn chỉnh điều khiển bởi vi xử lý nhúng MicroBlaze thông qua AXI Direct Memory Access (AXI DMA).

Phạm vi và giới hạn

  • Chế độ truyền dẫn: Hoạt động ở chế độ Song công toàn phần (Full-Duplex), loại bỏ nhu cầu xử lý xung đột CSMA/CD vốn không cần thiết trong mạng chuyển mạch Gigabit hiện đại.
  • Giao thức truyền vận: Tập trung tối ưu hóa cho UDP (RFC 768), không triển khai TCP nhằm giảm thiểu diện tích logic phần cứng và loại bỏ độ trễ do cơ chế bắt tay/truyền lại.
  • Kích thước gói tin: Hỗ trợ chuẩn MTU (Maximum Transmission Unit) 1500 byte dữ liệu, hỗ trợ đệm khung ngắn tối thiểu 46 byte (không bao gồm tính năng Jumbo Frame 9000 byte).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trước khi bắt tay vào thiết kế phần cứng, các hướng tiếp cận xử lý truyền thông Ethernet phổ biến trên hệ thống nhúng đã được phân tích và so sánh:

Tiêu chí Ngăn xếp phần mềm (lwIP trên CPU nhúng) IP thương mại đóng gói (Xilinx TEMAC IP) Lõi IP RTL đề xuất (Khóa luận)
Băng thông thực tế 100 – 350 Mbps (bị giới hạn bởi xung nhịp CPU) 950 – 990 Mbps 980 – 1000 Mbps (Full Line-rate)
Độ trễ xử lý gói 50 – 200 µs (chịu ảnh hưởng của ngắt và OS) 1 – 3 µs < 1 µs (Xử lý theo chu kỳ xung nhịp)
Tiêu tốn CPU Rất cao (80% – 95% CPU Load) Thấp (xử lý MAC phần cứng) 0% CPU Load đối với luồng dữ liệu UDP
Tài nguyên FPGA Tiêu tốn lớn RAM cho Software Stack Tài nguyên cố định, license bản quyền đắt Tối ưu hóa cao, tiêu thụ logic cực thấp
Tính tùy biến Cao ở tầng ứng dụng Rất thấp (Black-box IP Core) Toàn quyền tùy biến ở mức thanh ghi RTL

Ưu tiên yêu cầu hệ thống (Phương pháp MoSCoW)

  • Must Have (Bắt buộc): GMII PHY Interface (8-bit @ 125 MHz), Bộ điều khiển MAC Tx/Rx, Galois LFSR CRC-32, Module phân giải địa chỉ ARP Request/Reply, Đóng/mở gói IPv4 và UDP, Giao diện AXI4-Stream.
  • Should Have (Nên có): Bộ nhớ đệm ARP Cache dạng bảng băm (Hash Table), Tích hợp AXI DMA chuyển dữ liệu trực tiếp vào DDR3 SDRAM, Arbiter phân xử ưu tiên luồng dữ liệu.
  • Could Have (Có thể có): Xử lý phần cứng phản hồi giao thức ICMP Echo (Ping).
  • Won't Have (Chưa thực hiện đợt này): Ngăn xếp TCP/IP đầy đủ, Quản lý địa chỉ động qua DHCP Client, Hỗ trợ VLAN Tagging (IEEE 802.1Q).

Thiết kế hệ thống

Kiến trúc IP Ethernet 1Gbps được thiết kế theo cấu trúc module phân tầng, ánh xạ trực tiếp từ mô hình tham chiếu OSI xuống kiến trúc phần cứng FPGA.

graph TD
    subgraph Physical_Layer ["Physical Layer (PHY 1000BASE-T)"]
        PHY[Ethernet PHY Marvell 88E1111 / PHY Chip]
    end

    subgraph Ethernet_IP_Core ["Ethernet IP Core 1Gbps (125 MHz Clock Domain)"]
        GMII["GMII Interface (RXD[7:0], TXD[7:0], RXCLK, GTXCLK)"]
        
        subgraph Data_Link_Layer ["Data Link Layer (MAC)"]
            MAC_RX["MAC Rx Engine + Galois LFSR (CRC-32 Check)"]
            MAC_TX["MAC Tx Engine + Galois LFSR (FCS Generator)"]
            NET_ARB["Network-Datalink Arbiter (Priority: ARP > IPv4)"]
        end

        subgraph Network_Layer ["Network Layer"]
            ARP["ARP Module (Cache + Request/Reply Engine)"]
            IPV4_RX["IPv4 Rx Engine (Header Checksum Check)"]
            IPV4_TX["IPv4 Tx Engine (Header Checksum Generator)"]
            TRANS_ARB["Transport-Network Arbiter (Priority: UDP > Others)"]
        end

        subgraph Transport_Layer ["Transport Layer (UDP)"]
            UDP_RX["UDP Rx Engine (Port/Length/Checksum Filter)"]
            UDP_TX["UDP Tx Engine (Length/Port Generator)"]
        end
    end

    subgraph SoC_Interconnect ["SoC & Application Layer"]
        AXIS_RX["AXI4-Stream Master (Data Out)"]
        AXIS_TX["AXI4-Stream Slave (Data In)"]
        DMA["AXI Direct Memory Access (DMA Engine)"]
        MB["MicroBlaze Soft CPU / User Logic"]
        DDR["DDR3 Memory via MIG"]
    end

    PHY <-->|8-bit @ 125MHz| GMII
    GMII <--> MAC_RX & MAC_TX
    MAC_RX --> NET_ARB
    NET_ARB <--> ARP
    NET_ARB --> IPV4_RX
    IPV4_TX --> NET_ARB
    IPV4_RX --> TRANS_ARB
    TRANS_ARB --> UDP_RX
    UDP_TX --> TRANS_ARB
    TRANS_ARB --> IPV4_TX
    UDP_RX --> AXIS_RX
    AXIS_TX --> UDP_TX
    AXIS_RX & AXIS_TX <--> DMA
    DMA <--> DDR
    DMA <--> MB

Ngăn xếp công nghệ và công cụ

  • Môi trường thiết kế RTL: Xilinx Vivado Design Suite 2022.2.
  • Ngôn ngữ mô tả phần cứng: Verilog HDL (IEEE 1364-2001) / SystemVerilog.
  • Môi trường phát triển phần mềm SoC: Xilinx Vitis Unified Software Platform 2022.2.
  • Nền tảng phần cứng: Bo mạch đánh giá Xilinx Virtex-7 FPGA VC707 (Chip XC7VX485T-2FFG1761C).
  • Công cụ phân tích mạng: Wireshark v4.0.3, Packet Sender, Netcat, Realterm Serial Monitor.

Đặc tả giao diện GMII và AXI4-Stream

  • Giao diện GMII (Gigabit Media Independent Interface):
    • Tần số hoạt động: 125 MHz (Chu kỳ xung nhịp $T = 8\text{ ns}$).
    • Đường truyền nhận dữ liệu: 8-bit riêng biệt (gmii_rxd[7:0]gmii_txd[7:0]), mang lại băng thông $125\text{ MHz} \times 8\text{ bits} = 1000\text{ Mbps}$.
    • Tín hiệu điều khiển: gmii_rx_dv (Data Valid), gmii_rx_er (Error), gmii_tx_en (Transmit Enable), gmii_tx_er (Transmit Error).
  • Giao diện AXI4-Stream:
    • axis_tdata[7:0]: Bus dữ liệu byte-stream.
    • axis_tvalid: Tín hiệu từ Master báo dữ liệu hợp lệ.
    • axis_tready: Tín hiệu từ Slave báo sẵn sàng nhận dữ liệu.
    • axis_tlast: Tín hiệu xác định byte cuối cùng của khung dữ liệu (End of Frame).

Phương pháp nghiên cứu và phát triển

Dự án áp dụng mô hình chữ V (V-Model) trong thiết kế vi mạch kỹ thuật số:

  1. Thiết kế kiến trúc (Architecture Specification): Định nghĩa máy trạng thái hữu hạn (FSM) và giao diện kết nối giữa các module.
  2. Mô tả phần cứng mức RTL (RTL Modeling): Lập trình Verilog từng khối độc lập (MAC, ARP, IPv4, UDP, LFSR).
  3. Mô phỏng chức năng (Functional Simulation): Xây dựng Testbench với các vector kiểm thử khung tin Ethernet thực tế.
  4. Tổng hợp và phân tích định thời (Synthesis & Timing Closure): Đảm bảo thiết kế đáp ứng chặt chẽ ràng buộc xung nhịp 125 MHz không bị vi phạm Setup/Hold Time ($WNS > 0$, $WHS > 0$).
  5. Thực thi trên phần cứng (Hardware Implementation & SoC Integration): Nạp Bitstream lên FPGA VC707, tích hợp MicroBlaze và AXI DMA.
Rủi ro kỹ thuật Mức độ Biện pháp giảm thiểu
Vi phạm định thời (Timing Violation) tại 125 MHz Cao Chèn thanh ghi Pipelining ở ngõ ra CRC và bộ giải mã giao thức.
Mất gói tin khi chuyển giao tiếp (Backpressure) Trung bình Sử dụng FIFO đệm AXI4-Stream với cơ chế tín hiệu tready kiểm soát luồng.
Xung đột giữa luồng ARP và dữ liệu UDP Trung bình Thiết kế bộ phân xử Arbiter ưu tiên cố định (Fixed Priority) cho gói ARP.

Implementation và kết quả

Quá trình phát triển chi tiết

1. Bộ tính toán CRC-32 Galois LFSR (FCS Engine)

Tiêu chuẩn IEEE 802.3 sử dụng đa thức sinh chuẩn 32-bit: $$G(x) = x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11} + x^{10} + x^{8} + x^{7} + x^{5} + x^{4} + x^{2} + x + 1$$ Mã hexa biểu diễn đa thức đảo là 0x04C11DB7. Để tính toán song song 8-bit dữ liệu trong một chu kỳ xung nhịp 125 MHz, thuật toán Galois LFSR được triển khai trực tiếp bằng Verilog:

// Module tinh toan CRC32 song song 8-bit theo chuan IEEE 802.3
module crc32_8bit (
    input  wire        clk,
    input  wire        rst_n,
    input  wire        crc_en,
    input  wire        crc_clr,
    input  wire [7:0]  data_in,
    output wire [31:0] crc_out
);
    reg [31:0] lfsr_q;
    wire [31:0] lfsr_c;
    wire [7:0]  d;

    // Dao nguoc thu tu bit dau vao theo tieu chuan Ethernet
    assign d = {data_in[0], data_in[1], data_in[2], data_in[3], 
                data_in[4], data_in[5], data_in[6], data_in[7]};

    assign lfsr_c[0]  = lfsr_q[24] ^ lfsr_q[30] ^ d[0] ^ d[6];
    assign lfsr_c[1]  = lfsr_q[24] ^ lfsr_q[25] ^ lfsr_q[30] ^ lfsr_q[31] ^ d[0] ^ d[1] ^ d[6] ^ d[7];
    assign lfsr_c[2]  = lfsr_q[24] ^ lfsr_q[25] ^ lfsr_q[26] ^ lfsr_q[30] ^ lfsr_q[31] ^ d[0] ^ d[1] ^ d[2] ^ d[6] ^ d[7];
    assign lfsr_c[6]  = lfsr_q[26] ^ lfsr_q[27] ^ lfsr_q[28] ^ lfsr_q[30] ^ d[2] ^ d[3] ^ d[4] ^ d[6];
    // ... (Cac bieu thuc logic tuong ung voi ma tran bien doi Galois CRC-32)
    assign lfsr_c[31] = lfsr_q[23] ^ lfsr_q[29] ^ d[5] ^ d[7];

    always @(posedge clk or negedge rst_n) begin
        if (!rst_n)
            lfsr_q <= 32'hFFFFFFFF;
        else if (crc_clr)
            lfsr_q <= 32'hFFFFFFFF;
        else if (crc_en)
            lfsr_q <= lfsr_c;
    end

    // Dao nguoc bit va bu 1 o ngo ra de tao FCS hop le
    assign crc_out = ~{lfsr_q[24], lfsr_q[25], lfsr_q[26], lfsr_q[27],
                       lfsr_q[28], lfsr_q[29], lfsr_q[30], lfsr_q[31],
                       lfsr_q[16], lfsr_q[17], lfsr_q[18], lfsr_q[19],
                       lfsr_q[20], lfsr_q[21], lfsr_q[22], lfsr_q[23],
                       lfsr_q[8],  lfsr_q[9],  lfsr_q[10], lfsr_q[11],
                       lfsr_q[12], lfsr_q[13], lfsr_q[14], lfsr_q[15],
                       lfsr_q[0],  lfsr_q[1],  lfsr_q[2],  lfsr_q[3],
                       lfsr_q[4],  lfsr_q[5],  lfsr_q[6],  lfsr_q[7]};
endmodule

2. Máy trạng thái hữu hạn xử lý Frame Ethernet (MAC Tx FSM)

Module MAC Tx điều khiển quá trình đóng gói Ethernet Frame tuần tự qua các trạng thái:

  • STATE_IDLE: Chờ tín hiệu yêu cầu truyền dữ liệu từ tầng trên (axis_valid).
  • STATE_PREAMBLE: Phát 7 byte Preamble (0x55) và 1 byte SFD (0xD5).
  • STATE_HEADER: Phát 6 byte Destination MAC, 6 byte Source MAC và 2 byte EtherType (0x0800 cho IPv4 hoặc 0x0806 cho ARP).
  • STATE_PAYLOAD: Phát dữ liệu từ tầng mạng, đồng thời kích hoạt module CRC32 tính toán liên tục.
  • STATE_PAD: Chèn các byte đệm (0x00) nếu chiều dài Payload nhỏ hơn 46 byte.
  • STATE_FCS: Phát 4 byte kết quả CRC-32 đã tính toán.
  • STATE_IFG: Tạo khoảng cách giữa các khung truyền (Inter-Frame Gap - 12 chu kỳ clock).
                      +-------------------+
                      |    STATE_IDLE     |<----------------------+
                      +-------------------+                       |
                                | (axis_valid == 1)               |
                                v                                 |
                      +-------------------+                       |
                      |  STATE_PREAMBLE   |                       |
                      |  (7x 0x55 + 0xD5) |                       |
                      +-------------------+                       |
                                |                                 |
                                v                                 |
                      +-------------------+                       |
                      |   STATE_HEADER    |                       |
                      |  (Dst/Src/Type)   |                       |
                      +-------------------+                       |
                                |                                 |
                                v                                 |
                      +-------------------+                       |
         +----------->|   STATE_PAYLOAD   |                       |
         |            +-------------------+                       |
         | (pad_req)            | (last_byte)                     |
         v                      v                                 |
+-----------------+   +-------------------+                       |
|    STATE_PAD    |   |     STATE_FCS     |                       |
| (Pad to 46B)    |-->|   (4-byte CRC32)  |                       |
+-----------------+   +-------------------+                       |
                                |                                 |
                                v                                 |
                      +-------------------+                       |
                      |     STATE_IFG     |-----------------------+
                      |   (12 Clock IFG)  | (IFG counter done)
                      +-------------------+

Kiểm thử và đánh giá hiệu năng

Quy trình xác thực được thực hiện thông qua mô hình kết nối vật lý trực tiếp giữa bo mạch FPGA VC707 và Card mạng Gigabit của PC máy trạm:

+------------------+         Gigabit Ethernet Cable (Cat6)        +------------------+
|   Host PC (NIC)  |<============================================>|  FPGA Board VC707|
| IP: 192.168.1.10 |                                              | IP: 192.168.1.128|
| MAC: Host PC MAC |                                              | MAC: Fixed HW MAC|
+------------------+                                              +------------------+
         |                                                                 |
         +--> Wireshark (Bắt & Phân tích gói tin)                         +--> AXI DMA Engine
         +--> Packet Sender / Netcat UDP Stream                           +--> MicroBlaze SoC
         +--> Realterm Serial Terminal (Giám sát UART)                    +--> DDR3 SDRAM MIG
  1. Kiểm tra giải mã giao thức ARP:
    • PC gửi gói ARP Request dạng Broadcast: "Who has 192.168.1.128? Tell 192.168.1.10".
    • Lõi IP Ethernet trên FPGA phát hiện EtherType 0x0806, chuyển gói sang module ARP, xử lý trong 1 chu kỳ clock và gửi lại ARP Reply chứa địa chỉ MAC phần cứng của FPGA. PC cập nhật thành công bảng ARP cache trong thời gian < 1 ms.
  2. Kiểm tra luồng truyền dữ liệu UDP (Netcat Test):
    • Sử dụng lệnh nc -u 192.168.1.128 8080 trên máy trạm để phát chuỗi dữ liệu nhị phân liên tục.
    • Phần mềm Wireshark bắt trọn vẹn các gói tin UDP, kiểm tra trường FCS luôn hợp lệ (FCS status: Good), không xảy ra hiện tượng lệch byte hay sai checksum.
  3. Độ trễ xử lý gói tin (Hardware Latency):
    • Thời gian từ khi byte SFD cuối cùng đi vào GMII Rx đến khi byte dữ liệu đầu tiên xuất hiện tại ngõ ra axis_tdata là đúng 14 chu kỳ clock (112 ns).
    • Thời gian xử lý đóng gói từ lúc cấp dữ liệu vào axis_tdata đến khi byte Preamble đầu tiên phát ra GMII Tx là 8 chu kỳ clock (64 ns).

Thống kê tài nguyên phần cứng trên Xilinx Virtex-7 (XC7VX485T)

Toàn bộ lõi IP Ethernet 1Gbps sử dụng một lượng tài nguyên cực kỳ nhỏ gọn trên FPGA:

Loại tài nguyên Tài nguyên Lõi IP sử dụng Tổng tài nguyên có sẵn trên Chip Tỷ lệ sử dụng (%)
Slice LUTs (Logic) 1,482 303,600 0.48%
Slice Registers (FF) 1,215 607,200 0.20%
Block RAM (BRAM 36Kb) 2 (dùng cho FIFO đệm) 1,030 0.19%
Xung nhịp tối đa ($F_{max}$) 175.4 MHz 125 MHz Target Đạt chuẩn (Slack +2.3ns)

Đổi mới và đóng góp

  1. Kiến trúc phần cứng thuần túy không phụ thuộc vi xử lý: Khác với các giải pháp nhúng truyền thống phải dựa vào CPU để phân tích tiêu đề gói tin, thiết kế này hoàn toàn xử lý bằng các khối mạch logic phần cứng độc lập (RTL FSMs), loại bỏ 100% tải tính toán của CPU đối với các luồng truyền streaming.
  2. Mạch tính toán Galois LFSR song song 8-bit tối ưu: Triển khai trực tiếp ma trận logic tổ hợp rút gọn giúp tính toán CRC-32 trong đúng 1 chu kỳ xung nhịp 8 ns trên từng byte dữ liệu nhận được, không tạo bọt khí đường ống (Pipeline Bubble).
  3. Cơ chế phân xử kép (Dual-Arbiter Architecture):
    • Phân xử tầng Giao vận – Mạng (Transport-Network Arbiter): Ưu tiên luồng dữ liệu UDP thời gian thực.
    • Phân xử tầng Mạng – Liên kết dữ liệu (Network-Datalink Arbiter): Tự động ưu tiên gói điều khiển ARP phản hồi tức thì, ngăn chặn hiện tượng mất liên lạc định tuyến khi đường truyền dữ liệu bị nghẽn.
  4. Chuẩn hóa giao diện AXI4-Stream công nghiệp: Cho phép kết nối Plug-and-Play vào bất kỳ hệ thống SoC hiện đại nào trên nền tảng Xilinx Vivado (kết nối trực tiếp với AXI DMA, Video Processing IP, High-speed ADC/DAC Controller).

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế

  • Hệ thống thu thập dữ liệu radar và cảm biến công nghiệp tốc độ cao: Truyền trực tiếp luồng dữ liệu thô từ bộ chuyển đổi tương tự - số (ADC) 14-bit/100MSPS về máy chủ xử lý trung tâm mà không cần CPU trung gian.
  • Camera công nghiệp và truyền phát hình ảnh thời gian thực: Đóng gói các khung hình raw độ phân giải Full HD 1080p @ 60fps thành các gói tin UDP/IP truyền qua cáp quang hoặc cáp đồng Cat6 với độ trễ dưới mili-giây.
  • Giao dịch tài chính tần số cao (High-Frequency Trading - HFT): Xử lý và phân tích các gói tin dữ liệu thị trường trực tiếp ở mức phần cứng với độ trễ vài trăm nano-giây.
+-----------------------------------------------------------------------------------+
|               LỘ TRÌNH TRIỂN KHAI HỆ THỐNG TRUYỀN THÔNG TỐC ĐỘ CAO                |
+-----------------------------------------------------------------------------------+
| Giai đoạn 1 (Tháng 1-2): Tích hợp IP Core vào Vivado Block Design và gán Pin PHY. |
| Giai đoạn 2 (Tháng 3-4): Kết nối AXI DMA với DDR3 Memory Controller (MIG).        |
| Giai đoạn 3 (Tháng 5): Cấu hình Driver C trên Vitis để quản lý bộ đệm phân tán.   |
| Giai đoạn 4 (Tháng 6): Đo kiểm thông lượng đường truyền với Iperf3 / Netcat.      |
+-----------------------------------------------------------------------------------+

Yêu cầu triển khai hệ thống

  • Phần cứng: Bo mạch FPGA có cổng Ethernet PHY hỗ trợ chuẩn GMII hoặc RGMII (như Xilinx VC707, KC705, Zynq-7000 ZedBoard), Cáp mạng Cat5e/Cat6.
  • Phần mềm: Xilinx Vivado Design Suite 2020.1 trở lên, Trình biên dịch C/C++ Vitis SDK.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Giao thức đơn giản: Hiện tại mới chỉ hỗ trợ giao thức UDP và ARP cơ bản; chưa có bộ tăng tốc phần cứng cho ICMP Echo (chưa phản hồi trực tiếp lệnh ping nếu không có CPU hỗ trợ).
  • Phân mảnh gói tin (Fragmentation): Chưa hỗ trợ tự động tái ghép các gói tin IPv4 bị phân mảnh từ mạng ngoài (mặc định xử lý các gói tin có cờ Don't Fragment hoặc gói đơn lẻ).
  • Kích thước khung cố định: Chưa hỗ trợ chuẩn Jumbo Frame (lên tới 9000 byte) để giảm chi phí tiêu đề (Header Overhead) khi truyền file cực lớn.

Hướng phát triển trong tương lai

  • Mở rộng thiết kế giao tiếp 64-bit/128-bit hoạt động ở tần số 156.25 MHz để nâng cấp băng thông lên chuẩn 10Gbps (10GbE / XGMII) sử dụng cổng SFP+ quang.
  • Phát triển module phần cứng chuyên dụng xử lý toàn bộ máy trạng thái TCP/IP (Full Hardware TCP Offload Engine - TOE).
  • Tích hợp bộ lọc gói tin phần cứng (Hardware Packet Filter / Firewall Rule Engine) để giám sát và bảo mật an toàn mạng thời gian thực.

Đối tượng hưởng lợi

  • Sinh viên & Học viên chuyên ngành Kỹ thuật Máy tính / Điện tử Viễn thông: Cung cấp tài liệu tham khảo chi tiết, mã nguồn Verilog hoàn chỉnh chuẩn mực về thiết kế vi mạch truyền thông số, kiến trúc FSM và chuẩn bus AXI4-Stream.
  • Kỹ sư thiết kế FPGA & Hệ thống nhúng: Cung cấp một lõi IP Ethernet 1Gbps nhỏ gọn, đã qua kiểm chứng phần cứng thực tế, sẵn sàng tích hợp ngay vào các dự án SoC để tiết kiệm 3–6 tháng tự thiết kế từ đầu.
  • Doanh nghiệp phát triển thiết bị phần cứng & Viễn thông: Sở hữu giải pháp truyền nhận dữ liệu băng thông cao độc lập, không phải trả phí bản quyền đắt đỏ cho các hãng thứ ba (Third-party IP Core licensing fees).
  • Nhà nghiên cứu mạng máy tính & Hệ thống thời gian thực: Nền tảng thí nghiệm lý tưởng để phát triển các giao thức truyền thông mạng tùy biến thế hệ mới trên phần cứng (Custom Network Layer Accelerators).

Câu hỏi thường gặp

1. Yêu cầu phần cứng tối thiểu để triển khai lõi IP Ethernet này là gì?

Lõi IP Ethernet 1Gbps yêu cầu FPGA có tối thiểu 2,000 Logic Cells (LUTs), 2 Block RAM 36Kb làm FIFO đệm, và hỗ trợ giao tiếp với chip Ethernet PHY bên ngoài qua chuẩn GMII hoặc RGMII (sử dụng khối chuyển đổi logic nội RGMII-to-GMII core) với xung nhịp tham chiếu ổn định 125 MHz.

2. Thiết kế này có thể đạt được tốc độ truyền dữ liệu 1000 Mbps liên tục không?

Có. Thiết kế xử lý theo mô hình dòng dữ liệu (Pipeline Streaming Architecture) ở xung nhịp 125 MHz với bus dữ liệu 8-bit. Ngoại trừ các khoảng thời gian bắt buộc theo chuẩn IEEE 802.3 như Preamble (8 bytes), FCS (4 bytes) và Inter-Frame Gap (12 bytes), toàn bộ tải trọng (Payload) đều được truyền nhận với hiệu suất đường truyền xấp xỉ 95%–98% thông lượng vật lý thực tế.

3. Làm thế nào để tích hợp lõi IP này với hệ thống vi xử lý nhúng MicroBlaze hoặc ARM Cortex-A9 trên Zynq?

Lõi IP đã được đóng gói chuẩn giao tiếp AXI4-Stream. Bạn chỉ cần kết nối cổng M_AXISS_AXIS của lõi IP tới bộ điều khiển AXI DMA trong Vivado Block Design. AXI DMA sau đó kết nối vào bus bộ nhớ hệ thống AXI Interconnect, cho phép truyền nhận dữ liệu trực tiếp vào RAM mà không gây nghẽn CPU.

4. Tại sao đồ án lại chọn giao thức UDP thay vì TCP?

Giao thức UDP có cấu trúc tiêu đề đơn giản (8 bytes), không yêu cầu bắt tay thiết lập kết nối phức tạp và không cần lưu trữ trạng thái cửa sổ trượt (Sliding Window Buffer) trên phần cứng. Điều này giúp tối ưu hóa diện tích mạch logic trên FPGA, giảm thiểu độ trễ xuống mức tối đa (dưới 1 µs), cực kỳ phù hợp cho các ứng dụng streaming dữ liệu cảm biến và đa phương tiện.

5. Chi phí triển khai và khả năng mở rộng của giải pháp như thế nào?

Giải pháp sử dụng mã nguồn mở tự phát triển trên chuẩn HDL, loại bỏ hoàn toàn chi phí bản quyền IP Core (vốn có thể lên tới $10,000 – $30,000 cho các IP thương mại). Thiết kế có tính module hóa cao, dễ dàng nâng cấp bus dữ liệu lên 32-bit hoặc 64-bit để hỗ trợ các chuẩn Ethernet tốc độ cao hơn như 2.5G, 5G và 10Gbps.


Kết luận

Đồ án khóa luận "Thiết kế và hiện thực IP Ethernet 1Gbps trên FPGA" đã hoàn thành xuất sắc toàn bộ các mục tiêu nghiên cứu và hiện thực phần cứng đề ra. Bằng việc xây dựng thành công toàn bộ ngăn xếp giao thức mạng từ tầng GMII, MAC, ARP, IPv4 đến UDP trên vi mạch kỹ thuật số thuần túy, đề tài mang lại một giải pháp truyền thông mạng hiệu năng cao, độ trễ cực thấp (< 112 ns) và tiêu thụ tài nguyên logic cực kỳ tối ưu (dưới 0.5% diện tích chip Virtex-7).

Kết quả kiểm thử thực nghiệm trên kit phát triển VC707 với các phần mềm chuyên dụng như Wireshark và Netcat đã chứng minh tính đúng đắn, độ tin cậy và khả năng tương thích hoàn hảo của thiết kế với tiêu chuẩn công nghiệp IEEE 802.3z. Đây là bước đệm công nghệ vững chắc, mở ra tiềm năng ứng dụng to lớn trong các hệ thống nhúng SoC, hệ thống thu thập dữ liệu công nghiệp thế hệ mới và viễn thông tốc độ cao.