Xilinx 产品设计与功能调试技巧

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Xilinx 产品设计与功能调试技巧

yolanda
Moderator
Moderator

BSCANE2模块是FPGA中的一个特殊硬核模块,是联通外部JTAG管脚和FPGA内部用户逻辑的一个接口。

BSCANE2的定义和端口描述,可以在对应器件的Libraries Guide中找到。比如7系列的定义可以参考UG768,第4章。其基本功能介绍,请参考UG470, 第10章。

在FPGA中,JTAG管脚除了负责原始的芯片测试功能(IEEE1149.1),还主要用于下载和调试,比如ILA就是通过JTAG接口捕捉内部逻辑信号,送回ISE或Vivado,并在界面上直接显示和控制。BSCANE2其实就是实现这一内外沟通的关键核心模块,这部分实现对于用户来说是透明的。

那么如何利用BSCANE2模块,构建用户自己的专用内部扫描链/功能链呢?本文提供一个基于7系列的ISE版本的参考设计。通过FPGA的JTAG管脚,用户可以直接控制内部的逻辑实现自定义的功能。

UltraScale/UltraScale+的BSCANE2模块用法和7系列基本相同。

 

设计说明:

这是一个关于如何使用BSCANE2模块的简单实例。基于Xilinx的开发板KC705,该设计例化了一个BSCANE2模块,由USER1命令控制。通过JTAG接口发送标准和自定义的指令,可以实现:

1.      从运行的设计中读取32位的用户ID;

2.      从JTAG接口输入控制LED灯显示的字符串;

3.      从JTAG口向BRAM写入32位数据;

4.      从BRAM读出32位数据;

5.      向BRAM中一次写入1024 bits(可用于EDK设计中bootloader的修改,升级等)。

 

指令定义:

该设计的shift register定位为33位。其中第32位(从0开始计数)用于区分JTAG发送的是指令还是数据。Bit[32]为1,则送入的为指令;Bit[32]为0,则送入的为指令对应的数据。其他的JTAG寄存器均为32位。

33'h100000241 用户ID读取;

33'h100000242 LED灯显示控制;

33'h100000243 向BRAM写入32位数据;

33'h100000244 从BRAM读取32位数据;

33'h100000245 向BRAM写入1024位数据。

 

设计运行实现:

SVF文件可以以可读形式清楚的描述、记录JTAG链的动作,并可以在ISE/iMPACT或Vivado/HW Manager中直接执行。本设计使用SVF来实现以下功能:

1.  发送USER1指令‘02’,来选择和使能用户自定义的JTAG链;

2.  发送指令‘100000241’读取用户定义ID;

3.  发送指令‘100000242’获取一个二进制码,并送入7位LED灯显示;

4.  使用指令‘100000243’向BRAM中每次写入一个32位数据;然后使用指令‘100000244’将写入的数据逐个读出来。

5.  使用指令‘100000245’向BRAM写入1024位数据;如果需要写入的数据大于1024,则多次执行该指令即可。

 

 

更多
0 0 131