Bối cảnh và vấn đề nghiên cứu
Trong hệ thống xử lý đa phương tiện hiện đại trên các thiết bị như tivi, máy tính, điện thoại thông minh, máy ảnh kỹ thuật số và hệ thống giải trí, bộ đệm khung hình video (Video Frame Buffer - VFB) đóng vai trò là khối sở hữu trí tuệ (IP Core) phần cứng thiết yếu. Bộ đệm video thực hiện chức năng lưu trữ tạm thời các khung hình video dưới dạng dữ liệu điểm ảnh (pixel) trong suốt quá trình xử lý và hiển thị, nhằm giải quyết sự chênh lệch và bất đồng bộ về tốc độ làm việc giữa khối xử lý hình ảnh và khối hiển thị. Khi tốc độ xử lý chậm hơn tốc độ hiển thị, luồng dữ liệu bị ngắt quãng, gây gián đoạn hình ảnh; ngược lại, khi tốc độ xử lý nhanh hơn tốc độ hiển thị, khối hiển thị không kịp tiếp nhận sẽ dẫn đến nguy cơ tràn bộ nhớ đệm và mất mát dữ liệu điểm ảnh.
Mục tiêu và nhiệm vụ nghiên cứu của đề tài gồm các nội dung cụ thể:
- Nghiên cứu kiến trúc và nguyên lý hoạt động của các khối IP bộ đệm video từ các tài liệu khoa học và sản phẩm thương mại.
- Nghiên cứu cơ sở lý thuyết về thiết kế mạch kỹ thuật số bất đồng bộ, hiện tượng vượt miền xung clock (Clock Domain Crossing - CDC), tính di động (Metastability), cấu trúc bộ nhớ FIFO bất đồng bộ (Asynchronous FIFO), bộ nhớ Dual Port RAM và phương pháp xác minh phần cứng Universal Verification Methodology (UVM).
- Thiết kế các module chức năng phần cứng cho IP bằng ngôn ngữ SystemVerilog, bao gồm Pixel To Byte, Byte To Pixel, Dual Port RAM, Output Pixel Data và Sync Detector.
- Tích hợp các module đơn lẻ thành một kiến trúc IP hoàn chỉnh, xây dựng testbench cơ bản để rà soát lỗi logic ban đầu.
- Xây dựng môi trường kiểm tra tự động toàn diện theo chuẩn UVM với các kịch bản kích thích ngẫu nhiên nhằm xác minh tính chính xác của thiết kế trong mọi điều kiện vận hành.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng: Thiết kế phần cứng cấp thanh ghi (RTL) cho IP Video Frame Buffer và môi trường xác minh UVM.
- Phạm vi chức năng: Lưu trữ và chuyển đổi các định dạng điểm ảnh phổ biến; đề tài giới hạn ở việc lưu trữ đệm, không thực hiện các thuật toán xử lý/chỉnh sửa nội dung pixel (như lọc nhiễu, cân chỉnh màu sắc) sau khi lưu trữ.
Cơ sở lý thuyết và phương pháp
Khóa luận dựa trên các nền tảng lý thuyết thiết kế vi mạch kỹ thuật số và kiểm tra phần cứng:
- Không gian màu: Xử lý hai hệ không gian màu tiêu chuẩn gồm RGB và Y'CbCr. Dữ liệu điểm ảnh được chia thành các nhóm độ rộng bit khác nhau: RGB 888 (24 bit), RGB 666 (18 bit), RGB 565 (16 bit); Y'CbCr 4:4:4 (24 bit), Y'CbCr 4:2:2 (16 bit), Y'CbCr 4:2:0 (12 bit).
- Mã Gray (Gray Code): Chuỗi số nhị phân có đặc tính hai giá trị liên tiếp chỉ thay đổi duy nhất một bit. Công thức toán học chuyển đổi tổng quát từ giá trị nhị phân ($BinaryValue$) sang mã Gray ($GrayValue$) được thiết lập:
$$\text{GrayValue} = (\text{BinaryValue} \gg 1) \oplus \text{BinaryValue}$$
- Tính di động (Metastability) và Vượt miền xung clock (CDC): Hiện tượng xảy ra khi tín hiệu đầu vào vi phạm thời gian thiết lập (set-up time - $t_{su}$) hoặc thời gian duy trì (hold-time - $t_h$) của flip-flop khi truyền qua ranh giới giữa hai miền xung clock độc lập. Tác giả phân tích đại lượng thời gian trung bình giữa các lần lỗi (Mean Time Between Failures - MTBF) và ứng dụng kỹ thuật đồng bộ hóa bằng chuỗi hai thanh ghi (2-stage Synchronization Registers) kết hợp mã Gray cho con trỏ địa chỉ để triệt tiêu lỗi logic khi vượt miền xung clock.
- Phương pháp xác minh UVM (Universal Verification Methodology): Phương pháp chuẩn hóa trên nền tảng SystemVerilog, kế thừa phân cấp từ các lớp cơ sở:
uvm_void, uvm_object, uvm_report_object, uvm_transaction, uvm_sequence_item, uvm_component. Hệ thống sử dụng cơ chế lưu trữ đối tượng uvm_resource_db và quản lý mức độ báo cáo log thông qua các macro chuẩn (uvm_info, uvm_warning, uvm_error, uvm_fatal) cùng các mức Verbosity (UVM_NONE, UVM_LOW, UVM_MEDIUM, UVM_HIGH, UVM_FULL, UVM_DEBUG).
| Định dạng không gian màu |
Số bit trên một pixel |
Đặc điểm phân bổ dữ liệu |
| RGB 888 |
24 bit |
8 bit Đỏ (R), 8 bit Xanh lục (G), 8 bit Xanh lam (B) |
| RGB 666 |
18 bit |
6 bit Đỏ (R), 6 bit Xanh lục (G), 6 bit Xanh lam (B) |
| RGB 565 |
16 bit |
5 bit Đỏ (R), 6 bit Xanh lục (G), 5 bit Xanh lam (B) |
| Y'CbCr 4:4:4 |
24 bit |
Giữ nguyên thông tin Y', Cb, Cr trên từng điểm ảnh |
| Y'CbCr 4:2:2 |
16 bit |
Trong mỗi hàng, 2 pixel giữ lại Cb/Cr; các pixel lân cận dùng lại dữ liệu |
| Y'CbCr 4:2:0 |
12 bit |
Hàng đầu giữ Cb/Cr của 2 pixel; hàng thứ hai không lưu Cb/Cr |
Thiết kế và triển khai
Kiến trúc Video Frame Buffer được thiết kế với ba miền xung clock độc lập nhằm phục vụ việc ghép nối linh hoạt: input_pixel_clock (nhận luồng pixel vào), byte_clock (xử lý dữ liệu nội bộ và giao tiếp bộ nhớ RAM), và output_pixel_clock (xuất luồng pixel ra). Cấu trúc lưu trữ lõi gồm hai khối FIFO bất đồng bộ nằm ở hai đầu và một khối Dual Port RAM ở trung tâm.
Luồng dữ liệu xử lý:
Input Pixel Data -> [Sync Detector / P2B FIFO] -> [Pixel To Byte Converter] -> [Dual Port RAM] -> [Byte To Pixel Converter] -> [B2P FIFO] -> Output Pixel Data
Hệ thống bao gồm các module thành phần:
- Sync Detector: Hoạt động tại miền
input_pixel_clock. Module nhận các tín hiệu valid_line và valid_frame để xác định tính hợp lệ của dữ liệu dòng/khung hình, đồng thời tạo ra hai tín hiệu đồng bộ HSYNC và VSYNC (chuyển lên mức cao trong 1 chu kỳ clock khi bắt đầu dòng hoặc khung hình mới).
- Asynchronous FIFO: Giải quyết bài toán CDC giữa các miền clock. Module bao gồm các khối con:
fifomem, sync_r2w, sync_w2r, rptr_empty, và wptr_full. Giải thuật xác định trạng thái FIFO:
- FIFO Rỗng (Empty): Con trỏ đọc và con trỏ ghi mã Gray bằng nhau hoàn toàn.
- FIFO Đầy (Full): Hai bit có trọng số cao nhất (MSB) của con trỏ ghi và con trỏ đọc mã Gray có giá trị nghịch đảo nhau, các bit có trọng số thấp hơn còn lại hoàn toàn trùng khớp.
- Ngưỡng kích hoạt đọc: FIFO yêu cầu tích lũy dữ liệu đạt tối thiểu $1/3$ dung lượng trước khi cho phép đọc để đảm bảo duy trì luồng dữ liệu ổn định.
- Dual Port RAM (RAM Controller & RAM Memory): Hoạt động tại miền
byte_clock. Module RAM Controller điều khiển giao tiếp với RAM Memory ngoài. Tín hiệu ram_ready được kích hoạt khi RAM đã nạp trên $1/3$ dung lượng. Quản lý trạng thái rỗng/đầy tương tự giải thuật FIFO nhưng sử dụng thanh ghi phụ để quản lý con trỏ xoay vòng về địa chỉ 0. Dữ liệu giao tiếp qua cổng ghi (write_data) và cổng đọc (read_data) có độ rộng chuẩn 32 bit (1 word).
- Pixel To Byte (P2B): Tích hợp Asynchronous FIFO và P2B Converter. Khối thực hiện gom các pixel đầu vào có kích thước 24 bit, 18 bit, 16 bit hoặc 12 bit thành chuỗi dữ liệu chuẩn 32 bit để lưu vào RAM. Khối gồm 4 module con:
P2B_index (tính toán chỉ số vị trí), P2B_datavalid (xác thực dữ liệu hợp lệ), P2B_lastpixeldata (lưu trữ điểm ảnh cuối) và P2B_bytedata (tổng hợp dữ liệu 32 bit).
- Byte To Pixel (B2P): Tách dữ liệu 32 bit từ Dual Port RAM trở lại định dạng pixel ban đầu trước khi đẩy vào B2P FIFO để xuất ra ngoài theo miền
output_pixel_clock. Gồm các module con: B2P_Index, B2P_read_ready, B2P_lastbytedata và B2P_pixeldata.
- Môi trường kiểm tra UVM: Cấu trúc testbench hoàn chỉnh gồm:
uvm_sequence_item (chứa các biến ngẫu nhiên rand int, rand byte, rand bit), uvm_sequence, uvm_sequencer, uvm_driver, uvm_monitor, uvm_scoreboard (so sánh đối chiếu dữ liệu ngõ vào/ngõ ra, kiểm tra lỗi truyền dẫn và ghi nhận trạng thái PASS/FAIL), uvm_env, uvm_test và top testbench.
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 bức tranh tổng quan về nhu cầu hiển thị trên các thiết bị điện tử, định vị vai trò của Video Frame Buffer như một cầu nối giải quyết xung đột tốc độ giữa thành phần xử lý hình ảnh và màn hình hiển thị. Tác giả nêu rõ mục tiêu thiết kế IP đệm khung hình video hỗ trợ đa định dạng, vạch rõ 5 nhiệm vụ nghiên cứu cụ thể từ việc khảo sát kiến trúc, thiết kế RTL, kết nối hệ thống cho đến kiểm tra tự động. Giới hạn đề tài được xác định là chỉ tập trung vào chức năng lưu trữ đệm pixel, không can thiệp thuật toán biến đổi nội dung hình ảnh.
Chương 2. Cơ sở lý thuyết
Chương 2 trình bày chi tiết các cơ sở toán học và kỹ thuật phần cứng liên quan:
- Cấu trúc không gian màu RGB (888, 666, 565) và Y'CbCr (4:4:4, 4:2:2, 4:2:0).
- Nguyên lý mã Gray, mạch logic chuyển đổi nhị phân sang Gray bằng cổng XOR và công thức tổng quát.
- Cơ chế sinh lỗi Metastability do vi phạm $t_{su}$ và $t_h$, công thức định lượng MTBF, phương pháp mạch đồng bộ chuỗi 2 flip-flop.
- Hiện tượng vượt miền xung clock (Clock Domain Crossing - CDC) trong thiết kế SoC.
- Kiến trúc khung xác minh UVM, cơ chế phân cấp lớp, cấu hình cơ sở dữ liệu
uvm_resource_db, định dạng thông báo uvm_report_object và các khối thành phần trong một UVM testbench tiêu chuẩn.
Chương 3. Thiết kế Video Frame Buffer
Chương 3 là trọng tâm thiết kế phần cứng của khóa luận:
- Phân tích kiến trúc tổng thể IP với 3 miền xung clock (
input_pixel_clock, byte_clock, output_pixel_clock).
- Thiết kế chi tiết module Sync Detector tạo xung đồng bộ dòng và khung hình (
HSYNC, VSYNC).
- Xây dựng Asynchronous FIFO dựa trên chuyển đổi con trỏ đọc/ghi sang mã Gray, phân tích toán học chứng minh điều kiện đầy (nghịch đảo 2 bit MSB) và điều kiện rỗng.
- Thiết kế RAM Controller điều khiển Dual Port RAM 32-bit linh hoạt kích thước bộ nhớ ngoài, tích hợp cơ chế kiểm soát ngưỡng $1/3$ dung lượng qua tín hiệu
ram_ready.
- Thiết kế chi tiết các khối chuyển đổi định dạng: Pixel To Byte Converter (chia 4 nhóm độ rộng bit 24, 18, 16, 12 bit gom thành 32 bit) và Byte To Pixel Converter (giải mã 32 bit về dữ liệu pixel) cùng các lưu đồ thuật toán tính toán chỉ số index và tín hiệu điều khiển tương ứng.
Chương 4. Mô phỏng và đánh giá kết quả
Chương 4 tập trung vào công tác xác minh và đánh giá thiết kế:
- Triển khai môi trường UVM để tạo các gói kích thích ngẫu nhiên kiểm tra thiết kế trong 2 trường hợp vận hành:
- Tốc độ ghi dữ liệu nhanh hơn tốc độ đọc: Đánh giá các trạng thái khi dữ liệu chưa sẵn sàng, khi FIFO chưa đầy và khi FIFO đầy.
- Tốc độ ghi dữ liệu chậm hơn tốc độ đọc: Đánh giá các trạng thái khi dữ liệu chưa sẵn sàng, khi dữ liệu sẵn sàng và khi bộ đệm cạn dữ liệu lưu trữ sẵn.
- Trích xuất và phân tích dạng sóng mô phỏng thời gian thực, báo cáo tóm tắt từ UVM Scoreboard xác nhận thiết kế vượt qua các kiểm thử chức năng.
- Báo cáo kết quả tổng hợp diện tích tài nguyên logic (bảng và đồ thị) cùng mức năng lượng tiêu thụ trên chip (on-chip power), đối chiếu với giải pháp thương mại Lattice Semiconductor Video Frame Buffer.
Kết luận và hướng phát triển
Tác giả tóm tắt toàn bộ quá trình hiện thực thành công IP Video Frame Buffer và môi trường xác minh UVM. Đề xuất các hướng phát triển tiếp theo gồm việc tích hợp thêm các thuật toán chỉnh sửa/xử lý pixel trực tiếp trên bộ đệm và nâng cao hiệu năng lưu trữ cho các độ phân giải cao hơn.
Kết quả và đóng góp
- Kết quả chức năng: Thiết kế hoàn chỉnh IP Video Frame Buffer hỗ trợ đầy đủ 6 định dạng không gian màu thuộc hai hệ RGB (888, 666, 565) và Y'CbCr (4:4:4, 4:2:2, 4:2:0), tương ứng với các độ rộng dữ liệu 24 bit, 18 bit, 16 bit và 12 bit.
- Giải pháp kiến trúc:
- Tách biệt hoàn toàn 3 miền xung clock (
input_pixel_clock, byte_clock, output_pixel_clock), cho phép hệ thống linh hoạt giao tiếp với các nguồn phát và thiết bị hiển thị có tốc độ làm tươi khác nhau mà không gây nghẽn luồng.
- Ứng dụng thành công giải thuật so sánh con trỏ mã Gray (đảo 2 bit MSB) cho Asynchronous FIFO, đảm bảo an toàn tuyệt đối khi vượt miền xung clock (khắc phục hoàn toàn hiện tượng metastability).
- Tích hợp cơ chế kiểm soát ngưỡng đệm $1/3$ dung lượng trên cả FIFO và Dual Port RAM, ngăn chặn triệt để hiện tượng giật/mất khung hình khi bắt đầu phát video.
- Kết quả xác minh: Xây dựng môi trường UVM hoàn chỉnh với khả năng tạo kích thích ngẫu nhiên, tự động ghi nhận báo cáo qua Scoreboard, kiểm chứng thành công thiết kế trong cả hai kịch bản tốc độ ghi nhanh hơn đọc và ghi chậm hơn đọc.
- Đánh giá tổng hợp: Đã thực hiện tổng hợp phần cứng, trích xuất dữ liệu sử dụng tài nguyên (resource utilization graph/table) và ước lượng công suất tiêu thụ trên chip, so sánh đối sánh với IP chuẩn từ Lattice Semiconductor.
Hạn chế và hướng nghiên cứu tiếp
Dựa trên giới hạn đề tài được tác giả công bố:
- Hạn chế: IP hiện tại thuần túy thực hiện chức năng đệm và chuyển đổi định dạng lưu trữ điểm ảnh, chưa tích hợp các khối xử lý hậu kỳ tín hiệu video (như nội suy điểm ảnh, lọc giảm nhiễu, cân bằng ánh sáng hoặc chuyển đổi qua lại giữa không gian màu RGB và Y'CbCr).
- Hướng phát triển:
- Nghiên cứu tích hợp các thuật toán chỉnh sửa, nâng cao chất lượng khung hình trực tiếp trong quá trình lưu trữ đệm.
- Tối ưu hóa sâu hơn về mặt tài nguyên logic và năng lượng tiêu thụ để đáp ứng các chuẩn độ phân giải siêu cao (4K/8K) trên các dòng vi mạch SoC chuyên dụng.
Giá trị tham khảo
Khóa luận là tài liệu học thuật và kỹ thuật có giá trị tham khảo cho sinh viên, học viên cao học và kỹ sư thiết kế phần cứng:
- Sinh viên ngành Kỹ thuật Máy tính, Điện tử - Viễn thông, Thiết kế Vi mạch: Tham khảo phương pháp mô hình hóa RTL bằng SystemVerilog cho các hệ thống đa miền xung clock (Multi-clock domain SoC).
- Người làm đề tài về CDC và FIFO bất đồng bộ: Chương 2 và Chương 3 cung cấp cơ sở toán học và thiết kế chi tiết về giải thuật mã Gray, kiểm tra trạng thái đầy/rỗng và cấu trúc mạch đồng bộ 2 thanh ghi.
- Kỹ sư xác minh phần cứng (Verification Engineers): Tham khảo kiến trúc thiết lập môi trường kiểm tra UVM hoàn chỉnh từ lớp
uvm_sequence_item, driver, monitor đến scoreboard tự động phân tích kết quả PASS/FAIL.
Câu hỏi thường gặp
1. Khóa luận hỗ trợ những định dạng không gian màu cụ thể nào và độ rộng dữ liệu tương ứng là bao nhiêu?
Khóa luận hỗ trợ 6 định dạng thuộc hai nhóm không gian màu: RGB 888 (24 bit), RGB 666 (18 bit), RGB 565 (16 bit), Y'CbCr 4:4:4 (24 bit), Y'CbCr 4:2:2 (16 bit), và Y'CbCr 4:2:0 (12 bit).
2. Giải thuật kiểm tra trạng thái đầy (Full) của FIFO bất đồng bộ trong khóa luận được thực hiện như thế nào khi dùng mã Gray?
Để phát hiện trạng thái đầy khi so sánh con trỏ ghi và con trỏ đọc ở dạng mã Gray, hệ thống kiểm tra điều kiện: hai bit có trọng số cao nhất (MSB) của hai con trỏ có giá trị nghịch đảo nhau, trong khi tất cả các bit có trọng số còn lại phải hoàn toàn giống nhau.
3. Tại sao trong kiến trúc Video Frame Buffer cần sử dụng 3 miền xung clock khác nhau?
Hệ thống sử dụng input_pixel_clock để phù hợp với tần số đẩy dữ liệu vào của nguồn phát, byte_clock là tần số xử lý chuyển đổi nội bộ và đọc/ghi Dual Port RAM 32-bit, và output_pixel_clock để cấp dữ liệu điểm ảnh ra màn hình hiển thị theo đúng tần số yêu cầu của chuẩn hiển thị ngoại vi.
4. Điều kiện để RAM Controller và các khối FIFO cho phép bắt đầu đọc dữ liệu ra là gì?
Cả FIFO bất đồng bộ và khối Dual Port RAM (thông qua tín hiệu ram_ready của RAM Controller) đều yêu cầu bộ đệm phải chứa được tối thiểu $1/3$ dung lượng lưu trữ trước khi bật cờ cho phép đọc dữ liệu, giúp đảm bảo duy trì luồng xuất ổn định liên tục.
5. Môi trường UVM trong đề tài kiểm thử những kịch bản tốc độ nào?
Môi trường UVM tạo các kịch bản kiểm thử ngẫu nhiên tập trung vào hai trường hợp vận hành: trường hợp tốc độ ghi dữ liệu nhanh hơn tốc độ đọc (khi dữ liệu chưa sẵn sàng, khi FIFO chưa đầy, khi FIFO đầy) và trường hợp tốc độ ghi dữ liệu chậm hơn tốc độ đọc (khi dữ liệu chưa sẵn sàng, khi dữ liệu sẵn sàng, khi cạn dữ liệu lưu sẵn).
Kết luận
Khóa luận tốt nghiệp của tác giả Mai Xuân Phú đã nghiên cứu và hiện thực thành công khối IP Video Frame Buffer bằng ngôn ngữ SystemVerilog, đáp ứng việc lưu trữ tạm thời và chuyển đổi linh hoạt 6 định dạng không gian màu chuẩn. Bằng việc làm chủ các kỹ thuật xử lý bất đồng bộ như Asynchronous FIFO mã Gray và phân tách 3 miền xung clock, thiết kế giải quyết triệt để bài toán chênh lệch tốc độ hiển thị và ngăn ngừa hiện tượng di động (metastability). Toàn bộ hệ thống phần cứng được xác minh chức năng chặt chẽ thông qua môi trường kiểm tra tự động UVM, mang lại giá trị ứng dụng cao cho các vi mạch xử lý đa phương tiện trên SoC.