JTAG 简介

1、JTAG 基本原理

JTAG是Joint Test Action Group的缩写,它是一种国际标准测试协议,主要用于芯片或印制电路板的边界扫描和编程。
JTAG接口是一种用于连接和调试嵌入式系统的标准接口。

1.1、JTAG接口包括以下几个信号:

  1. TMS(Test Mode Select):用于设置测试模式和测试状态机的状态。通过 TMS 信号,可以控制 TAP 在不同的状态间相互转换。TMS 信号在 TCK 的上升沿有效。
  2. TCK(Test Clock):用于提供时钟信号,控制测试状态机的运行。
  3. TDO(Test Data Out):用于从测试状态机中输出数据。
  4. TDI(Test Data Input):用于向测试状态机输入数据。
  5. TRST(Test Reset Input): RST可以用来对TAP Controller进行复位(初始化)。不过这个信号接口在IEEE 1149.1标准里是可选的,并不是强制要求的。 因为通过 TMS 也可以对 TAP Controller 进行复位(初始化)。

在这里插入图片描述
参考:debug_interface_v5_2_architecture_specification.pdf

1.2、The Debug TAP State Machine (DBGTAPSM)

TAP(TEST ACCESS PORT) 是一个通用端口,通过TAP 可以访问芯片提供的所有数据寄存器(DR:Data Register)和指令寄存器(IR: Instruction Register)。对TAP的控制是通过TAP controller来完成。
在这里插入图片描述
参考:debug_interface_v5_2_architecture_specification.pdf

2、JTAG 的应用

  1. 在线调试:通过JTAG接口,可以将调试器连接到目标嵌入式系统,以便在系统运行时进行调试和故障排除。
  2. 边界扫描:JTAG接口支持边界扫描测试,可以检测和识别硬件故障,例如断路、短路、连接不良等。
  3. 在系统编程(In-System Programming):JTAG接口可以用于在系统运行时对目标嵌入式系统进行编程和更新。
  4. 芯片级调试:JTAG接口可以用于连接调试器到芯片内部,以便进行更详细的调试和故障排除。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JTAG (Joint Test Action Group) 是一种用于测试和编程电子设备的标准接口。在 Verilog 中,可以使用 JTAG 接口来进行芯片级别的测试和调试。以下是一个简单的 JTAG 模块的 Verilog 代码示例: ``` module jtag ( input jtag_clk, input jtag_rst_n, input jtag_tms, input jtag_tdi, output jtag_tdo ); // JTAG state machine reg [2:0] jtag_state; always @(posedge jtag_clk or negedge jtag_rst_n) begin if (~jtag_rst_n) begin jtag_state <= 3'b000; // Test-Logic-Reset state end else begin case (jtag_state) 3'b000: begin // Test-Logic-Reset state jtag_state <= jtag_tms ? 3'b001 : 3'b000; end 3'b001: begin // Run-Test-Idle state jtag_state <= jtag_tms ? 3'b010 : 3'b001; end 3'b010: begin // Select-DR-Scan state jtag_state <= jtag_tms ? 3'b011 : 3'b010; end 3'b011: begin // Capture-DR state jtag_state <= jtag_tms ? 3'b100 : 3'b011; end 3'b100: begin // Shift-DR state jtag_state <= jtag_tms ? 3'b101 : 3'b100; end 3'b101: begin // Exit1-DR state jtag_state <= jtag_tms ? 3'b110 : 3'b101; end 3'b110: begin // Pause-DR state jtag_state <= jtag_tms ? 3'b111 : 3'b110; end 3'b111: begin // Exit2-DR state jtag_state <= jtag_tms ? 3'b001 : 3'b111; end endcase end end // JTAG shift register reg [7:0] jtag_shift; always @(posedge jtag_clk or negedge jtag_rst_n) begin if (~jtag_rst_n) begin jtag_shift <= 8'h00; end else begin case (jtag_state) 3'b100: begin // Shift-DR state jtag_shift <= {jtag_shift[6:0], jtag_tdi}; end 3'b101: begin // Exit1-DR state jtag_shift <= {jtag_shift[6:0], jtag_tdi}; end 3'b111: begin // Exit2-DR state jtag_shift <= {jtag_shift[6:0], jtag_tdi}; end endcase end end // JTAG output assign jtag_tdo = jtag_shift[7]; endmodule ``` 该模块包含 JTAG 时钟(`jtag_clk`)、复位信号(`jtag_rst_n`)、状态机输入信号(`jtag_tms`)、数据输入信号(`jtag_tdi`)和数据输出信号(`jtag_tdo`)。JTAG 状态机根据输入信号 `jtag_tms` 的值进行状态转移,并将数据输入 `jtag_tdi` 传输到一个 8 位移位寄存器中。最后,数据输出 `jtag_tdo` 从移位寄存器的 MSB 输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值