Bối cảnh và vấn đề nghiên cứu

Sự phát triển của công nghệ vật liệu và vi điện tử đã cho phép các cảm biến camera thu nhận hình ảnh với chất lượng và độ phân giải cao. Trong bối cảnh đó, nhu cầu quan sát hình ảnh từ xa thông qua các kết nối không dây với độ trễ thấp và tính ổn định cao ngày càng trở nên cấp thiết. Đồng thời, sự phát triển của các thuật toán trí tuệ nhân tạo (AI) và mạng nơ-ron tích chập (CNN) đã mở ra xu hướng tích hợp trực tiếp khả năng xử lý, phân tích hình ảnh vào thiết bị camera, hình thành các hệ thống camera thông minh (Smart Camera). Các hệ thống này hỗ trợ giám sát an ninh và tự động hóa trong dây chuyền sản xuất công nghiệp bằng cách đưa ra quyết định trực tiếp tại biên thay vì truyền toàn bộ dữ liệu thô về máy chủ.

Khóa luận tốt nghiệp kỹ sư ngành Kỹ thuật Máy tính của tác giả Lê Huy Hoàng và Tô Quốc Nguyễn (Trường Đại học Công nghệ Thông tin, Đại học Quốc gia TP. Hồ Chí Minh, thực hiện năm 2022 dưới sự hướng dẫn của TS. Nguyễn Hoài Nhân) tập trung giải quyết bài toán thiết kế hệ thống Smart Camera hoàn chỉnh trên nền tảng Hệ thống trên vi mạch (System on Chip - SoC) tích hợp mạng logic khả trình (FPGA), hỗ trợ truyền phát hình ảnh không dây (streaming) thời gian thực và nhận diện đối tượng bằng mô hình MobileNetV2.

Nhiệm vụ và mục tiêu nghiên cứu của đề tài được xác định cụ thể theo các nội dung sau:

  1. Tìm hiểu bo mạch Ultra96-V2 do Avnet phân phối (dựa trên hệ thống Zynq UltraScale+ MPSoC của Xilinx) và bộ công cụ Xilinx Vivado phiên bản 2019.2 (gồm Vivado HLS, Vitis, Vivado Design Suite) nhằm khởi tạo khối xử lý phần cứng (IP Core) cho mạng CNN MobileNetV2 bằng ngôn ngữ Verilog thông qua công cụ Vivado HLS; tích hợp khối IP này vào hệ thống SoC trên bo mạch Ultra96-V2 kết nối với USB Camera và module Wi-Fi.
  2. Xây dựng và tùy biến hệ điều hành Linux nhúng bằng công cụ Petalinux của Xilinx, nạp lên bo mạch Ultra96-V2 để quản lý và điều khiển hoạt động của toàn bộ hệ thống phần cứng.
  3. Phát triển các chương trình phần mềm ứng dụng bằng công cụ Vitis trên nền hệ điều hành Linux để điều khiển luồng dữ liệu, thực hiện kiểm tra, đo lường các thông số tài nguyên, công suất, đánh giá độ chính xác nhận diện và đóng gói hệ thống hoàn chỉnh.

Đối tượng nghiên cứu của khóa luận là mô hình kiến trúc phần cứng - phần mềm của Smart Camera, thuật toán mạng nơ-ron MobileNetV2 và nền tảng Zynq UltraScale+ MPSoC (chip XCZU3EG). Phạm vi nghiên cứu giới hạn ở việc triển khai nhận diện thời gian thực hình ảnh thu nhận từ webcam USB chuẩn UVC (Rapoo C200, độ phân giải HD 720p) và truyền phát kết quả qua kết nối không dây Wi-Fi (module Microchip WILC3000) đến màn hình giám sát thông qua điểm truy cập không dây (Wifi Access Point).

Cơ sở lý thuyết và phương pháp

Khóa luận kết hợp nền tảng lý thuyết về phần cứng nhúng khả trình và kiến trúc học sâu:

  • Kiến trúc FPGA và SoC (Zynq UltraScale+ MPSoC): Hệ thống dựa trên kiến trúc phân chia hai vùng chức năng: Hệ thống Xử lý (Processing System - PS) chứa bộ vi xử lý đa nhân ARM Cortex-A53 (Application Processing Unit - APU), bộ nhớ DDR4/LPDDR4 và các ngoại vi; Vùng Logic Khả trình (Programmable Logic - PL) chứa các khối logic khả trình (CLB), bộ nhân DSP48E, bộ nhớ khối (Block RAM - BRAM). Giao tiếp dữ liệu tốc độ cao giữa PS và PL được thực hiện qua giao thức bus chuẩn AMBA AXI (AXI4, AXI-Lite, AXI HP).
  • Mô hình mạng nơ-ron MobileNetV2: Kiến trúc mạng tích chập tối ưu cho thiết bị biên với các thành phần cốt lõi gồm tích chập tách biệt chiều sâu (Depthwise Separable Convolution) và khối phần dư đảo ngược có thắt cổ chai tuyến tính (Inverted Residual Block with Linear Bottleneck). Mạng chuẩn có chi phí tính toán khoảng 300 triệu phép nhân-cộng (300M MAdds) và 3,4 triệu tham số.
  • Hệ thống Smart Camera: Mô hình hệ thống nhúng có khả năng thu nhận, xử lý ảnh cục bộ và trích xuất thông tin quyết định thay vì chỉ đóng vai trò ghi nhận hình ảnh đơn thuần.

Phương pháp nghiên cứu thực tế được triển khai theo quy trình thiết kế đồng thời phần cứng/phần mềm (Hardware/Software Co-design):

  • Phương pháp tổng hợp mức cao (High-Level Synthesis - HLS): Chuyển đổi mô tả thuật toán MobileNetV2 viết bằng C/C++ sang mô tả phần cứng mức RTL (Verilog) bằng công cụ Vivado HLS.
  • Phương pháp thiết kế hệ thống SoC trên Vivado: Ghép nối IP MobileNetV2 với hệ vi xử lý Zynq UltraScale+ MPSoC và các IP ngoại vi điều khiển thông qua hệ thống bus AXI.
  • Phương pháp xây dựng hệ điều hành nhúng: Sử dụng Petalinux (dựa trên nền tảng mã nguồn mở Yocto Project) để biên dịch kernel, nạp trình điều khiển (driver) Wi-Fi WILC3000, cấu hình USB Gadget và tích hợp các thư viện xử lý ảnh (OpenCV), truyền thông đa phương tiện (GStreamer).
  • Phương pháp thực nghiệm kiểm thử: Đánh giá hiệu năng phần cứng (tài nguyên logic, tần số hoạt động, mức tiêu thụ năng lượng) và độ chính xác phân loại của mô hình trên các đối tượng thực tế.

Thiết kế và triển khai hệ thống

Hệ thống Smart Camera trên nền tảng bo mạch Ultra96-V2 được xây dựng với luồng xử lý khép kín từ khâu thu nhận tín hiệu đến hiển thị không dây.

+------------+       +-----------------------------------------------------------+       +-------------------+
|            |  USB  |  Zynq UltraScale+ MPSoC (Ultra96-V2)                      | Wi-Fi |                   |
| USB Camera |------>|  - PS: ARM Cortex-A53 running Petalinux (OpenCV/GStreamer)|------>| Local Server      |
| Rapoo C200 |       |  - Interconnect: AXI Bus (AXI HP, AXI-Lite)               |       | / Màn hình hiển thị|
|            |       |  - PL: MobileNetV2 IP Accelerator (HLS)                   |       |                   |
+------------+       +-----------------------------------------------------------+       +-------------------+

Kiến trúc tổng thể và luồng truyền dữ liệu

  1. Khung hình (frame) từ USB Camera được nạp vào bộ nhớ DDR4 thông qua cổng USB kết nối với hệ thống ngoại vi (IOU) thuộc khối PS.
  2. Bộ điều khiển phần mềm (Core Software chạy trên lõi ARM Cortex-A53) kích hoạt tín hiệu điều khiển qua bus AXI-Lite gửi tới khối IP MobileNetV2 trong vùng PL.
  3. Khối IP MobileNetV2 truy cập trực tiếp bộ nhớ DDR4 thông qua bus AXI High Performance (S-AXI HP) để lấy dữ liệu ảnh, thực hiện các phép tính tích chập phần cứng và cập nhật kết quả phân loại ngược lại DDR4.
  4. Khi quá trình xử lý hoàn tất, khối xử lý phát tín hiệu ngắt (interrupt/DONE) thông báo cho PS dừng truy cập frame.
  5. Phần mềm ứng dụng trên PS lấy kết quả nhận diện, gán nhãn khung hình và truyền qua module Wi-Fi Microchip WILC3000 (giao tiếp SDIO/SPI) để phát trực tiếp (streaming) lên máy chủ cục bộ hoặc thiết bị hiển thị qua mạng không dây.

Danh mục các khối IP trong thiết kế Vivado

Kiến trúc phần cứng trên Vivado Design Suite 2019.2 tích hợp các IP sau:

  • Zynq UltraScale+ MPSoC: Cấu hình vi xử lý trung tâm, quản lý giao tiếp bus ngoại vi và bộ nhớ DDR4.
  • MobileNet_FPGA_0: Khối IP tính toán gia tốc phần cứng cho mạng MobileNetV2.
  • Clocking Wizard (clk_wiz_0): Khởi tạo và phân phối xung nhịp ổn định cho toàn bộ các khối logic trong PL.
  • AXI Interconnect & AXI SmartConnect: Điều phối, phân xử truy cập và chuyển đổi giao thức giữa các kênh Master và Slave của hệ thống bus AXI.
  • Processor System Reset: Xử lý chuỗi tín hiệu thiết lập lại (reset) cho các khối trong hệ thống.
  • AXI UART16550: Hỗ trợ truyền nhận nối tiếp phục vụ gỡ lỗi và giao tiếp.
  • AXI GPIO: Cung cấp các đường tín hiệu xuất nhập đa dụng phục vụ điều khiển và đồng bộ.
  • AXI Interrupt Controller & Concat: Gom và quản lý các tín hiệu ngắt phần cứng từ ngoại vi và IP về bộ xử lý trung tâm.
  • Slice: Tách và xử lý các bit tín hiệu điều khiển chuyên biệt.
  • Block Memory Generator: Cung cấp bộ nhớ nội cấu hình cổng đôi (Dual-Port RAM) cho việc lưu trữ dữ liệu tạm thời tốc độ cao trong PL.

Quy trình xây dựng hệ điều hành Petalinux

Quy trình triển khai phần mềm nhúng tuân thủ các bước cấu hình tuần tự trên môi trường Petalinux 2019.2:

Bước Thao tác thực hiện Lệnh Petalinux tương ứng
1 Khởi tạo dự án theo mẫu phần cứng petalinux-create -t project --template zynqMP
2 Nhúng cấu hình phần cứng từ file XSA petalinux-config -get -hw -description
3 Cấu hình tham số Linux Kernel petalinux-config -c -kernel
4 Cấu hình hệ thống tệp gốc (Rootfs) petalinux-config -c -rootfs
5 Biên dịch toàn bộ hệ thống petalinux-build
6 Đóng gói file nạp khởi động petalinux-package

Trong cấu hình Kernel và Rootfs, các thành phần quan trọng được kích hoạt bao gồm:

  • Thiết lập lưu trữ hệ điều hành trên thẻ nhớ SD tại phân vùng /dev/mmcblk0p2 và tệp khởi động BOOT.BIN trên phân vùng chính (primary sd).
  • Kích hoạt tính năng USB Webcam function trong mục USB Gadget Support.
  • Xây dựng gói công thức (bitbake recipe) u96v2-wilc-driver từ kho mã nguồn Avnet để nạp driver cho module Wi-Fi/Bluetooth Microchip WILC3000.
  • Tích hợp các gói thư viện người dùng vào petalinux-user-image: packagegroup-petalinux-opencv (xử lý hình ảnh), packagegroup-petalinux-gstreamer (streaming video đa phương tiện), packagegroup-petalinux-v4lutils (giao tiếp thiết bị ghi hình Video4Linux), packagegroup-petalinux-x11 (môi trường đồ họa), libmali-xilinx (hỗ trợ GPU) và packagegroup-petalinux-openamp.

Nội dung chính theo từng chương

Chương 1. Giới thiệu đề tài

Chương 1 thiết lập cơ sở khoa học và tính cấp thiết của việc nghiên cứu hệ thống camera thông minh. Tác giả chỉ ra rằng việc kết hợp cảm biến hình ảnh độ nét cao với đường truyền không dây và bộ gia tốc trí tuệ nhân tạo cục bộ giúp giải quyết bài toán độ trễ, giảm tải băng thông mạng và nâng cao hiệu quả giám sát. Chương này xác định rõ 3 mục tiêu trọng tâm cần đạt được trên phần cứng Ultra96-V2 và bố cục tổng thể của báo cáo khóa luận qua 5 chương.

Chương 2. Các công nghệ và các nghiên cứu

Chương 2 trình bày tổng quan kỹ thuật và khảo cứu các công trình liên quan:

  • Phân tích nguyên lý phần cứng của chip khả trình FPGA (cấu trúc CLB, ma trận kết nối lập trình được, khối I/O, BRAM, DSP48E), khái niệm SoC và kiến trúc Zynq UltraScale+ MPSoC.
  • Trình bày chi tiết thông số kỹ thuật của bo mạch Ultra96-V2 (chip XCZU3EG, 2GB LPDDR4 Micron, module Wi-Fi/Bluetooth WILC3000, IC quản lý nguồn Infineon/ON Semiconductor, bộ tạo xung Renesas VersaClock 6E).
  • Phân tích thuật toán MobileNetV2: cơ chế tích chập tách biệt chiều sâu, cấu trúc khối Inverted Residual và các lớp thắt cổ chai tuyến tính (Linear Bottlenecks).
  • Khảo cứu các công trình nghiên cứu Smart Camera trong và ngoài nước, được tổng hợp đối sánh chi tiết:
Tiêu chí Nghiên cứu của Phan Trường Khang & La Ngọc Lễ (2020) Nghiên cứu của Phan Tuấn Thành & Vũ Hoàng Hy (2021) Nghiên cứu của Chung Vĩnh Kiện (2019) Nghiên cứu trong khóa luận này (2022)
Nền tảng phần cứng DE10-Nano Zedboard Zynq-7000 Zynq-7000 Ultra96-V2 (Zynq UltraScale+)
Thuật toán AI Viola-Jones (Haar-like) YOLOv2 (CNN) Không tích hợp AI MobileNetV2 (CNN)
Tốc độ xử lý / FPS 105 - 887 ms 2,0 s 5,5 - 6 fps (Streaming) Tiệm cận thời gian thực
Độ phân giải 320x240 đến 640x480 416x416 640x480 đến 1280x720 1280x720 (HD 720P)
Tần số hoạt động 25 MHz 100 MHz Không nêu 200 MHz (IP ước lượng 205 MHz)
Độ chính xác 20,5% - 89% 53% - 92% Không có AI Nhận diện phân loại vật thể
Phương thức kết nối Cục bộ Cục bộ Cáp mạng Ethernet Không dây (Wi-Fi WILC3000)

Chương 3. Thiết kế hệ thống

Chương 3 trình bày toàn bộ quy trình hiện thực hóa thiết kế:

  • Xây dựng mô hình kiến trúc luồng dữ liệu giữa USB Camera, bộ nhớ DDR4, IP MobileNetV2 trên PL và vi xử lý ARM Cortex-A53 trên PS.
  • Quy trình tổng hợp IP MobileNetV2 bằng công cụ Vivado HLS 2019.2 với thông số xung nhịp mục tiêu là 5 ns (200 MHz).
  • Kết nối sơ đồ khối (Block Design) trên Vivado gồm 11 loại IP chuyên dụng.
  • Cấu hình và biên dịch hệ điều hành Linux nhúng bằng Petalinux 2019.2, tích hợp driver phần cứng cho module Wi-Fi Microchip WILC3000 và các thư viện OpenCV, GStreamer, V4L2.

Chương 4. Thực nghiệm và đánh giá kết quả

Chương 4 ghi nhận kết quả vận hành hệ thống phần cứng thực tế và thử nghiệm nhận dạng:

  • Hệ thống khởi động thành công hệ điều hành Petalinux từ thẻ nhớ SD trên bo mạch Ultra96-V2, nhận diện camera USB Rapoo C200 và kích hoạt kết nối Wi-Fi.
  • Khối gia tốc MobileNetV2 trên FPGA thực hiện phân loại nhận diện các đồ vật thực tế: sách vở, chai nước, cái ly, máy tính xách tay (laptop) và chuột máy tính.
  • Ghi nhận và phân tích các trường hợp nhận diện chính xác cũng như hiện tượng nhận diện sai đối với một số vật thể (như chuột máy tính do góc nghiêng hoặc điều kiện chiếu sáng).

Chương 5. Kết luận và hướng phát triển

Chương 5 tóm tắt các kết quả đạt được về mặt thiết kế phần cứng, tích hợp hệ điều hành và gia tốc thuật toán. Đồng thời, tác giả phân tích những hạn chế gặp phải trong quá trình thực hiện và đề xuất các giải pháp kỹ thuật cần hoàn thiện trong tương lai.

Kết quả và đóng góp

Số liệu kỹ thuật đạt được của thiết kế

  1. Thông số xung nhịp và thời gian:

    • Xung nhịp mục tiêu (Target clock): 5,00 ns (tương đương 200 MHz).
    • Xung nhịp ước lượng đạt được sau tổng hợp (Estimated clock): 4,872 ns (tương đương tần số ~205,25 MHz).
    • Sai số không chắc chắn (Clock Uncertainty): 0,63 ns.
  2. Mức độ tiêu thụ tài nguyên phần cứng trên FPGA (XCZU3EG):

Loại tài nguyên Sử dụng cho IP MobileNetV2 Tổng tài nguyên khả dụng Tỷ lệ sử dụng (%)
LUT (Look-Up Table) 57.628 70.560 81%
DSP48E 266 360 73%
BRAM_18K 182 432 42%
FF (Flip-Flop) 63.998 141.120 45%
  1. Mức tiêu thụ năng lượng (Power Analysis):

    • Tổng công suất tiêu thụ trên chip (Total On-Chip Power): 4,101 W.
    • Phân bổ công suất: Vùng xử lý PS tiêu thụ 1,600 W; các khối tín hiệu (Signals) tiêu thụ 0,678 W (18%); khối logic (Logic) tiêu thụ 0,294 W (8%); mạng xung nhịp (Clock) tiêu thụ 0,273 W (7%); bộ nhớ BRAM tiêu thụ 0,088 W (3%); ngoại vi I/O tiêu thụ 0,022 W (1%); bộ giám sát hệ thống (SYSMON) tiêu thụ 0,005 W (<1%).
  2. Đóng góp kỹ thuật tự nêu của đề tài:

    • Hiện thực hóa thành công một hệ thống Smart Camera hoàn chỉnh trên nền tảng Zynq UltraScale+ MPSoC hiện đại, kết hợp đồng thời khả năng gia tốc phần cứng mạng nơ-ron MobileNetV2 trên PL và quản lý hệ điều hành Linux nhúng trên PS.
    • Tích hợp thành công giải pháp streaming hình ảnh qua mạng không dây Wi-Fi nội bộ bằng module phần cứng tích hợp WILC3000, thay thế các giải pháp truyền dẫn có dây (Ethernet) hoặc hiển thị trực tiếp (HDMI/VGA) ở các nghiên cứu trước đây.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên các khó khăn và kết quả ghi nhận trong văn bản khóa luận:

  • Hạn chế kỹ thuật:
    • Thời gian biên dịch và đóng gói hệ điều hành Petalinux rất lớn (mất trung bình khoảng 5 đến 6 giờ trên hệ thống máy tính 4 nhân xử lý).
    • Tỷ lệ sử dụng tài nguyên LUT (81%) và DSP48E (73%) trên chip ZU3EG ở mức cao, tạo áp lực cho việc mở rộng hoặc bổ sung thêm các mô hình xử lý song song khác.
    • Vẫn xuất hiện sai số nhận diện đối với một số vật thể kích thước nhỏ hoặc bị khuất góc (như chuột máy tính).
  • Hướng phát triển tiếp theo:
    • Tối ưu hóa kiến trúc IP MobileNetV2 trên HLS để giảm thiểu số lượng LUT và DSP sử dụng, từ đó hạ thấp mức công suất tiêu thụ.
    • Cải tiến đường ống xử lý dữ liệu (pipeline) giữa camera USB, bộ nhớ DDR4 và module Wi-Fi nhằm tăng tốc độ khung hình (FPS) khi truyền phát.
    • Mở rộng tập dữ liệu huấn luyện và cải tiến mô hình để tăng độ chính xác phân loại trong các môi trường ánh sáng phức tạp.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo chuyên ngành cho sinh viên, học viên cao học và kỹ sư thuộc các ngành Kỹ thuật Máy tính, Điện tử - Viễn thông, Công nghệ Thông tin và Hệ thống Nhúng:

  • Quy trình tổng hợp HLS: Cung cấp phương pháp chuyển đổi thuật toán học sâu (CNN) sang IP phần cứng tương thích với hệ thống bus chuẩn AXI của Xilinx.
  • Tài liệu triển khai Petalinux: Hướng dẫn chi tiết từng bước cấu hình kernel, rootfs, cấu hình module Wi-Fi WILC3000 và tích hợp thư viện OpenCV/GStreamer trên dòng chip kiến trúc Zynq UltraScale+.
  • Thiết kế hệ thống SoC: Minh họa thực tế cách kết nối và phối hợp giữa các khối IP ngoại vi, bộ nhớ DMA/DDR4 và bộ vi xử lý ARM đa nhân.

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

1. Khóa luận sử dụng nền tảng phần cứng và phiên bản công cụ nào để phát triển hệ thống?
Khóa luận sử dụng bo mạch Ultra96-V2 trang bị chip Zynq UltraScale+ MPSoC (XCZU3EG SBVA484) của Avnet/Xilinx, kết hợp webcam USB Rapoo C200 (HD 720p). Toàn bộ thiết kế được xây dựng trên bộ công cụ phần mềm Xilinx phiên bản 2019.2, bao gồm Vivado HLS, Vivado Design Suite, Vitis và Petalinux 2019.2.

2. Tài nguyên phần cứng FPGA tiêu thụ cho khối IP MobileNetV2 là bao nhiêu?
Sau khi tổng hợp, khối IP MobileNetV2 tiêu thụ 57.628 LUT (chiếm 81% tổng LUT khả dụng của chip), 266 khối DSP48E (chiếm 73%), 182 khối BRAM_18K (chiếm 42%) và 63.998 Flip-Flop (chiếm 45%).

3. Tần số hoạt động và công suất tiêu thụ của thiết kế đạt mức nào?
Khối IP MobileNetV2 được đặt xung nhịp mục tiêu 5,00 ns (200 MHz) và đạt xung nhịp ước lượng 4,872 ns (~205,25 MHz). Tổng công suất tiêu thụ trên chip được phân tích là 4,101 W, trong đó khối vi xử lý PS tiêu thụ 1,600 W.

4. Cơ chế truyền nhận hình ảnh không dây trên bo mạch Ultra96-V2 được triển khai như thế nào?
Hệ thống sử dụng module Wi-Fi Microchip WILC3000 tích hợp sẵn trên bo mạch Ultra96-V2. Tác giả cấu hình bản dựng (bitbake recipe) driver u96v2-wilc-driver trong Petalinux để kích hoạt phần cứng Wi-Fi, kết hợp thư viện GStreamer và OpenCV để truyền phát khung hình đã qua xử lý nhận diện tới máy chủ/màn hình thông qua một Wifi Access Point.

5. Khóa luận đã thử nghiệm nhận diện thực tế trên những đối tượng nào?
Hệ thống được kiểm thử thực tế với các vật thể trong môi trường làm việc, bao gồm: sách vở, chai nước, cái ly, máy tính xách tay (laptop) và chuột máy tính.

Kết luận

Khóa luận tốt nghiệp của tác giả Lê Huy Hoàng và Tô Quốc Nguyễn đã thiết kế và hiện thực thành công hệ thống Smart Camera trên nền tảng SoC Zynq UltraScale+ MPSoC (bo mạch Ultra96-V2). Bằng việc kết hợp gia tốc thuật toán MobileNetV2 trên vùng logic khả trình (PL) với hệ điều hành Linux nhúng Petalinux trên vùng vi xử lý (PS), hệ thống đã thực hiện được chức năng nhận diện đồ vật và truyền phát video qua mạng không dây Wi-Fi ở tần số hoạt động 200 MHz với mức công suất tiêu thụ 4,101 W. Đề tài cung cấp giải pháp kỹ thuật hoàn chỉnh và có giá trị thực tiễn cao cho các ứng dụng thị giác máy tính và giám sát thông minh tại biên.