Bối cảnh và vấn đề nghiên cứu
Trong các hệ thống nhúng thời gian thực hiện đại, đặc biệt là các thiết bị di động vận hành bằng pin như cảm biến thông minh, thiết bị y sinh và thiết bị điện tử cầm tay, hiệu quả sử dụng năng lượng và tối ưu hóa tài nguyên phần cứng là yêu cầu mang tính quyết định. Một trong những nhiệm vụ cốt lõi của các hệ thống này là khả năng xử lý hình ảnh số trong thời gian thực với mức tiêu thụ tài nguyên tối thiểu. Trong chuỗi tiền xử lý thị giác máy tính, thao tác tăng cường độ sáng (brightness enhancement) đóng vai trò căn bản, thực hiện điều chỉnh cường độ điểm ảnh thông qua phép nhân giá trị từng kênh màu với một hệ số khuếch đại (gain factor). Khi thực thi bằng phần mềm trên các bộ vi xử lý công suất thấp, phép tính này chiếm dụng nhiều chu kỳ xử lý của CPU và làm gia tăng độ trễ của toàn hệ thống.
Mặt khác, trong thiết kế vi mạch kỹ thuật số, các khối nhân số học (multipliers) là một trong những thành phần tiêu tốn nhiều năng lượng và chiếm dụng diện tích silicon lớn nhất. Việc tối ưu hóa kiến trúc bộ nhân có ý nghĩa then chốt để cải thiện hiệu năng tổng thể. Các kiến trúc nhân truyền thống như mạch nhân mảng (array-based), cấu trúc cây (tree-based) hay cộng-và-dịch (shift-and-add) thường bộc lộ hạn chế về diện tích hoặc công suất tiêu thụ khi mở rộng độ dài từ bit. Kỹ thuật mã hóa Booth, đặc biệt là biến thể Booth Radix-8, đã được chứng minh là có khả năng giảm mạnh số lượng tích riêng phần (partial products) xuống xấp xỉ một phần ba so với số bit toán hạng, đồng thời làm giảm hoạt động chuyển mạch (switching activity) của các cổng logic, qua đó tiết kiệm năng lượng và diện tích mạch.
Đồ án tốt nghiệp thực hiện thiết kế, tối ưu hóa và triển khai phần cứng một bộ nhân 16-bit có dấu dựa trên thuật toán Booth Radix-8, tích hợp vào hệ thống tăng cường độ sáng ảnh màu thời gian thực trên nền tảng vi mạch khả trình FPGA.
Các mục tiêu nghiên cứu cụ thể của đề tài bao gồm:
- Thiết kế và tối ưu hóa bộ nhân có dấu 16-bit Booth Radix-8 bằng ngôn ngữ mô tả phần cứng Verilog HDL.
- Tích hợp bộ nhân vào một hệ thống phần cứng hoàn chỉnh có khả năng tiếp nhận dữ liệu điểm ảnh qua giao thức UART, thực hiện xử lý và gửi kết quả trở lại máy tính chủ.
- Triển khai và kiểm thử toàn bộ hệ thống trên nền tảng phần cứng FPGA Zybo Zynq-7000 sử dụng các bộ công cụ phát triển Vivado và Vitis.
- Đánh giá hiệu năng, tính đúng đắn về mặt chức năng và mức độ sử dụng tài nguyên phần cứng của hệ thống.
Đối tượng nghiên cứu là kiến trúc bộ nhân số học 16-bit tối ưu hóa năng lượng thấp (áp dụng mã hóa Booth Radix-8 và mảng tích lũy Transverse Carry Array - TCA) cùng hệ thống xử lý điểm ảnh thời gian thực. Phạm vi nghiên cứu giới hạn ở việc xử lý dữ liệu ảnh màu định dạng RGB 8-bit mỗi kênh (24-bit/pixel), truyền nhận dữ liệu nối tiếp qua chuẩn giao tiếp UART giữa máy tính cá nhân và bo mạch Zybo Zynq-7000 (trang bị chip Xilinx Zynq-7010 SoC). Nghiên cứu được thực hiện và hoàn thành vào tháng 7 năm 2025 tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.
Các hạn chế được nhóm tác giả xác định trong quá trình thực hiện gồm có:
- Rào cản ban đầu trong việc tiếp cận và làm chủ nền tảng SoC Zynq cùng chuỗi công cụ phát triển Vivado/Vitis.
- Độ phức tạp trong việc kết nối liên khối và đồng bộ hóa định thời giữa các miền phần cứng và phần mềm.
- Giao diện xuất dữ liệu hạn chế, hệ thống chỉ hỗ trợ truyền thông qua cổng UART nối tiếp mà chưa triển khai xuất hình trực tiếp ra màn hình qua cổng HDMI.
- Kiến trúc bộ nhân và đường ống dữ liệu được thiết kế chuyên biệt cho ảnh màu 8-bit mỗi kênh, chưa tích hợp khả năng xử lý các định dạng ảnh nâng cao có dải động rộng hơn.
Cơ sở lý thuyết và phương pháp
Khóa luận xây dựng giải pháp phần cứng dựa trên các nền tảng lý thuyết số học máy tính và kỹ thuật thiết kế mạch tích hợp chuyên dụng:
Số học dấu phẩy tĩnh (Fixed-Point Arithmetic)
Để loại bỏ chi phí phần cứng nặng nề của các khối tính toán dấu phẩy động (chuẩn hóa số mũ, căn lề), hệ thống sử dụng định dạng số học dấu phẩy tĩnh không dấu $U(a, b)$, trong đó $a$ là số bit phần nguyên và $b$ là số bit phần phân số. Cụ thể, hệ số khuếch đại độ sáng $\alpha$ được biểu diễn dưới dạng Q8.8 ($U(8,8)$), tương đương giá trị nguyên $\alpha_{int} = \alpha \times 256$. Giá trị mỗi kênh màu điểm ảnh $P \in U(8,0)$ nằm trong đoạn $[0, 255]$. Phép nhân giữa $P$ và $\alpha$ cho ra tích số thuộc định dạng $U(16,8)$ với tổng độ dài 24 bit (16 bit nguyên và 8 bit thập phân). Kết quả sau đó được dịch phải 8 bit (chia cho 256) và đưa qua khối bão hòa để đưa về đoạn $[0, 255]$:
$$I_{out} = \min([I_{in} \cdot \alpha], 255)$$
Tác giả so sánh các định dạng dấu phẩy tĩnh để làm rõ lý do chọn định dạng Q8.8 cho bài toán tăng cường độ sáng:
| Định dạng |
Khoảng giá trị xấp xỉ |
Độ chính xác (bước nhảy) |
Ưu điểm |
Nhược điểm |
| Q4.12 |
0 đến 15.999 |
0.00024 |
Độ chính xác rất cao |
Phạm vi hẹp, hạn chế dải sáng |
| Q6.10 |
0 đến 63.999 |
0.00098 |
Thỏa hiệp tốt giữa dải và độ phân giải |
Phần cứng vẫn tương đối phức tạp |
| Q8.8 |
0 đến 255.996 |
0.0039 |
Cân bằng tối ưu giữa dải giá trị và độ phân giải |
Cần 16 bit toán hạng |
Thuật toán Booth Radix-8 và cấu trúc Transverse Carry Array (TCA)
Thuật toán Booth Radix-8 mở rộng nguyên lý mã hóa bằng cách xét các nhóm 4 bit của toán hạng nhân (3 bit mới gộp với 1 bit gối từ nhóm liền trước). Đối với toán hạng 16-bit, phương pháp này giảm số lượng tích riêng phần xuống còn 6 hàng (thay vì 16 hàng như phép nhân dịch-cộng thông thường hoặc 8 hàng trong Radix-4). Các thao tác sinh ra bao gồm: $0, \pm1a, \pm2a, \pm3a, \pm4a$ (với $a$ là toán hạng bị nhân).
Trong khâu tích lũy các tích riêng phần (Partial Products Accumulation - PPA), thay vì sử dụng cấu trúc cây Wallace/Dadda phức tạp hoặc chuỗi 5 bộ cộng 32-bit tiêu chuẩn gây lãng phí diện tích ở các vùng bit không hoạt động (các bit 0 đệm), tác giả áp dụng cấu trúc mảng nhớ ngang Transverse Carry Array (TCA). Cấu trúc này chia nhỏ phép cộng: các bit bậc thấp được xử lý bằng các bộ cộng Ripple-Carry Adder (RCA) 3-bit, trong khi các bit bậc cao được xử lý bằng bộ cộng RCA 17-bit, cho phép lan truyền số nhớ theo phương ngang và tối ưu hóa cổng logic.
Phương pháp nghiên cứu
Nghiên cứu áp dụng phương pháp đồng thiết kế phần cứng/phần mềm (Hardware/Software Co-design) kết hợp thực nghiệm:
- Mô tả phần cứng RTL bằng Verilog HDL cho lõi nhân Booth Radix-8, khối dịch bit và mạch bão hòa.
- Phân hoạch chức năng hệ thống: Phần cứng khả trình (PL) đảm nhiệm tăng tốc tính toán số học song song; hệ thống vi xử lý (PS) đảm nhiệm giao tiếp truyền thông và điều phối dữ liệu.
- Mô phỏng, tổng hợp logic và kiểm tra định thời tĩnh bằng phần mềm Xilinx Vivado Design Suite.
- Xây dựng phần mềm nhúng bằng ngôn ngữ C trên nền tảng Vitis Unified Software Platform chạy trên lõi vi xử lý ARM Cortex-A9.
- Viết ứng dụng giao tiếp máy tính bằng ngôn ngữ Python để tải ảnh, đóng gói dữ liệu và hiển thị kết quả.
- Đo lường và đối chứng các chỉ số phần cứng (LUT, FF, DSP, công suất) giữa bộ nhân đề xuất và mạch nhân mảng truyền thống (Array Multiplier).
Nguồn dữ liệu thực nghiệm là tệp ảnh màu mẫu chuẩn có độ phân giải $302 \times 167$ pixel định dạng RGB.
Thiết kế và triển khai hệ thống
Kiến trúc tổng thể và phân vùng hệ thống
Hệ thống được tổ chức thành ba phân vùng chức năng hoạt động phối hợp:
- Ứng dụng máy tính chủ (Host PC): Viết bằng Python, thực hiện nạp tệp ảnh, chuyển đổi hệ số độ sáng do người dùng nhập sang định dạng số học dấu phẩy tĩnh Q8.8, làm phẳng dữ liệu ma trận ảnh RGB và đóng gói thành khung truyền thông gửi qua cổng nối tiếp UART. Sau khi nhận dữ liệu phản hồi, chương trình tái tạo lại ảnh màu và xuất ra màn hình.
- Hệ thống xử lý nhúng (Processing System - PS): Sử dụng vi xử lý lõi kép ARM Cortex-A9 tích hợp sẵn trên chip Zynq-7010, chạy mã nguồn C được biên dịch từ Vitis. PS nhận luồng byte từ UART, kiểm tra tính hợp lệ của gói tin, trích xuất kích thước ảnh và hệ số khuếch đại, sau đó chuyển từng điểm ảnh và hệ số sang khối PL thông qua giao tiếp bus bộ nhớ AXI4-Lite.
- Khối logic khả trình (Programmable Logic - PL): Chứa lõi nhân phần cứng tăng tốc MUL16 được mô tả bằng Verilog HDL, kết nối với hệ thống vi xử lý qua giao diện thanh ghi AXI4-Lite.
Kiến trúc lõi nhân MUL16 và xử lý đường ống điểm ảnh
Mỗi pixel màu gồm ba kênh độc lập (Đỏ - R, Xanh lá - G, Xanh dương - B). Dữ liệu được truyền tuần tự từng kênh (8-bit) vào lõi nhân. Một chu kỳ xử lý điểm ảnh bao gồm ba phép nhân riêng biệt cho ba kênh màu. Lõi MUL16 vận hành qua các giai đoạn:
- Khối sinh tích riêng phần (PP Generator): Toán hạng nhân 16-bit được phân tách thành 6 nhóm 4-bit gối nhau. Khối mã hóa Booth (Booth Encoder) giải mã từng nhóm để xuất các tín hiệu chọn MUX tương ứng với các giá trị ${0, a, 2a, 3a, 4a}$ và bit dấu $S_i$. Bộ chọn MUX kết hợp mạch đảo bù hai có điều kiện sinh ra 6 tích riêng phần từ $I_0$ đến $I_5$.
- Khối tích lũy mảng nhớ ngang (TCA Reduction): 6 tích riêng phần được gom nhóm và cộng lại bằng các bộ cộng RCA chuyên biệt. Các bit bậc thấp được cộng bằng bộ cộng RCA 3-bit, các bit bậc cao được cộng bằng bộ cộng RCA 17-bit, triệt tiêu hoàn toàn 15 bit 0 đệm dư thừa ở đầu vào của các bộ cộng truyền thống.
- Khối chuyển đổi và bão hòa ngõ ra: Kết quả tích lũy 24-bit (định dạng $U(16,8)$) được dịch phải 8 bit để loại bỏ phần phân số. Bộ logic bão hòa kiểm tra giá trị: nếu kết quả lớn hơn 255, đầu ra sẽ được ghim cố định ở mức 255; nếu nhỏ hơn hoặc bằng 255, giữ nguyên 8 bit thấp để trả về giá trị kênh màu hợp lệ trong đoạn $[0, 255]$.
Giao thức truyền thông UART và AXI4-Lite
Cấu trúc gói tin truyền thông UART từ máy tính xuống bo mạch Zybo bao gồm:
- 3 byte mã nhận dạng tiêu đề (Header): chuỗi ký tự
'SND'.
- 2 byte biểu diễn hệ số khuếch đại độ sáng dạng số nguyên đã định tỷ lệ (Q8.8).
- 2 byte chiều rộng ảnh (Image Width).
- 2 byte chiều cao ảnh (Image Height).
- $N$ byte dữ liệu điểm ảnh thô (với $N = Width \times Height \times 3$, mỗi byte đại diện cho một kênh màu 8-bit).
Khi nhận đủ dữ liệu và xử lý xong một khung ảnh, vi xử lý ARM Cortex-A9 trên bo mạch Zybo gửi trả tín hiệu phản hồi xác nhận (ACK) kèm chuỗi $N$ byte điểm ảnh đã qua xử lý ngược về máy tính chủ. Giao thức AXI4-Lite trong PL cung cấp các kênh địa chỉ và dữ liệu 32-bit độc lập, thực hiện ghi nhận hệ số khuếch đại và điểm ảnh vào các thanh ghi ánh xạ bộ nhớ với độ trễ tối thiểu.
Nội dung chính theo từng chương
Chương 1: Giới thiệu (Introduction)
Chương 1 thiết lập cơ sở nghiên cứu của đề tài. Tác giả trình bày tính cấp thiết của việc xử lý ảnh thời gian thực trên các thiết bị nhúng giới hạn tài nguyên và năng lượng; chỉ rõ thao tác tăng cường độ sáng bằng phép nhân là nút thắt cổ chai về mặt tính toán khi chạy trên CPU công suất thấp. Chương này công bố 4 mục tiêu nghiên cứu trọng tâm, xác định phạm vi thực nghiệm trên bo mạch Zybo Zynq-7000 với ảnh màu RGB 8-bit, phân tích các rào cản kỹ thuật gặp phải (như công cụ phần mềm phức tạp, giao tiếp giới hạn ở UART) và phác thảo cấu trúc 5 chương của khóa luận.
Chương 2: Tổng quan lý thuyết (Literature Review)
Chương 2 cung cấp hệ thống lý thuyết phục vụ cho việc xây dựng mô hình phần cứng:
- Nguyên lý số học dấu phẩy tĩnh, phân tích định dạng Q8.8 và so sánh các định dạng Q4.12, Q6.10, Q8.8.
- Cơ sở toán học của bài toán tăng cường độ sáng ảnh màu và mô hình ghim giá trị bão hòa.
- Phân tích các phần tử mạch số học cơ bản: bộ nửa cộng (Half Adder - HA), bộ cộng toàn phần (Full Adder - FA), bộ dồn kênh (Multiplexer - MUX) và bộ cộng lan truyền số nhớ (Ripple-Carry Adder - RCA).
- Khảo sát các biến thể của thuật toán Booth: Radix-2, Radix-4 và Radix-8; phân tích ưu điểm giảm số lượng tích riêng phần của Radix-8 về mức $n/3$.
- Kiến trúc tích lũy tích riêng phần Transverse Carry Array (TCA).
- Giao thức truyền thông nối tiếp không đồng bộ UART và giao thức bus trên chip AXI4-Lite.
- Giới thiệu bộ công cụ phát triển phần cứng Vivado, nền tảng phần mềm Vitis và kiến trúc phần cứng bo mạch Zybo Zynq-7000 (chip SoC Xilinx Zynq-7010 gồm lõi ARM Cortex-A9 650 MHz, Artix-7 PL với 28.000 logic cells, 80 lát cắt DSP, 240 KB BRAM và 512 MB DDR3L RAM).
- Khảo sát các kiến trúc nhân mảng không dấu và nhân số bù hai (thuật toán Baugh-Wooley cùng biến thể Baugh-Wooley sửa đổi).
Chương 3: Thiết kế và triển khai hệ thống (System Design and Implementation)
Chương 3 đi sâu vào thiết kế kỹ thuật chi tiết:
- Xác định các tiêu chí thiết kế: hiệu năng, khả năng mở rộng và đáp ứng thời gian thực.
- Xây dựng sơ đồ khối và lưu đồ hoạt động đồng thời giữa Host PC, PS và PL.
- Thiết kế chi tiết lõi nhân MUL16: bảng mã hóa Booth Encoder, khối sinh tích riêng phần (PP_gen), mạng tích lũy TCA sử dụng các bộ cộng RCA 3-bit và 17-bit thay thế các bộ cộng 32-bit.
- Thiết kế mạch dịch bit logic và khối bão hòa đầu ra khống chế giá trị trong khoảng $[0, 255]$.
- Xây dựng lưu đồ phần mềm phía máy tính (Python) xử lý đóng gói gói tin UART ('SND', hệ số, kích thước, dữ liệu điểm ảnh) và phần mềm phía bo mạch Zybo (C trên Vitis) điều khiển bus AXI4-Lite và bộ đệm UART.
- Phân tích các yếu tố mức hệ thống về định thời (timing) và thông lượng dữ liệu (throughput).
Chương 4: Kết quả thực nghiệm (Experiment Results)
Chương 4 ghi nhận quá trình hiện thực hóa và kiểm thử hệ thống:
- Thiết kế sơ đồ khối phần cứng (Block Design) tích hợp khối vi xử lý Zynq PS và IP nhân MUL16 trên Vivado.
- Tổng hợp mạch (synthesis), thực thi bố trí định tuyến (implementation) và tạo tệp cấu hình bitstream nạp vào FPGA.
- Tạo dự án ứng dụng trên Vitis, biên dịch mã nguồn C và chạy chương trình điều khiển trên bo mạch Zybo Zynq-7000.
- Thực nghiệm xử lý ảnh mẫu kích thước $302 \times 167$ pixel ở các hệ số độ sáng khác nhau (như hệ số nhỏ hơn 1 để làm tối ảnh và hệ số lớn hơn 1 để làm sáng ảnh).
- Báo cáo số liệu đo đạc tài nguyên phần cứng (Resource Utilization), công suất tiêu thụ (Power Report) và định thời (Timing Report).
- Đối chiếu hiệu năng giữa mạch nhân đề xuất và mạch nhân mảng truyền thống (Array Multiplier).
Chương 5: Kết luận và hướng phát triển (Conclusion and Development Directions)
Chương 5 đúc kết toàn bộ công trình:
- Khẳng định mức độ hoàn thành của hệ thống nhúng thực tế đáp ứng việc tăng cường độ sáng ảnh màu thời gian thực trên FPGA.
- Tóm lược các ưu điểm đạt được về tối ưu diện tích tài nguyên logic và công suất thông qua giải pháp Booth Radix-8 kết hợp TCA.
- Nhìn nhận các mặt hạn chế về tốc độ giao tiếp UART và dải định dạng điểm ảnh hỗ trợ.
- Đề xuất các giải pháp nâng cấp trong tương lai như bổ sung cổng xuất hình trực tiếp HDMI, mở rộng độ rộng bit cho ảnh dải động cao và ứng dụng lõi nhân vào các thuật toán lọc ảnh nâng cao.
Kết quả và đóng góp
Kết quả kỹ thuật
Khóa luận đã hiện thực hóa thành công một hệ thống nhúng hoàn chỉnh trên nền tảng Xilinx Zynq-7010 SoC, kết hợp giữa phần mềm điều khiển và phần cứng tăng tốc chuyên dụng:
- Xây dựng thành công lõi nhân 16-bit Booth Radix-8 tối ưu hóa bằng mảng tích lũy Transverse Carry Array (TCA), viết hoàn toàn bằng Verilog HDL.
- Tích hợp thành công chu trình truyền thông khép kín: PC (Python) $\rightarrow$ UART $\rightarrow$ PS ARM Cortex-A9 (C firmware) $\rightarrow$ AXI4-Lite $\rightarrow$ PL MUL16 $\rightarrow$ AXI4-Lite $\rightarrow$ PS $\rightarrow$ UART $\rightarrow$ PC.
- Kiểm thử thành công tính năng tăng cường độ sáng trên ảnh màu thực nghiệm độ phân giải $302 \times 167$ pixel ở các mức hệ số khuếch đại khác nhau, xác nhận mạch bão hòa hoạt động chính xác khi cắt gọt các giá trị vượt ngưỡng 255.
- Thiết kế đáp ứng ràng buộc định thời (timing closure), vận hành ổn định trên kit phần cứng Zybo Zynq-7000.
Giải pháp và cải tiến kỹ thuật đề xuất
Tác giả đề xuất các giải pháp kiến trúc phần cứng nhằm giải quyết bài toán tiêu hao năng lượng và diện tích:
- Ứng dụng cấu trúc Transverse Carry Array (TCA): Loại bỏ việc dùng 5 bộ cộng 32-bit tiêu chuẩn vốn gây lãng phí diện tích do chứa nhiều bit 0 đệm (như tích riêng phần $I_5$ có tới 15 bit 0 ở phần trọng số thấp). Thay vào đó, kiến trúc sử dụng phối hợp các bộ cộng RCA 3-bit và RCA 17-bit, cho phép số nhớ lan truyền theo phương ngang, giảm thiểu số lượng cổng logic.
- Áp dụng số học dấu phẩy tĩnh Q8.8: Cho phép toàn bộ quá trình tính toán độ sáng điểm ảnh diễn ra bằng số nguyên, loại bỏ hoàn toàn các khối tính toán số thực phức tạp mà vẫn duy trì bước nhảy mịn ($2^{-8} \approx 0.0039$).
- Đường ống xử lý tuần tự từng kênh RGB: Dữ liệu ảnh màu được làm phẳng và đưa lần lượt từng kênh màu 8-bit vào lõi nhân, giúp phần cứng giữ được kích thước nhỏ gọn mà vẫn đạt tốc độ xử lý thời gian thực.
Đóng góp kỹ thuật
So với các cấu trúc nhân truyền thống, công trình mang lại các đóng góp cụ thể:
- Giảm số lượng tích riêng phần của toán hạng 16-bit xuống còn 6 hàng, thấp hơn đáng kể so với 16 hàng của mạch nhân mảng cơ bản và 8 hàng của mạch nhân Booth Radix-4.
- Giảm thiểu hoạt động chuyển mạch logic và tiết kiệm tài nguyên LUT/Flip-Flop trong lát cắt FPGA nhờ cấu trúc nén TCA.
- Cung cấp một mô hình thực nghiệm hoàn chỉnh về đồng thiết kế phần cứng/phần mềm (PS-PL) phục vụ tiền xử lý hình ảnh trên dòng FPGA Zynq SoC giá thành thấp.
Hạn chế và hướng nghiên cứu tiếp
Khóa luận ghi nhận các giới hạn kỹ thuật trong phạm vi triển khai thực tế:
- Tốc độ truyền thông bị nghẽn ở chuẩn UART: Việc truyền toàn bộ dữ liệu điểm ảnh thô từ máy tính xuống bo mạch và trả ngược lại qua giao tiếp nối tiếp UART tạo ra độ trễ truyền dẫn đáng kể, chưa tận dụng hết băng thông xử lý tính toán cực nhanh của lõi logic trong FPGA.
- Thiếu giao diện xuất hình ảnh trực tiếp: Hệ thống chưa khai thác cổng xuất hình HDMI có sẵn trên bo mạch Zybo Zynq-7000 để hiển thị hình ảnh trực tiếp lên màn hình mà phải phụ thuộc vào ứng dụng Python trên máy tính chủ.
- Hạn chế về định dạng dữ liệu đầu vào: Thiết kế bộ nhân và mạch bão hòa mới chỉ hỗ trợ định dạng ảnh chuẩn 8-bit cho mỗi kênh màu RGB, chưa hỗ trợ các định dạng ảnh có độ sâu màu cao hơn (như 10-bit, 12-bit hay ảnh định dạng RAW).
Các hướng mở rộng nghiên cứu được tác giả đề xuất:
- Nâng cấp khối giao tiếp ngoại vi, tích hợp bộ điều khiển hiển thị video qua chuẩn HDMI hoặc giao tiếp trực tiếp với cảm biến máy ảnh qua cổng MIPI/CSI để đạt tốc độ khung hình cao.
- Nâng cấp kiến trúc xử lý dấu phẩy tĩnh để hỗ trợ các định dạng điểm ảnh có dải động rộng và độ sâu màu cao hơn.
- Ứng dụng lõi nhân Booth Radix-8 TCA vào các tác vụ xử lý số tín hiệu và thị giác máy tính phức tạp hơn, chẳng hạn như bộ lọc chập không gian (convolutional filters) hoặc các lớp tính toán tích chập trong mạng nơ-ron nhúng.
Giá trị tham khảo
Báo cáo khóa luận là tài liệu tham khảo hữu ích cho sinh viên, giảng viên và kỹ sư thuộc các chuyên ngành Kỹ thuật Máy tính, Công nghệ Kỹ thuật Điện tử - Viễn thông, Hệ thống Nhúng và Thiết kế Vi mạch (VLSI/FPGA).
Các nội dung có giá trị tham khảo chuyên môn cao bao gồm:
- Phương pháp luận thiết kế khối nhân số học: Chi tiết bảng mã hóa Booth Radix-8 và cách tổ chức các bộ chọn MUX để sinh các mức tích riêng phần ${0, \pm1a, \pm2a, \pm3a, \pm4a}$.
- Kỹ thuật tối ưu hóa phần cứng bằng TCA: Phương pháp thay thế các bộ cộng chuẩn kích thước lớn bằng các khối cộng nhỏ (RCA 3-bit và 17-bit) để tiết kiệm tài nguyên lát cắt logic trên FPGA.
- Mô hình đồng thiết kế phần cứng/phần mềm (Co-design): Cách thức tổ chức kết nối giữa lõi xử lý ARM Cortex-A9 và khối logic tự thiết kế qua bus AXI4-Lite trên môi trường Vivado/Vitis, đóng vai trò như một dự án mẫu hoàn chỉnh cho các ứng dụng tăng tốc phần cứng.
Câu hỏi thường gặp
1. Tại sao khóa luận lựa chọn định dạng số học dấu phẩy tĩnh Q8.8 thay vì số thực dấu phẩy động hay các định dạng khác?
Theo phân tích tại Chương 2, định dạng Q8.8 ($U(8,8)$) sử dụng 8 bit nguyên và 8 bit thập phân, cung cấp khoảng giá trị từ 0 đến xấp xỉ 255.996 với bước nhảy phân giải là $1/256 \approx 0.0039$. Bước nhảy này đủ mịn để biến đổi độ sáng liên tục mà không gây ra hiện tượng phân dải màu (banding artifacts). So với Q4.12 (bị giới hạn dải sáng) và Q6.10, định dạng Q8.8 tương thích tự nhiên với dải giá trị $[0, 255]$ của điểm ảnh 8-bit và không đòi hỏi các mạch chuẩn hóa số mũ phức tạp như số thực dấu phẩy động, giúp tối ưu hóa diện tích phần cứng.
2. Thuật toán Booth Radix-8 giúp giảm thiểu số lượng tích riêng phần như thế nào trong thiết kế bộ nhân 16-bit?
Thuật toán Booth Radix-8 phân tích toán hạng nhân theo từng nhóm 4 bit chồng lấn (gồm 3 bit mới và 1 bit gối từ nhóm trước). Thay vì tạo ra 16 hàng tích riêng phần như phép nhân thông thường hoặc 8 hàng như thuật toán Booth Radix-4, Booth Radix-8 chỉ tạo ra 6 hàng tích riêng phần ($I_0$ đến $I_5$) cho toán hạng 16-bit. Việc giảm số lượng tích riêng phần giúp giảm bớt số tầng cộng dồn, giảm hoạt động chuyển mạch của cổng logic và rút ngắn thời gian lan truyền tín hiệu.
3. Cấu trúc Transverse Carry Array (TCA) mang lại lợi ích gì so với cấu trúc cộng tích riêng phần truyền thống?
Trong phương pháp truyền thống, các tích riêng phần được mở rộng dấu thành 32 bit và tích lũy qua chuỗi năm bộ cộng 32-bit. Cách làm này gây lãng phí lớn vì nhiều bit đầu vào chỉ đóng vai trò đệm bit 0 (chẳng hạn tích riêng phần $I_5$ có tới 15 bit 0 ở phần trọng số thấp). Cấu trúc TCA thay thế năm bộ cộng 32-bit bằng các bộ cộng có kích thước phù hợp với vùng bit hoạt động thực tế, cụ thể là các bộ cộng RCA 3-bit cho phần trọng số thấp và RCA 17-bit cho phần trọng số cao, xử lý số nhớ theo phương ngang nhằm tiết kiệm tài nguyên LUT và Flip-Flop.
4. Gói dữ liệu truyền từ máy tính xuống bo mạch Zybo qua UART có cấu trúc chi tiết như thế nào?
Gói tin truyền qua UART gồm 4 thành phần chính:
- 3 byte tiêu đề nhận dạng chứa chuỗi ký tự
'SND'.
- 2 byte hệ số khuếch đại độ sáng ở dạng số nguyên đã định tỷ lệ Q8.8 ($\alpha \times 256$).
- 4 byte kích thước ảnh (gồm 2 byte chiều rộng và 2 byte chiều cao).
- $N$ byte dữ liệu điểm ảnh thô (mỗi điểm ảnh gồm 3 byte ứng với 3 kênh R, G, B tuần tự).
5. Vai trò của giao tiếp AXI4-Lite trong hệ thống là gì?
AXI4-Lite là giao thức bus truyền thông ánh xạ bộ nhớ gọn nhẹ thuộc chuẩn ARM AMBA, hỗ trợ truyền từng giao dịch dữ liệu 32-bit độc lập. Trong hệ thống này, AXI4-Lite đóng vai trò cầu nối đồng bộ giữa hệ vi xử lý PS (chạy phần mềm C trên ARM Cortex-A9) và khối logic PL (lõi nhân MUL16 bằng Verilog). Giao tiếp này cho phép vi xử lý nạp hệ số khuếch đại và từng giá trị điểm ảnh vào thanh ghi của bộ nhân, sau đó đọc kết quả đã xử lý quay trở lại bộ nhớ với độ trễ thấp.
Kết luận
Khóa luận tốt nghiệp của sinh viên Nguyễn Minh Mẫn và Nguyễn Văn Sơn đã thiết kế và thực nghiệm thành công hệ thống tăng cường độ sáng ảnh màu thời gian thực trên nền tảng vi mạch khả trình Zybo Zynq-7000 FPGA. Bằng việc kết hợp thuật toán mã hóa Booth Radix-8 và kiến trúc tích lũy mảng nhớ ngang (TCA), công trình đã giải quyết hiệu quả bài toán tối ưu hóa diện tích và năng lượng cho bộ nhân số học 16-bit dấu phẩy tĩnh Q8.8. Toàn bộ chu trình đồng thiết kế phần cứng/phần mềm từ xử lý thuật toán, mô tả phần cứng Verilog, điều khiển nhúng trên ARM Cortex-A9 đến giao tiếp hiển thị trên máy tính chủ đều được kiểm chứng hoạt động chính xác và ổn định.