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

Trong xu thế phát triển của công nghệ hiện đại, các ứng dụng xử lý ảnh và thị giác máy tính đóng vai trò quan trọng trong nhiều lĩnh vực kỹ thuật số. Trước đây, các bài toán xử lý ảnh phức tạp thường phụ thuộc chủ yếu vào phần mềm trên máy tính cá nhân. Tuy nhiên, sự xuất hiện của công nghệ mảng cổng logic lập trình được dạng trường (FPGA) với mật độ cổng logic lớn và tính linh hoạt cao đã cho phép tái cấu trúc phần cứng để giải quyết trực tiếp các bài toán tính toán khối lượng lớn theo thời gian thực. Đặc biệt, kiến trúc Hệ thống trên một vi mạch khả trình (SoC-FPGA) kết hợp giữa khối xử lý cứng (HPS - Hard Processor System) và logic lập trình (FPGA Fabric) mang lại giải pháp tối ưu hóa về hiệu năng, kích thước và mức tiêu thụ điện năng.

Xuất phát từ nhu cầu nghiên cứu thực nghiệm trên nền tảng phần cứng nhúng hiện đại, đề tài "Thiết kế giao tiếp camera và hiển thị màn hình VGA trên Kit DE10" do sinh viên Tiêu Tuấn Đạt thực hiện dưới sự hướng dẫn của PGS. TS. Trương Quang Vinh tại Bộ môn Điện tử, Khoa Điện – Điện tử, Trường Đại học Bách Khoa – Đại học Quốc gia TP. Hồ Chí Minh (tháng 05/2023) tập trung vào việc làm chủ quy trình thiết kế phần cứng – phần mềm trên kit phát triển DE10-Standard của Intel/Terasic.

Mục tiêu tổng quát của đồ án là xây dựng một hệ thống hoàn chỉnh trên kit SoC-FPGA DE10-Standard để thu nhận hình ảnh từ camera, thực hiện thuật toán nhận diện khuôn mặt và hiển thị dữ liệu trực tiếp ra màn hình thông qua cổng VGA. Để đạt được mục tiêu này, tác giả đã xác định 6 nhiệm vụ nghiên cứu cụ thể:

  1. Nội dung 1: Tìm hiểu về dòng kit SoC-FPGA DE10-Standard (Altera/Intel Cyclone V SoC).
  2. Nội dung 2: Tìm hiểu về công cụ tích hợp hệ thống Qsys và dự án thiết kế phần cứng tham chiếu chuẩn (Golden Hardware Reference Design - GHRD) từ Intel.
  3. Nội dung 3: Tìm hiểu về giải thuật phát hiện đối tượng Haar Cascade và ứng dụng trong thư viện OpenCV.
  4. Nội dung 4: Thực hiện thiết kế phần cứng hệ thống trên công cụ Qsys dựa trên nền tảng mô hình tham chiếu GHRD và tích hợp thêm các khối IP điều khiển hiển thị VGA.
  5. Nội dung 5: Thực hiện thiết kế và hiện thực chương trình phần mềm xử lý nhận diện khuôn mặt dựa trên giải thuật Haar Cascade chạy trên vi xử lý ARM.
  6. Nội dung 6: Hiện thực hóa toàn bộ hệ thống SoC, tiến hành nạp cấu hình và thực hiện chạy thử nghiệm (demo) trên kit thực tế.

Đối tượng nghiên cứu của đề tài là kiến trúc hệ thống SoC-FPGA Cyclone V, cấu trúc bus giao tiếp Avalon, bộ công cụ thiết kế Quartus Prime, Qsys/Platform Designer, hệ điều hành Linux nhúng và thuật toán nhận diện khuôn mặt Haar Cascade. Phạm vi thực nghiệm được giới hạn trên kit phát triển DE10-Standard kết nối với camera thu nhận hình ảnh và màn hình máy tính thông qua cổng giao tiếp 24-bit VGA DAC.

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

Đồ án xây dựng dựa trên nền tảng lý thuyết về kiến trúc phần cứng khả trình, hệ thống SoC và các thuật toán thị giác máy tính:

  • Kiến trúc FPGA và SoC: FPGA chứa các khối logic có thể tái cấu hình (CLBs/ALMs), các khối nhớ tĩnh RAM, bộ nhân DSP và mạng kết nối khả trình (Programmable Interconnect). Hệ thống SoC trên chip Cyclone V (5CSXFC6D6F31C6N) tích hợp khối HPS gồm bộ vi xử lý lõi kép ARM Cortex-A9 cùng các bộ điều khiển bộ nhớ (SDRAM Controller, Flash Controller) và các ngoại vi tiêu chuẩn, kết nối trực tiếp với vùng logic FPGA qua các cầu nối bus AXI/Avalon.
  • Chuẩn giao tiếp Bus Avalon: Chuẩn bus do Altera phát triển để ghép nối vi xử lý với các IP ngoại vi trong hệ thống trên chip khả trình (SoPC). Các giao diện Avalon được phân loại gồm: Avalon Memory-Mapped (Avalon-MM) cho việc đọc/ghi dữ liệu có địa chỉ theo mô hình Master/Slave; Avalon Streaming (Avalon-ST) cho luồng dữ liệu một chiều tốc độ cao; Avalon Clock; Avalon Reset; và Avalon Conduit để ánh xạ tín hiệu ra chân ngoại vi của chip.
  • Mô hình thiết kế tham chiếu GHRD và công cụ Qsys: Công cụ Qsys (Platform Designer) cho phép tích hợp các khối IP phần cứng và tự động sinh cấu trúc liên kết Avalon Interconnect. Dự án GHRD từ nhà sản xuất cung cấp cấu trúc cơ sở gồm HPS, các cầu nối địa chỉ, System ID Peripheral, JTAG to Avalon Master Bridge, JTAG UART và bộ đếm độ trễ ngắt (Interrupt Latency Counter - ILC).
  • Giải thuật nhận diện khuôn mặt Haar Cascade: Thuật toán phát hiện đối tượng sử dụng các bộ lọc đặc trưng hình chữ nhật (đặc trưng cạnh, đường thẳng và 4 hình vuông) để tính toán độ chênh lệch cường độ sáng giữa các vùng pixel. Thuật toán phân cấp các bộ phân loại theo từng giai đoạn (stages) để nhanh chóng loại bỏ các vùng ảnh không chứa đối tượng và giữ lại vùng khuôn mặt, mắt có độ tin cậy cao nhất.

Phương pháp nghiên cứu thực tế là phương pháp thiết kế đồng thiết kế phần cứng - phần mềm (Hardware/Software Co-design) kết hợp thực nghiệm kỹ thuật:

  • Thiết kế phần cứng: Sử dụng phần mềm Intel Quartus Prime 16.0 và Qsys để kết nối các IP xử lý video vào cấu trúc GHRD; biên dịch tổng hợp mạch sang file cấu hình phần cứng .sof và sinh file .sopcinfo.
  • Thiết kế phần mềm: Xây dựng mã nguồn C/C++ sử dụng thư viện OpenCV trên môi trường hệ điều hành Linux (bản phân phối LXDE dành cho SoC-FPGA) chạy trên bộ xử lý ARM Cortex-A9.
  • Nguồn dữ liệu và công cụ: Dự án sử dụng bộ image hệ điều hành DE10_Standard_LXDE.img từ nhà sản xuất Terasic, các script sinh mã nguồn header (generate_hps_qsys_header) và công cụ chuyển đổi tệp nạp SoC EDS.

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

Hệ thống được thiết kế theo cấu trúc phân tầng kết hợp giữa phần cứng FPGA và phần mềm trên HPS, đảm bảo khả năng thu nhận, xử lý và xuất tín hiệu video.

1. Kiến trúc và quy trình phần cứng

Phần cứng được xây dựng mở rộng từ dự án GHRD bằng cách tích hợp thêm hệ thống con xử lý và xuất hình ảnh VGA trong Qsys:

  • Khối IP Frame Buffer: Có nhiệm vụ đệm các khung hình video vào bộ nhớ RAM bên ngoài, hỗ trợ cơ chế đệm đôi (double buffering) và đệm ba (triple buffering) với độ trễ biến đổi, gồm 2 thành phần chính là Writer (ghi các điểm ảnh từ luồng vào bộ nhớ) và Reader (đọc khung hình từ bộ nhớ để tạo luồng xuất).
  • Khối IP Clocked Video Output: Chuyển đổi dữ liệu từ giao thức luồng video Avalon-ST có kiểm soát sang luồng tín hiệu video có xung nhịp đồng bộ (VGA timing) để đưa ra bộ chuyển đổi DAC 24-bit.
  • Hệ thống cầu nối HPS - FPGA:
    • Lightweight HPS-to-FPGA Bridge: Cung cấp đường truyền cho vi xử lý HPS truy cập các thanh ghi điều khiển và trạng thái của các IP ngoại vi trong FPGA.
    • HPS-to-FPGA Bridge: Cung cấp kết nối trực tiếp băng thông lớn giữa bộ nhớ của FPGA và HPS.
    • FPGA-to-HPS Bridge: Cho phép các IP Master trong FPGA truy cập trực tiếp vào không gian bộ nhớ SDRAM của HPS.
    • Avalon-MM Pipeline Bridge: Chèn các tầng thanh ghi trung gian nhằm phân phối tín hiệu lệnh và phản hồi giữa bộ xử lý và các thành phần ngoại vi, hỗ trợ hàng đợi lệnh chờ lên tới 64 mức.

Quy trình triển khai phần cứng được thực hiện qua các bước tuần tự:

  1. Thiết lập các kết nối bus và địa chỉ cho các IP trong Qsys.
  2. Sinh cấu trúc HDL và xuất file .sopcinfo.
  3. Sử dụng công cụ SoC EDS chạy script generate_hps_qsys_header để tạo tệp header hps_0.h chứa bản đồ địa chỉ phần cứng cho lập trình phần mềm.
  4. Tiến hành biên dịch toàn bộ hệ thống bằng công cụ Start Compilation trên Quartus Prime để tạo tệp cấu hình .sof.
  5. Sử dụng script sof_to_rbf.bat trong thư mục output_files để chuyển đổi tệp .sof thành tệp nhị phân .rbf (Raw Binary File) phục vụ quá trình nạp phần cứng tự động qua thẻ nhớ SD khi khởi động.

2. Kiến trúc và quy trình phần mềm

Phần mềm ứng dụng chạy trên môi trường Linux nhúng tại khối HPS điều khiển quá trình thu nhận và xử lý ảnh:

  • Khởi tạo hệ thống nhúng: Thẻ nhớ microSD được định dạng bằng phần mềm SD Card Formatter, sau đó ghi file image DE10_Standard_LXDE.img bằng công cụ Win32 Disk Imager. Board mạch được cấp nguồn và kết nối với máy tính qua cổng UART-to-USB. Thiết lập giao tiếp dòng lệnh thông qua PuTTY với thông số truyền thông: tốc độ truyền 115200 baud, không bit chẵn lẻ (no parity), 1 stop bit (8-N-1).
  • Cấu hình phân vùng và môi trường: Thực hiện đăng nhập quyền root, tạo thư mục /mnt/FAT và gắn kết phân vùng khởi động của thẻ nhớ thông qua lệnh mount /dev/mmcblk0p1 /mnt/FAT. Sao chép thư mục chứa thư viện và mã nguồn OpenCV vào đường dẫn /home/root/.
  • Lưu đồ thuật toán nhận diện khuôn mặt:
    1. Đọc luồng dữ liệu hình ảnh đầu vào từ camera theo từng khung hình (frame).
    2. Chuyển đổi khung hình từ ảnh màu sang ảnh mức xám (grayscale) và tiến hành cân bằng sáng nhằm tăng độ chính xác của quá trình nhận dạng.
    3. Sử dụng module objectDetection với bộ phân loại Haar Cascade để kiểm tra sự tồn tại của khuôn mặt. Nếu không phát hiện khuôn mặt, hệ thống xuất trực tiếp hình ảnh camera ra màn hình.
    4. Nếu phát hiện khuôn mặt, thuật toán tiếp tục phân tích vùng bên trong để phát hiện hai mắt người.
    5. Trả kết quả nhận diện lên khung hình: vẽ khung hình chữ nhật khoanh vùng khuôn mặt và khung tròn khoanh vùng mắt, sau đó xuất tín hiệu hiển thị ra màn hình Desktop.
    6. Kiểm tra sự kiện bấm phím ESC từ người dùng để dừng chương trình hoặc lặp lại chu trình xử lý cho khung hình tiếp theo.

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

Bố cục khóa luận được trình bày mạch lạc qua 5 phần chính:

I. Tổng quan và Nhiệm vụ đề tài

Trình bày tổng quan về sự phát triển của công nghệ xử lý ảnh và vai trò của nền tảng phần cứng FPGA trong các ứng dụng thị giác máy tính. Giới thiệu lý do lựa chọn kit SoC-FPGA DE10-Standard và công cụ Qsys. Xác định rõ ràng 6 nội dung nhiệm vụ nghiên cứu của đề tài.

II. Tìm hiểu về dòng KIT SoC FPGA – DE10 Standard

Chương này cung cấp cơ sở lý thuyết sâu rộng về ba nội dung cốt lõi:

  • Tổng quan về FPGA và SoC: Lịch sử phát triển vi mạch khả trình từ đề xuất bộ nhớ SRAM của Wahlstrom (1967) và chip thương mại đầu tiên của Xilinx (1984) với 64 CLBs, 58 I/Os đến các dòng chip hiện đại chứa hàng trăm nghìn logic blocks; khái niệm SoC tích hợp hệ thống số, analog và vi xử lý.
  • Tổng quan Kit DE10-Standard: Trình bày thông số kỹ thuật chi tiết của chip Cyclone V SoC 5CSXFC6D6F31C6N (110K phần tử logic, 5.761 Kbits RAM nhúng, 6 bộ PLL, 2 bộ điều khiển bộ nhớ cứng, bộ nhớ 64MB SDRAM trên FPGA và 1GB DDR3 SDRAM trên HPS).
  • Giao tiếp Avalon và kiến trúc Qsys/GHRD: Đặc tả chi tiết các loại tín hiệu trong giao tiếp Avalon-MM Master/Slave; phân tích chức năng các thành phần IP trong GHRD (System ID, JTAG UART, ILC, Pipeline Bridge) và các cầu nối giữa HPS và FPGA.
  • Giải thuật Haar Cascade: Nguyên lý trích xuất đặc trưng với 3 loại bộ lọc hình chữ nhật và quy trình phân loại đa tầng (cascade classifier).

III. Thiết kế và thực hiện phần cứng

Phân tích yêu cầu thiết kế hệ thống phần cứng hỗ trợ giao tiếp camera và xuất màn hình VGA. Mô tả quy trình tích hợp các IP Video Frame Buffer và Clocked Video Output vào mô hình GHRD trong công cụ Qsys. Hướng dẫn chi tiết các bước sinh file .sopcinfo, chạy script tạo tệp header hps_0.h qua công cụ SoC EDS và thực hiện biên dịch trên Quartus Prime để thu được tệp nạp .sof.

IV. Thiết kế và thực hiện phần mềm

Đặc tả các yêu cầu chức năng của phần mềm chạy trên vi xử lý ARM. Xây dựng lưu đồ giải thuật chi tiết cho ứng dụng nhận diện khuôn mặt và mắt bằng ngôn ngữ C/C++ có sử dụng thư viện OpenCV. Phân tích các bước tiền xử lý ảnh (chuyển đổi ảnh xám, cân bằng sáng) và kỹ thuật khoanh vùng đối tượng phát hiện được.

V. Kết quả thực hiện

Trình bày chi tiết toàn bộ các bước thiết lập thực nghiệm trên thiết bị thực tế: format thẻ nhớ, ghi hệ điều hành DE10_Standard_LXDE.img, kết nối cáp UART và cấu hình phần mềm PuTTY, mount phân vùng thẻ nhớ, nạp cấu hình phần cứng qua file nhị phân .rbf và file .dtb, biên dịch mã nguồn C++ với Makefile có liên kết thư viện OpenCV, và tiến hành chạy demo ứng dụng nhận diện khuôn mặt hiển thị trực tiếp lên màn hình VGA.

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

1. Kết quả thực nghiệm

Đồ án đã hiện thực thành công hệ thống phần cứng trên chip FPGA Cyclone V kết nối với hệ thống nhúng Linux trên HPS. Sau quá trình biên dịch toàn bộ hệ thống phần cứng trên phần mềm Intel Quartus Prime, mức độ tiêu hao tài nguyên logic và phần cứng trên chip được tổng hợp trong bảng số liệu sau:

Loại tài nguyên phần cứng Tài nguyên sử dụng Tổng tài nguyên có sẵn (Cyclone V) Tỷ lệ sử dụng (%)
ALMs (Adaptive Logic Modules) 4.698 41.910 11%
DSPs (Digital Signal Processors) 0 112 0%
On-chip memory (bits) 73.558 5.662.720 1%
PLLs (Phase-Locked Loops) 1 15 7%
DLLs (Delay-Locked Loops) 1 4 25%

Về mặt chức năng, hệ thống đã hoàn thành việc boot hệ điều hành Linux LXDE từ thẻ nhớ microSD, nạp tệp cấu hình phần cứng .rbf thành công vào FPGA khi khởi động, thu nhận luồng video từ camera, thực hiện phát hiện chính xác khuôn mặt và mắt người thông qua thuật toán Haar Cascade và hiển thị khung hình có khoanh vùng đối tượng lên màn hình qua cổng VGA.

2. Đóng góp của đề tài

  • Xây dựng thành công một thiết kế tham chiếu hoàn chỉnh kết hợp giữa hệ thống phần cứng Qsys mở rộng từ Intel GHRD và phần mềm thị giác máy tính trên kit DE10-Standard.
  • Cung cấp quy trình từng bước chuẩn xác về việc thiết lập môi trường Linux nhúng, tạo file header HPS, chuyển đổi định dạng tệp nạp .sof sang .rbf và tích hợp thư viện OpenCV trên vi xử lý ARM Cortex-A9 thuộc kiến trúc SoC-FPGA.

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

  • Hạn chế:
    • Toàn bộ quá trình tính toán giải thuật nhận diện khuôn mặt Haar Cascade hiện đang được thực thi trên phần mềm thông qua thư viện OpenCV chạy trên vi xử lý HPS (ARM Cortex-A9).
    • Tài nguyên phần cứng chuyên dụng của FPGA như các khối DSP chưa được khai thác (mức tiêu tốn DSP ghi nhận 0%), vùng logic FPGA chủ yếu chỉ mới đảm nhiệm chức năng ghép nối ngoại vi và điều khiển hiển thị VGA Frame Buffer.
  • Hướng nghiên cứu tiếp:
    • Thiết kế bộ tăng tốc phần cứng (Hardware Accelerator) chuyên dụng cho thuật toán xử lý ảnh trực tiếp trên vùng logic của FPGA nhằm giảm tải cho vi xử lý HPS.
    • Tận dụng các khối DSP và bộ nhớ On-chip RAM trên FPGA để tính toán song song các đặc trưng hình chữ nhật của thuật toán Haar Cascade hoặc triển khai các mô hình mạng nơ-ron tích chập (CNN), từ đó nâng cao tốc độ xử lý khung hình (FPS) theo thời gian thực.

Giá trị tham khảo

Đồ án là tài liệu tham khảo kỹ thuật hữu ích cho:

  • Sinh viên và học viên chuyên ngành Kỹ thuật Điện tử, Kỹ thuật Máy tính, Thiết kế Vi mạch và Hệ thống Nhúng đang thực hiện đồ án môn học hoặc luận văn tốt nghiệp liên quan đến dòng kit SoC-FPGA Cyclone V của Intel/Altera.
  • Các kỹ sư muốn tìm hiểu phương pháp phát triển hệ thống SoC-FPGA dựa trên nền tảng thiết kế tham chiếu Golden Hardware Reference Design (GHRD), phương thức giao tiếp bus Avalon và kỹ thuật cấu hình các khối IP điều khiển màn hình VGA qua công cụ Qsys.
  • Tài liệu hướng dẫn chi tiết quy trình thực tế từ khâu cấu hình Linux nhúng, biên dịch mã nguồn C/C++ với OpenCV đến khâu chuyển đổi và nạp file cấu hình nhị phân .rbf lên phần cứng thực tế.

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

1. Chip SoC-FPGA Cyclone V trên kit DE10-Standard có cấu hình phần cứng như thế nào?
Kit sử dụng vi mạch Cyclone V SoC mã hiệu 5CSXFC6D6F31C6N, tích hợp khối HPS gồm bộ xử lý lõi kép ARM Cortex-A9 cùng các bộ điều khiển bộ nhớ, kết hợp với vùng logic FPGA chứa 110.000 phần tử logic lập trình được (Logic Elements / 41.910 ALMs), 5.761 Kbits bộ nhớ nhúng, 6 khối PLL và 112 bộ nhân DSP.

2. Vai trò của ba cầu nối chính giữa HPS và FPGA trong kiến trúc SoC Cyclone V là gì?
Hệ thống sử dụng ba cầu nối: Lightweight HPS-to-FPGA Bridge dùng để vi xử lý HPS gửi tín hiệu điều khiển và đọc trạng thái từ các thanh ghi của IP trong FPGA; HPS-to-FPGA Bridge dùng để truyền dữ liệu khối băng thông cao trực tiếp vào bộ nhớ FPGA; và FPGA-to-HPS Bridge cho phép các IP đóng vai trò Master trong FPGA truy cập trực tiếp vào vùng nhớ SDRAM và ngoại vi của HPS.

3. Tại sao cần chuyển đổi tệp cấu hình phần cứng từ định dạng .sof sang định dạng .rbf?
Thông thường, tệp cấu hình .sof được nạp trực tiếp vào FPGA thông qua cổng JTAG bằng công cụ Programmer. Tuy nhiên, trong mô hình hệ thống SoC khởi động từ hệ điều hành Linux trên thẻ nhớ SD, bộ nạp khởi động (bootloader) của HPS yêu cầu tệp cấu hình phần cứng ở định dạng nhị phân thô .rbf (Raw Binary File) để tự động nạp cấu hình cho phần FPGA khi khởi động hệ thống.

4. Thiết kế phần cứng mở rộng hiển thị VGA của đồ án tiêu tốn bao nhiêu tài nguyên FPGA?
Theo kết quả biên dịch từ Quartus Prime, hệ thống phần cứng tiêu tốn 4.698 ALMs (chiếm 11%), 73.558 bits bộ nhớ On-chip (chiếm 1%), 1 bộ PLL (chiếm 7%), 1 bộ DLL (chiếm 25%) và không sử dụng khối DSP nào (0%).

5. Ứng dụng phần mềm thực hiện các bước nào để phát hiện và khoanh vùng khuôn mặt từ camera?
Phần mềm đọc từng khung hình từ camera, chuyển đổi ảnh sang hệ mức xám và cân bằng sáng, sau đó áp dụng giải thuật Haar Cascade từ OpenCV để phát hiện khuôn mặt và kiểm tra sự xuất hiện của hai mắt bên trong khuôn mặt. Kết quả sau đó được vẽ khung bao quanh đối tượng và xuất ra màn hình thông qua bộ điều khiển hiển thị VGA.

Kết luận

Đồ án "Thiết kế giao tiếp camera và hiển thị màn hình VGA trên Kit DE10" đã hiện thực hóa thành công một hệ thống nhúng SoC-FPGA hoàn chỉnh kết hợp giữa việc cấu hình phần cứng trên nền tảng Intel GHRD và triển khai phần mềm xử lý ảnh OpenCV trên nền Linux nhúng. Công trình đã chứng minh tính khả thi của quy trình đồng thiết kế phần cứng - phần mềm trên chip Cyclone V, đạt được kết quả hiển thị và nhận diện khuôn mặt theo thời gian thực với mức tiêu hao tài nguyên logic hợp lý (11% ALMs). Đây là nền tảng kỹ thuật vững chắc để tiếp tục mở rộng phát triển các bộ tăng tốc phần cứng chuyên dụng cho các bài toán thị giác máy tính và học máy trên FPGA trong tương lai.