Another use of the JTAG Interface on FPGA
description
Transcript of Another use of the JTAG Interface on FPGA
![Page 1: Another use of the JTAG Interface on FPGA](https://reader036.fdocuments.net/reader036/viewer/2022062301/56814c88550346895db9a287/html5/thumbnails/1.jpg)
Presented by Karin Shusterman
Another use of the JTAG Interface on FPGA
![Page 2: Another use of the JTAG Interface on FPGA](https://reader036.fdocuments.net/reader036/viewer/2022062301/56814c88550346895db9a287/html5/thumbnails/2.jpg)
JTAG Interface as a Communication Port
Introduction• JTAG is usually used for testing the board
• The JTAG interface can be also used to configure FPGAs and program flash devices
• Can we do more?
• How about design testing?
![Page 3: Another use of the JTAG Interface on FPGA](https://reader036.fdocuments.net/reader036/viewer/2022062301/56814c88550346895db9a287/html5/thumbnails/3.jpg)
JTAG Interface as a Communication Port
Design testing using JTAG• The BS technology on FPGA is providing
us test and debug capability to our design
• We use custom Instructions JTAG controller and to debug the logic of the design
• The JTAG controller is already built into the FPGA, minimizing user design
![Page 4: Another use of the JTAG Interface on FPGA](https://reader036.fdocuments.net/reader036/viewer/2022062301/56814c88550346895db9a287/html5/thumbnails/4.jpg)
JTAG Interface as a Communication Port
Existing solutions• Adding debug outputs and asserts into our design• Using switches and LEDs on board• Using FPGA as a black box
• The problem – We can’t know where exactly the problem is– We need many test vectors for many different states
• We wish we could have a spy inside our design
![Page 5: Another use of the JTAG Interface on FPGA](https://reader036.fdocuments.net/reader036/viewer/2022062301/56814c88550346895db9a287/html5/thumbnails/5.jpg)
JTAG Interface as a Communication Port
GNAT• General-purpose Native JTAG Tester
• Configured into the FPGA in addition to our design
• Uses JTAG controller and resources for debug issues
• Allows us to enable communication with our design
![Page 6: Another use of the JTAG Interface on FPGA](https://reader036.fdocuments.net/reader036/viewer/2022062301/56814c88550346895db9a287/html5/thumbnails/6.jpg)
JTAG Interface as a Communication Port
The uses for GNAT• Replacement for external components (such
as LEDs and switches)
• Enabling test/diagnostic modes
• Reading status/debug registers from design
• Controlling a multiplexer to select signals that route to external pins for monitoring
• Programming/uploading external memories that interface to the FPGA, such as SDRAM
![Page 7: Another use of the JTAG Interface on FPGA](https://reader036.fdocuments.net/reader036/viewer/2022062301/56814c88550346895db9a287/html5/thumbnails/7.jpg)
JTAG Interface as a Communication Port
GNAT architecture
![Page 8: Another use of the JTAG Interface on FPGA](https://reader036.fdocuments.net/reader036/viewer/2022062301/56814c88550346895db9a287/html5/thumbnails/8.jpg)
JTAG Interface as a Communication Port
GNAT component Example with 16 bits•16-bit USER DR defined •The upper 8 bits of the register are used to control access to the GNAT peripherals •4 bits identify the peripheral and 4 bits are allocated as an opcode (read/write) •The lower 8 bits are for data communication
![Page 9: Another use of the JTAG Interface on FPGA](https://reader036.fdocuments.net/reader036/viewer/2022062301/56814c88550346895db9a287/html5/thumbnails/9.jpg)
JTAG Interface as a Communication Port
GNAT peripheral examples
![Page 10: Another use of the JTAG Interface on FPGA](https://reader036.fdocuments.net/reader036/viewer/2022062301/56814c88550346895db9a287/html5/thumbnails/10.jpg)
JTAG Interface as a Communication Port
Software support
Sample script to write to a GNAT peripheral
#===========================================================================# JTAG Chain# -----------------# Device0 Device1 Device2# TDI –> 18V02 –> XCV50E –> XC2V4000 -> TDO## NOTE: binary data is shifted in lsb first#===========================================================================source $env(XILINX)/chipscope/tcljtag.tclset handle [jtag_open]jtag_lock $handlejtag_autodetect $handle# Shift the USER2 Instruction (b00011) into the Instruction Register of XC2V4000jtag_shiftir $handle -buffer "110000" -endstate RTI -device 2# WRITE: Shift the 16 bit GNAT command into the USER2 Data Register of XC2V4000# Peripheral: 0x2# Opcode : 0x0 (write)# Data : 0x34jtag_shiftdr $handle -buffer "0010110000000100" -endstate RTI -device 2jtag_unlock $handle
![Page 11: Another use of the JTAG Interface on FPGA](https://reader036.fdocuments.net/reader036/viewer/2022062301/56814c88550346895db9a287/html5/thumbnails/11.jpg)
JTAG Interface as a Communication Port
![Page 12: Another use of the JTAG Interface on FPGA](https://reader036.fdocuments.net/reader036/viewer/2022062301/56814c88550346895db9a287/html5/thumbnails/12.jpg)
JTAG Interface as a Communication Port
![Page 13: Another use of the JTAG Interface on FPGA](https://reader036.fdocuments.net/reader036/viewer/2022062301/56814c88550346895db9a287/html5/thumbnails/13.jpg)
JTAG Interface as a Communication Port
Conclusions• We found a way to look into the design using
JTAG technology
• We are using existing JTAG resources
• GNAT– Shows how you can quickly and easily add JTAG
debug capability to your design– Has minimal FPGA resource overhead– A simple lightweight and flexible architecture
![Page 14: Another use of the JTAG Interface on FPGA](https://reader036.fdocuments.net/reader036/viewer/2022062301/56814c88550346895db9a287/html5/thumbnails/14.jpg)
JTAG Interface as a Communication Port
Questions
?