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

Trong kỷ nguyên phát triển mạnh mẽ của công nghệ thông tin, khối lượng dữ liệu đa phương tiện cần lưu trữ và truyền tải ngày càng tăng cao, đặt ra thách thức lớn về hạ tầng phần cứng và băng thông mạng. Mặc dù việc nâng cấp dung lượng lưu trữ vật lý là một giải pháp, phương án này đòi hỏi chi phí đầu tư lớn. Do đó, nén dữ liệu trở thành giải pháp tối ưu nhằm giảm dung lượng tệp tin, phục vụ hiệu quả cho các lĩnh vực như truyền hình quảng bá (broadcast television), hàng không (aircraft), truyền dữ liệu máy tính (computer transmission) và chẩn đoán hình ảnh y tế (medical imaging).

Trong lĩnh vực nén ảnh, các kỹ thuật được chia thành hai nhóm chính: nén mất mát (lossy compression) và nén không mất mát (lossless compression). Các phương pháp nén mất mát phổ biến (như JPEG, DCT, Wavelet) mang lại tỷ lệ nén cao nhưng làm suy hao một phần thông tin gốc, không phù hợp với các ứng dụng đòi hỏi tính toàn vẹn dữ liệu tuyệt đối như ảnh y tế (ảnh CT scan) hoặc bản vẽ kỹ thuật. Ngược lại, các phương pháp nén không mất mát (như LZW, Shannon-Fano, Huffman Coding) bảo đảm khôi phục chính xác 100% dữ liệu ban đầu. Tuy nhiên, thuật toán Huffman tĩnh đòi hỏi phải duyệt trước toàn bộ dữ liệu để tính toán bảng phân bố xác suất và phải truyền kèm cây mã hóa, gây tốn băng thông và không đáp ứng được yêu cầu truyền dữ liệu thời gian thực (real-time streaming).

Để giải quyết hạn chế trên, đề tài tập trung nghiên cứu và hiện thực hóa phần cứng giải thuật nén ảnh không mất mát thời gian thực dựa trên thuật toán cây nhị phân động (Dynamic Huffman Coding). Mục tiêu và nhiệm vụ nghiên cứu cụ thể bao gồm:

  1. Nghiên cứu thuật toán Dynamic Huffman Coding và các giải thuật nén ảnh không mất mát liên quan; xây dựng mô hình mô phỏng thuật toán trên phần mềm (C++, Python) để đánh giá tỷ lệ nén và cấu trúc tương đồng.
  2. Đề xuất giải pháp cải tiến thuật toán nhằm tối ưu hóa việc biểu diễn cây nhị phân, giảm số lượng bit biểu diễn và tiết kiệm tài nguyên phần cứng.
  3. Thiết kế kiến trúc phần cứng chi tiết cho khối xử lý nén (Compression Core) bằng ngôn ngữ mô tả phần cứng Verilog HDL.
  4. Thực hiện mô phỏng kiểm tra chức năng và tổng hợp mạch trên các công cụ chuyên dụng (Vivado, Quartus, ModelSim) nhằm xác định các thông số tài nguyên phần cứng (LUTs, Registers, BRAM) và tần số hoạt động cực đại.

Đối tượng nghiên cứu của khóa luận là các hình ảnh thang độ xám (grayscale) 8-bit (256 mức xám). Phạm vi nghiên cứu thực nghiệm áp dụng trên các ảnh có kích thước 256x256 và 512x512 thuộc các định dạng .pgm, .tif, .png trích xuất từ tập dữ liệu chuẩn Waterloo Image Compression Benchmark và tập dữ liệu ảnh chụp cắt lớp y tế (CT scan) từ Kaggle.


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

Khung lý thuyết và mô hình toán học

Nghiên cứu xây dựng dựa trên các khái niệm xử lý ảnh số, lý thuyết thông tin và kỹ thuật vi mạch:

  • Phần tử ảnh và Mức xám (Pixel & Gray level): Điểm ảnh là đơn vị cơ bản cấu thành ảnh số. Với ảnh mức xám 8-bit, cường độ sáng của mỗi pixel được lượng tử hóa thành 256 mức giá trị nguyên từ 0 đến 255.
  • Biểu đồ phân bố độ sáng (Histogram): Thể hiện tần suất xuất hiện của các mức xám, cho phép đánh giá độ phức tạp về mặt entropy của hình ảnh.
  • Dự đoán tuyến tính (Linear Prediction): Kỹ thuật loại bỏ dư thừa không gian giữa các điểm ảnh lân cận. Giá trị dự đoán $P(i, j)$ được làm tròn thành số nguyên gần nhất $P'(i, j) = \text{round}(P(i, j))$, từ đó tính giá trị sai số dự đoán (error): $$E(i, j) = I(i, j) - P'(i, j)$$ Trong đó $I(i, j)$ là giá trị pixel thực tế tại tọa độ $(i, j)$. Sai số $E(i, j)$ là số nguyên, bảo đảm quá trình giải mã khôi phục chính xác điểm ảnh gốc.
  • Mã hóa cây nhị phân động (Dynamic Huffman Coding): Thuật toán nén thích nghi xây dựng cây mã hóa trong thời gian thực theo từng symbol đầu vào mà không cần quét trước dữ liệu. Cấu trúc cây sử dụng nút đặc biệt NYT (Not Yet Transferred) có trọng số bằng 0. Khi xuất hiện một symbol mới, hệ thống phát ra đường đi đến nút NYT cùng mã nhị phân gốc của symbol, sau đó tạo một nút nhánh thay thế NYT gồm một nút lá chứa symbol mới và một nút NYT mới. Trọng số các nút được cập nhật tăng dần từ nút lá lên nút gốc; nếu điều kiện thứ tự cây bị vi phạm, hệ thống tiến hành hoán đổi vị trí (swap node) giữa nút đang xét với nút có số thứ tự lớn nhất cùng trọng số (ngoại trừ nút cha).
  • Các chỉ số đánh giá hiệu năng:
    • Tỷ lệ nén (Compression Ratio - CR): $$CR = \frac{\text{Kích thước ban đầu}}{\text{Kích thước sau nén}}$$
    • Hiệu suất nén (Efficiency): $$\text{Hiệu suất} = 1 - \frac{\text{Kích thước sau nén}}{\text{Kích thước ban đầu}}$$
    • Số bit trên mỗi điểm ảnh (Bits Per Pixel - BPP): $$BPP = \frac{\text{Kích thước tệp nén (bits)}}{\text{Tổng số điểm ảnh}}$$
    • Chỉ số tương đồng cấu trúc (SSIM - Structure Similarity Index Measure): Đánh giá độ bảo toàn thông tin cấu trúc giữa ảnh gốc $x$ và ảnh giải nén $y$ dựa trên độ chói ($\mu$), độ tương phản ($\sigma$) và cấu trúc: $$SSIM(x, y) = \frac{(2\mu_x\mu_y + c_1)(2\sigma_{xy} + c_2)}{(\mu_x^2 + \mu_y^2 + c_1)(\sigma_x^2 + \sigma_y^2 + c_2)}$$

Phương pháp nghiên cứu và nguồn dữ liệu

Đề tài sử dụng phương pháp thiết kế hệ thống phần cứng kết hợp mô phỏng thực nghiệm:

  • Phương pháp chuyển đổi dữ liệu Hexadecimal (4-bit symbol): Thay vì tạo cây Huffman với 256 nút lá tương ứng 256 mức xám (đòi hỏi cây nhị phân có độ sâu lớn và tiêu tốn 256 thanh ghi phần cứng), nhóm tác giả chia tách mỗi pixel 8-bit thành hai ký tự Hex 4-bit (giá trị từ 0 đến F). Giải pháp này giới hạn cây nhị phân tối đa 16 nút dữ liệu và 16 nút NYT (tổng cộng 32 nút), giảm bộ nhớ lưu trữ xuống 32 thanh ghi, tối ưu diện tích mạch (Area) và rút ngắn thời gian duyệt cây.
  • Môi trường thực nghiệm và công cụ:
    • Ngôn ngữ Python: Tiền xử lý hình ảnh, chuyển đổi định dạng ma trận pixel sang tệp văn bản mã Hex và hậu xử lý tái tạo ảnh sau giải nén.
    • Ngôn ngữ C++ trên Visual Studio Code: Hiện thực thuật toán giải nén bitstream ngược lại thành chuỗi pixel và đánh giá kiểm tra SSIM.
    • Ngôn ngữ Verilog HDL: Mô tả kiến trúc Register-Transfer Level (RTL) của khối phần cứng Compression Core.
    • Công cụ EDA: Xilinx Vivado, Intel Quartus Prime, ModelSim thực hiện tổng hợp mạch (synthesis), đặt vị trí - định tuyến (place & route), và mô phỏng dạng sóng chức năng (functional waveform simulation).
  • Tập dữ liệu kiểm thử: Tập ảnh kiểm thử chuẩn Waterloo Image Compression Benchmark và tập ảnh chụp cắt lớp y tế CT scan từ nền tảng Kaggle với các kích thước 256x256 và 512x512.

Thiết kế và triển khai phần cứng

Kiến trúc tổng thể hệ thống

Hệ thống nén ảnh phần cứng được tổ chức theo quy trình khép kín, bao gồm khối xử lý tiền kỳ phần mềm, khối nén phần cứng (Compression Core) và khối giải nén - tái tạo ảnh phần mềm.

[Ảnh gốc (256x256/512x512)]
  (Tiền xử lý Python)
  Chuyển sang mã Hex 8-bit
    (Bitstream nén)
   (Giải nén C++ trên VS Code)
   (Hậu xử lý Python)
   Tái tạo ảnh gốc & Đánh giá SSIM = 1.0

Giao diện tín hiệu của khối Compression Core

Khối Compression Core đóng vai trò trung tâm xử lý dữ liệu đầu vào và nén thành chuỗi bit nhị phân mã hóa entropy.

Tên tín hiệu Hướng (I/O) Độ rộng (bit) Chức năng mô tả
clk Input 1 Xung nhịp đồng hồ hệ thống (tích cực cạnh lên)
reset_n Input 1 Tín hiệu reset hệ thống bất đồng bộ (tích cực mức thấp)
pixel Input 8 Giá trị điểm ảnh thang độ xám đầu vào đang xử lý
position_in Input 16 Tọa độ vị trí của điểm ảnh đang xét trong không gian ảnh
hstart Input 1 Tín hiệu cờ báo hiệu điểm ảnh đầu tiên của khung hình
hend Input 1 Tín hiệu cờ báo hiệu điểm ảnh cuối cùng của khung hình
dir_out Output 16 Chuỗi bit mã hóa đường đi (entropy code) sau nén
value_out Output 4 Giá trị nhị phân 4-bit của pixel sau nén
bit_length Output 5 Độ dài chuỗi bit nén và giá trị nhị phân hợp lệ
done Output 1 Tín hiệu cờ báo hoàn thành quá trình nén một điểm ảnh

Thiết kế chi tiết các khối chức năng nội vi

  1. Khối Linear Prediction:
    • Thực hiện tính toán giá trị trung bình từ các điểm ảnh lân cận theo vị trí position_in[15:0] và bộ lọc (Filter).
    • Xác định sai số dự đoán (Error) giữa điểm ảnh thực tế và điểm ảnh ước lượng, chuyển đổi dữ liệu 8-bit đầu vào thành ký hiệu symbol_out[3:0] 4-bit kèm cờ dấu pixel_sign.
    • Kiến trúc hoạt động theo cơ chế đường ống (pipeline): trong khi 4-bit trọng số thấp được đọc ra thì điểm ảnh tiếp theo được nạp vào.
  2. Khối Tree Register File:
    • Bộ nhớ lưu trữ cấu trúc cây nhị phân gồm 32 thanh ghi chuyên dụng (16 thanh ghi cho symbol dữ liệu và 16 thanh ghi cho nút NYT).
    • Mỗi thanh ghi có độ rộng 41 bit (tree[40:0]), được phân định theo các trường thông tin:
      • Input [3:0] (4 bit): Lưu giá trị ký hiệu symbol (0–F).
      • Char [4] (1 bit): Cờ phân biệt nút chứa dữ liệu hay nút NYT.
      • AddrParent [9:5] (5 bit): Địa chỉ thanh ghi của nút cha.
      • AddrLeft [14:10] (5 bit): Địa chỉ thanh ghi của nút con bên trái.
      • AddrRight [19:15] (5 bit): Địa chỉ thanh ghi của nút con bên phải.
      • Weight [35:20] (16 bit): Trọng số xuất hiện (tần suất) của nút.
      • Order [40:36] (5 bit): Độ sâu (depth) và thứ tự của nút trong cấu trúc cây.
  3. Khối Check Tree:
    • Tiếp nhận giá trị symbol[3:0] từ khối Linear Prediction và kích thước cây hiện thời size[4:0].
    • Thực hiện dò tìm tuần tự qua các nút trong cây để kiểm tra sự tồn tại của symbol; xuất địa chỉ nút tìm thấy qua indexnode_out[4:0] và kích hoạt cờ check_out.
  4. Khối Output Block:
    • Duyệt ngược cấu trúc cây từ nút đang xét về nút gốc (root[9:0]) bằng cách kiểm tra liên kết cha-con.
    • Nếu nút là con bên trái, xuất bit 0; nếu là con bên phải, xuất bit 1. Kết quả xuất ra chuỗi bit mã hóa dir_out[15:0] cùng dữ liệu nút node_out[40:0].
  5. Khối Run Modify, Check Parent và Swap Node:
    • Run Modify: Tăng trọng số của các nút liên quan và điều khiển quá trình tái cấu trúc cây khi có phần tử mới hoặc tăng tần suất.
    • Check Parent: Kiểm tra quan hệ phả hệ để bảo đảm nút ứng viên hoán đổi không phải là nút tổ tiên/nút cha của nút hiện tại.
    • Swap Node: Chứa các thanh ghi địa chỉ trung gian (addr_parentR2, addr_parentR6), thực hiện hoán đổi con trỏ trái/phải và cập nhật lại Tree Register File.

Thông số thời gian và tần số hoạt động của các module

Dựa trên kết quả phân tích đường trễ tới hạn (critical path), thông số định thời của từng khối phần cứng được tổng hợp trong bảng sau:

Tên khối chức năng Chu kỳ hoạt động tối thiểu (ns) Tần số hoạt động cực đại (MHz)
Linear Prediction 2.5 400
Check Tree 2.5 400
Output Block 2.5 400
Run Modify Block 2.5 400
Check Parent 3.0 333
Tree / Swap Node 3.0 333
Compression Core (Toàn hệ thống) 8.0 125

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

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

Trình bày tổng quan về nhu cầu cấp thiết của nén dữ liệu trong lưu trữ và truyền thông số. Phân tích chi tiết sự khác biệt giữa hai phương pháp nén: nén mất mát (JPEG, DCT, Wavelet, JPEG 2000) và nén không mất mát (LZW, Shannon-Fano, Huffman Coding). Xác định hạn chế của các giải thuật nén tĩnh khi ứng dụng trong truyền dữ liệu thời gian thực. Thiết lập các khái niệm nền tảng: phần tử ảnh (pixel), mức xám (gray level), biểu đồ phân bố cường độ sáng (histogram), tỷ lệ nén (CR), hiệu suất nén, chỉ số bit trên điểm ảnh (BPP) và chỉ số tương đồng cấu trúc (SSIM). Đặt ra các chỉ tiêu kỹ thuật mục tiêu về tỷ lệ nén và thông số phần cứng.

Chương 2. Cơ sở lý thuyết

Đi sâu vào nguyên lý hoạt động của hai kỹ thuật cốt lõi: Dự đoán tuyến tính (Linear Prediction) và Mã hóa Dynamic Huffman (cây nhị phân động). Trình bày mô hình dự đoán mẫu lân cận (prediction template) và công thức tính sai số $E(i, j)$ nhằm triệt tiêu tương quan không gian. Phân tích quy trình tạo mã Huffman tĩnh và so sánh với giải thuật Dynamic Huffman thông qua cấu trúc nút NYT, nguyên tắc cập nhật trọng số và quy tắc hoán đổi nút. Đề xuất phương pháp phân tách biểu diễn pixel từ 8-bit (256 mức xám) sang dạng mã Hex 4-bit (16 ký tự từ 0 đến F), giúp tối ưu hóa kích thước cây nhị phân chỉ còn tối đa 32 nút.

Chương 3. Kiến trúc thiết kế phần cứng

Mô tả chi tiết kiến trúc vi mạch khối Compression Core và các giao tiếp tín hiệu vào/ra. Trình bày chi tiết thiết kế phần cứng cấp thanh ghi (RTL) cho 7 khối chức năng: khối Linear Prediction (hoạt động pipeline), khối Tree Register File (quản lý 32 thanh ghi 41-bit), khối Check Tree, khối Output Block, khối Run Modify, khối Check Parent và khối Swap Node. Phân tích chức năng từng chân tín hiệu, các khối tính toán số học ALU, bộ đếm (Counter), bộ dồn kênh (Multiplexer) và bảng thông số thời gian hoạt động của từng khối.

Chương 4. Kết quả mô phỏng chức năng

Trình bày quy trình kiểm thử và đánh giá chức năng hệ thống từ ảnh đầu vào, chuyển đổi sang mã hex qua Python, nén trên phần cứng Verilog, xuất bitstream và giải nén bằng C++. Trình bày kết quả mô phỏng dạng sóng chức năng (waveform) trên phần mềm Vivado cho từng khối: dạng sóng dự đoán tuyến tính, dạng sóng truy xuất thanh ghi cây, dạng sóng kiểm tra cây, dạng sóng xuất chuỗi bit mã hóa, dạng sóng cập nhật cây và dạng sóng tích hợp toàn hệ thống (Top module Compression Core).

Chương 5. Phân tích và so sánh kết quả đạt được

Phân tích kết quả mô phỏng trên phần mềm (C++ trên Visual Studio Code) và kết quả tổng hợp phần cứng trên công cụ Xilinx Vivado. Đánh giá tỷ lệ nén đối với các tập dữ liệu ảnh .pgm, .tif, .png và ảnh y tế CT scan. So sánh kết quả nén và tài nguyên phần cứng của kiến trúc đề xuất với các công trình nghiên cứu liên quan (Adaptive Huffman + LZW, Static Huffman, AHDB + PDLZW, LZ77, PNG). Tổng kết những khó khăn, nhược điểm về tần số hoạt động của kiến trúc và vạch ra định hướng phát triển tiếp theo.


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

Kết quả nghiên cứu thực nghiệm

Hệ thống nén ảnh không mất mát đề xuất đã hoàn thành việc mô phỏng chức năng và tổng hợp phần cứng với các chỉ số cụ thể:

  • Tỷ lệ nén (Compression Ratio): Đạt tỷ lệ nén trung bình 3.467 đối với các ảnh thử nghiệm kích thước 256x256 và 512x512.
  • Tần số hoạt động phần cứng: Đạt tần số cực đại 125 MHz trên hệ thống phần cứng (tương ứng chu kỳ xung nhịp giới hạn 8.0 ns). Từng khối chức năng đơn lẻ đạt tần số từ 333 MHz đến 400 MHz.
  • Tính toàn vẹn dữ liệu: Hình ảnh sau khi giải nén bằng phần mềm C++ và tái tạo bằng Python khớp 100% từng giá trị điểm ảnh so với ảnh gốc, đạt chỉ số tương đồng cấu trúc $SSIM = 1.0$.

Bảng so sánh thông số mục tiêu và các giải thuật liên quan

Thuật toán / Kiến trúc Tần số hoạt động (Frequency) Chu kỳ / Thời gian Tỷ lệ nén trung bình (CR)
Static Huffman Coding — — —
AHDB + PDLZW — — —
PNG (LZ77 + Huffman) 100 MHz — —
LZ77 109 MHz — —
Mục tiêu đề tài đặt ra 333 MHz — > 3.0
Kiến trúc Dynamic Huffman đề xuất 125 MHz 8.0 ns 3.467

Đóng góp mới của khóa luận

  1. Giải pháp phân tách Symbol 4-bit: Đề xuất kỹ thuật chia tách điểm ảnh 8-bit thành hai ký hiệu Hex 4-bit, giảm số lượng nút lá tối đa trên cây Dynamic Huffman từ 256 xuống 16 (tổng số nút trên cây tối đa là 32 bao gồm cả nút NYT). Giải pháp này giúp cắt giảm cấu trúc lưu trữ từ 256 thanh ghi xuống còn 32 thanh ghi 41-bit trong Tree Register File, tiết kiệm đáng kể diện tích vi mạch (Area) và tăng tốc độ duyệt cây.
  2. Hiện thực hóa kiến trúc phần cứng hoàn chỉnh: Thiết kế và kiểm chứng thành công kiến trúc phần cứng cho giải thuật nén ảnh Dynamic Huffman kết hợp khối dự đoán tuyến tính Linear Prediction hoạt động theo cơ chế pipeline trên FPGA.
  3. Môi trường đồng kiểm thử toàn diện: Xây dựng quy trình tích hợp giữa Python (tiền/hậu xử lý), Verilog (nén phần cứng thời gian thực) và C++ (giải nén bitstream), bảo đảm khả năng phục hồi dữ liệu ảnh không mất mát tuyệt đối.

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

Hạn chế và khó khăn tồn tại

  • Giới hạn tần số xung nhịp: Tần số hoạt động của toàn bộ khối Compression Core đạt 125 MHz (chu kỳ 8.0 ns), chưa đạt được mức tần số mục tiêu ban đầu là 333 MHz do đường trễ tích lũy từ các vòng lặp kiểm tra quan hệ cha-con và cập nhật hoán đổi nút tuần tự trên cây nhị phân.
  • Tính tuần tự của giải thuật: Bản chất của cây nhị phân động yêu cầu cập nhật liên tục cấu trúc cây sau mỗi ký hiệu được nạp, gây khó khăn cho việc tối ưu hóa đường ống xử lý (pipelining) sâu ở cấp độ toàn hệ thống.
  • Chưa tích hợp toàn diện trên chip: Hệ thống hiện tại vẫn phụ thuộc vào phần mềm Python cho các bước chuyển đổi ảnh sang mã Hex ban đầu và tái tạo ảnh sau giải nén, chưa đóng gói hoàn chỉnh thành một hệ thống SoC (System-on-Chip) độc lập hoàn toàn trên phần cứng.

Hướng phát triển đề tài

  • Tối ưu hóa lại cấu trúc các khối Run Modify, Check Parent và Swap Node để rút ngắn đường trễ tới hạn, nâng cao tần số hoạt động của toàn hệ thống Compression Core tiệm cận mức 333 MHz hoặc cao hơn.
  • Mở rộng kiến trúc phần cứng để xử lý trực tiếp các định dạng ảnh màu đa kênh (RGB, YCbCr) và các độ sâu bit màu cao hơn (10-bit, 12-bit).
  • Hiện thực hóa toàn bộ khối tiền xử lý chuyển đổi ảnh và khối giải nén lên phần cứng FPGA/ASIC nhằm xây dựng giải pháp nén/truyền video thời gian thực độc lập không cần máy tính phụ trợ.

Giá trị tham khảo

Tài liệu khóa luận có giá trị tham khảo thực tiễn cao đối với:

  • Sinh viên và kỹ sư ngành Kỹ thuật Máy tính, Thiết kế Vi mạch (IC Design) và Điện tử: Cung cấp tài liệu tham khảo chi tiết về phương pháp chuyển đổi giải thuật phần mềm phức tạp (cây nhị phân động) sang kiến trúc phần cứng Register-Transfer Level (RTL) bằng Verilog HDL.
  • Người nghiên cứu về nén dữ liệu và xử lý ảnh số: Cung cấp giải pháp kỹ thuật cụ thể trong việc giảm không gian trạng thái của cây Huffman thông qua phân tách mã Hex 4-bit và ứng dụng bộ lọc dự đoán tuyến tính Linear Prediction.
  • Phần đáng tham khảo nhất: Chương 3 với bảng mô tả chi tiết chân tín hiệu, kiến trúc các trường dữ liệu 41-bit trong Tree Register File và giải thuật phần cứng cho các khối Check Parent, Swap Node.

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

1. Nhóm tác giả đã giải quyết bài toán bùng nổ số lượng nút cây Huffman đối với ảnh 256 mức xám như thế nào?

Để tránh việc phải khởi tạo cây nhị phân chứa tới 256 nút lá (đòi hỏi 256 thanh ghi và độ sâu cây lớn), nhóm tác giả chuyển đổi dữ liệu điểm ảnh 8-bit sang dạng mã Hexadecimal. Mỗi điểm ảnh được tách thành 2 ký tự Hex 4-bit (giá trị 0–F). Nhờ đó, cây Dynamic Huffman chỉ cần quản lý tối đa 16 nút dữ liệu và 16 nút NYT, giúp giảm bộ nhớ lưu trữ xuống đúng 32 thanh ghi và rút ngắn đáng kể thời gian duyệt cây.

2. Cấu trúc một thanh ghi trong khối Tree Register File gồm những trường dữ liệu nào và chiếm bao nhiêu bit?

Mỗi thanh ghi trong Tree Register File có độ rộng tổng cộng 41 bit (tree[40:0]), được phân chia thành 7 trường thông tin:

  • Input [3:0] (4 bit): Ký hiệu symbol dữ liệu.
  • Char [4] (1 bit): Cờ nhận diện nút symbol hay nút NYT.
  • AddrParent [9:5] (5 bit): Địa chỉ nút cha.
  • AddrLeft [14:10] (5 bit): Địa chỉ nút con trái.
  • AddrRight [19:15] (5 bit): Địa chỉ nút con phải.
  • Weight [35:20] (16 bit): Trọng số tần suất xuất hiện của nút.
  • Order [40:36] (5 bit): Độ sâu và thứ tự của nút trên cây.

3. Tần số hoạt động tối đa và chu kỳ xung nhịp của khối Compression Core là bao nhiêu?

Toàn bộ hệ thống Compression Core đạt tần số hoạt động tối đa là 125 MHz, tương ứng với chu kỳ xung nhịp hoạt động là 8.0 ns. Trong khi đó, các khối chức năng nội vi riêng lẻ như Linear Prediction, Check Tree, Output Block và Run Modify đạt tần số 400 MHz (2.5 ns); khối Check Parent và Swap Node đạt tần số 333 MHz (3.0 ns).

4. Tỷ lệ nén trung bình mà hệ thống đạt được trên các tập dữ liệu thử nghiệm là bao nhiêu?

Kiến trúc nén Dynamic Huffman kết hợp Linear Prediction đạt tỷ lệ nén (Compression Ratio - CR) trung bình là 3.467 trên các tập dữ liệu ảnh kiểm thử chuẩn (Waterloo và ảnh CT scan từ Kaggle) có độ phân giải 256x256 và 512x512.

5. Vai trò của khối Linear Prediction trong quy trình nén phần cứng là gì?

Khối Linear Prediction thực hiện dự đoán mức xám của điểm ảnh hiện tại dựa trên các điểm ảnh lân cận và làm tròn về số nguyên gần nhất. Sai số chênh lệch (Error) giữa điểm ảnh gốc và giá trị dự đoán được tính toán thành tín hiệu 4-bit (pixel_out[3:0]) kèm cờ dấu (pixel_sign). Việc này giúp triệt tiêu sự dư thừa không gian giữa các pixel, thu hẹp dải giá trị trước khi đưa vào nén sâu bằng cây Dynamic Huffman.


Kết luận

Khóa luận tốt nghiệp của sinh viên Nguyễn Thị Cẩm Hướng và Trần Thạch Tuấn Phong đã đề xuất và hiện thực hóa thành công kiến trúc phần cứng nén ảnh không mất mát dựa trên thuật toán Dynamic Huffman Coding kết hợp dự đoán tuyến tính Linear Prediction. Bằng giải pháp phân tách điểm ảnh thành các ký hiệu Hex 4-bit, thiết kế đã tối ưu hóa bộ nhớ Tree Register File xuống 32 thanh ghi 41-bit, đạt tỷ lệ nén trung bình 3.467 và bảo toàn 100% chất lượng ảnh ($SSIM = 1.0$). Mặc dù tần số hoạt động tổng thể dừng lại ở mức 125 MHz do đường trễ cập nhật cây tuần tự, công trình đã cung cấp một thiết kế RTL hoàn chỉnh bằng Verilog HDL, đóng góp giải pháp kỹ thuật hữu ích cho các hệ thống truyền nhận và xử lý ảnh thời gian thực trên nền tảng vi mạch số.