JTAG_TRST是什么
时间: 2024-08-16 15:06:44 浏览: 45
JTAG_TRST通常是指边界扫描测试(Boundary Scan Test Architecture)中的Test Reset信号。它是一个硬件信号,用于控制测试过程的开始和结束。在JTAG(Joint Test Action Group)协议中,TRST允许调试器启动芯片的内部寄存器,执行自诊断或软件下载等任务。当这个信号变为低电平时(通常是从高电平拉低),系统进入测试模式,完成相应的测试操作后,再将信号置高恢复正常的运行状态。
相关问题
// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.15 2011/08/25 22:54:30 fphillip Exp $ `timescale 1 ps / 1 ps module glbl (); parameter ROC_WIDTH = 100000; parameter TOC_WIDTH = 0; //-------- STARTUP Globals -------------- wire GSR; wire GTS; wire GWE; wire PRLD; tri1 p_up_tmp; tri (weak1, strong0) PLL_LOCKG = p_up_tmp; wire PROGB_GLBL; wire CCLKO_GLBL; reg GSR_int; reg GTS_int; reg PRLD_int; //-------- JTAG Globals -------------- wire JTAG_TDO_GLBL; wire JTAG_TCK_GLBL; wire JTAG_TDI_GLBL; wire JTAG_TMS_GLBL; wire JTAG_TRST_GLBL; reg JTAG_CAPTURE_GLBL; reg JTAG_RESET_GLBL; reg JTAG_SHIFT_GLBL; reg JTAG_UPDATE_GLBL; reg JTAG_RUNTEST_GLBL; reg JTAG_SEL1_GLBL = 0; reg JTAG_SEL2_GLBL = 0 ; reg JTAG_SEL3_GLBL = 0; reg JTAG_SEL4_GLBL = 0; reg JTAG_USER_TDO1_GLBL = 1'bz; reg JTAG_USER_TDO2_GLBL = 1'bz; reg JTAG_USER_TDO3_GLBL = 1'bz; reg JTAG_USER_TDO4_GLBL = 1'bz; assign (weak1, weak0) GSR = GSR_int; assign (weak1, weak0) GTS = GTS_int; assign (weak1, weak0) PRLD = PRLD_int; initial begin GSR_int = 1'b1; PRLD_int = 1'b1; #(ROC_WIDTH) GSR_int = 1'b0; PRLD_int = 1'b0; end initial begin GTS_int = 1'b1; #(TOC_WIDTH) GTS_int = 1'b0; end endmodule 给这段代码每一行注释
```
// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/glbl.v,v 1.15 2011/08/25 22:54:30 fphillip Exp $
// 该行为文件头注释,显示了文件的版本信息和修改日期
`timescale 1 ps / 1 ps
// 定义了时间刻度,1 ps / 1 ps 表示每个时钟周期为1 ps
module glbl ();
// 定义了一个名为 glbl 的模块
parameter ROC_WIDTH = 100000;
// 定义了一个名为 ROC_WIDTH 的参数并赋值为 100000
parameter TOC_WIDTH = 0;
// 定义了一个名为 TOC_WIDTH 的参数并赋值为 0
wire GSR;
// 定义了一个名为 GSR 的线型信号
wire GTS;
// 定义了一个名为 GTS 的线型信号
wire GWE;
// 定义了一个名为 GWE 的线型信号
wire PRLD;
// 定义了一个名为 PRLD 的线型信号
tri1 p_up_tmp;
// 定义了一个名为 p_up_tmp 的三态缓冲器
tri (weak1, strong0) PLL_LOCKG = p_up_tmp;
// 定义了一个名为 PLL_LOCKG 的三态缓冲器,并将其输出连接到 p_up_tmp
wire PROGB_GLBL;
// 定义了一个名为 PROGB_GLBL 的线型信号
wire CCLKO_GLBL;
// 定义了一个名为 CCLKO_GLBL 的线型信号
reg GSR_int;
// 定义了一个名为 GSR_int 的寄存器型信号
reg GTS_int;
// 定义了一个名为 GTS_int 的寄存器型信号
reg PRLD_int;
// 定义了一个名为 PRLD_int 的寄存器型信号
wire JTAG_TDO_GLBL;
// 定义了一个名为 JTAG_TDO_GLBL 的线型信号
wire JTAG_TCK_GLBL;
// 定义了一个名为 JTAG_TCK_GLBL 的线型信号
wire JTAG_TDI_GLBL;
// 定义了一个名为 JTAG_TDI_GLBL 的线型信号
wire JTAG_TMS_GLBL;
// 定义了一个名为 JTAG_TMS_GLBL 的线型信号
wire JTAG_TRST_GLBL;
// 定义了一个名为 JTAG_TRST_GLBL 的线型信号
reg JTAG_CAPTURE_GLBL;
// 定义了一个名为 JTAG_CAPTURE_GLBL 的寄存器型信号
reg JTAG_RESET_GLBL;
// 定义了一个名为 JTAG_RESET_GLBL 的寄存器型信号
reg JTAG_SHIFT_GLBL;
// 定义了一个名为 JTAG_SHIFT_GLBL 的寄存器型信号
reg JTAG_UPDATE_GLBL;
// 定义了一个名为 JTAG_UPDATE_GLBL 的寄存器型信号
reg JTAG_RUNTEST_GLBL;
// 定义了一个名为 JTAG_RUNTEST_GLBL 的寄存器型信号
reg JTAG_SEL1_GLBL = 0;
// 定义了一个名为 JTAG_SEL1_GLBL 的寄存器型信号,并将其初始值赋为 0
reg JTAG_SEL2_GLBL = 0;
// 定义了一个名为 JTAG_SEL2_GLBL 的寄存器型信号,并将其初始值赋为 0
reg JTAG_SEL3_GLBL = 0;
// 定义了一个名为 JTAG_SEL3_GLBL 的寄存器型信号,并将其初始值赋为 0
reg JTAG_SEL4_GLBL = 0;
// 定义了一个名为 JTAG_SEL4_GLBL 的寄存器型信号,并将其初始值赋为 0
reg JTAG_USER_TDO1_GLBL = 1'bz;
// 定义了一个名为 JTAG_USER_TDO1_GLBL 的寄存器型信号,并将其初始值赋为 1'bz
reg JTAG_USER_TDO2_GLBL = 1'bz;
// 定义了一个名为 JTAG_USER_TDO2_GLBL 的寄存器型信号,并将其初始值赋为 1'bz
reg JTAG_USER_TDO3_GLBL = 1'bz;
// 定义了一个名为 JTAG_USER_TDO3_GLBL 的寄存器型信号,并将其初始值赋为 1'bz
reg JTAG_USER_TDO4_GLBL = 1'bz;
// 定义了一个名为 JTAG_USER_TDO4_GLBL 的寄存器型信号,并将其初始值赋为 1'bz
assign (weak1, weak0) GSR = GSR_int;
// 将 GSR_int 信号与 GSR 信号进行连接
assign (weak1, weak0) GTS = GTS_int;
// 将 GTS_int 信号与 GTS 信号进行连接
assign (weak1, weak0) PRLD = PRLD_int;
// 将 PRLD_int 信号与 PRLD 信号进行连接
initial begin
// 初始化块
GSR_int = 1'b1;
// 将 GSR_int 的值赋为 1'b1
PRLD_int = 1'b1;
// 将 PRLD_int 的值赋为 1'b1
#(ROC_WIDTH) GSR_int = 1'b0;
// 在 ROC_WIDTH 的时间后,将 GSR_int 的值赋为 1'b0
PRLD_int = 1'b0;
// 将 PRLD_int 的值赋为 1'b0
end
initial begin
// 初始化块
GTS_int = 1'b1;
// 将 GTS_int 的值赋为 1'b1
#(TOC_WIDTH) GTS_int = 1'b0;
// 在 TOC_WIDTH 的时间后,将 GTS_int 的值赋为 1'b0
end
endmodule
// 模块定义结束
jtag_host.h源码
jtag_host.h是JTAG Host库的头文件,主要用于与JTAG设备进行通信。以下是jtag_host.h的源代码:
```
#ifndef __JTAG_HOST_H__
#define __JTAG_HOST_H__
#include <stdint.h>
#define JTAG_HOST_BUF_SIZE 1024
typedef struct {
uint8_t *buf; // 数据缓存区
uint32_t buf_size; // 缓存区大小
uint32_t index; // 当前写入的位置
} jtag_host_buf_t;
typedef struct {
uint8_t tms; // TMS信号
uint8_t tdi; // TDI信号
uint8_t tdo; // TDO信号
uint8_t trst; // TRST信号
uint8_t srst; // SRST信号
} jtag_host_signal_t;
typedef struct {
uint32_t freq; // JTAG时钟频率
uint32_t tck_delay; // TCK延时
uint32_t trst_delay; // TRST延时
uint32_t srst_delay; // SRST延时
uint32_t timeout; // 超时时间
uint32_t retry; // 重试次数
} jtag_host_cfg_t;
typedef struct {
jtag_host_signal_t signal; // JTAG信号
uint32_t tck_freq; // TCK频率
uint32_t tck_div; // TCK分频
jtag_host_cfg_t cfg; // JTAG Host配置
} jtag_host_t;
/**
* @brief JTAG Host初始化
*
* @param jtag JTAG Host对象指针
* @param buf 数据缓存区
* @param size 缓存区大小
*/
void jtag_host_init(jtag_host_t *jtag, uint8_t *buf, uint32_t size);
/**
* @brief JTAG Host释放
*
* @param jtag JTAG Host对象指针
*/
void jtag_host_free(jtag_host_t *jtag);
/**
* @brief JTAG Host连接
*
* @param jtag JTAG Host对象指针
*
* @return true 连接成功
* false 连接失败
*/
bool jtag_host_connect(jtag_host_t *jtag);
/**
* @brief JTAG Host断开连接
*
* @param jtag JTAG Host对象指针
*/
void jtag_host_disconnect(jtag_host_t *jtag);
/**
* @brief JTAG Host写入数据
*
* @param jtag JTAG Host对象指针
* @param data 数据
* @param size 数据大小
*
* @return true 写入成功
* false 写入失败
*/
bool jtag_host_write(jtag_host_t *jtag, uint8_t *data, uint32_t size);
/**
* @brief JTAG Host读取数据
*
* @param jtag JTAG Host对象指针
* @param data 数据
* @param size 数据大小
*
* @return true 读取成功
* false 读取失败
*/
bool jtag_host_read(jtag_host_t *jtag, uint8_t *data, uint32_t size);
/**
* @brief JTAG Host写入并读取数据
*
* @param jtag JTAG Host对象指针
* @param tx_data 写入数据
* @param tx_size 写入数据大小
* @param rx_data 读取数据
* @param rx_size 读取数据大小
*
* @return true 写入并读取成功
* false 写入并读取失败
*/
bool jtag_host_write_read(jtag_host_t *jtag, uint8_t *tx_data, uint32_t tx_size, uint8_t *rx_data, uint32_t rx_size);
#endif /* __JTAG_HOST_H__ */
```
该头文件中定义了JTAG Host库的结构体和函数,包括:
- jtag_host_buf_t:数据缓存区结构体,用于存储JTAG Host传输的数据。
- jtag_host_signal_t:JTAG信号结构体,包括TMS、TDI、TDO、TRST和SRST等信号。
- jtag_host_cfg_t:JTAG Host配置结构体,包括JTAG时钟频率、TCK延时、TRST延时、SRST延时、超时时间和重试次数等参数。
- jtag_host_t:JTAG Host对象结构体,包括JTAG信号、TCK频率、TCK分频和JTAG Host配置等参数。
- jtag_host_init:JTAG Host初始化函数,用于初始化JTAG Host对象。
- jtag_host_free:JTAG Host释放函数,用于释放JTAG Host对象。
- jtag_host_connect:JTAG Host连接函数,用于连接JTAG设备。
- jtag_host_disconnect:JTAG Host断开连接函数,用于断开JTAG设备连接。
- jtag_host_write:JTAG Host写入数据函数,用于向JTAG设备写入数据。
- jtag_host_read:JTAG Host读取数据函数,用于从JTAG设备读取数据。
- jtag_host_write_read:JTAG Host写入并读取数据函数,用于向JTAG设备写入数据并读取返回的数据。
这些函数提供了基本的JTAG通信功能,可用于JTAG设备的调试和测试等应用场景。