Giới thiệu dự án

Trong kỷ nguyên của Internet vạn vật (IoT) và Trí tuệ nhân tạo (AI), thị giác máy tính đang chuyển dịch mạnh mẽ từ mô hình điện toán đám mây tập trung (Cloud Computing) sang tính toán tại biên (Edge Computing). Theo các báo cáo công nghiệp về Hệ thống giám sát thông minh, việc truyền tải liên tục luồng dữ liệu video độ phân giải cao về trung tâm máy chủ gây áp lực khổng lồ lên băng thông mạng, đồng thời tạo ra độ trễ (latency) lớn từ 500ms đến vài giây—không thể đáp ứng được các yêu cầu thời gian thực khắt khe như nhận diện cảnh báo nguy hiểm, kiểm soát giao thông hay an ninh thông minh.

Hệ thống camera thông minh (Smart Camera) truyền thống dựa trên vi điều khiển hoặc CPU nhúng thường gặp giới hạn nghiêm trọng về năng lực tính toán khi thực thi các mạng nơ-ron tích chập (Convolutional Neural Networks - CNN) phức tạp. Mặt khác, các bộ xử lý đồ họa (GPU) nhúng tuy mạnh mẽ nhưng lại tiêu thụ công suất lớn (15W - 30W), sinh nhiệt cao và chi phí đắt đỏ. Trước thực trạng đó, việc ứng dụng vi mạch lập trình mảng phần tử logic (Field-Programmable Gate Array - FPGA) trên nền tảng vi hệ thống tích hợp trên chip (System on Chip - SoC) mở ra giải pháp đột phá nhờ khả năng xử lý song song ở cấp độ phần cứng, tối ưu hóa năng lượng tiêu thụ trên mỗi watt và độ trễ tính toán cực thấp.

[Camera USB Input] ---> [Zynq UltraScale+ MPSoC (PS + PL)] ---> [Wi-Fi Access Point] ---> [Cloud Server / Client]

Vấn đề kỹ thuật cụ thể (Problem Statement)

Triển khai thuật toán nhận diện đối tượng thời gian thực YOLOv2 (You Only Look Once version 2) trực tiếp trên kit phần cứng nhúng đặt ra những thách thức kỹ thuật lớn:

  1. Nghẽn cổ chai tính toán và băng thông bộ nhớ: Mạng CNN đòi hỏi hàng tỷ phép tính nhân tích lũy (MACs) và truy xuất dữ liệu liên tục giữa bộ nhớ DDR4 và lõi xử lý.
  2. Xung đột Timing khi nâng cao tần số hoạt động: Khi tăng tần số xung nhịp (clock frequency) của IP xử lý trên FPGA, giá trị độ trễ trượt âm (Worst Negative Slack - WNS) dễ bị vi phạm, gây mất ổn định toàn hệ thống.
  3. Độ trễ truyền phát luồng (Video Streaming Latency): Việc tích hợp pipeline từ thu nhận khung hình (V4L2), tăng tốc phần cứng AI, mã hóa video (FFmpeg) đến truyền phát không dây qua mạng cục bộ (Local) và Internet đòi hỏi sự đồng bộ chặt chẽ để giảm thiểu hiện tượng giật khung hình và rớt gói tin.

Mục tiêu đề tài

Đề tài tập trung giải quyết các mục tiêu kỹ thuật cụ thể sau:

  1. Nghiên cứu và kế thừa khối IP tăng tốc phần cứng CNN YOLOv2 trên nền tảng Zynq UltraScale+ MPSoC.
  2. Tối ưu hóa kiến trúc phần cứng và chiến lược tổng hợp/thực thi (Synthesis & Implementation Strategy) để nâng tần số hoạt động của khối IP YOLO2_FPGA từ 200MHz lên 300MHz (tăng 50%), đảm bảo các thông số Timing Closure (WNS > 0ns).
  3. Xây dựng Board Support Package (BSP) và biên dịch hệ điều hành Linux nhúng thông qua công cụ PetaLinux 2019.2 trên kit Ultra96-V2.
  4. Thiết kế chương trình nhúng điều khiển luồng dữ liệu thông qua thư viện Vitis 2019.2 và OpenCV, kết nối hệ thống vi xử lý (PS) với logic lập trình (PL) qua giao tiếp AXI.
  5. Hiện thực pipeline truyền phát video đa chế độ: Luồng camera thường và luồng camera xử lý nhận diện YOLOv2 qua chuẩn mạng Wi-Fi nội bộ và Internet (ZoneMinder Server/SSH Tunneling).
  6. Đánh giá toàn diện hiệu năng hệ thống về tốc độ khung hình (FPS), tài nguyên phần cứng (LUT, FF, BRAM, DSP), công suất tiêu thụ và độ trễ truyền dẫn ở độ phân giải Full HD (1920x1080).

Phương pháp tiếp cận (Solution Approach)

Đề tài lựa chọn phương pháp thiết kế đồng thiết kế phần cứng/phần mềm (Hardware/Software Co-design) trên nền tảng Zynq UltraScale+ MPSoC (Ultra96-V2 của Avnet):

  • Phân vùng phần cứng (PL - Programmable Logic): Đảm nhiệm tăng tốc toàn bộ các lớp tích chập (Convolutional Layers), Max-pooling, và Reorg của mạng YOLOv2 bằng các khối logic cấu hình (CLB), DSP48E slices và Block RAM (BRAM) chuyên dụng.
  • Phân vùng phần mềm (PS - Processing System): Lõi ARM Cortex-A53 64-bit chạy PetaLinux quản lý thu thập hình ảnh từ USB Camera qua driver UVC/V4L2, điều phối truyền nhận dữ liệu qua giao tiếp AXI DMA/SmartConnect, thực thi các hàm hậu xử lý (Non-Maximum Suppression, Bounding Box Decoding) và đóng gói luồng streaming bằng FFmpeg.

Kết quả kỳ vọng và giới hạn phạm vi

  • Chỉ số kỳ vọng: Tần số IP AI đạt mốc 300MHz; luồng video camera thường đạt độ phân giải Full HD 1080p với độ trễ < 5 giây trên Internet; luồng xử lý YOLOv2 nhận diện chính xác các lớp đối tượng cơ bản với độ trễ tối ưu hóa.
  • Phạm vi & Giới hạn: Hệ thống thực hiện truyền phát theo từng frame hình ảnh JPEG mã hóa qua pipeline phần mềm trước khi đẩy lên server (chưa tích hợp khối nén phần cứng H.264/H.265 VCU); mô hình YOLOv2 tập trung nhận diện đối tượng theo tập trọng số cố định đã được cấu hình sẵn.

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

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

Tiêu chí Hệ thống Edge GPU (Jetson Nano) Hệ thống DSP/CPU Nhúng (Raspberry Pi 4) Hệ thống SoC FPGA (Ultra96-V2 - Đề tài)
Kiến trúc tính toán Song song SIMD trên tập lệnh GPU Tuần tự đa lõi RISC ARM Tính toán phần cứng tùy biến sâu (Pipeline/Dataflow)
Tần số hoạt động 640MHz - 921MHz 1.5GHz 300MHz (Dedicated IP)
Năng lượng tiêu thụ 10W - 15W 5W - 7.5W 4W - 6.5W (Hiệu quả năng lượng tối ưu)
Tính tiền định (Determinism) Phụ thuộc OS scheduling Thấp (Bị ảnh hưởng bởi đa nhiệm) Cực cao (Thực thi chu kỳ chính xác ở tầng logic)
Khả năng nâng cấp/Tái cấu hình Cố định kiến trúc phần cứng Cố định kiến trúc phần cứng Lập trình lại toàn bộ cấu trúc mạch (RTL/Bitstream)

So sánh với các công trình tiền nhiệm

  1. Nghiên cứu Norouznezhad et al. (2010): Dùng FPGA Virtex-5 với thuật toán Histogram, tốc độ đạt 30 FPS ở độ phân giải 640x480 nhưng khả năng phân loại yếu, tốn thời gian nhận diện mẫu phức tạp.
  2. Nghiên cứu DreamCam của Birem & Berry (2014): Dùng Altera Cyclone III đạt 42 FPS ở 800x1024 nhưng thiếu các mô hình học sâu (Deep Learning) để nhận diện đa đối tượng.
  3. Khóa luận Phan Tuấn Thành & Vũ Hoàng Hy (2020): Triển khai YOLOv2 trên ZedBoard Zynq-7000 nhưng chỉ đọc ảnh tĩnh từ thẻ nhớ SD, chưa xử lý luồng camera thực tế.
  4. Khóa luận Bùi Nguyễn Phát & Lê Minh Huy (2021): Tích hợp YOLOv2 trên Ultra96-V2 ở tần số 200MHz, độ phân giải 1280x960, độ trễ WNS đạt 0.084ns (chưa khai thác hết giới hạn tần số của UltraScale+).

Yêu cầu hệ thống theo ma trận MoSCoW

  • Must-have (Bắt buộc): IP YOLO2_FPGA hoạt động ổn định ở 300MHz; Timing Slack dương ($WNS \ge 0$); Hệ điều hành PetaLinux nhận diện đủ camera USB và Wi-Fi module WILC3000; Nhận diện đúng đối tượng.
  • Should-have (Nên có): Streaming đồng thời 2 luồng (Raw/AI) qua giao thức SFTP/HTTP/UDP; Tích hợp xem trực tiếp qua trình duyệt web trên ZoneMinder Server.
  • Could-have (Có thể có): Bảo mật luồng truyền phát bằng công nghệ SSH Tunneling mã hóa.
  • Won't-have (Chưa thực hiện): Tích hợp khối mã hóa phần cứng chuẩn H.265 chuyên dụng trên Programmable Logic.

Thiết kế hệ thống

               +-------------------------------------------------------------+
               |                  Avnet Ultra96-V2 Board                     |
               |                                                             |
+----------+   | +--------------------------+   +--------------------------+ |   +-----------------+
| USB Cam  |==>| |  Processing System (PS)  |   | Programmable Logic (PL)  | |==>| Wi-Fi AP Router |
| (V4L2)   |   | | - ARM Cortex-A53 APU     |   | - YOLO2_FPGA IP @ 300MHz | |   | (Local Network) |
+----------+   | | - PetaLinux 2019.2       |   | - BRAM Controller        | |   +--------+--------+
               | | - OpenCV / FFmpeg Engine |   | - DSP48E MAC Units       | |            |
               | +------------+-------------+   +------------+-------------+ |            v
               |              | AXI HPM FPD (Control)        |               |   +-----------------+
               |              +------------------------------+               |   | ZoneMinder /    |
               |              | S_AXI_HP (High Performance DMA)              |   | Cloud Server    |
               |              v                              v               |   +--------+--------+
               | +---------------------------------------------------------+ |            |
               | |              LPDDR4 / DDR4 Memory Interface             | |            v
               | +---------------------------------------------------------+ |   +-----------------+
               +-------------------------------------------------------------+   | Web/VLC Client  |
                                                                                 +-----------------+

Technology Stack và Phiên bản công cụ

  • Nền tảng phần cứng: Board Avnet Ultra96-V2 trang bị chip Xilinx Zynq UltraScale+ MPSoC (XCZU3EG-1SBVA484E), 2GB LPDDR4, Wi-Fi 802.11b/g/n tích hợp.
  • Bộ công cụ thiết kế EDA: Xilinx Vivado Design Suite 2019.2, Vivado High-Level Synthesis (HLS) 2019.2.
  • Môi trường phát triển phần mềm: Xilinx Vitis 2019.2 IDE, PetaLinux Tools 2019.2 (Linux Kernel v4.19).
  • Thư viện & Framework đa phương tiện: OpenCV 3.4.3 (C++), FFmpeg 4.1 (libavcodec, libavformat, libavutil, libswscale).
  • Giao thức & Dịch vụ mạng: SSH Tunneling (Port Forwarding), SFTP, HTTP Streaming, ZoneMinder Surveillance Server.

Kiến trúc truyền thông nội chip (AXI Bus Topology)

Hệ thống sử dụng ma trận kết nối chuẩn AMBA AXI4:

  • AXI HPM0 FPD (High Performance Master - Full Power Domain): Đóng vai trò cấu hình, khởi động và giám sát trạng thái của IP YOLO2_FPGA từ hệ thống vi xử lý PS.
  • S_AXI_HP0/HP1 FPD (High Performance Slave): Kết nối trực tiếp IP tăng tốc AI với hệ thống nhớ DDR4, cho phép cơ chế DMA đọc tuần tự dữ liệu ma trận trọng số (Weights) và ma trận đặc trưng (Feature Maps) với băng thông cực đại.
  • AXI SmartConnect & AXI Interconnect: Tối ưu hóa băng thông, điều phối xung nhịp khác biệt giữa miền đồng hồ PS (100MHz) và miền đồng hồ PL (300MHz).

Phương pháp luận (Methodology)

Quy trình phát triển tuân thủ mô hình chữ V lặp (Iterative V-Model) chuyên dụng cho thiết kế SoC nhúng:

  1. Đặc tả & Phân tích cấu trúc mạng YOLOv2: Bẻ nhỏ các tầng Darknet-19, chuyển đổi giải thuật sang C++/Vivado HLS.
  2. Tổng hợp High-Level Synthesis & C-RTL Co-simulation: Khai báo các chỉ thị (Pragmas) tối ưu hóa vòng lặp (Unroll, Pipeline, Dataflow) và gán giao tiếp bus bộ nhớ AXI Master/Slave.
  3. Tích hợp hệ thống trên Vivado IP Integrator: Đấu nối khối IP với lõi Zynq UltraScale+ PS, khối Clocking Wizard (cấu hình 300MHz) và Processor System Reset.
  4. Tối ưu hóa Timing Closure: Tinh chỉnh các chiến lược Synthesis/Implementation để triệt tiêu vi phạm Setup/Hold Time.
  5. Xây dựng BSP PetaLinux & Device Tree: Cấu hình Driver phần cứng, cấp phát vùng nhớ dành riêng (Reserved Memory) cho DMA của khối PL.
  6. Lập trình Application Layer & Kiểm thử: Phát triển ứng dụng C++ trên Vitis điều khiển luồng Camera -> DDR4 -> YOLO IP -> Framebuffer -> Streaming.

Implementation và kết quả

Quá trình phát triển và Thuật toán cốt lõi

Mạng YOLOv2 sử dụng kiến trúc Darknet-19 gồm 19 lớp tích chập và 5 lớp Max-pooling. Để thực hiện hồi quy tọa độ trực tiếp, công thức xác định Bounding Box từ đầu ra mạng được định nghĩa như sau:

$$\begin{aligned} b_x &= \sigma(t_x) + c_x \ b_y &= \sigma(t_y) + c_y \ b_w &= p_w e^{t_w} \ b_h &= p_h e^{t_h} \ \text{Pr}(\text{Object}) \times \text{IOU}(b, \text{Object}) &= \sigma(t_o) \end{aligned}$$

Trong đó:

  • $(c_x, c_y)$ là tọa độ góc trên bên trái của Grid Cell tương ứng.
  • $(p_w, p_h)$ là kích thước chiều rộng, chiều cao của Anchor Box được sinh ra từ thuật toán K-means clustering.
  • $(t_x, t_y, t_w, t_h, t_o)$ là các giá trị đầu ra thô mà lớp Convolution cuối cùng của IP YOLOv2 tính toán.
  • $\sigma(t) = \frac{1}{1 + e^{-t}}$ là hàm Sigmoid dùng để giới hạn độ lệch vị trí trong phạm vi Grid Cell hiện tại.

Cấu hình IP YOLO2_FPGA trong Vivado HLS (Pragmas & Interface)

Đoạn mã C++ dưới đây mô tả cách ánh xạ giao tiếp phần cứng và tối ưu hóa đường ống xử lý (Pipeline) cho các lớp tích chập:

#include "yolo_acc.h"

void yolo2_forward(
    float *input_feature_map,
    float *output_feature_map,
    float *weights,
    float *bias,
    int in_channels,
    int out_channels,
    int input_size
) {
    #pragma HLS INTERFACE m_axi port=input_feature_map offset=slave bundle=DATA_BUS_0 depth=416*416*32
    #pragma HLS INTERFACE m_axi port=output_feature_map offset=slave bundle=DATA_BUS_1 depth=208*208*64
    #pragma HLS INTERFACE m_axi port=weights offset=slave bundle=DATA_BUS_0 depth=1024*1024
    #pragma HLS INTERFACE m_axi port=bias offset=slave bundle=DATA_BUS_1 depth=1024
    #pragma HLS INTERFACE s_axilite port=return bundle=CTRL_BUS
    #pragma HLS INTERFACE s_axilite port=in_channels bundle=CTRL_BUS
    #pragma HLS INTERFACE s_axilite port=out_channels bundle=CTRL_BUS
    #pragma HLS INTERFACE s_axilite port=input_size bundle=CTRL_BUS

    // Khởi tạo các mảng đệm nội cục bằng Block RAM
    float local_input_buf[32][16][16];
    #pragma HLS ARRAY_PARTITION variable=local_input_buf complete dim=1

    float local_weight_buf[64][32][3][3];
    #pragma HLS ARRAY_PARTITION variable=local_weight_buf cyclic factor=16 dim=2

    // Vòng lặp tính toán nhân tích lũy với Pipeline directive
    Layer_Loop: for(int oc = 0; oc < out_channels; oc++) {
        #pragma HLS PIPELINE II=1
        // Thực thi phép tính toán song song sử dụng DSP48E
    }
}

Chiến lược giải quyết bài toán Timing Closure tại 300MHz

Ở tần số 200MHz ($T = 5.0\text{ns}$), việc tổng hợp diễn ra thuận lợi. Tuy nhiên, khi nâng tần số lên 300MHz ($T = 3.333\text{ns}$), độ trễ đường truyền (Routing Delay) và độ trễ logic trong các khối nhân ma trận lớn gây ra hiện tượng âm Timing ($WNS < 0$).

Để khắc phục, nhóm thực hiện cấu hình lại chiến lược Vivado:

  1. Synthesis Strategy: Chuyển sang PerformanceOptimized, kích hoạt tham số -retiming nhằm đẩy các thanh ghi Flip-Flop vào giữa các tầng logic tổ hợp có đường truyền trễ dài nhất.
  2. Implementation Strategy: Chọn Performance_ExplorePostRoutePhysOpt, kích hoạt quá trình tối ưu vật lý đa luồng sau định tuyến (Post-Route Physical Optimization) giúp giảm suy hao điện áp và tái sắp xếp vị trí các lát cắt CLB lân cận khối DSP/BRAM.
# Script Vivado TCL thiết lập chiến lược tối ưu hóa Timing
set_property strategy "PerformanceOptimized" [get_runs synth_1]
set_property STEPS.SYNTH_DESIGN.ARGS.RETIMING true [get_runs synth_1]
set_property strategy "Performance_ExplorePostRoutePhysOpt" [get_runs impl_1]

Kiểm thử và Đánh giá kết quả

1. Tổng hợp tài nguyên phần cứng trên Ultra96-V2 (XCZU3EG)

Thành phần tài nguyên Khả dụng trên Kit (Available) Sử dụng bởi IP YOLO2 (300MHz) Tỷ lệ chiếm dụng (%)
BRAM_18K 432 265 61.34%
DSP48E Slices 360 144 40.00%
Flip-Flops (FF) 141,120 35,530 25.18%
Look-Up Tables (LUT) 70,560 54,816 77.69%

Nhận xét: BRAM và LUT chiếm tỷ lệ cao nhất do việc cấu hình đệm dữ liệu song song (Ping-Pong Buffers) và hệ thống chuyển đổi ma trận lớp Reorg. Việc tiêu thụ 77.69% LUT nằm trong giới hạn an toàn, không gây nghẽn định tuyến phần cứng.

2. So sánh thông số Timing Closure giữa 200MHz và 300MHz

Cấu hình xung nhịp Clock Target (ns) Estimated Clock (ns) Worst Negative Slack (WNS) Worst Hold Slack (WHS) Trạng thái Timing
Nghiên cứu gốc [1] 5.000 ns (200MHz) 4.348 ns +0.084 ns +0.020 ns Đạt (MET)
Đề tài tối ưu (Mới) 3.333 ns (300MHz) 3.310 ns +0.023 ns +0.015 ns Đạt (MET)

Nhờ áp dụng chiến lược Retiming và Post-Route Optimization, hệ thống đã đạt Timing Closure thành công ở tần số 300MHz mà không gặp bất kỳ lỗi vi phạm thiết kế nào ($WNS > 0, TNS = 0, WHS > 0, THS = 0$).

3. Kết quả Streaming và Độ trễ thực nghiệm (Full HD 1920x1080)

Phạm vi thử nghiệm Chế độ Streaming Giao thức truyền tải Độ phân giải Tốc độ khung hình (FPS) Độ trễ trung bình (Latency)
Mạng nội bộ (Local Wi-Fi) Camera thường (Raw) HTTP / SFTP $1920 \times 1080$ 15.0 - 20.0 FPS $\approx 0.8\text{s} - 1.2\text{s}$
Mạng nội bộ (Local Wi-Fi) Nhận diện YOLOv2 (AI) HTTP / SFTP $1920 \times 1080$ 1.8 - 2.5 FPS $\approx 3.5\text{s} - 4.5\text{s}$
Mạng Internet (Cloud Server) Camera thường (Raw) SSH Tunneling + ZoneMinder $1920 \times 1080$ 8.0 - 12.0 FPS $\approx 2.5\text{s} - 3.8\text{s}$
Mạng Internet (Cloud Server) Nhận diện YOLOv2 (AI) SSH Tunneling + ZoneMinder $1920 \times 1080$ 1.2 - 1.5 FPS $\approx 12.0\text{s} - 18.0\text{s}$

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

  1. Đột phá về tần số hoạt động IP CNN trên dòng UltraScale+: Nâng cấp xung nhịp thành công từ 200MHz lên 300MHz, mang lại mức cải thiện 50% về tốc độ trích xuất đặc trưng thuần phần cứng mà vẫn bảo toàn độ chính xác phát hiện đối tượng (mAP đạt từ 64% - 92% trên các lớp mục tiêu chính).
  2. Khép kín quy trình nhúng từ Capture đến Cloud Streaming: Không dừng lại ở việc mô phỏng hay nhận diện ảnh tĩnh từ thẻ SD, hệ thống đã xây dựng hoàn chỉnh chuỗi truyền dẫn thời gian thực: Cảm biến Camera USB -> Bộ nhớ DDR4 -> Tăng tốc AI phần cứng (PL) -> Mã hóa FFmpeg trên Linux nhúng (PS) -> Đẩy luồng bảo mật SSH Tunneling -> Máy chủ giám sát đám mây ZoneMinder.
  3. Tối ưu hóa hiệu quả năng lượng: Bo mạch Ultra96-V2 hoạt động với công suất trung bình chỉ từ 4.5W - 5.8W trong toàn bộ tiến trình vừa nhận diện vừa truyền phát video Full HD, tiết kiệm năng lượng hơn đáng kể so với các giải pháp GPU nhúng cùng phân khúc.

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

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

  • Hệ thống giao thông thông minh (ITS): Triển khai tại các nút giao cắt để phân loại phương tiện (ô tô, xe máy, xe buýt), nhận diện mật độ giao thông và gửi cảnh báo tắc đường về trung tâm điều hành qua mạng 4G/5G.
  • An ninh công nghiệp & Nhà máy thông minh: Nhận diện công nhân không đội mũ bảo hiểm hoặc đi vào khu vực nguy hiểm, kích hoạt rơ-le ngắt nguồn máy móc tức thời thông qua chân GPIO của vi hệ thống SoC.
  • Thiết bị quan trắc trên Drone/Robot tự hành: Nhờ kích thước nhỏ gọn và mức tiêu thụ điện thấp, Ultra96-V2 có thể lắp đặt trực tiếp trên các phương tiện không người lái để tuần tra, cứu nạn.
+-----------------------------------------------------------------------------------+
|                        Triển khai Đóng gói Hệ thống                               |
|                                                                                   |
|  [ Ultra96-V2 Board ] <---> [ Module Tản nhiệt Chủ động & Vỏ 3D Bảo vệ ]          |
|           |                                                                       |
|           +---> [ Thẻ nhớ microSD: BOOT.BIN, image.ub, smart_camera.elf ]         |
|           |                                                                       |
|           +---> [ Nguồn DC 12V-2A ] & [ Cảm biến USB Camera 1080p Góc rộng ]      |
+-----------------------------------------------------------------------------------+

Phân tích chi phí và hiệu quả đầu tư (Cost-Benefit & ROI)

  • Chi phí phần cứng: Một bộ kit Ultra96-V2 hoàn chỉnh cùng phụ kiện camera có giá thành ước tính $250 - $350 USD, thấp hơn đáng kể so với việc lắp đặt một PC nhúng công nghiệp kết hợp card GPU rời ($1200 - $2500 USD).
  • Khả năng mở rộng: Kiến trúc phân lớp giữa PetaLinux và khối IP cho phép cập nhật lại mô hình AI (như nâng cấp lên YOLOv3-Tiny, YOLOv5-Nano) bằng cách nạp lại tệp cấu hình Bitstream từ xa mà không cần thay đổi phần cứng vật lý.

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

Hạn chế kỹ thuật hiện tại

  • Quá trình streaming dữ liệu xử lý YOLOv2 vẫn sử dụng phương thức lưu đệm từng khung hình JPEG qua tệp trung gian trên không gian người dùng (User Space), gây thêm độ trễ mã hóa phần mềm trước khi gửi đi qua FFmpeg.
  • Tốc độ khung hình khi nhận diện YOLOv2 trực tiếp ở độ phân giải cao vẫn bị giới hạn ở mức 1.5 - 2.5 FPS do khối lượng tham số của mô hình YOLOv2 gốc còn tương đối nặng.

Hướng nghiên cứu và phát triển tiếp theo

  • Ứng dụng Vitis AI và DPU (Deep Learning Processing Unit): Chuyển dịch thiết kế sang kiến trúc DPU chuẩn của Xilinx kết hợp kỹ thuật Lượng tử hóa trọng số (Quantization INT8/FP16) để đạt tốc độ xử lý trên 30 FPS thời gian thực.
  • Tích hợp khối mã hóa phần cứng VCU (Video Codec Unit): Sử dụng các dòng SoC cao cấp hơn (như Zynq UltraScale+ EV) có sẵn khối phần cứng giải mã/mã hóa H.264/H.265 trực tiếp để truyền phát luồng Bitstream mượt mà không chiếm dụng CPU ARM.
  • Tối ưu hóa pipeline bộ nhớ Zero-Copy: Sử dụng thư viện V4L2 và DRM/KMS để ánh xạ con trỏ bộ nhớ trực tiếp từ Camera Driver vào không gian bộ nhớ của IP PL, triệt tiêu hoàn toàn độ trễ sao chép dữ liệu.

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

  • Sinh viên & Học viên cao học: Cung cấp tài liệu tham khảo thực chiến chi tiết về thiết kế vi mạch SoC, phương pháp Hardware/Software Co-design và cách giải quyết bài toán Timing Closure trên công cụ Vivado/Vitis.
  • Kỹ sư phát triển hệ thống nhúng (Embedded Developers): Nắm bắt được phương pháp tích hợp mô hình Deep Learning tùy biến lên FPGA, cách cấu hình Driver Linux PetaLinux và kỹ thuật truyền phát video hiệu năng cao.
  • Doanh nghiệp & Đơn vị tích hợp giải pháp: Sở hữu thiết kế mẫu tham chiếu (Reference Design) tin cậy, tiết kiệm điện năng cho các dòng sản phẩm Smart Camera Made-in-Vietnam phục vụ an ninh và công nghiệp.
  • Nhà nghiên cứu học thuật: Cung cấp số liệu đối chuẩn (Benchmark Metrics) thực tế về việc cân đối giữa tài nguyên Logic (LUT/BRAM/DSP) và tốc độ xung nhịp trong quá trình tăng tốc mạng nơ-ron tích chập.

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

1. Yêu cầu kỹ thuật tối thiểu về phần cứng và môi trường để triển khai lại hệ thống này là gì?

Để tái hiện lại hệ thống, bạn cần:

  • Phần cứng: Bo mạch Avnet Ultra96-V2 (Zynq UltraScale+ ZU3EG), nguồn 12V/2A, thẻ nhớ microSD tối thiểu 16GB (Class 10), USB Camera hỗ trợ chuẩn UVC (720p/1080p), quạt tản nhiệt chủ động cho chip SoC.
  • Phần mềm máy chủ biên dịch: Hệ điều hành Ubuntu 18.04 LTS x86_64, cài đặt đầy đủ Xilinx Vivado Design Suite 2019.2, Vivado HLS 2019.2, Vitis 2019.2 và PetaLinux Tools 2019.2.

2. Làm thế nào để giải quyết hiện tượng âm Timing Slack (Negative Slack) khi tăng xung nhịp lên 300MHz?

Cần kích hoạt chỉ thị tối ưu hóa đường truyền trong Vivado:

  • Tại bước Synthesis, thiết lập Strategy PerformanceOptimized và bật cờ -retiming để công cụ tự động phân bổ lại vị trí các Flip-Flop quanh các khối logic nặng.
  • Tại bước Implementation, lựa chọn Performance_ExplorePostRoutePhysOpt để công cụ thực hiện tối ưu hóa định tuyến vật lý chuyên sâu sau khi đã Route xong dây dẫn mạch.

3. Hệ thống có thể tích hợp với các nền tảng giám sát camera hiện có như thế nào?

Hệ thống sử dụng giao thức chuẩn HTTP/RTSP và công cụ FFmpeg để đóng gói dữ liệu, cho phép kết nối trực tiếp vào các phần mềm quản lý video (VMS) phổ biến như ZoneMinder, Shinobi, hoặc kéo luồng trực tiếp về trình phát đa phương tiện VLC Media Player thông qua địa chỉ IP của thiết bị hoặc thông qua đường hầm SSH Tunneling mã hóa.

4. Chi phí bảo trì và độ tin cậy của Smart Camera trên nền tảng FPGA như thế nào so với máy tính thông thường?

FPGA có độ tin cậy phần cứng vượt trội (MTBF cao) do không phụ thuộc vào hệ thống quạt tản nhiệt công suất lớn hay ổ cứng cơ học. Nền tảng PetaLinux chạy ở chế độ Read-Only RootFS (RAM disk) hạn chế tối đa nguy cơ lỗi hệ điều hành khi mất điện đột ngột. Chi phí bảo trì định kỳ gần như bằng không.

5. Tại sao không chọn mạng YOLOv4 hoặc YOLOv5 mà lại tối ưu hóa mạng YOLOv2?

YOLOv2 có cấu trúc mạng Darknet-19 gọn gàng, ít các nhánh rẽ phức tạp (như Residual Blocks hay Feature Pyramid Networks trong YOLOv3/v5), rất phù hợp để ánh xạ trực tiếp thành các khối phần cứng tuần tự trên các dòng FPGA có dung lượng BRAM và LUT tầm trung như Zynq UltraScale+ ZU3EG mà không gây tràn tài nguyên chip.


Kết luận

Đề tài "Bộ tăng tốc AI tích hợp trên Ultra96-V2 cho Smart Camera" đã hiện thực hóa thành công một giải pháp camera thông minh toàn diện trên nền tảng vi hệ thống Zynq UltraScale+ MPSoC. Đóng góp nổi bật nhất của công trình là việc nâng cao tần số xử lý của khối IP YOLO2_FPGA lên mức 300MHz (tăng 50% so với nghiên cứu tiền nhiệm) đồng thời đạt trạng thái cân bằng Timing hoàn hảo ($WNS = +0.023\text{ns}$).

Bên cạnh năng lực xử lý phần cứng, hệ thống đã hoàn thiện toàn bộ pipeline truyền phát video giám sát Full HD 1080p qua mạng không dây nội bộ và Internet với độ bảo mật cao qua SSH Tunneling. Đây là minh chứng rõ nét cho tiềm năng ứng dụng to lớn của công nghệ FPGA trong các hệ sinh thái Edge AI, mở ra hướng phát triển bền vững cho các thiết bị giám sát thông minh thế hệ mới với hiệu năng cao, kích thước nhỏ gọn và mức tiêu thụ năng lượng tối ưu.