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

Trong kiến trúc máy tính truyền thống, việc truyền dữ liệu giữa các thiết bị ngoại vi và bộ nhớ hệ thống thường phải thông qua bộ xử lý trung tâm (CPU) theo cơ chế tuần tự. CPU phải thực hiện lệnh đọc dữ liệu từ thiết bị ngoại vi vào thanh ghi nội bộ, sau đó thực hiện lệnh ghi từ thanh ghi ra ô nhớ RAM. Quy trình này tiêu tốn nhiều chu kỳ máy, buộc CPU phải chờ đợi khi kích thước khối dữ liệu lớn, gây suy giảm đáng kể hiệu năng tổng thể của hệ thống. Bộ điều khiển truy cập bộ nhớ trực tiếp (Direct Memory Access Controller - DMAC) được áp dụng nhằm cho phép truyền dữ liệu trực tiếp giữa các vùng nhớ hoặc giữa bộ nhớ và thiết bị ngoại vi mà không cần đi qua CPU, giải phóng tài nguyên xử lý cho các tác vụ khác.

Tuy nhiên, phần lớn các hệ thống hiện hữu kết nối CPU với DMAC thông qua bus hệ thống (như PLB, Avalon, AXI). Cấu trúc này làm tăng độ trễ mỗi khi DMAC xin quyền truy cập bus và tiêu tốn nhiều chu kỳ lệnh để nạp các thông số cấu hình. Đồng thời, nhiều thiết kế vẫn sử dụng cơ chế thăm dò (polling) trạng thái thanh ghi ngắt, khiến CPU liên tục phải kiểm tra cờ báo hoàn thành, làm giảm hiệu suất xử lý.

Đề tài 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ê Phùng Khánh Minh (Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP. Hồ Chí Minh, năm 2021) tập trung vào việc nghiên cứu và tích hợp DMAC trực tiếp vào đường dữ liệu của bộ xử lý RISC-V 32-bit thông qua việc đề xuất một lệnh mở rộng riêng biệt, nhằm loại bỏ độ trễ truyền thông qua bus và tối ưu hóa việc phân phối dữ liệu.

Mục tiêu nghiên cứu của đề tài được tác giả xác định cụ thể như sau:

  1. Mục tiêu tổng quát: Thiết kế một bộ điều khiển truy cập bộ nhớ trực tiếp DMAC đa kênh dựa trên kiến trúc tập lệnh RISC-V 32-bit.
  2. Mục tiêu chi tiết:
    • Mục tiêu thứ nhất: Bộ DMAC có khả năng điều khiển việc thực thi truyền dữ liệu thông qua tập lệnh của RISC-V 32-bit (thiết kế tập lệnh mở rộng RISC-V 32-bit cho DMAC).
    • Mục tiêu thứ hai: Bộ DMAC có khả năng điều khiển việc truyền dữ liệu trên 4 kênh DMA (DMA channel).
    • Mục tiêu thứ ba: Bộ DMAC có khả năng điều khiển việc thực thi truyền dữ liệu giữa memory - memory, memory - I/O, và I/O - memory.
    • Mục tiêu thứ tư: Kênh DMA đạt tốc độ truyền dữ liệu thiết kế là 45 Mbytes/s.
    • Mục tiêu thứ năm: Đánh giá kết quả hoạt động của thiết kế theo luồng thiết kế Xilinx Vivado FPGA Design Flow (bao gồm mô phỏng Vivado, kiểm tra thời gian Post-Implementation và hiện thực hóa trên kit FPGA Virtex-7).
    • Mục tiêu cuối cùng: So sánh kết quả mô phỏng và thực nghiệm với các công trình nghiên cứu đã công bố trước đó.

Đối tượng nghiên cứu là vi kiến trúc phần cứng của khối DMAC đa kênh, đường truyền dữ liệu (Datapath) của CPU RISC-V 32-bit đơn chu kỳ và cơ chế ngắt phần cứng. Phạm vi thực nghiệm của hệ thống giới hạn trong không gian bộ nhớ Data Memory có kích thước 32 words (128 bytes) sử dụng phương pháp ánh xạ bộ nhớ (memory mapping), hỗ trợ 4 thiết bị Serial I/O tại các địa chỉ cố định, và triển khai kiểm thử trên nền tảng phần cứng FPGA Xilinx Virtex-7.

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

Khóa luận xây dựng trên các nền tảng lý thuyết và công nghệ vi mạch số:

  • Cơ chế truy cập bộ nhớ trực tiếp (DMA): Hoạt động dựa trên hai khối chức năng cơ bản là khối đọc (read block) và khối ghi (write block), phối hợp thông qua hàng đợi FIFO đóng vai trò làm bộ đệm dữ liệu tạm thời giữa hai miền truyền nhận có tốc độ khác nhau.
  • Kiến trúc tập lệnh RISC-V: Tác giả khai thác tính mở của kiến trúc tập lệnh RISC-V 32-bit (RV32I), sử dụng định dạng lệnh R (R-format) để định nghĩa lệnh tùy biến dma nhằm truyền trực tiếp các tham số cấu hình phần cứng từ thanh ghi CPU sang DMAC mà không qua bus trung gian.
  • Kỹ thuật ánh xạ bộ nhớ (Memory Mapping): Toàn bộ không gian địa chỉ được dùng chung cho cả bộ nhớ RAM và các cổng Serial I/O. Cụ thể, vùng địa chỉ 0x00 – 0x6C đại diện cho Data Memory, trong khi các địa chỉ 0x74, 0x78, 0x7C và 0x80 tương ứng với 4 cổng giao tiếp Serial I/O.
  • Thuật toán trọng tài Round Robin: Phân xử quyền truy cập bộ nhớ công bằng giữa 4 kênh DMA. Khác với thuật toán Round Robin ở tầng phần mềm, cơ chế Round Robin trên phần cứng ở đây không áp dụng thời gian chia sẻ (quantum time) và không cho phép ngắt ngang (non-preemptive) khi một kênh đã được cấp phép truyền dữ liệu.

Phương pháp nghiên cứu được triển khai theo 4 trục chính:

  • Phương pháp nghiên cứu tài liệu: Khảo sát kiến trúc DMAC, cấu trúc ghép nối CPU, định dạng tập lệnh RISC-V, phân tích trạng thái hoạt động của khối đọc/ghi và đánh giá các giải pháp phân xử bus.
  • Phương pháp thiết kế: Sử dụng ngôn ngữ mô tả phần cứng Verilog HDL tuân thủ quy trình chuẩn Xilinx Vivado FPGA Design Flow từ thiết kế mức RTL (Register-Transfer Level) đến tổng hợp logic.
  • Phương pháp mô phỏng: Xây dựng các kịch bản kiểm thử (testbench) trên phần mềm Vivado để kiểm tra tính đúng đắn của logic điều khiển, hoạt động xử lý ngắt và đo đạc thời gian thực thi của từng kênh DMA.
  • Phương pháp thực nghiệm: Thực hiện Post-Implementation và nạp cấu hình kiểm thử trên kit phần cứng FPGA Xilinx Virtex-7.

Nguồn dữ liệu đánh giá bao gồm tập dữ liệu mẫu được nạp vào bộ nhớ Data Memory trong các kịch bản mô phỏng kiểm tra chức năng truyền dữ liệu, kết hợp với các dữ kiện kỹ thuật đối sánh từ các công trình nghiên cứu DMAC trong và ngoài nước (Xilinx DS579, Xilinx LogiCORE IP AXI DMA v7.1, nghiên cứu của Nguyễn Tấn Tài – Lê Ngọc Hải năm 2014, nghiên cứu của Nguyễn Kiêm Hùng – Đồng Phạm Khôi – Trần Xuân Tú năm 2018).

Thiết kế và triển khai

Hệ thống được thiết kế theo cấu trúc tích hợp trực tiếp DMAC vào Datapath của CPU RISC-V 32-bit đơn chu kỳ. Cả CPU và DMAC dùng chung tài nguyên Data Memory; việc phân quyền truy cập bộ nhớ được điều khiển bởi khối Selector trung gian.

Khối chức năng trong hệ thống Vai trò và đặc tính kỹ thuật
Lệnh mở rộng dma Định dạng R-format; opcode = 7'b0100111; rd chứa địa chỉ đích (Destination address); rs1 chứa địa chỉ nguồn (Source address); rs2 chứa độ dài dữ liệu truyền (length); funct3 = 0; funct7 = 0. Cú pháp assembly: dma rd, rs1, rs2.
Address Decoder Nhận dma_source_addr, dma_destination_addr và dma_length; giải mã địa chỉ nguồn/đích theo vùng Memory (0x00 - 0x6C) và I/O (0x74, 0x78, 0x7C, 0x80); phát tín hiệu chọn kênh dạng one-hot channel_sel[3:0].
Yêu cầu Generator (Request Generator) Tạo và duy trì tín hiệu yêu cầu req[3:0] cho các kênh DMA tương ứng, ngăn chặn hiện tượng mất trạng thái yêu cầu khi lệnh dma mới kích hoạt kênh khác ở chu kỳ kế tiếp.
Arbiter (Bộ phân xử) Thuật toán Round Robin 4-bit, sử dụng bộ đếm rr_counter (0 đến 3) để quét các yêu cầu; cấp phép thông qua tín hiệu gnt[3:0]; hoạt động theo nguyên tắc non-preemptive (không cho phép cắt ngang kênh đang chạy).
DMA Channel (4 kênh) Gồm 4 kênh độc lập. Kênh 1 và 4: memory - memory; Kênh 2: memory - I/O; Kênh 3: I/O - memory.
Channel Controller Quản lý logic điều khiển vi mô của từng kênh; nhận tín hiệu gnt, FF_empty, FF_full, read_done, write_done để kích hoạt read_en và write_en.
Channel Setup Register Bộ thanh ghi chốt giữ các giá trị khởi tạo (source_addr, destination_addr, length) và tín hiệu điều khiển, tránh bị sai lệch dữ liệu do lệnh dma tiếp theo làm thay đổi tham số khi kênh đang chờ cấp phép.
Yêu cầu Checker So sánh trạng thái giữa tín hiệu req và channel_sel để phát tín hiệu setup_en khi kênh ở trạng thái rỗi và chưa có yêu cầu chờ xử lý.
Channel Execution Khối thực thi vật lý gồm: read block tính địa chỉ kết thúc last_addr = source_addr + (length << 2) và tăng địa chỉ read_addr += 4; write block tính last_addr = destination_addr + (length << 2) và tăng write_addr += 4; bộ đệm FIFO trung gian. Với Serial I/O có địa chỉ cố định, khối sử dụng biến đếm số chu kỳ xung clock count ứng với số word cần truyền để xác định thời điểm dừng thay cho so sánh địa chỉ.
Interrupt Interface & Datapath cải tiến Tổng hợp các cờ trạng thái thành bus ngắt 8-bit dma_interrupt[7:0] gửi về Datapath. Để CPU tiếp nhận ngắt, kiến trúc Datapath bổ sung khối hàng đợi (queue), khối ngăn xếp (stack), khối mã hóa ưu tiên (encoder) và tinh chỉnh bộ điều khiển Controller.

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

Chương 1. Tổng quan đề tài

Chương này trình bày bối cảnh công nghệ vi mạch, phân tích sự phát triển của kiến trúc tập lệnh mở RISC-V từ Đại học Berkeley cùng các phần mở rộng tiêu chuẩn (RV32M, RV32F, RV32D) và phi tiêu chuẩn (mã hóa AES, xử lý tín hiệu không dây). Tác giả tổng thuật các nghiên cứu về DMAC:

  • Thế giới: Xilinx DS579 (2010) hỗ trợ bus PLB nhưng chỉ có 1 kênh và dùng kỹ thuật polling gây trễ; Yingying Chi và Zhe Zheng (2018) thiết kế DMAC 4 kênh ưu tiên cho lưới điện không dây nhưng chỉ dừng ở mô phỏng dạng sóng; Xilinx LogiCORE IP AXI DMA v7.1 (2019) hỗ trợ 16 kênh với băng thông 399.04 MB/s tại tần số 100 MHz.
  • Trong nước: Đề tài của Nguyễn Tấn Tài và Lê Ngọc Hải (2014) tại Trường ĐH Công nghệ Thông tin về DMAC 32-bit theo chuẩn Avalon Bus đạt tần số 100 MHz, tốc độ 44 MB/s nhưng dùng 1 kênh đơn và polling ngắt; nghiên cứu của Nguyễn Kiêm Hùng, Đồng Phạm Khôi, Trần Xuân Tú (NICS 2018) về DMAC đa chức năng tái cấu hình đạt tần số 142.8 MHz. Từ đó, tác giả xác định mục tiêu tổng quát, 6 mục tiêu cụ thể và xây dựng phương pháp luận nghiên cứu dựa trên luồng thiết kế Xilinx Vivado FPGA Design Flow.

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

Chương 2 phân tích chi tiết cơ chế hoạt động của DMAC:

  • So sánh quy trình truyền dữ liệu truyền thống qua CPU với cơ chế DMA độc lập, làm rõ việc loại bỏ CPU khỏi đường truyền trực tiếp giữa bộ nhớ và ngoại vi.
  • Nguyên lý hoạt động của read block và write block cùng sơ đồ chuyển trạng thái, cơ chế quản lý các cờ báo đầy/rỗng của bộ đệm FIFO (FF_full, FF_empty) nhằm tránh lỗi mất mát dữ liệu khi hai miền tốc độ không đồng nhất.
  • Giải pháp kết hợp DMAC trực tiếp vào CPU thay vì qua bus hệ thống để giảm thiểu chu kỳ xin quyền truy cập bus.
  • Đề xuất lệnh mới dma theo định dạng R-format của RISC-V với opcode 7'b0100111. Lệnh này mang đầy đủ ba tham số: thanh ghi đích (rd), thanh ghi nguồn (rs1) và độ dài khối truyền (rs2). Khả năng định địa chỉ theo lý thuyết của thanh ghi 32-bit cho phép truyền khối dữ liệu lên đến $2^{32}$ đơn vị.

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

Chương 3 là phần trọng tâm về mặt kỹ thuật vi kiến trúc, mô tả chi tiết sơ đồ khối và danh sách cổng tín hiệu I/O của toàn bộ các module:

  • Kiến trúc tổng quát tích hợp DMAC vào Datapath RISC-V đơn chu kỳ, chia sẻ Data Memory qua Selector.
  • Phân tích thiết kế của 7 khối thành phần trong DMAC: Khối Address Decoder với bảng phân chia địa chỉ (Bảng 3.5), ánh xạ Data Memory (0x00 - 0x6C) và Serial I/O (0x74 - 0x80) cho 4 kênh DMA; Khối Request Generator với cơ chế chốt giữ trạng thái yêu cầu; Khối Round Robin Arbiter 4-bit điều khiển bởi bộ đếm rr_counter quét tuần tự từ 0 đến 3 không ưu tiên; Khối DMA Channel với 4 module con (Channel Controller, Channel Setup Register, Request Checker, Channel Execution).
  • Thiết kế chi tiết cho thao tác truy xuất Serial I/O: Dùng bộ đếm xung clock count tương ứng với số word thay vì tính toán last_addr do I/O có địa chỉ cố định.
  • Cấu trúc module Interrupt Interface (bus ngắt 8-bit) và các thay đổi trong Datapath CPU: Bổ sung hàng đợi (queue), ngăn xếp (stack), bộ mã hóa (encoder) và cập nhật logic của khối Controller để điều khiển phục vụ ngắt.

Chương 4. Mô phỏng và đánh giá kết quả

Chương 4 tập trung vào việc xác minh thiết kế trên công cụ Xilinx Vivado:

  • Mô phỏng chức năng điều khiển truyền dữ liệu của DMAC: Thiết lập các bảng dữ liệu kiểm thử trong Data Memory (Bảng 4.1), khởi tạo giá trị thanh ghi (Bảng 4.3), nạp chuỗi lệnh dma (Bảng 4.4) và kiểm tra kết quả bộ nhớ sau mô phỏng (Bảng 4.5) trên cả 4 kênh với các chế độ truyền khác nhau.
  • Mô phỏng hoạt động xử lý ngắt của toàn hệ thống (Bảng 4.6, Bảng 4.7, Bảng 4.8): Kiểm tra phản ứng của CPU Datapath khi nhận tín hiệu ngắt từ DMAC thông qua hàng đợi và ngăn xếp.
  • Kết quả Post-Implementation: Đánh giá độ trễ đường truyền, kiểm tra thời gian thực thi và xác định tần số hoạt động cực đại của thiết kế vi mạch trên kit FPGA Virtex-7.
  • So sánh các chỉ số đạt được với các nghiên cứu tiền nhiệm (Bảng 4.10).

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

Chương 5 tóm tắt các thành quả đạt được so với 6 mục tiêu ban đầu: hiện thực thành công lệnh mở rộng dma, vận hành 4 kênh truyền dữ liệu với 3 chế độ truyền, tích hợp cơ chế ngắt phần cứng đồng bộ vào Datapath CPU RISC-V 32-bit. Đồng thời, tác giả đưa ra các định hướng hoàn thiện vi kiến trúc trong tương lai.

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

Khóa luận đã hoàn thành việc thiết kế, mô phỏng và kiểm thử phần cứng bộ điều khiển DMAC đa kênh tích hợp vào CPU RISC-V 32-bit. Dưới đây là bảng tổng hợp đối sánh các đặc tính kỹ thuật chính giữa nghiên cứu của tác giả và các công trình liên quan được trích xuất từ văn bản:

Đặc tính kỹ thuật Xilinx DS579 (2010) Nguyễn Tấn Tài, Lê Ngọc Hải (2014) Xilinx AXI DMA v7.1 (2019) Đề tài khóa luận (Lê Phùng Khánh Minh, 2021)
Kiến trúc / Giao tiếp Bus PLB (32/64/128-bit) Avalon Bus (Altera) 32-bit Bus AXI Tích hợp trực tiếp vào CPU RISC-V 32-bit qua lệnh dma
Số kênh DMA 1 kênh 1 kênh 16 kênh 4 kênh độc lập
Chế độ truyền hỗ trợ Ngoại vi và Memory 1 chiều và 2 chiều (chưa gộp) Đa kênh Memory - Memory, Memory - I/O, I/O - Memory
Xử lý ngắt Polling ngắt Polling ngắt Ngắt phần cứng Ngắt phần cứng (Interrupt Interface, Stack, Queue)
Thuật toán phân xử Không có (kênh đơn) Không có (kênh đơn) Đa kênh ưu tiên Round Robin 4-bit (công bằng, non-preemptive)
Tốc độ truyền dữ liệu Phụ thuộc bus PLB 44 Mbytes/s 399.04 Mbytes/s Thiết kế hướng tới 45 Mbytes/s
Tần số hoạt động Phụ thuộc FPGA 100 MHz 100 MHz Đánh giá qua Post-Implementation Vivado (FPGA Virtex-7)

Các đóng góp chính được tác giả tự xác định bao gồm:

  • Thiết kế thành công tập lệnh mở rộng dma định dạng R-format cho kiến trúc RISC-V 32-bit, cho phép khởi tạo cấu hình truyền dữ liệu trực tiếp trong 1 chu kỳ lệnh mà không phải thông qua hệ thống bus điều khiển truyền thống.
  • Xây dựng hoàn chỉnh kiến trúc DMAC 4 kênh hỗ trợ linh hoạt cả 3 chế độ truyền dữ liệu: giữa ô nhớ với ô nhớ, giữa ô nhớ với ngoại vi nối tiếp, và giữa ngoại vi nối tiếp với ô nhớ.
  • Triển khai thành công thuật toán phân xử Round Robin trên phần cứng đảm bảo tính công bằng giữa các kênh và thiết kế cơ chế chốt cấu hình (Channel Setup Register, Request Checker) tránh xung đột dữ liệu khi nhiều lệnh đến liên tiếp.
  • Hiện thực cơ chế ngắt phần cứng đồng bộ trực tiếp với đường dữ liệu CPU thông qua cấu trúc ngăn xếp và hàng đợi, khắc phục hạn chế lãng phí chu kỳ máy của kỹ thuật polling ở các thiết kế tiền nhiệm.

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

Khóa luận nêu rõ các điểm hạn chế gắn liền với phạm vi kiểm thử:

  • Bộ nhớ Data Memory phục vụ kiểm nghiệm được thiết kế giới hạn ở quy mô nhỏ với dung lượng 32 words (tương đương 128 bytes) và chỉ ánh xạ cho 4 cổng Serial I/O cố định.
  • Khối phân xử Round Robin được cố định phần cứng theo cơ chế không ưu tiên và không cho phép ngắt chiếm quyền (non-preemptive), chưa hỗ trợ việc phân mức độ ưu tiên động theo tính cấp thiết của từng thiết bị ngoại vi.

Hướng nghiên cứu và phát triển tiếp theo của đề tài:

  • Nâng cấp dung lượng và mở rộng độ rộng bus của bộ nhớ Data Memory để phục vụ các luồng dữ liệu kích thước lớn.
  • Phát triển bộ phân xử Arbiter có khả năng cấu hình linh hoạt giữa nhiều thuật toán (như độ ưu tiên động, kết hợp FIFO và Round Robin có phân cấp).
  • Nghiên cứu tối ưu hóa tài nguyên logic (LUT, Flip-Flop) và tần số làm việc của mạch khi triển khai trên các dòng chip FPGA hoặc quy trình tổng hợp ASIC thương mại.
  • Mở rộng tập lệnh điều khiển để hỗ trợ các chế độ truyền dữ liệu phức tạp hơn như truyền dữ liệu khối phân tán (scatter-gather) hoặc truyền ma trận đa chiều.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo phù hợp cho sinh viên, học viên cao học và kỹ sư thuộc các chuyên ngành Kỹ thuật Máy tính, Thiết kế Vi mạch, Điện tử – Viễn thông và Kỹ thuật Hệ thống nhúng.

Các nội dung có giá trị tham khảo ứng dụng cao trong tài liệu:

  • Phương pháp mở rộng tập lệnh (Instruction Set Extension - ISE) trên vi kiến trúc bộ xử lý mã nguồn mở RISC-V.
  • Thiết kế chi tiết bằng mã RTL các khối chức năng lõi: bộ phân xử Round Robin 4-bit trên phần cứng, bộ đệm đồng bộ FIFO giữa hai miền đọc/ghi, và module giải mã địa chỉ ánh xạ bộ nhớ (memory-mapped I/O).
  • Giải pháp phần cứng xử lý địa chỉ cố định cho các thiết bị ngoại vi Serial I/O bằng phương pháp đếm xung nhịp thay thế cho so sánh địa chỉ biên thông thường.
  • Kiến trúc ghép nối ngắt phần cứng trực tiếp vào bộ xử lý RISC-V bằng việc tích hợp thêm hàng đợi và ngăn xếp chuyên dụng vào Datapath.

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

1. Cấu trúc lệnh dma được tác giả định nghĩa theo quy cách nào trong tập lệnh RISC-V?
Lệnh dma được xây dựng dựa trên định dạng lệnh R (R-format) của RISC-V 32-bit với mã lệnh opcode = 7'b0100111. Cú pháp assembly là dma rd, rs1, rs2, trong đó rs1 trỏ đến thanh ghi chứa địa chỉ nguồn, rd trỏ đến thanh ghi chứa địa chỉ đích, và rs2 chứa độ dài dữ liệu cần truyền (length). Hai trường funct3 và funct7 được gán giá trị mặc định bằng 0.

2. Khối Address Decoder phân chia không gian địa chỉ cho các kênh DMA như thế nào?
Khối Address Decoder sử dụng không gian địa chỉ 32-bit được ánh xạ bộ nhớ gồm 32 words (128 bytes): vùng 0x00 – 0x6C dành cho Data Memory và 4 địa chỉ 0x74, 0x78, 0x7C, 0x80 dành cho 4 thiết bị Serial I/O. Dựa vào đó, khối giải mã tín hiệu channel_sel[3:0] dưới dạng one-hot: Kênh 1 và Kênh 4 phục vụ truyền memory – memory, Kênh 2 phục vụ memory – I/O, và Kênh 3 phục vụ I/O – memory.

3. Tại sao khối phân xử Arbiter lại chọn thuật toán Round Robin phần cứng không chiếm dụng (non-preemptive)?
Khác với phần mềm có thể chia lát thời gian (quantum time) để luân chuyển tác vụ, việc ngắt ngang quá trình truyền dữ liệu đang diễn ra trên phần cứng đòi hỏi lưu vết trạng thái rất phức tạp, tiêu tốn nhiều tài nguyên logic và một số giao thức phần cứng không cho phép gián đoạn gói tin. Do đó, tác giả thiết kế bộ đếm rr_counter (0 đến 3) quét tuần tự các yêu cầu; khi một kênh đã được cấp phép (gnt), kênh đó phải hoàn thành trọn vẹn khối truyền trước khi quyền điều khiển được chuyển cho kênh tiếp theo.

4. Khối Channel Execution xử lý điểm dừng truyền dữ liệu cho Serial I/O khác với Memory ra sao?
Đối với vùng nhớ Memory, địa chỉ nguồn và đích tăng tuần tự (+4 sau mỗi chu kỳ hợp lệ), điểm dừng được xác định khi read_addr hoặc write_addr chạm mốc last_addr = base_addr + (length << 2). Ngược lại, thiết bị Serial I/O có địa chỉ cố định (fixed address), việc so sánh địa chỉ mất tác dụng. Tác giả đã giải quyết bằng cách khởi tạo biến đếm xung clock count tăng dần sau mỗi lần đọc/ghi hợp lệ; quá trình truyền chỉ kết thúc khi biến đếm đạt đủ số xung tương ứng với số lượng word yêu cầu.

5. Khối Channel Setup Register đóng vai trò gì trong việc ổn định dữ liệu điều khiển?
Khi một kênh DMA đang hoạt động hoặc đang chờ cấp phép trong hàng đợi, một lệnh dma tiếp theo gửi đến từ CPU có thể làm thay đổi các giá trị cấu hình trên bus ngõ vào. Khối Channel Setup Register được kích hoạt thông qua tín hiệu setup_en từ khối Request Checker nhằm chốt giữ cố định các tham số ban đầu (source_addr, destination_addr, length) và làm trễ tín hiệu kích hoạt 1 chu kỳ clock, đảm bảo khối đọc/ghi thực thi chính xác khối dữ liệu của lệnh hiện tại mà không bị ghi đè bởi lệnh kế tiếp.

Kết luận

Khóa luận của kỹ sư Lê Phùng Khánh Minh đã giải quyết trọn vẹn bài toán tích hợp bộ điều khiển truy cập bộ nhớ trực tiếp DMAC 4 kênh vào bộ xử lý RISC-V 32-bit thông qua lệnh mở rộng tùy biến. Công trình đã làm chủ quy trình thiết kế vi mạch số trên nền tảng ngôn ngữ Verilog HDL, từ xây dựng kiến trúc logic, phân xử Round Robin, đồng bộ bộ đệm FIFO đến cơ chế ngắt phần cứng thay thế kỹ thuật polling. Toàn bộ thiết kế đã được thẩm định tính đúng đắn thông qua mô phỏng chức năng và kiểm tra thời gian Post-Implementation trên công cụ Xilinx Vivado hướng đến triển khai trên phần cứng FPGA Virtex-7.