JTAG边界扫描BSDL文件介绍
Boundary Scan Description Language的缩写,即边界扫描描述语言,属于VHDL的一个子集,内容符合VHDL的语法标准,用于描述JTAG在指定设备中的实现方式,只要设备符合JTAG标准,那么它必须具有对应的BSDL文件,BSDL文件可以在一些边界扫描的软件中被使用,如XJTAG,TopJTAG等等,通过加载对应的BSDL文件可以实现对芯片外部所有管脚的读取和控制。当芯片
Contents
-
JTAG边界扫描BSDL文件介绍
-
Contents
-
Introduction
-
Boundary-Scan Register
-
边界扫描
-
BSDL文件解析
-
BSDL文件的应用
-
Reference
-
Introduction
BSDL
Boundary Scan Description Language的缩写,即边界扫描描述语言,属于VHDL的一个子集,内容符合VHDL的语法标准,用于描述JTAG在指定设备中的实现方式,只要设备符合JTAG标准,那么它必须具有对应的BSDL文件,
BSDL文件主要包括以下信息:
-
当前芯片所支持的最大TCK频率
-
定义了管脚的名称和序号
-
定义了电源、时钟、配置、IO管脚等等。每个管脚的类型,如VCC、GND、CLK,管脚的名称及序号
-
所有可用命令寄存器
-
所有可用的数据寄存器,包括可能的预设值,例如:器件的IDCODE
BSDL目前有两种标准IEEE 1149.1和IEEE 1149.6。IEEE 1149.6在IEEE 1149.1标准的基础上丰富了一些内容,它可以兼容IEEE 1149.1。
BSDL资源
-
所有厂家BSDL文件获取:https://www.bsdl.info/
-
Xilinx zynq BSDL文件获取: C:\Xilinx\Vitis\2020.2\data\parts\xilinx\zynq\public\bsdl
Boundary-Scan Register
TAP controler下寄存器分为两大类:指令寄存器和数据寄存器。
Bypass寄存器、Device Identification寄存器和Boundary-scan寄存器(边界扫描链),都属于数据寄存器。在调试当中,边界扫描寄存器(边界扫描链)最重要,使用的也最为频繁。

INTEST指令和Boundary-Scan 寄存器:
Boundary-Scan寄存器就是边界扫描链,一般一个芯片内部有多个边界扫描链。通过边界扫描链,可以进行部件间的连通性测试。当然,更重要的是可以对测试器件的输入输出进行观测和控制,以达到测试器件的内部逻辑的目的。INTEST指令是在IEEE 1149.1标准里面定义的一条很重要的指令:结合边界扫描链,该指令允许对开发板上器件的系统逻辑进行内部测试。

边界扫描
当TAP控制器进入“boundary-scan”的状态,其实也就是IR寄存器存入SAMPLE指令、EXTEST指令等,此时对应的DR寄存器就是边界扫描寄存器,这个寄存器将每个I/O单元连接在一起并且可以控制每个引脚。

当芯片正常过程当中也是可以进行边界扫描的,例如对正常运行中的FPGA进行边界扫描,它可以将每个管脚的状态显示出来。
我们尝试读取管脚的值,对应的IR寄存器的指令是SAMPLE。
BSDL文件解析
从下面xc7z020_clg400.bsd这个文件可以知道:
-
IR寄存器的长度是6位;
-
IR指令寄存器的指令清单,比如SAMPLE的是000001
-
边界扫描链的长度是1077位
边界扫描寄存器有1077位,并不意味着有1077个管脚。
每一个管脚都有一个IO pad(芯片管脚处理模块),IO pad用1~3位寄存器(取决于该管脚是输入、三态输出或是输入输出均可)。当然一些IO pad包含的寄存器不一定包含在边界扫描链中。 xc7z020_clg400.bsd:
-- Instruction Register Description
attribute INSTRUCTION_LENGTH of XC7Z020_CLG400 : entityis6;
attribute INSTRUCTION_OPCODE of XC7Z020_CLG400 : entityis
"IDCODE (001001)," & -- DEVICE_ID
"BYPASS (111111)," & -- BYPASS
"EXTEST (100110)," & -- BOUNDARY
"SAMPLE (000001)," & -- BOUNDARY
"PRELOAD (000001)," & -- Same as SAMPLE
"USERCODE (001000)," & -- DEVICE_ID
"HIGHZ (001010)," & -- BYPASS
"EXTEST_PULSE (111100)," & -- BOUNDARY
"EXTEST_TRAIN (111101)," & -- BOUNDARY
"ISC_ENABLE (010000)," & -- ISC_CONFIG
"ISC_PROGRAM (010001)," & -- ISC_PDATA
-- Boundary-Scan Register Description
attribute BOUNDARY_LENGTH of XC7Z020_CLG400 : entityis1077;
attribute BOUNDARY_REGISTER of XC7Z020_CLG400 : entityis
-- cellnum (type, port, function, safe[, ccell, disval, disrslt])
" 0 (BC_2, *, internal, 1)," &
" 1 (BC_2, *, internal, 0)," & -- RSVDGND_0
" 2 (BC_2, *, internal, X)," & -- RSVDGND_0
" 3 (BC_2, RSVDVCC3_N6, input, X)," &
" 4 (BC_2, RSVDVCC2_R6, input, X)," &
" 5 (BC_2, RSVDVCC1_T6, input, X)," &
" 6 (BC_2, CFGBVS_M6, input, X)," &
" 7 (BC_2, *, internal, 1)," & -- PROGRAM_B
"......," &
"1063 (BC_2, *, internal, 1)," & --PS_SRST_B
"1064 (BC_2, *, internal, X)," &
"1065 (BC_2, *, internal, X)," &
"1066 (BC_2, *, internal, X)," &
"1067 (BC_2, *, internal, X)," &
"1068 (BC_2, *, internal, X)," &
"1069 (BC_2, *, internal, X)," &
"1070 (BC_2, *, internal, X)," &
"1071 (BC_2, *, internal, X)," &
"1072 (BC_2, *, internal, X)," &
"1073 (BC_2, *, internal, X)," &
"1074 (BC_2, *, internal, X)," &
"1075 (BC_2, *, internal, X)," &
"1076 (BC_2, *, internal, X)";
BSDL文件的应用
BSDL文件可以在一些边界扫描的软件中被使用,如XJTAG,TopJTAG等等,通过加载对应的BSDL文件可以实现对芯片外部所有管脚的读取和控制。

-
工具TopJtag:
-
TopJTAG Probe:边界扫描测试软件,可实现IO的读取、控制、波形的显示、脉冲的计数等。
-
TopJTAG Flash Programmer:可以对芯片外置的CFI Flash进行编程和读取。
-
已100t开发板为例IO测试步骤:
1. New project建立JTAG连接,部分Digilent JTAG可直接识别。


2. 选择BSDL文件C:\Xilinx\SDK\2018.3\data\parts\xilinx\artix7\public\bsdl\xc7a100t_csg324.bsd,初始为SAMPLE状态,可通过instruction调整
3. IO可添加波形查看
jtag chain view中不同颜色代表IO不同状态。Pin values are color-coded. Black means 0, red — 1, brown — high-Z, and blue — linkage pin.
-
Reference
IEEE Standard 1149.1 - Test Access Port and Boundary-Scan Architecture
更多推荐



所有评论(0)