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

Bối cảnh thực tiễn và lý do chọn đề tài

Trong kỷ nguyên bùng nổ của công nghệ thông tin và truyền thông mạng, việc bảo vệ an toàn thông tin và bảo đảm tính toàn vẹn dữ liệu trở thành yêu cầu thiết yếu trong mọi hệ thống tính toán. Thuật toán băm an toàn SHA-256 (Secure Hash Algorithm 256-bit) thuộc họ SHA-2 là chuẩn mật mã được ứng dụng sâu rộng trong các giao thức bảo mật mạng (như TLS/SSL), chữ ký số, lưu trữ mật khẩu và xác thực giao dịch dữ liệu.

Mặc dù thuật toán SHA-256 có thể thực thi hoàn toàn bằng phần mềm trên các bộ vi xử lý đa dụng, giải pháp này thường gặp hạn chế lớn về mặt hiệu năng tính toán, độ trễ và tiêu thụ năng lượng. Việc triển khai xử lý mật mã trên phần cứng mang lại các lợi thế kỹ thuật rõ rệt:

  • Tăng tốc độ tính toán nhờ giảm tải tác vụ mật mã từ CPU chính sang các khối phần cứng chuyên dụng.
  • Tăng cường mức độ an toàn và tiết kiệm năng lượng thông qua các mạch tích hợp logic tối ưu hóa riêng cho các phép biến đổi bit.
  • Khả năng mở rộng và tích hợp linh hoạt vào các hệ thống nhúng quy mô lớn.

Cùng thời điểm đó, kiến trúc tập lệnh mã nguồn mở RISC-V ra đời từ năm 2010 tại Đại học California, Berkeley đã tạo nên bước chuyển biến quan trọng. Khác với các kiến trúc tập lệnh thương mại độc quyền (như ARM, Intel, IBM) đòi hỏi chi phí bản quyền lớn và quy trình đàm phán kéo dài từ 6 đến 24 tháng, RISC-V cho phép tự do nghiên cứu, tùy biến và mở rộng tập lệnh. Do đó, việc nghiên cứu thiết kế một lõi vi xử lý RISC-V 32-bit tùy biến tích hợp các lệnh chuyên dụng nhằm tăng tốc thuật toán SHA-256 là một hướng tiếp cận thực tiễn và có giá trị học thuật cao.

Mục tiêu và nhiệm vụ nghiên cứu

Khóa luận xác định 7 mục tiêu và nhiệm vụ cụ thể:

  1. Nghiên cứu kiến trúc tập lệnh RV32I cho lõi vi xử lý RISC-V 32-bit.
  2. Thiết kế phần cứng cho bộ vi xử lý RISC-V 32-bit bằng ngôn ngữ mô tả phần cứng Verilog HDL.
  3. Nghiên cứu chi tiết cấu trúc giải thuật mã hóa và băm SHA-256.
  4. Thiết kế và tích hợp các tập lệnh chuyên dụng cho SHA-256 vào cấu trúc lõi xử lý.
  5. Hiện thực và kiểm chứng hoạt động của thuật toán SHA-256 trên phần cứng đã mở rộng.
  6. Hiện thực hóa thiết kế hệ thống trên kit phần cứng FPGA Xilinx Virtex-7 VC707 thông qua giao thức kết nối AXI4.
  7. Đạt tần số hoạt động mục tiêu của IP lõi vi xử lý ở mức 100 MHz.

Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Kiến trúc tập lệnh cơ sở RV32I, thuật toán băm SHA-256, cấu trúc vi kiến trúc của CPU RISC-V đơn chu kỳ/đa khối chức năng, và phương pháp mở rộng phần cứng thông qua khối Crypto_FU và bus AXI4.
  • Phạm vi nghiên cứu:
    • Về tính toán: Vi xử lý hỗ trợ tập 37 lệnh số nguyên chuẩn thuộc tập RV32I và 4 lệnh mở rộng cho SHA-256; chưa hiện thực các tập mở rộng dấu chấm động (Floating Point standard F/D) hay nhân chia phần cứng (M extension).
    • Về tần số và phần cứng: Hệ thống hướng tới hoạt động ổn định ở tần số xung nhịp 100 MHz trên kit FPGA Xilinx Virtex-7 VC707 (XC7VX485T).

Cơ sở lý thuyết và phương pháp nghiên cứu

Khung lý thuyết và mô hình kiến trúc

Đề tài xây dựng dựa trên các cơ sở lý thuyết chuẩn hóa quốc tế:

  • Kiến trúc tập lệnh RISC-V (chuẩn RV32I): Kiến trúc tập lệnh RISC định dạng 32-bit cố định, bao gồm 32 thanh ghi đa dụng 32-bit ($x_0 - x_{31}$, trong đó $x_0$ nối cứng về giá trị 0) và thanh ghi bộ đếm chương trình (Program Counter - PC). Hỗ trợ 6 định dạng lệnh cơ bản: R-type, I-type, S-type, B-type, U-type, J-type.
  • Tiêu chuẩn hàm băm SHA-256 (FIPS PUB 180-4 của NIST): Xử lý thông điệp đầu vào theo từng khối 512-bit thông qua 64 vòng lặp, sử dụng 8 giá trị băm khởi tạo $H_0^{(0)} - H_7^{(0)}$ (lấy từ phần thập phân căn bậc hai của 8 số nguyên tố đầu tiên) và 64 hằng số 32-bit $K_0 - K_{63}$ (lấy từ phần thập phân căn bậc ba của 64 số nguyên tố đầu tiên). Các phép toán phi tuyến cốt lõi bao gồm: $\Sigma_0, \Sigma_1, \sigma_0, \sigma_1, \text{Ch}(x,y,z), \text{Maj}(x,y,z)$.
  • Giao thức chuẩn công nghiệp ARM AMBA AXI4: Giao thức kết nối bus hiệu năng cao phục vụ trao đổi dữ liệu bộ nhớ và giao tiếp ngoại vi theo các kênh địa chỉ, dữ liệu đọc, dữ liệu ghi độc lập.

Phương pháp nghiên cứu

Khóa luận kết hợp đồng bộ các phương pháp kỹ thuật phần cứng và mô phỏng số học:

  • Phương pháp phân tích - tổng hợp giải thuật: Mô hình hóa toán học 6 bước của SHA-256, phân tích điểm nghẽn tính toán của các hàm xoay bit/dịch bit kết hợp XOR, từ đó đặc tả cấu trúc 4 lệnh vi xử lý mở rộng (sha256sig0, sha256sig1, sha256sum0, sha256sum1).
  • Phương pháp mô hình hóa phần mềm tham chiếu: Xây dựng chương trình phần mềm bằng ngôn ngữ Perl gồm 4 hàm chức năng (func_stringtobin, func_bitpadding, func_createblock, Calculator) để tạo mẫu dữ liệu chuẩn và kiểm chứng tính đúng đắn của chuỗi băm ngõ ra.
  • Phương pháp thiết kế phần cứng số RTL (Register-Transfer Level): Sử dụng ngôn ngữ Verilog HDL để hiện thực toàn bộ các khối chức năng của lõi CPU RISC-V và khối xử lý mật mã chuyên dụng Crypto_FU.
  • Phương pháp mô phỏng dạng sóng (Waveform Simulation): Sử dụng trình mô phỏng Venus để trích xuất mã máy assembly và công cụ ModelSim để kiểm tra chức năng logic từng chu kỳ xung nhịp.
  • Phương pháp tổng hợp và hiện thực phần cứng (FPGA Synthesis & Implementation): Sử dụng môi trường Xilinx Vivado và Vitis IDE để đóng gói lõi IP, tích hợp hệ thống vi xử lý MicroBlaze giao tiếp qua AXI4 Interconnect, nạp bitstream lên bo mạch Virtex-7 VC707 và truyền nhận kiểm tra qua cổng AXI UART Lite.

Thiết kế và triển khai hệ thống vi xử lý

Kiến trúc tổng thể hệ thống lõi xử lý

Hệ thống vi xử lý được phân chia thành 3 khối chính:

  1. Khối Bộ nhớ Lệnh (Instruction Memory - IMEM): Nhận địa chỉ lệnh 32-bit (insn_addr) từ Core và phát mã lệnh 32-bit (instruction) tương ứng.
  2. Khối Bộ nhớ Dữ liệu (Data Memory - DMEM): Lưu trữ và truy xuất dữ liệu 32-bit (din, dout) dựa trên địa chỉ addr và tín hiệu điều khiển ghi 4-bit mem_we.
  3. Khối Lõi Xử lý (Core): Trung tâm điều phối và xử lý toàn bộ luồng dữ liệu và lệnh.
+-------------------------------------------------------------+
|                          CORE                               |
|  +------------------+     +-------------------------------+ |
|  | Program Counter  |     |         Control Unit          | |
|  +------------------+     +-------------------------------+ |
|  +------------------+     +-------------------------------+ |
|  |  Register File   |     |    ALU  /  Adder  / Crypto_FU | |
|  +------------------+     +-------------------------------+ |
|  +------------------+     +-------------------------------+ |
|  |    Load Unit     |     |          Store Unit           | |
|  +------------------+     +-------------------------------+ |
+-------------------------------------------------------------+
           |                              |
           v                              v
+----------------------+      +-------------------------------+
|  Instruction Memory  |      |          Data Memory          |
+----------------------+      +-------------------------------+

Các khối chức năng chi tiết bên trong Lõi Xử lý (Core)

Khối chức năng Tín hiệu đầu vào chính Tín hiệu đầu ra chính Chức năng kỹ thuật
Program Counter (PC) clk, rst, Din (32-bit) Dout (32-bit) Nạp, giữ và cập nhật địa chỉ câu lệnh thực thi tiếp theo; reset về 32'h00000000 khi rst = 0.
Control Unit (CU) insn (32-bit), eq, a_lt_b, a_lt_ub alu_func (4-bit), reg_we, mem_we, is_crypto, rd_sel, crypto_insn Giải mã lệnh RV32I và lệnh SHA-256; phát tín hiệu điều khiển chọn kênh mux, kích hoạt ghi bộ nhớ và thanh ghi.
Register File (RF) Addr1 (5-bit), Addr2 (5-bit), Waddr (5-bit), WData (32-bit), w_en rs1 (32-bit), rs2 (32-bit) Chứa 32 thanh ghi đa dụng 32-bit; hỗ trợ 2 cổng đọc đồng thời và 1 cổng ghi đồng bộ theo cạnh xung clock.
ALU Toán hạng $A$, $B$ (32-bit), alu_op (4-bit) alu_out (32-bit), cờ so sánh (eq, a_lt_b, a_lt_ub) Thực thi 11 phép toán số học/logic cơ bản: ADD, SUB, SLL, SLT, SLTU, XOR, SRL, SRA, OR, AND, JALR.
Khối Crypto_FU insn (32-bit), toán hạng rs1 (32-bit) rd (32-bit) Thực thi 4 phép biến đổi SHA-256 chuyên dụng trong 1 chu kỳ xung nhịp.
Khối Load / Store size (3-bit), data, addr Dữ liệu định dạng Byte/Halfword/Word Xử lý truy xuất bộ nhớ có dấu/không dấu (LB, LBU, LH, LHU, LW) và lưu dữ liệu (SB, SH, SW).
Khối Adder pc_in (32-bit), add_sel (32-bit) out (32-bit) Tính toán địa chỉ nhảy rẽ nhánh hoặc địa chỉ kế tiếp ($PC + 4$ hoặc $PC + \text{immediate}$).

Đặc tả tập 4 lệnh mở rộng cho SHA-256

Các lệnh mở rộng được bổ sung trực tiếp vào giải mã của Control Unit và tính toán tại Crypto_FU:

  • sha256sig0 rd, rs1: Thực hiện phép toán $\sigma_0(x) = \text{ROTR}^7(x) \oplus \text{ROTR}^{18}(x) \oplus \text{SHR}^3(x)$
  • sha256sig1 rd, rs1: Thực hiện phép toán $\sigma_1(x) = \text{ROTR}^{17}(x) \oplus \text{ROTR}^{19}(x) \oplus \text{SHR}^{10}(x)$
  • sha256sum0 rd, rs1: Thực hiện phép toán $\Sigma_0(x) = \text{ROTR}^2(x) \oplus \text{ROTR}^{13}(x) \oplus \text{ROTR}^{22}(x)$
  • sha256sum1 rd, rs1: Thực hiện phép toán $\Sigma_1(x) = \text{ROTR}^6(x) \oplus \text{ROTR}^{11}(x) \oplus \text{ROTR}^{25}(x)$

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 tính cấp thiết của việc bảo mật thông tin và tăng tốc phần cứng cho các thuật toán mật mã trên nền tảng kiến trúc mở RISC-V. Tác giả khảo cứu tình hình nghiên cứu trong và ngoài nước, trong đó nhấn mạnh nghiên cứu của Gorkem Nisanci, Paul G. Flikkema và Tolga Yalcin (2022) về đánh giá hiệu năng các thuật toán SHA-256, AES trên RISC-V. Chương này xác định rõ mục tiêu thiết kế lõi RV32I bằng Verilog, mở rộng lệnh cho SHA-256, tích hợp trên kit FPGA Virtex-7 VC707 hoạt động ở tần số 100 MHz, đồng thời giới hạn phạm vi đề tài ở các phép tính số nguyên 32-bit.

Chương 2: Kiến trúc tập lệnh RISC-V

Chương 2 trình bày chi tiết về cơ sở lý thuyết của kiến trúc RISC-V và thuật toán SHA-256:

  • Phân tích chuẩn tập lệnh RV32I với cấu trúc 32 thanh ghi và cấu trúc 6 định dạng lệnh. Chi tiết hóa hoạt động và biểu thức thực thi của 37 lệnh số nguyên cơ sở:
    • Nhóm lệnh U-type (lui, auipc) và J-type (jal).
    • Nhóm lệnh rẽ nhánh B-type (beq, bne, blt, bge, bltu, bgeu).
    • Nhóm lệnh I-type (jalr, lb, lh, lw, lbu, lhu, addi, xori, ori, andi, slli, srli, srai).
    • Nhóm lệnh lưu dữ liệu S-type (sb, sh, sw).
    • Nhóm lệnh tính toán thanh ghi R-type (add, sub, sll, slt, sltu, xor, srl, sra, or, and).
  • Phân tích từng bước của thuật toán SHA-256: quy tắc đệm thông điệp (padding) sao cho chiều dài đạt bội số của 512-bit (với 64-bit cuối chứa độ dài thông điệp gốc $L$), chia khối $M_t^{(i)}$, khởi tạo giá trị $H^{(0)}$ và hằng số $K_t$, vòng lặp nén 64 bước cập nhật 8 biến trạng thái $a, b, c, d, e, f, g, h$.
  • Định nghĩa chi tiết định dạng trường bit và biểu thức thực thi của 4 lệnh mở rộng SHA-256 (sha256sig0, sha256sig1, sha256sum0, sha256sum1).
  • Xây dựng chương trình phần mềm đối chứng SHA-256 bằng Perl với cấu trúc 4 hàm xử lý logic băm hoàn chỉnh.

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

Chương 3 trình bày chi tiết vi kiến trúc phần cứng của toàn bộ hệ thống xử lý:

  • Thiết kế mức hệ thống tổng quát gồm Core kết nối với Instruction Memory và Data Memory.
  • Phân rã và đặc tả chi tiết giao tiếp tín hiệu, bảng chân trị logic và trạng thái hoạt động của từng khối: Program Counter, Control Unit (bảng mã tín hiệu điều khiển cho từng loại opcode), Register File (chế độ đọc/ghi đồng bộ), ALU (bảng ánh xạ 11 giá trị alu_op), khối Load/Store (bảng mã hóa kích thước 3-bit size), khối Adder và khối chức năng mật mã chuyên dụng Crypto_FU.

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

Chương 4 tập trung vào quy trình mô phỏng chức năng và kiểm tra độ chính xác của thiết kế:

  • Kiểm thử tập lệnh chuẩn RV32I bằng 3 chương trình hợp ngữ phức tạp biên dịch qua Venus và mô phỏng trên ModelSim:
    • Test case 1: Chương trình tính tích hai số sử dụng vòng lặp cộng dồn và so sánh rẽ nhánh.
    • Test case 2: Chương trình tính giai thừa của một số nguyên.
    • Test case 3: Chương trình tính cấp số nhân.
  • Kiểm thử thuật toán SHA-256: Nạp dữ liệu kiểm thử vào Data Memory, thực thi chương trình hợp ngữ SHA-256 có tích hợp các lệnh chuyên dụng trên ModelSim, so sánh kết quả dạng sóng (waveform) với giá trị tạo ra từ script Perl đối chứng và vector kiểm thử chuẩn của NIST.
  • Đánh giá hiệu năng và so sánh số chu kỳ xung nhịp (clock cycle count), tần số cực đại đạt được của IP lõi vi xử lý với các công trình công bố liên quan.

Chương 5: Thiết kế Block Design trên Vivado với giao thức AXI4

Chương 5 hiện thực hóa thiết kế hệ sinh thái System-on-Chip (SoC) hoàn chỉnh trên công cụ Vivado:

  • Giới thiệu kiến trúc giao thức truyền thông AXI4 (các kênh Read Address, Read Data, Write Address, Write Data, Write Response).
  • Xây dựng sơ đồ khối Block Design: Tích hợp bộ xử lý MicroBlaze đóng vai trò điều khiển trung tâm, kết nối với bộ nhớ MicroBlaze Local Memory, IP AXI UART Lite để giao tiếp nối tiếp với máy tính, và lõi IP Custom RISC-V Crypto Core thông qua AXI Interconnect.
  • Tổng hợp và thực thi (Synthesis & Implementation) trên chip FPGA Xilinx Virtex-7 VC707: Đánh giá diện tích phần cứng tiêu thụ (LUT, Flip-Flop, BRAM, I/O pin) và báo cáo ước lượng công suất tiêu thụ (Power Analysis).
  • Nạp phần mềm qua Vitis IDE, hiển thị chuỗi băm ngõ ra thành công trên terminal máy tính, xác nhận sự trùng khớp hoàn toàn giữa phần cứng FPGA và mô phỏng ModelSim.

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

Kết quả kỹ thuật đạt được

  1. Hoàn thiện lõi CPU RV32I: Thiết kế thành công bằng Verilog HDL lõi vi xử lý RISC-V 32-bit thực thi chính xác toàn bộ 37 câu lệnh cơ bản của tập RV32I, vượt qua cả 3 bộ test case hợp ngữ (tính tích, tính giai thừa, tính cấp số nhân) trên môi trường mô phỏng ModelSim và Venus.
  2. Mở rộng lệnh tăng tốc SHA-256: Hiện thực thành công khối phần cứng Crypto_FU hỗ trợ 4 lệnh biến đổi chuyên biệt (sha256sig0, sha256sig1, sha256sum0, sha256sum1), cho phép rút ngắn đáng kể số chu kỳ xung nhịp cần thiết để xử lý vòng lặp nén thông điệp 512-bit so với việc chỉ sử dụng các lệnh logic cơ bản.
  3. Hiện thực thành công trên phần cứng thật:
    • Đóng gói lõi xử lý thành IP và tích hợp thành công vào thiết kế Block Design trên Vivado qua giao thức chuẩn AXI4.
    • Hiện thực và xác minh chức năng trên kit FPGA Xilinx Virtex-7 VC707 ở tần số xung nhịp 100 MHz.
    • Giao tiếp truyền nhận dữ liệu thông điệp và chuỗi băm ngõ ra chính xác 100% qua chuẩn giao tiếp UART.

So sánh và đóng góp của đề tài

  • So với các triển khai phần mềm thuần túy trên RISC-V, thiết kế của nhóm giảm mạnh độ trễ xử lý nhờ việc tích hợp trực tiếp các phép biến đổi xoay bit đa tầng vào phần cứng thực thi trong 1 chu kỳ máy.
  • Đóng góp một quy trình hoàn chỉnh từ mô hình hóa lý thuyết (Perl), thiết kế phần cứng RTL (Verilog), mô phỏng kiểm tra chức năng (ModelSim, Venus) cho đến tích hợp hệ thống SoC trên FPGA qua chuẩn bus công nghiệp AXI4.

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

Hạn chế của đề tài

  • Lõi vi xử lý hiện tại mới hỗ trợ tập lệnh số nguyên cơ sở RV32I, chưa tích hợp khối tính toán dấu chấm động (Floating Point Unit) hoặc khối nhân chia phần cứng (M Extension).
  • Hệ thống vi kiến trúc được xây dựng theo mô hình đơn chu kỳ/đa khối chức năng cơ bản, chưa áp dụng kỹ thuật đường ống chuyên sâu (deep pipelining) hoặc dự đoán rẽ nhánh nâng cao để đẩy tần số hoạt động lên mức cao hơn.
  • Về thuật toán mật mã, thiết kế mới tập trung vào hàm băm SHA-256, chưa tích hợp các chuẩn mã hóa đối xứng khối khác (như AES, DES).

Hướng phát triển tiếp theo

  • Nghiên cứu tích hợp thêm các chuẩn mở rộng của RISC-V, bao gồm tập lệnh nhân chia phần cứng RV32M và tập lệnh dấu chấm động RV32F/RV32D.
  • Thiết kế cấu trúc vi xử lý dạng đường ống (Pipelining 5 tầng hoặc siêu phân luồng) nhằm tối ưu hóa thông lượng (throughput) và nâng cao xung nhịp hoạt động của hệ thống.
  • Bổ sung thêm các tập lệnh chuyên dụng và khối tăng tốc phần cứng cho thuật toán mã hóa đối xứng AES (Advanced Encryption Standard) và các biến thể khác của họ SHA-2/SHA-3.

Giá trị tham khảo

Báo cáo khóa luận là tài liệu tham khảo có giá trị kỹ thuật cao cho:

  • Sinh viên và học viên chuyên ngành Kỹ thuật Máy tính, Điện tử - Viễn thông, Công nghệ Vi mạch: Tham khảo kiến trúc chi tiết của lõi CPU RISC-V 32-bit (RV32I), cách viết code RTL Verilog cho từng khối Program Counter, Control Unit, ALU, Register File và phương pháp mở rộng tập lệnh tùy biến.
  • Kỹ sư thiết kế hệ thống nhúng và phần cứng bảo mật (Hardware Security): Tham khảo giải pháp thiết kế khối Crypto_FU, phương pháp ánh xạ các phép toán $\sigma, \Sigma$ của SHA-256 sang cổng logic phần cứng.
  • Người nghiên cứu thiết kế SoC trên FPGA: Tham khảo quy trình xây dựng Block Design trên Vivado, tích hợp lõi tùy biến với vi xử lý MicroBlaze qua bus AXI4, và phương pháp kiểm thử thực tế trên kit Xilinx Virtex-7 VC707 kết hợp Vitis IDE.

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

1. Tập lệnh RV32I được hiện thực trong khóa luận gồm bao nhiêu lệnh và chia thành những nhóm nào?

Khóa luận hiện thực đầy đủ 37 câu lệnh cơ sở của chuẩn RV32I, được chia thành 6 định dạng lệnh chính:

  • Nhóm U-type (2 lệnh): LUI, AUIPC.
  • Nhóm J-type (1 lệnh): JAL.
  • Nhóm B-type (6 lệnh rẽ nhánh): BEQ, BNE, BLT, BGE, BLTU, BGEU.
  • Nhóm I-type (13 lệnh tính toán hằng số, nhảy gián tiếp và load bộ nhớ): JALR, LB, LH, LW, LBU, LHU, ADDI, XORI, ORI, ANDI, SLLI, SRLI, SRAI.
  • Nhóm S-type (3 lệnh lưu bộ nhớ): SB, SH, SW.
  • Nhóm R-type (10 lệnh tính toán thanh ghi): ADD, SUB, SLL, SLT, SLTU, XOR, SRL, SRA, OR, AND.

2. Bốn lệnh mở rộng cho thuật toán SHA-256 được thiết kế với chức năng và biểu thức logic cụ thể là gì?

Bốn lệnh mở rộng được thiết kế để thực thi trực tiếp các hàm biến đổi bit trong 1 chu kỳ:

  • sha256sig0 rd, rs1: Thực thi hàm $\sigma_0(x) = \text{ROTR}^7(x) \oplus \text{ROTR}^{18}(x) \oplus \text{SHR}^3(x)$.
  • sha256sig1 rd, rs1: Thực thi hàm $\sigma_1(x) = \text{ROTR}^{17}(x) \oplus \text{ROTR}^{19}(x) \oplus \text{SHR}^{10}(x)$.
  • sha256sum0 rd, rs1: Thực thi hàm $\Sigma_0(x) = \text{ROTR}^2(x) \oplus \text{ROTR}^{13}(x) \oplus \text{ROTR}^{22}(x)$.
  • sha256sum1 rd, rs1: Thực thi hàm $\Sigma_1(x) = \text{ROTR}^6(x) \oplus \text{ROTR}^{11}(x) \oplus \text{ROTR}^{25}(x)$.

3. Tác giả sử dụng công cụ nào để đối chứng tính đúng đắn của giải thuật SHA-256 trước khi nạp vào phần cứng?

Tác giả đã xây dựng một chương trình mô phỏng bằng ngôn ngữ lập trình Perl gồm 4 hàm chức năng (func_stringtobin chuyển đổi chuỗi sang nhị phân, func_bitpadding tính toán số bit đệm, func_createblock chia khối 512-bit, và Calculator tính toán giá trị băm). Kết quả băm từ script Perl này được dùng làm vector mẫu chuẩn để so sánh đối chiếu trực tiếp với dạng sóng đầu ra trên ModelSim và dữ liệu thực tế nhận được từ kit FPGA.

4. Hệ thống SoC trên Vivado được cấu hình gồm những khối IP nào và giao tiếp qua giao thức gì?

Hệ thống SoC trên Vivado được xây dựng theo mô hình Block Design, giao tiếp thông qua giao thức chuẩn công nghiệp ARM AMBA AXI4. Các khối IP chính trong thiết kế bao gồm:

  • IP Vi xử lý điều khiển trung tâm MicroBlaze.
  • IP MicroBlaze Local Memory (chứa bộ nhớ lệnh và dữ liệu cục bộ).
  • IP AXI UART Lite (phục vụ truyền thông nối tiếp RS-232/UART với máy tính).
  • IP Lõi tùy biến RISC-V tích hợp khối tăng tốc mật mã Crypto_FU (Custom IP Core).
  • IP AXI Interconnect (cầu nối điều phối bus truyền thông giữa Master và các Slave).

5. Mục tiêu tần số hoạt động của thiết kế IP lõi vi xử lý là bao nhiêu và được hiện thực trên dòng phần cứng FPGA nào?

Mục tiêu tần số hoạt động của IP lõi vi xử lý trong khóa luận là 100 MHz. Thiết kế đã được tổng hợp, thực thi và kiểm chứng thành công trên kit phát triển FPGA Xilinx Virtex-7 VC707 (trang bị chip Virtex-7 XC7VX485T).


Kết luận

Khóa luận tốt nghiệp "Thiết kế và hiện thực thuật toán mã hóa trên RISC-V" của sinh viên Nguyễn Đức Hy và Trần Duy Quốc Việt đã hoàn thành trọn vẹn mục tiêu thiết kế lõi vi xử lý RISC-V 32-bit hỗ trợ đầy đủ 37 lệnh chuẩn RV32I bằng ngôn ngữ Verilog HDL. Đề tài đã mở rộng thành công 4 lệnh chuyên dụng cho thuật toán băm SHA-256 thông qua khối phần cứng Crypto_FU, giúp tối ưu hóa đáng kể tốc độ xử lý mật mã. Toàn bộ hệ thống SoC đã được tích hợp qua giao thức bus AXI4, tổng hợp và kiểm chứng hoạt động chính xác tại tần số 100 MHz trên kit FPGA Xilinx Virtex-7 VC707, cung cấp một nền tảng thiết kế mở hữu ích cho các nghiên cứu phát triển vi xử lý an toàn tiếp theo.