Giới thiệu dự án
Sự bùng nổ của Trí tuệ nhân tạo (AI - Artificial Intelligence) và Thị giác máy tính (Computer Vision) đang định hình lại toàn bộ hệ thống giám sát an ninh và tự động hóa công nghiệp. Theo các báo cáo phân tích thị trường công nghệ nhúng, thị trường Smart Camera (Camera thông minh) toàn cầu đạt tốc độ tăng trưởng kép hàng năm (CAGR) trên 15%, chuyển dịch mạnh mẽ từ mô hình truyền dữ liệu thô về máy chủ đám mây (Cloud Computing) sang xử lý suy luận trực tiếp tại biên (Edge AI).
+-----------------------------------------------------------------------------------+
| HỆ THỐNG SMART CAMERA BIÊN |
| |
| +--------------+ +-----------------------------------+ +--------------+ |
| | USB Camera | --> | Zynq UltraScale+ MPSoC (ZU3EG) | --> | Wi-Fi AP | |
| | HD 720p/ | | +-------------+ +-------------+ | | (WILC3000) | |
| | 960p Sensor | | | PS: ARM A53 | | PL: YOLOv2 | | | Streaming | |
| +--------------+ | | (PetaLinux) | | Accelerator | | | P2P / Web | |
| | +-------------+ +-------------+ | +--------------+ |
| +-----------------------------------+ |
+-----------------------------------------------------------------------------------+
Vấn đề thực tiễn (Problem Statement)
Các hệ thống camera giám sát truyền thống đối mặt với 3 điểm nghẽn nghiêm trọng:
- Độ trễ và nghẽn băng thông mạng: Việc liên tục tải luồng video độ phân giải cao lên Cloud đòi hỏi hạ tầng mạng băng thông lớn, dễ gây tắc nghẽn đường truyền và độ trễ cao ($> 1.5\text{s}$), không đáp ứng được yêu cầu phản hồi thời gian thực.
- Chi phí điện năng và phần cứng cồng kềnh: Sử dụng máy tính cá nhân (PC) gắn GPU chuyên dụng tiêu thụ công suất lớn ($> 150\text{W}$ - $250\text{W}$), kích thước cồng kềnh, không thể tích hợp gọn gàng trong các môi trường công nghiệp khắc nghiệt.
- Giới hạn tài nguyên trên hệ thống nhúng thông thường: Các bộ vi điều khiển (MCU) hoặc chip nhúng đơn lõi không đủ năng lực tính toán để xử lý các mạng nơ-ron tích chập (CNN - Convolutional Neural Network) phức tạp với hàng triệu tham số.
Mục tiêu đề tài
Đề tài "Thiết kế tích hợp trên Ultra96-V2 cho Smart Camera" do nhóm kỹ sư Bùi Nguyễn Phát và Lê Minh Huy thực hiện dưới sự hướng dẫn của TS. Nguyễn Minh Sơn tại Khoa Kỹ thuật Máy tính – Trường Đại học Công nghệ Thông tin (ĐHQG-HCM) tập trung vào các mục tiêu kỹ thuật cụ thể:
- Nghiên cứu và tối ưu hóa kiến trúc mạng CNN YOLOv2 (You Only Look Once v2) thành khối IP phần cứng (Hardware IP Core) bằng công cụ Vivado High-Level Synthesis (Vivado HLS).
- Tích hợp hệ thống trên chip SoC (System on Chip) trên kit phát triển Avnet Ultra96-V2 trang bị chip Xilinx Zynq UltraScale+ MPSoC (XCZU3EG-1SBVA484E).
- Xây dựng hệ điều hành Linux nhúng (PetaLinux) trên hệ thống xử lý (PS - Processing System) kết hợp lõi tứ ARM Cortex-A53 để quản lý thiết bị ngoại vi và điều khiển luồng dữ liệu.
- Phát triển hệ thống streaming video không dây đa chế độ (Camera thường và Camera nhận diện vật thể AI) qua giao thức Wi-Fi bằng GStreamer, OpenCV và lập trình Socket TCP.
- Đóng gói sản phẩm phần cứng hoàn chỉnh với giao diện giám sát trực quan trên Web Browser và ứng dụng máy khách (P2P).
Phương pháp tiếp cận và Giải pháp
Giải pháp cốt lõi là phương pháp đồng thiết kế phần cứng/phần mềm (Hardware/Software Co-design):
- Phần cứng (Programmable Logic - PL): Tăng tốc phần cứng cho các lớp tính toán nặng của YOLOv2 (Convolution, MaxPooling, Reorg, ReLU) bằng các khối DSP48E2 và logic LUT/BRAM tùy biến, hoạt động tại tần số xung nhịp mục tiêu $150\text{MHz}$.
- Phần mềm (Processing System - PS): Hệ điều hành PetaLinux thực hiện thu nhận frame ảnh từ USB Camera thông qua driver V4L2 (Video4Linux2), quản lý bộ nhớ đệm DDR4, điều khiển khối IP xử lý và nén/stream luồng video qua giao tiếp SDIO kết nối module Wi-Fi Microchip WILC3000.
Kết quả kỳ vọng và Phạm vi giới hạn
- Độ chính xác nhận diện: Đạt trên $90%$ đối với đối tượng người và các vật thể thông dụng trong tập dữ liệu COCO/Pascal VOC.
- Tốc độ xung nhịp IP: Đạt từ $150\text{MHz}$ đến $200\text{MHz}$ trên PL của Zynq UltraScale+.
- Hiệu năng Streaming: Luồng hình ảnh thường đạt độ phân giải HD $1280 \times 960$ và $1280 \times 720$ với tốc độ khung hình $\ge 5\text{ FPS}$, độ trễ truyền dẫn qua mạng không dây nội bộ $< 5\text{s}$.
- Phạm vi giới hạn: Tập trung tối ưu hóa luồng truyền điểm-điểm (P2P - Point to Point) và máy chủ cục bộ (Local Web Server); chưa triển khai mã hóa phần cứng chuẩn nén H.264/H.265 chuyên dụng do giới hạn tài nguyên của dòng chip ZU3EG.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí |
Viola-Jones trên DE10-Nano (2020) |
IP Camera trên Zynq-7000 (2019) |
YOLOv2 trên ZedBoard Zynq-7000 (2021) |
Đề tài: YOLOv2 trên Ultra96-V2 MPSoC |
| Nền tảng SoC |
Intel Cyclone V SE |
Xilinx Zynq-7000 (XC7Z020) |
Xilinx Zynq-7000 (XC7Z020) |
Xilinx Zynq UltraScale+ MPSoC (ZU3EG) |
| Kiến trúc CPU |
Dual-core ARM Cortex-A9 |
Dual-core ARM Cortex-A9 |
Dual-core ARM Cortex-A9 |
Quad-core ARM Cortex-A53 (64-bit) |
| Thuật toán AI |
Haar-Cascade (Viola-Jones) |
Không tích hợp AI |
CNN (YOLOv2 full-layer) |
CNN (YOLOv2 Optimized Pipeline) |
| Tần số IP Core |
$25\text{ MHz}$ |
N/A |
$100\text{ MHz}$ |
$150\text{ MHz} - 200\text{ MHz}$ |
| Độ chính xác |
$40% - 80%$ (Ảnh xám) |
N/A |
$53% - 92%$ |
$> 90%$ (Đa đối tượng) |
| Độ phân giải |
$320 \times 240$ |
$1280 \times 720$ |
$416 \times 416$ |
$1280 \times 960$ / $416 \times 416$ |
| Kết nối mạng |
Không hỗ trợ |
Ethernet (Có dây) |
Không hỗ trợ |
Wi-Fi Không dây (WILC3000 Microchip) |
Phân tích yêu cầu theo mô hình MoSCoW
- Must-Have (Bắt buộc):
- Tích hợp thành công IP YOLOv2 trên phần cứng PL không bị tràn tài nguyên logic LUT ($< 70,560\text{ LUTs}$).
- Giao tiếp ổn định giữa PS và PL qua AXI4 Bus (AXI-HP và AXI-Lite).
- Thu nhận hình ảnh từ USB Camera và xuất kết quả nhận diện lên màn hình/trang Web.
- Should-Have (Nên có):
- Luồng truyền không dây Wi-Fi P2P bằng Socket TCP và thư viện GStreamer.
- Tối ưu tần số hoạt động của khối IP đạt mức $150\text{ MHz}$.
- Tùy chọn chuyển đổi linh hoạt giữa luồng Camera thường và Camera AI.
- Could-Have (Có thể có):
- Khả năng truyền luồng hình ảnh tới nhiều thiết bị nhận đồng thời (Multiple receivers).
- Đóng gói vỏ hộp cơ khí cho kit Ultra96-V2 bảo vệ mạch điện và camera.
- Won't-Have (Chưa thực hiện):
- Huấn luyện trực tiếp mạng nơ-ron trên FPGA (On-chip training).
Thiết kế hệ thống
Kiến trúc phần cứng tổng quát dựa trên nền tảng Zynq UltraScale+ MPSoC bao gồm hai phân vùng chính: Hệ thống xử lý (Processing System - PS) và Logic lập trình được (Programmable Logic - PL).
graph TD
subgraph PS ["Processing System (PS) - ARM Cortex-A53"]
V4L2["USB Camera Driver (V4L2)"] --> CoreSW["Core Software (C/C++)"]
CoreSW --> PetaLinuxOS["PetaLinux OS / OpenCV / GStreamer"]
PetaLinuxOS --> SDIO["SDIO Driver"]
SDIO --> WiFi["Microchip WILC3000 (Wi-Fi AP)"]
DDR4["Micron 2GB LPDDR4 Memory"]
end
subgraph PL ["Programmable Logic (PL) - FPGA Fabric"]
AXI_Lite["AXI4-Lite Slave (Control Registers)"]
Scatter["Data Scatter Engine"]
Gather["Data Gather Engine"]
subgraph ComputeEngine ["YOLOv2 Hardware Accelerator"]
Conv["CONV / ReLU Engine"]
Pool["MaxPool Engine"]
Reorg["Reorg Engine"]
end
WeightBuf["On-chip Weight Buffers (BRAM)"]
FeatureBuf["On-chip Feature Map Buffers (BRAM)"]
end
CoreSW -- "Control Signals (0xA0000000)" --> AXI_Lite
DDR4 <-- "AXI4 Master (Data Bus 0 - 64-bit)" --> Scatter
Scatter --> FeatureBuf
WeightBuf --> Conv
FeatureBuf --> Conv
Conv --> Pool --> Reorg --> Gather
Gather <-- "AXI4 Master (Data Bus 1 - 64-bit)" --> DDR4
WiFi --> Users["End Users (Web Browser / P2P Client)"]
Technology Stack và Phiên bản công cụ
- Hệ điều hành nhúng: PetaLinux OS v2019.2 (Linux Kernel 4.19).
- Bộ công cụ thiết kế phần cứng: Xilinx Vivado Design Suite v2019.2.
- Tổng hợp phần cứng mức cao: Xilinx Vivado HLS v2019.2.
- Môi trường phát triển phần mềm: Xilinx Vitis Unified Software Platform v2019.2.
- Thư viện xử lý ảnh & Đa phương tiện: OpenCV v3.4.3, GStreamer v1.16.0.
- Ngôn ngữ lập trình: C/C++ (Driver, Socket, Core HLS), Python 3.7 (Web Interface/Testing).
Kiến trúc bộ nhớ và Truyền nhận dữ liệu
Để đảm bảo băng thông tính toán cho mô hình AI, hệ thống phân bổ $2\text{ GB LPDDR4}$ trên board Ultra96-V2 thành các phân vùng chuyên biệt:
- Linux Kernel & User Space: $1.5\text{ GB}$ đầu tiên dùng cho PetaLinux và ứng dụng.
- Reserved Non-cached Memory: $512\text{ MB}$ địa chỉ cao được khai báo trong Device Tree (
reserved-memory) làm vùng nhớ đệm chia sẻ trực tiếp giữa PS và PL, loại bỏ overhead sao chép dữ liệu (Zero-copy architecture) và không bị ảnh hưởng bởi cơ chế Cache Coherency gây sai lệch dữ liệu pixel.
Phương pháp luận (Methodology)
Quá trình phát triển áp dụng mô hình Co-design theo 4 giai đoạn lặp (Iterative Sprints):
- Sprint 1 - Thiết kế và Tối ưu HLS IP: Tối ưu mã nguồn C++ của thuật toán YOLOv2, áp dụng các chỉ thị tổng hợp (Pragmas), mô phỏng C-Simulation và C/RTL Co-simulation trên Vivado HLS 2019.2.
- Sprint 2 - Tích hợp SoC & Bitstream: Ghép nối IP YOLO2_FPGA với Zynq UltraScale+ Processing System qua AXI Interconnect, thực hiện Synthesis, Placement, Routing và xuất file phần cứng
.xsa (Hardware Description).
- Sprint 3 - Xây dựng Board Support Package (BSP) & PetaLinux: Tùy biến Device Tree, biên dịch Kernel modules cho Wi-Fi WILC3000, tích hợp OpenCV, GStreamer vào Rootfs.
- Sprint 4 - Phát triển ứng dụng và Kiểm thử hệ thống: Viết driver điều khiển thanh ghi AXI-Lite từ User Space (
/dev/mem), thiết kế pipeline streaming qua TCP/Wi-Fi và đánh giá hiệu năng thực tế.
Implementation và kết quả
Quá trình phát triển và Thuật toán cốt lõi
1. Cấu trúc mạng Darknet-19 và Thuật toán YOLOv2
Mô hình sử dụng mạng backbone Darknet-19 gồm 19 lớp tích chập ($3 \times 3$ và $1 \times 1$) cùng 5 lớp Max-Pooling ($2 \times 2$, Stride 2).
Các cải tiến toán học quan trọng:
-
Dự đoán vị trí trực tiếp (Direct Location Prediction): Thay vì dự đoán khoảng cách tự do, bounding box được chuẩn hóa qua hàm Sigmoid $\sigma$:
$$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}$$
Trong đó $(c_x, c_y)$ là tọa độ góc của Grid Cell, $(p_w, p_h)$ là kích thước Anchor Box được tối ưu trước bằng thuật toán K-means Clustering.
-
Tổ chức lại đặc trưng (Reorg Layer): Chuyển đổi Feature Map kích thước lớn $26 \times 26 \times 512$ thành $13 \times 13 \times 2048$ bằng cách trích xuất các điểm ảnh xen kẽ với bước nhảy (stride) bằng 2, sau đó ghép kênh (concatenate) trực tiếp với Feature Map cuối cùng để bảo toàn các đặc trưng chi tiết (Fine-grained features).
Feature Map Gốc: [26 x 26 x 512]
│
▼ (Reorg Layer: Stride = 2)
Ma trận 4 kênh: [13 x 13 x (512 * 4)] = [13 x 13 x 2048]
│
▼ (Concatenate)
Ghép với Lớp Conv Cuối: [13 x 13 x 1024]
│
▼
Khối Tensor Hợp nhất: [13 x 13 x 3072] ──► Lớp Dự đoán Bounding Box
2. Tối ưu hóa khối IP phần cứng trên Vivado HLS
Trong nghiên cứu trước đó trên kit ZedBoard [1], khối IP được thiết kế với 5 đường bus dữ liệu AXI Master độc lập, dẫn đến việc tiêu tốn quá nhiều tài nguyên logic ($56,549\text{ LUTs}$, vượt quá giới hạn $53,200\text{ LUTs}$ của chip XC7Z020).
Đề tài đã tái cấu trúc kiến trúc IP sang mô hình 2 đường truyền dữ liệu AXI4 Master 64-bit (1 kênh đọc Input/Weight và 1 kênh ghi Output):
$$N_{Channel} = \max(NC_{in}, NC_{out}) = 1 \implies N_{AXIM} = N_{Channel} + 1 = 2$$
// File: yolo_conv_hls.cpp - Trích xuất đoạn mã HLS C++ tối ưu hóa
#include "yolo_accel.h"
void yolo2_fpga_top(
ap_uint<64> *input_feature_map,
ap_uint<64> *weight_stream,
ap_uint<64> *output_feature_map,
uint32_t layer_config[16]
) {
#pragma HLS INTERFACE m_axi port=input_feature_map depth=416*416*3 offset=slave bundle=DATA_BUS_IN max_read_burst_length=128
#pragma HLS INTERFACE m_axi port=weight_stream depth=1024*1024 offset=slave bundle=DATA_BUS_IN max_read_burst_length=128
#pragma HLS INTERFACE m_axi port=output_feature_map depth=13*13*125 offset=slave bundle=DATA_BUS_OUT max_write_burst_length=128
#pragma HLS INTERFACE s_axilite port=layer_config bundle=CTRL_BUS
#pragma HLS INTERFACE s_axilite port=return bundle=CTRL_BUS
// Bộ đệm On-chip sử dụng BRAM
fpga_data_t input_buffer[TILE_H][TILE_W][CHANNEL_IN];
#pragma HLS ARRAY_PARTITION variable=input_buffer complete dim=3
fpga_data_t weight_buffer[KERNEL_H][KERNEL_W][CHANNEL_IN][CHANNEL_OUT];
#pragma HLS ARRAY_PARTITION variable=weight_buffer complete dim=4
// Thực thi tính toán Convolution đa luồng
Conv_Pipeline_Loop:
for (int ky = 0; ky < 3; ky++) {
for (int kx = 0; kx < 3; kx++) {
#pragma HLS PIPELINE II=1
// Phép nhân chập và tích lũy phần cứng DSP48E2
compute_engine_dsp(input_buffer, weight_buffer, output_feature_map);
}
}
}
3. Xây dựng Pipeline Streaming và Driver Linux
Ứng dụng điều khiển trên Linux tương tác trực tiếp với không gian địa chỉ vật lý của IP thông qua giao diện /dev/mem:
// File: yolo_fpga_driver.c - Trích đoạn driver điều khiển thanh ghi
#define YOLO_IP_BASE_ADDR 0xA0000000
#define MAP_SIZE 0x1000
int run_yolo_hardware_inference(void *input_phys_addr, void *output_phys_addr) {
int fd = open("/dev/mem", O_RDWR | O_SYNC);
void *cfg_base = mmap(NULL, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, YOLO_IP_BASE_ADDR);
// Gán địa chỉ bộ nhớ DMA cho các thanh ghi IP
*((volatile uint32_t *)(cfg_base + REG_INPUT_ADDR_OFFSET)) = (uint32_t)input_phys_addr;
*((volatile uint32_t *)(cfg_base + REG_OUTPUT_ADDR_OFFSET)) = (uint32_t)output_phys_addr;
// Gửi tín hiệu START tới IP Core
*((volatile uint32_t *)(cfg_base + REG_AP_CTRL_OFFSET)) = 0x01;
// Chờ tín hiệu DONE từ phần cứng
while (!(*((volatile uint32_t *)(cfg_base + REG_AP_CTRL_OFFSET)) & 0x02)) {
usleep(100); // Polling non-blocking
}
munmap(cfg_base, MAP_SIZE);
close(fd);
return 0; // Hoàn thành xử lý suy luận
}
Pipeline truyền luồng video thời gian thực từ camera sang client qua giao thức TCP sử dụng GStreamer:
# Pipeline nén và truyền luồng video từ Ultra96-V2 Server
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw, width=1280, height=720, framerate=30/1 \
! videoconvert ! jpegenc quality=80 ! rtpjpegpay ! udpsink host=192.168.2.100 port=5000
Kiểm thử và Đánh giá thực nghiệm
1. Đánh giá sử dụng tài nguyên phần cứng (Resource Utilization)
Bảng tổng hợp tài nguyên sau khi Place & Route trên chip Zynq UltraScale+ XCZU3EG:
| Thành phần tài nguyên |
Khả dụng trên chip ZU3EG |
Nhóm tác giả ZedBoard [1] |
Đề tài hiện tại (Ultra96-V2) |
Tỷ lệ sử dụng (%) |
| Logic LUT |
70,560 |
56,549 (Tràn $106.3%$) |
38,240 |
54.2% (An toàn) |
| Flip-Flop (FF) |
141,120 |
68,120 |
46,850 |
33.2% |
| Block RAM (BRAM_18K) |
432 |
312 |
216 |
50.0% |
| DSP48E2 Slices |
360 |
280 |
224 |
62.2% |
| Công suất tiêu thụ |
N/A |
$3.82\text{ W}$ |
$2.45\text{ W}$ |
Giảm $35.8%$ |
| Tần số xung nhịp |
Max $300\text{ MHz}$ |
$100\text{ MHz}$ |
$150\text{ MHz}$ |
Tăng $50.0%$ |
2. Đánh giá độ trễ và Tốc độ khung hình (Streaming Benchmarks)
| Khoảng cách kết nối (m) |
Chế độ truyền |
Độ phân giải |
Tốc độ khung hình (FPS) |
Độ trễ truyền dẫn (ms) |
Tỷ lệ mất gói tin (%) |
| 1 mét |
Camera thường (P2P) |
$1280 \times 960$ |
$8.2\text{ FPS}$ |
$320\text{ ms}$ |
$0.0%$ |
| 1 mét |
Camera AI (YOLOv2) |
$416 \times 416$ |
$2.4\text{ FPS}$ |
$410\text{ ms}$ |
$0.0%$ |
| 5 mét |
Camera thường (P2P) |
$1280 \times 960$ |
$7.8\text{ FPS}$ |
$385\text{ ms}$ |
$0.2%$ |
| 5 mét |
Camera AI (YOLOv2) |
$416 \times 416$ |
$2.3\text{ FPS}$ |
$450\text{ ms}$ |
$0.3%$ |
| 10 mét |
Camera thường (P2P) |
$1280 \times 960$ |
$6.5\text{ FPS}$ |
$580\text{ ms}$ |
$1.2%$ |
| 10 mét |
Camera AI (YOLOv2) |
$416 \times 416$ |
$2.1\text{ FPS}$ |
$690\text{ ms}$ |
$1.5%$ |
3. Kết quả nhận diện đối tượng thực tế
Hệ thống thử nghiệm nhận diện thành công nhiều nhóm đối tượng thông dụng trong nhà và công nghiệp:
- Người (Person): Độ chính xác $94.2%$, phân biệt rõ ràng ngay cả khi vật thể di chuyển.
- Vật dụng cá nhân & Văn phòng: Chai nước ($91.5%$), Điện thoại di động ($88.7%$), Laptop ($92.4%$), Ghế ($89.1%$), Chuột máy tính ($86.3%$).
Đổi mới và đóng góp
- Khắc phục triệt để lỗi tràn tài nguyên phần cứng của nghiên cứu đi trước: Giảm từ 5 đường AXI Bus xuống 2 đường AXI4 Master 64-bit tối ưu, tiết kiệm $32.3%$ số lượng LUT logic ($38,240$ so với $56,549$), giúp IP Core tích hợp hoàn chỉnh và hoạt động tin cậy trên nền tảng Zynq UltraScale+.
- Nâng cao tần số xung nhịp xử lý AI: Tăng tần số vận hành của IP YOLOv2 từ $100\text{ MHz}$ (trên ZedBoard) lên $150\text{ MHz}$, cải thiện băng thông tính toán và giảm thời gian suy luận trên mỗi frame ảnh.
- Hiện thực hóa giải pháp Smart Camera hoàn chỉnh không dây: Khác với các nghiên cứu trước đây chỉ dừng lại ở xử lý offline hoặc truyền cáp Ethernet cố định, hệ thống đã tích hợp module Wi-Fi Microchip WILC3000, hỗ trợ cả hai giao tiếp streaming: P2P Socket Client và Web Browser đa nền tảng.
- Tối ưu hóa mức tiêu thụ năng lượng: Mức công suất tiêu thụ toàn hệ thống chỉ đạt xấp xỉ $2.45\text{ W}$, thấp hơn nhiều so với các giải pháp nhúng dùng GPU (Nvidia Jetson Nano tiêu thụ $5\text{W} - 10\text{W}$), tạo điều kiện thuận lợi cho việc tích hợp nguồn cấp pin di động.
Ứng dụng thực tế và triển khai
Tình huống ứng dụng thực tiễn (Use Cases)
- Kiểm soát an ninh tòa nhà thông minh: Giám sát người xâm nhập tại các khu vực hạn chế, tự động nhận diện và gửi cảnh báo thời gian thực qua mạng nội bộ mà không cần phụ thuộc vào Internet ngoài.
- Tự động hóa nhà xưởng (Industrial Edge Vision): Giám sát trang thiết bị bảo hộ, phát hiện công nhân tiếp cận khu vực máy móc nguy hiểm, kiểm đếm sản phẩm trên băng chuyền sản xuất.
- Robot tự hành (AMR / AGV): Đóng vai trò làm mắt thần thông minh gắn trên robot dẫn đường trong kho thông minh, nhận diện chướng ngại vật với mức tiêu thụ điện năng cực thấp.
Hướng dẫn triển khai và Yêu cầu hệ thống
+-----------------------------------------------------------------------------------+
| SƠ ĐỒ LẮP ĐẶT THIẾT BỊ THỰC TẾ |
| |
| [ Nguồn DC 12V / 2A ] ────────┐ |
| ▼ |
| [ USB Camera HD ] ────► [ Kit Avnet Ultra96-V2 ] ────► [ Ăng-ten Wi-Fi 2.4GHz ] |
| │ |
| ▼ (Vỏ Hộp Bảo Vệ 3D) |
| [ Khe cắm Thẻ MicroSD 16GB ] |
+-----------------------------------------------------------------------------------+
Yêu cầu phần cứng (BOM - Bill of Materials)
- 01 Kit phát triển Avnet Ultra96-V2 (Xilinx Zynq UltraScale+ MPSoC ZU3EG).
- 01 Cảm biến USB Camera chuẩn UVC (Hỗ trợ độ phân giải tối thiểu HD 720p).
- 01 Thẻ nhớ MicroSD Sandisk 16GB Class 10 (Chứa Boot image và Rootfs PetaLinux).
- 01 Nguồn Adapter DC $12\text{V} - 2\text{A}$.
- Vỏ bảo vệ in 3D với khe tản nhiệt và gá bắt camera cố định.
Quy trình cài đặt phần mềm
# 1. Định dạng thẻ nhớ MicroSD thành 2 phân vùng (BOOT: FAT32, ROOTFS: EXT4)
# 2. Sao chép BOOT.BIN, image.ub, system.dtb vào phân vùng BOOT
# 3. Giải nén rootfs.tar.gz vào phân vùng ROOTFS:
sudo tar -xvf rootfs.tar.gz -C /media/user/ROOTFS/
# 4. Gắn thẻ vào Ultra96-V2, cấu hình Switch SW3 sang chế độ SD Boot (01)
# 5. Cấp nguồn và kết nối tới Wi-Fi Access Point do board phát ra:
SSID: Ultra96-V2-SmartCam | Password: smartcamera_uit
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Tốc độ khung hình ở chế độ AI còn hạn chế: Do dữ liệu frame ảnh vẫn cần luân chuyển qua DDR4 giữa PS và PL nên tốc độ suy luận của luồng YOLOv2 đạt khoảng $2 - 3\text{ FPS}$, chưa đạt chuẩn Real-time $30\text{ FPS}$ tuyệt đối.
- Hiện tượng sụt giảm hiệu năng khi nhiều máy nhận (Multiple receivers): Băng thông module Wi-Fi WILC3000 bị chia sẻ khi có trên 3 thiết bị cùng kết nối xem luồng video chất lượng cao, dẫn đến tăng độ trễ.
- Tản nhiệt cho SoC: Khi hoạt động liên tục ở tần số $150\text{ MHz}$, chip UltraScale+ tỏa nhiệt lượng lớn, cần quạt tản nhiệt chủ động đi kèm.
Hướng phát triển trong tương lai
- Chuyển đổi sang giao tiếp Camera MIPI-CSI: Thay thế USB Camera bằng module MIPI-CSI chuyên dụng để đưa trực tiếp dữ liệu pixel vào PL thông qua IP Video In to AXI4-Stream, loại bỏ hoàn toàn độ trễ thu nhận của CPU.
- Nâng cấp mô hình mạng sang YOLOv5-Nano / YOLOv8: Ứng dụng kỹ thuật lượng tử hóa trọng số INT8/FP8 kết hợp nền tảng Xilinx Vitis AI và nhân DPU (Deep Learning Processing Unit) để tăng tốc độ nhận diện lên $> 30\text{ FPS}$.
- Tích hợp phần cứng nén video H.264/H.265 (VCU): Giảm thiểu $70%$ băng thông truyền tải qua mạng không dây, cho phép stream mượt mà tới hàng chục client đồng thời.
Đối tượng hưởng lợi
- Sinh viên & Học viên chuyên ngành Điện tử - Viễn thông, Kỹ thuật Máy tính: Nguồn tài liệu tham khảo chi tiết về quy trình tổng hợp HLS, thiết kế hệ thống SoC thực chiến trên dòng chip tiên tiến Xilinx UltraScale+ MPSoC.
- Kỹ sư phát triển hệ thống nhúng (Embedded Developers): Nắm vững kiến trúc phần mềm kết hợp PetaLinux, cách tối ưu hóa bus AXI4 DMA không phân mảnh bộ nhớ và kỹ thuật cấu hình Wi-Fi kernel driver.
- Doanh nghiệp tích hợp hệ thống an ninh & Tự động hóa: Mô hình tham chiếu hoàn chỉnh với chi phí phần cứng tối ưu ($< $300$), khả năng tùy biến cao, tiết kiệm $80%$ chi phí vận hành máy chủ AI Cloud.
- Nhà nghiên cứu học thuật: Cung cấp số liệu đo đạc thực nghiệm chính xác về tương quan giữa số lượng kênh bus AXI, diện tích phần cứng logic (LUT/DSP) và tốc độ xung nhịp cực đại.
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống là gì?
Hệ thống yêu cầu kit phần cứng hỗ trợ SoC Zynq-7000 (tối thiểu XC7Z020) hoặc Zynq UltraScale+ (ZU3EG trở lên), thẻ nhớ MicroSD tối thiểu 8GB, nguồn $12\text{V}/2\text{A}$ và USB Camera chuẩn UVC. Về phần mềm máy tính, cần cài đặt bộ công cụ Xilinx Vivado/Vitis 2019.2 trên hệ điều hành Ubuntu 18.04 LTS.
2. Giới hạn mở rộng khi stream nhiều thiết bị và cách khắc phục?
Module Wi-Fi tích hợp WILC3000 có giới hạn băng thông truyền phát ở chế độ SoftAP. Khi số lượng máy nhận vượt quá 3, độ trễ sẽ tăng lên $> 1.5\text{s}$. Để mở rộng, giải pháp là kết nối Ultra96-V2 vào Router Wi-Fi băng tần kép $5\text{GHz}$ công suất lớn thông qua giao thức RTSP (Real-Time Streaming Protocol) hoặc cấu hình IP Multicast.
3. Hệ thống có thể tích hợp với các nền tảng VMS/NVR hiện có không?
Có. Nhờ chạy hệ điều hành PetaLinux tiêu chuẩn và hỗ trợ framework GStreamer, hệ thống có thể dễ dàng đóng gói luồng video đầu ra thành chuẩn ONVIF hoặc RTSP Stream, cho phép tích hợp trực tiếp vào các phần mềm giám sát trung tâm như Milestone, Synology Surveillance Station hoặc Home Assistant.
4. Chi phí phần cứng và thời gian thu hồi vốn (ROI)?
Chi phí linh kiện trọn gói cho một node Smart Camera ước tính khoảng $280 - 320\text{ USD}$. So với việc triển khai Camera IP thường kết hợp thuê máy chủ GPU Cloud (chi phí khoảng $50 - 100\text{ USD}$/camera/tháng), giải pháp Edge Smart Camera giúp doanh nghiệp thu hồi vốn đầu tư chỉ sau $3 - 5$ tháng vận hành.
Kết luận
Đề tài tốt nghiệp "Thiết kế tích hợp trên Ultra96-V2 cho Smart Camera" của hai kỹ sư Bùi Nguyễn Phát và Lê Minh Huy tại Đại học Công nghệ Thông tin (ĐHQG-HCM) đã giải quyết trọn vẹn bài toán tích hợp trí tuệ nhân tạo vào thiết bị biên công suất thấp. Bằng việc tái cấu trúc kênh truyền AXI Bus, tối ưu hóa IP YOLOv2 trên công cụ Vivado HLS và kết hợp hệ điều hành nhúng PetaLinux trên nền tảng Xilinx Zynq UltraScale+ MPSoC, hệ thống đã chứng minh tính khả thi vượt trội với độ chính xác nhận diện $> 90%$, tần số hoạt động $150\text{ MHz}$ và công suất tiêu thụ chỉ $2.45\text{ W}$.
Công trình không chỉ đóng góp một kiến trúc phần cứng tối ưu cho cộng đồng nghiên cứu FPGA trong nước mà còn mở ra tiềm năng thương mại hóa mạnh mẽ trong các lĩnh vực giám sát an ninh thông minh, thị giác robot và công nghiệp 4.0. Quý độc giả, kỹ sư và doanh nghiệp quan tâm có thể khai thác mô hình thiết kế này để phát triển các ứng dụng nhúng biên chuyên sâu hơn trong tương lai.