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

Trong lĩnh vực thiết kế vi mạch và hệ thống nhúng, xu hướng phát triển các bộ vi xử lý có mật độ tích hợp linh kiện bán dẫn ngày càng cao cùng số lượng chân giao tiếp lớn (đặc biệt dưới các dạng đóng gói ma trận như BGA - Ball Grid Array hay PGA - Pin Grid Array) đã đặt ra thách thức lớn cho công tác kiểm tra và gỡ lỗi. Các phương pháp kiểm thử truyền thống như phương pháp "nền đinh" (Bed-of-nails) và kiểm tra chức năng (Functional test) bộc lộ nhiều hạn chế về chi phí chế tạo đầu dò, thời gian thực thi cũng như độ phức tạp khi tiếp cận các nút mạch bên trong bo mạch in nhiều lớp. Để giải quyết bài toán này, các hệ thống kiểm tra và gỡ lỗi phần cứng trên chip (On-chip Hardware Debug System) dựa trên chuẩn giao tiếp JTAG IEEE 1149.1 được tích hợp trực tiếp vào thiết kế SoC nhằm hỗ trợ quan sát, can thiệp và kiểm soát trạng thái hoạt động của lõi xử lý với số lượng chân vật lý tối thiểu.

Đề tài khóa luận tốt nghiệp của tác giả Chướng Sec Váy (Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM, ngành Kỹ thuật Máy tính, năm 2022) tập trung nghiên cứu, thiết kế và hiện thực lõi IP JTAG dành riêng cho bộ vi xử lý MIPS 32-bit đơn chu kỳ.

Mục tiêu và nhiệm vụ nghiên cứu cụ thể của đề tài bao gồm:

  1. Thiết kế bộ vi xử lý MIPS 32-bit đơn chu kỳ (Single-cycle) hỗ trợ tập lệnh gồm 25 lệnh cơ bản.
  2. Hiện thực khối JTAG TAP (Test Access Port) tuân thủ tiêu chuẩn IEEE 1149.1, hỗ trợ đầy đủ các lệnh kiểm tra quét biên chuẩn và các lệnh truy xuất, gỡ lỗi tùy biến.
  3. Thiết kế khối Debug Module nhằm hỗ trợ các tính năng gỡ lỗi phần cứng chuyên dụng, bao gồm chế độ thực thi từng bước (Single-step) và quản lý tối đa 15 điểm dừng phần cứng (Hardware Breakpoints).
  4. Hiện thực, tổng hợp thiết kế trên phần cứng FPGA Virtex-7 VC707 và xây dựng chương trình điều khiển gỡ lỗi trên máy tính (sử dụng Python) kết nối thông qua module phần cứng FTDI FT232H USB-to-JTAG.

Đối tượng nghiên cứu là giao thức JTAG chuẩn IEEE 1149.1, khối điều khiển gỡ lỗi phần cứng và kiến trúc vi xử lý MIPS 32-bit. Phạm vi thực nghiệm của đề tài được triển khai trên kit FPGA Xilinx Virtex-7 VC707 trong khuôn khổ học kỳ II năm học 2021–2022.


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

Khóa luận xây dựng trên nền tảng chuẩn giao tiếp IEEE Standard 1149.1 ("IEEE Standard Test Access Port and Boundary Scan Architecture") và kiến trúc tập lệnh MIPS32. Hệ thống lý thuyết bao gồm:

  • Tiêu chuẩn JTAG IEEE 1149.1: Cơ chế cổng truy xuất kiểm tra (TAP) gồm các tín hiệu vật lý TCK, TMS, TDI, TDO, và tín hiệu tùy chọn TRST.
  • Cơ chế quét biên (Boundary Scan): Nguyên lý hoạt động của Boundary Scan Cell (BSC) đặt tại các chân I/O, cho phép cách ly lõi logic, lấy mẫu tín hiệu đầu vào/đầu ra và dịch chuỗi bit nối tiếp để kiểm tra tính toàn vẹn kết nối bo mạch.
  • Máy trạng thái điều khiển TAP (TAP Controller FSM): Bộ điều khiển 16 trạng thái đồng bộ theo cạnh xung nhịp TCK và tín hiệu điều khiển chế độ TMS.
  • Tập lệnh của vi xử lý MIPS 32-bit: 25 lệnh chia thành 4 nhóm chức năng:
    • Toán học và logic: ADD, ADDI, SUB, ADDU, SUBU, ADDIU, AND, OR, XOR, NOR, ANDI, ORI, XORI.
    • Dịch bit: SLT, SLTU, SRL, SLL, SLTI, SLTIU.
    • Truy xuất bộ nhớ: SW, LW.
    • Nhảy và rẽ nhánh: J, JAL, BEQ, BNE.

Phương pháp nghiên cứu được áp dụng gồm:

  • Phương pháp phân tích – tổng hợp: Khảo sát các tài liệu tiêu chuẩn IEEE 1149.1, các công trình phát triển nền tảng gỡ lỗi SoC (như nghiên cứu của Kou-Kai Liu và cộng sự, Wilmer Ramirez và cộng sự cho RISC-V, hệ thống gỡ lỗi All-in-One cho vi xử lý VN8 của ICDREC).
  • Phương pháp mô hình hóa phần cứng (RTL Design): Sử dụng ngôn ngữ mô tả phần cứng Verilog HDL và SystemVerilog để thiết kế cấu trúc vi mô của từng module (TAP Controller, Instruction Register, Data Registers, Hardware Breakpoint Unit, Debug Controller, Single-cycle MIPS Core).
  • Phương pháp mô phỏng chức năng: Thực hiện kiểm tra, phân tích dạng sóng (Waveform) và kiểm tra log kết quả trên Tcl Console.
  • Phương pháp thực nghiệm phần cứng: Tổng hợp logic trên công cụ EDA, nạp bitstream lên bo mạch FPGA Xilinx Virtex-7 VC707, thiết lập mạch giao tiếp trung gian với IC chuyển mức điện áp TXB0108 và giao tiếp với PC qua module FT232H.

Thiết kế và triển khai hệ thống

Hệ thống gỡ lỗi phần cứng được cấu trúc thành ba khối chức năng chính: khối logic vi xử lý (Core MIPS 32-bit), khối giao tiếp kiểm tra (JTAG TAP) và khối điều khiển gỡ lỗi (Debug Module).

Tín hiệu kết nối Phân loại I/O Độ rộng bit Chức năng chi tiết
TCK Input 1 Xung clock chính cho logic JTAG TAP
TMS Input 1 Tín hiệu điều khiển chuyển trạng thái TAP Controller
TDI Input 1 Dữ liệu kiểm tra đầu vào nối tiếp
TDO Output 1 Dữ liệu kiểm tra đầu ra nối tiếp
TRST Input 1 Tín hiệu reset bất đồng bộ cho logic kiểm tra (active-low)
Scan_chain In/Out $n$ Chuỗi quét biên kết nối các chân I/O của Core MIPS
Data Input 32 Dữ liệu đầu vào song song cho các thanh ghi JTAG
Reg_addr Output 3 Địa chỉ chọn đọc thanh ghi từ tập thanh ghi MIPS
Instruction_i Output 32 Mã lệnh ghi trực tiếp vào bộ nhớ lệnh MIPS
Addr_Wr Output 11 Địa chỉ ô nhớ để nạp lệnh vào bộ nhớ lệnh
Instr_run_direct Output 32 Giá trị câu lệnh thực thi trực tiếp
WrEn_proc Output 1 Tín hiệu cho phép ghi lệnh vào bộ nhớ vi xử lý
BrkPnt_Addr Output 32 Địa chỉ điểm dừng cần ghi vào bảng breakpoint
Addr Output 4 Địa chỉ ô nhớ lưu breakpoint (hỗ trợ tối đa 15 điểm)
Force_brk_signl Output 1 Tín hiệu cưỡng bức dừng hoạt động của Core MIPS
Run_signl Output 1 Tín hiệu kích hoạt vi xử lý chạy bình thường
Runstep_signl Output 1 Tín hiệu điều khiển vi xử lý chạy từng lệnh đơn
Run_direct_signl Output 1 Tín hiệu kích hoạt chạy lệnh trực tiếp
WrEn_db Output 1 Tín hiệu cho phép ghi cấu hình điểm dừng vào Debug Module
PC[31:0] Input 32 Giá trị bộ đếm chương trình nhận từ Core MIPS
Halt_signl Output 1 Tín hiệu tạm dừng hoặc ngắt thực thi Core MIPS

Cấu tạo thanh ghi lệnh (IR) và thanh ghi dữ liệu (DR)

  • Thanh ghi lệnh IR (4-bit): Mỗi cell IR 1-bit được cấu tạo từ 2 Flip-Flop (Flip-Flop dịch và Flip-Flop giữ) cùng 3 bộ dồn kênh Multiplexer. Khi ở trạng thái Capture-IR, 2 bit LSB của IR luôn được nạp cố định giá trị 01 nhằm mục đích phát hiện lỗi đứt gãy đường truyền nối tiếp trên bo mạch.
  • Tập thanh ghi dữ liệu DR:
    • BYPASS: Thanh ghi 1-bit dùng để bỏ qua chip khi quét chuỗi.
    • DEVICE ID (DIDR): Thanh ghi 32-bit gồm Version (bit 31:28), PartNumber (bit 27:12), Manufacturer (bit 11:1) và LSB cố định bằng 1 (bit 0).
    • PRG_COMMAND Register: Thanh ghi 43-bit (32-bit dữ liệu lệnh, 11-bit địa chỉ bộ nhớ lệnh).
    • READ_REGS Register: Thanh ghi 35-bit (32-bit dữ liệu đọc ra, 3-bit địa chỉ thanh ghi).
    • BREAKPOINT Register: Thanh ghi 36-bit (32-bit địa chỉ ngắt, 4-bit địa chỉ ô nhớ lưu điểm dừng).
    • FORCE_BREAK Register: Thanh ghi 1-bit lưu cờ dừng cưỡng bức.
    • RUN_DIRECT Register: Thanh ghi 32-bit chứa lệnh cần thực thi trực tiếp từ bus master.

Mã hóa lệnh kiểm tra và gỡ lỗi trong thanh ghi IR

Thanh ghi lệnh hỗ trợ 12 lệnh chức năng thông qua bộ giải mã 4-bit:

STT Tên lệnh Mã Opcode (4'h) Chức năng chi tiết
1 BYPASS 4'h0 Nối tắt TDI sang TDO qua thanh ghi 1-bit, bỏ qua kiểm tra chip
2 IDCODE 4'h1 Đọc mã nhận dạng 32-bit của nhà sản xuất từ thanh ghi DIDR
3 SAMPLE/PRELOAD 4'h2 Lấy mẫu tín hiệu trên các chân hoặc nạp dữ liệu vào thanh ghi BSR
4 EXTEST 4'h3 Kiểm tra kết nối ngoại vi và liên kết giữa các chip trên bo mạch
5 PRG_COMMANDS 4'h4 Nạp chương trình vào bộ nhớ lệnh của vi xử lý MIPS
6 CORE_RESET 4'h5 Reset trạng thái hoạt động của lõi vi xử lý MIPS
7 RUNSTEP 4'h6 Điều khiển vi xử lý thực thi một chu kỳ lệnh đơn (Single-step)
8 READ_REGS 4'h7 Đọc dữ liệu thanh ghi PC, tập thanh ghi R1-R6 hoặc bộ nhớ dữ liệu
9 FORCE_BREAK 4'h8 Cưỡng bức dừng hoạt động tức thời của vi xử lý MIPS
10 SET_BREAK 4'h9 Thiết lập và lưu trữ địa chỉ điểm dừng phần cứng vào mảng ô nhớ
11 RUN 4'hA Khởi chạy vi xử lý MIPS hoạt động liên tục
12 RUN_DIRECT 4'hB Nạp và thực thi trực tiếp một câu lệnh từ JTAG mà không ghi vào bộ nhớ

Hoạt động của bộ điều khiển TAP Controller (FSM)

Bộ điều khiển TAP Controller gồm 16 trạng thái được mã hóa Hex nhằm tối ưu hóa tài nguyên logic: EXIT2_DR (0x0), EXIT1_DR (0x1), SHIFT_DR (0x2), PAUSE_DR (0x3), SELECT_IR_SCAN (0x4), UPDATE_DR (0x5), CAPTURE_DR (0x6), SELECT_DR_SCAN (0x7), EXIT2_IR (0x8), EXIT1_IR (0x9), SHIFT_IR (0xA), PAUSE_IR (0xB), RUN_TEST_IDLE (0xC), UPDATE_IR (0xD), CAPTURE_IR (0xE), TEST_LOGIC_RESET (0xF). Các tín hiệu điều khiển trạng thái như Reset_n, EnableTDO, ShiftIR, ShiftDR được kích hoạt và đồng bộ qua flip-flop kích cạnh xuống của TCK.


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

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

Chương mở đầu phân tích sự phát triển của vi xử lý tích hợp mật độ cao dẫn đến nhu cầu cấp thiết của hệ thống gỡ lỗi phần cứng. Tác giả khảo sát ba hướng nghiên cứu liên quan:

  • Chuẩn giao tiếp JTAG IEEE 1149.1 và các ứng dụng nạp bộ nhớ;
  • Thiết kế vi xử lý kiến trúc MIPS32 (đơn chu kỳ, đường ống nhiều tầng, kiến trúc superscalar tại ĐH CNTT);
  • Các nền tảng gỡ lỗi SoC tiêu biểu trên thế giới và trong nước (nền tảng gỡ lỗi SoC của Kou-Kai Liu với 1500 cổng giao tiếp, nền tảng gỡ lỗi RISC-V của Wilmer Ramirez, và phần cứng All-in-One Debugger cho vi điều khiển 8-bit VN8 của ICDREC).

Chương 1 xác lập mục tiêu thiết kế MIPS 32-bit đơn chu kỳ 25 lệnh, tích hợp lõi IP JTAG hỗ trợ đầy đủ tập lệnh quét biên và gỡ lỗi, hiện thực module Debug Module hỗ trợ 15 breakpoint và kiểm chứng trên bo mạch FPGA Virtex-7 VC707.

Chương 2. Tổng quan về giao thức JTAG và hệ thống gỡ lỗi trên phần cứng

Chương 2 trình bày chi tiết cơ sở lý thuyết và lịch sử hình thành chuẩn JTAG từ năm 1985 đến phiên bản chuẩn IEEE 1149.1-2013:

  • Nguyên lý vận hành của Boundary Scan Cell (gồm thanh ghi dịch xung Clock A và thanh ghi chốt xung Clock B).
  • Các phương pháp ghép nối chuỗi quét biên (Scan chain) để kiểm tra ngắn mạch, hở mạch chân chip trên bo mạch in.
  • Cấu trúc tiêu chuẩn của một hệ thống ứng dụng JTAG bao gồm: Phần mềm điều khiển máy tính (như JTAG ProVision, DS-5, OpenOCD), phần cứng Bus Master chuyển đổi giao thức (USB/PCI sang JTAG), và bo mạch mang chip cần kiểm thử (CUD - Circuit Under Debug).
  • Phân loại các chế độ gỡ lỗi phần cứng: Gỡ lỗi dựa trên chu kỳ xung nhịp (Cycle-based), dựa trên sự kiện điều kiện (Event-based), và kích hoạt chéo phối hợp phần cứng – phần mềm.

Chương 3. Thiết kế tổng quan

Chương 3 đề xuất kiến trúc hệ thống tổng thể gồm ba khối: JTAG TAP, Debug Module, và CORE MIPS 32-bit.

  • Xác định quy trình thiết kế 4 bước: (1) Thiết kế sơ đồ khối chi tiết, (2) Mô tả phần cứng RTL bằng Verilog/SystemVerilog, (3) Mô phỏng chức năng và phân tích dạng sóng, (4) Tổng hợp logic và hiện thực trên bo FPGA.
  • Định nghĩa chi tiết giao diện tín hiệu (Interface) vào/ra giữa JTAG TAP và Core MIPS, giữa JTAG TAP và Debug Module, cũng như định nghĩa cấu trúc gói dữ liệu gỡ lỗi (Scan Data 35-bit: RESET[34], WrEn_proc[33], Halt[32], DATA[31:0]).

Chương 4. Thiết kế chi tiết

Chương 4 mô tả cấu trúc phần cứng vi mô của từng thành phần:

  • Khối JTAG TAP: Thiết kế FSM TAP Controller 16 trạng thái; cấu trúc mạch thanh ghi lệnh IR 4-bit; cấu trúc các thanh ghi DR gồm Bypass Register, Device ID Register, Boundary Scan Register và User Data Registers phục vụ gỡ lỗi.
  • Khối Debug Module: Thiết kế Hardware Breakpoint Unit với mảng thanh ghi lưu tối đa 15 địa chỉ điểm dừng kèm bộ so sánh địa chỉ PC[31:0]; thiết kế bộ điều khiển Debug Controller chuyển đổi giữa các trạng thái thực thi bình thường, chạy từng bước và ngắt dừng hệ thống (Halt_signl).

Chương 5. Hiện thực thiết kế và nạp thiết kế vào bo FPGA

Chương 5 trình bày kết quả thực nghiệm và xác thực hệ thống:

  • Thiết lập môi trường mô phỏng trên công cụ EDA, kiểm tra dạng sóng và Tcl Console cho các trường hợp: Kết nối thành công, lỗi nhận diện đường truyền, và xác thực hoạt động của từng lệnh gỡ lỗi (CORE_RESET, PRG_COMMANDS, RUNSTEP, READ_REGS, RUN, FORCE_BREAK, SET_BREAK, RUN_DIRECT).
  • Hiện thực ghép nối phần cứng: Kết nối module FT232H USB-to-JTAG với header XADC của bo mạch Virtex-7 VC707 qua mạch đệm chuyển mức điện áp TXB0108.
  • Xây dựng tập lệnh Python điều khiển giao tiếp JTAG từ máy tính.
  • Tổng hợp logic trên FPGA Virtex-7 và so sánh kết quả tài nguyên sử dụng với đề tài của nhóm tác giả ICDREC.

Chương 6. Tổng kết và hướng phát triển

Chương 6 đúc kết toàn bộ kết quả đạt được của khóa luận về mặt thiết kế RTL, khả năng đáp ứng tiêu chuẩn IEEE 1149.1, hiệu quả hoạt động của hệ thống gỡ lỗi phần cứng trên FPGA và chỉ ra các hạn chế kỹ thuật cùng định hướng mở rộng đề tài.


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

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

  1. Hoàn thiện thiết kế phần cứng RTL:
    • Xây dựng thành công lõi xử lý MIPS 32-bit đơn chu kỳ hỗ trợ 25 lệnh, thực thi đúng chức năng tính toán, dịch bit, đọc/ghi bộ nhớ và rẽ nhánh.
    • Thiết kế hoàn chỉnh lõi IP JTAG TAP với bộ điều khiển FSM 16 trạng thái, hỗ trợ thanh ghi lệnh IR 4-bit (12 lệnh chức năng) và hệ thống thanh ghi dữ liệu chuyên dụng (Bypass, Device ID, BSR, PRG_COMMANDS, READ_REGS, SET_BREAK, FORCE_BREAK, RUN_DIRECT).
    • Thiết kế khối Debug Module cho phép quản lý và so sánh 15 địa chỉ điểm dừng phần cứng độc lập, cung cấp khả năng điều khiển xung nhịp vi xử lý ở chế độ đơn bước và cưỡng bức dừng.
  2. Kiểm tra và xác thực thực nghiệm:
    • Xác thực chức năng thông qua mô phỏng dạng sóng cho toàn bộ 12 lệnh JTAG.
    • Hiện thực thành công trên phần cứng kit FPGA Xilinx Virtex-7 VC707 thông qua module chuyển đổi FTDI FT232H và mạch chuyển mức điện áp TXB0108.
    • Viết chương trình Python giao tiếp bus master từ máy tính, cho phép nạp lệnh vào bộ nhớ vi xử lý, đọc giá trị thanh ghi PC, các thanh ghi $R_1 - R_6$, đọc bộ nhớ dữ liệu và thực thi gỡ lỗi tại điểm dừng chính xác.
  3. Đóng góp so với các nghiên cứu trước (tự nêu):
    • Tác giả đã làm chủ quy trình thiết kế từ mức kiến trúc, mô tả phần cứng đến nạp mạch thực tế cho lõi IP JTAG tùy biến, tích hợp đồng bộ với khối gỡ lỗi trên vi xử lý MIPS 32-bit.
    • Đưa ra giải pháp gỡ lỗi mềm dẻo thông qua giao tiếp Python và module FT232H chi phí thấp, thay thế các thiết bị nạp/gỡ lỗi thương mại đắt tiền.
    • Cung cấp số liệu tổng hợp logic cụ thể trên nền FPGA Virtex-7 và so sánh tài nguyên thực thi với các công trình gỡ lỗi trong nước (ICDREC).

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

Dựa trên phạm vi và nội dung trình bày trong văn bản khóa luận:

  • Hạn chế:
    • Vi xử lý kiểm thử mới dừng lại ở kiến trúc MIPS 32-bit đơn chu kỳ (Single-cycle), chưa tích hợp trên các kiến trúc vi xử lý nâng cao có đường ống (Pipelined) hoặc xử lý đa luồng (Superscalar).
    • Số lượng điểm dừng phần cứng giới hạn ở 15 địa chỉ; chưa hỗ trợ điểm dừng có điều kiện dữ liệu phức tạp (Data Breakpoint/Watchpoint).
    • Công cụ phần mềm phía máy tính mới ở dạng script Python giao tiếp cơ bản, chưa xây dựng giao diện đồ họa người dùng (GUI) hoặc tích hợp vào các trình biên dịch/IDE chuẩn như Eclipse hay GDB/OpenOCD.
  • Hướng nghiên cứu tiếp:
    • Tích hợp lõi IP JTAG và Debug Module vào vi xử lý MIPS32 kiến trúc đường ống nhiều tầng hoặc các kiến trúc mở khác (như RISC-V).
    • Phát triển chuẩn gỡ lỗi nâng cao hỗ trợ Trace dữ liệu thời gian thực mà không cần dừng vi xử lý.
    • Mở rộng phần mềm điều khiển thành bộ công cụ gỡ lỗi hoàn chỉnh, tương thích với chuẩn gỡ lỗi GDB Server.

Giá trị tham khảo

Bản khóa luận có giá trị tham khảo kỹ thuật hữu ích đối với:

  • Sinh viên và kỹ sư ngành Kỹ thuật Máy tính, Điện tử – Viễn thông, Thiết kế Vi mạch: Tài liệu tham khảo trực tiếp về phương pháp thiết kế máy trạng thái FSM cho TAP Controller, cấu trúc ô nhớ quét biên (BSC, IR cell) tuân thủ chuẩn IEEE 1149.1 bằng Verilog/SystemVerilog.
  • Người nghiên cứu phát triển hệ thống nhúng và SoC: Hữu ích trong việc tìm hiểu cấu trúc khối Debug Controller, Hardware Breakpoint Unit và phương thức ánh xạ dữ liệu gỡ lỗi (PC, tập thanh ghi, bộ nhớ) ra giao diện giao tiếp nối tiếp.
  • Nghiên cứu kiểm thử phần cứng trên FPGA: Cung cấp giải pháp kết nối thực tế giữa máy tính và kit FPGA thông qua chip chuyển đổi USB-to-JTAG (FT232H) kết hợp mạch chuyển đổi mức logic TXB0108 và mã nguồn điều khiển bằng Python.

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

1. Lõi IP JTAG trong khóa luận sử dụng thanh ghi lệnh (IR) độ rộng bao nhiêu bit và hỗ trợ bao nhiêu lệnh kiểm tra?
Thanh ghi lệnh IR được thiết kế với độ rộng 4-bit, hỗ trợ 12 lệnh kiểm tra và gỡ lỗi bao gồm: BYPASS (4'h0), IDCODE (4'h1), SAMPLE/PRELOAD (4'h2), EXTEST (4'h3), PRG_COMMANDS (4'h4), CORE_RESET (4'h5), RUNSTEP (4'h6), READ_REGS (4'h7), FORCE_BREAK (4'h8), SET_BREAK (4'h9), RUN (4'hA), RUN_DIRECT (4'hB).

2. Hai bit trọng số thấp (LSB) của thanh ghi IR được quy định nạp giá trị gì tại trạng thái Capture-IR và nhằm mục đích gì?
Tại trạng thái Capture-IR, 2-bit LSB của thanh ghi IR bắt buộc phải được nạp giá trị cố định là 01. Quy định này của chuẩn IEEE 1149.1 nhằm giúp hệ thống phát hiện lỗi đứt đường truyền hoặc lỗi kết nối trên đường dịch dữ liệu nối tiếp TDI-TDO trên bo mạch.

3. Khối Debug Module trong khóa luận hỗ trợ quản lý tối đa bao nhiêu điểm dừng phần cứng (Hardware Breakpoint)?
Khối Hardware Breakpoint Unit bên trong Debug Module được thiết kế với thanh ghi cấu hình 36-bit (gồm 32-bit địa chỉ điểm dừng và 4-bit địa chỉ ô nhớ), cho phép lưu trữ và giám sát tối đa 15 điểm dừng phần cứng độc lập.

4. Cấu trúc trường dữ liệu nhận dạng của thanh ghi DEVICE ID (32-bit) được định nghĩa như thế nào?
Thanh ghi DEVICE ID 32-bit có cấu trúc định dạng gồm: Version chiếm 4 bit ([31:28]), PartNumber chiếm 16 bit ([27:12]), Manufacturer chiếm 11 bit ([11:1]), và bit LSB ([0]) luôn cố định mang giá trị 1.

5. Hệ thống phần cứng thực nghiệm sử dụng những thiết bị và bo mạch nào để kết nối gỡ lỗi với máy tính?
Hệ thống thực nghiệm sử dụng kit FPGA Xilinx Virtex-7 VC707, kết nối qua header XADC với module chuyển đổi FTDI FT232H USB-to-JTAG, sử dụng IC đệm chuyển mức điện áp TXB0108 và giao tiếp với phần mềm điều khiển Python trên máy tính cá nhân.


Kết luận

Khóa luận tốt nghiệp của tác giả Chướng Sec Váy đã hoàn thành thiết kế và hiện thực thành công lõi IP JTAG TAP theo tiêu chuẩn IEEE 1149.1 tích hợp khối gỡ lỗi phần cứng cho vi xử lý MIPS 32-bit đơn chu kỳ. Hệ thống đáp ứng đầy đủ các tính năng kiểm thử quét biên cơ bản và hỗ trợ gỡ lỗi nâng cao như nạp chương trình, chạy đơn bước, cưỡng bức dừng và quản lý 15 điểm dừng phần cứng. Toàn bộ thiết kế RTL được xác thực chức năng qua mô phỏng và kiểm chứng thành công trên phần cứng FPGA Virtex-7 VC707 thông qua giao tiếp USB-to-JTAG và phần mềm điều khiển Python.