对FPGA进行上板调试时,使用最多的是SignalTap,但SignalTap主要用来抓取信号时序,当需要发送信号到FPGA时,Jtag Master可以发挥很好的作用,可以通过Jtag Master对FPGA进行读写测试,使用tcl脚本控制Jtag Master可以完成复杂的测试功能。使用jtag master进行调试时分为如下步骤:
- 将JTAG to Avalon Master Bridge Intel FPGA IP加入代码
- 根据Avalon-MM总线时序编写测试代码
- 编写tcl脚本
- 在System Console上运行tcl脚本进行调试
Jtag Master
在逻辑代码中加入JTAG to Avalon Master Bridge Intel FPGA IP ,IP路径如下。
![poYBAGIMpnqAWGJ1AAB7iHPHINg582.png](https://file.elecfans.com/web2/M00/30/CF/poYBAGIMpnqAWGJ1AAB7iHPHINg582.png)
Avalon-MM总线时序
jtag_master模块例化到fpga代码中,使用Verilog根据Avalon-MM时序图编写读写代码。master_read有效时将数据发送到master_readdata。master_write有效时,将master_writedata数据写入FPGA。
![pYYBAGIMpnyABBZZAAFoe6g9zPk897.png](https://file.elecfans.com/web2/M00/30/D6/pYYBAGIMpnyABBZZAAFoe6g9zPk897.png)
jtag_master u0 (
.clk_clk (_connected_to_clk_clk_),
.clk_reset_reset (_connected_to_clk_reset_reset_),
.master_reset_reset (_connected_to_master_reset_reset_),
.master_address (_connected_to_master_address_),
.master_readdata (_connected_to_master_readdata_),
.master_read (_connected_to_master_read_),
.master_write (_connected_to_master_write_),
.master_writedata (_connected_to_master_writedata_),
.master_waitrequest (_connected_to_master_waitrequest_),
.master_readdatavalid (_connected_to_master_readdatavalid_),
.master_byteenable (_connected_to_master_byteenable_)
);
编写TCL脚本
global claimed_path_jtag
#启动jtag master服务
proc start_jtag {} {
set service_type "master"
set jtag_path [lindex [get_service_paths $service_type] 0]
puts $jtag_path
set ::claimed_path_jtag [claim_service $service_type $jtag_path mylib]
}
# 下载函数
proc config {sof_file} {
set device_index 0
set device [lindex [get_service_paths device] $device_index]
puts "download..."
device_download_sof $device $sof_file
}
#关闭jtag master服务
proc end_jtag {} {
close_service master $::claimed_path_jtag
}
#写函数
proc jtag_write {addr data} {
master_write_32 $::claimed_path_jtag $addr $data
}
#读函数
proc jtag_read {addr} {
set result [master_read_32 $::claimed_path_jtag $addr 1]
return $result
}
#测试读写
proc test { } {
#地址0中写入1
jtag_write 0x0 0x1
#读取地址0
jtag_read 0x0
}
上电测试
打开System Console
![poYBAGIMpn2AdNliAABTA5WKcac796.png](https://file.elecfans.com/web2/M00/30/CF/poYBAGIMpn2AdNliAABTA5WKcac796.png)
运行如下指令
source jtag.tcl //tcl 脚本
config output_files/test.sof //下载文件
start_jtag //打开jatg master服务
test //测试读写函数
end_jtag //关闭jatg master服务
![pYYBAGIMpn6AUiQbAABEsWRSNts054.png](https://file.elecfans.com/web2/M00/30/D6/pYYBAGIMpn6AUiQbAABEsWRSNts054.png)
审核编辑:符乾江
-
FPGA
+关注
关注
1631文章
21806浏览量
606681 -
程序
+关注
关注
117文章
3798浏览量
81500
发布评论请先 登录
相关推荐
【AI技术支持】ESP32-S3 JTAG调试问题处理
![【AI技术支持】ESP32-S3 <b class='flag-5'>JTAG</b><b class='flag-5'>调试</b>问题处理](https://file.elecfans.com/web2/M00/45/DA/poYBAGKPGziABtawAAAYlXODTds073.jpg)
【AI技术支持】ESP32C3 开发板在Linux环境下,进行JTAG 调试演示
![【AI技术支持】ESP32C3 开发板在Linux环境下,进行<b class='flag-5'>JTAG</b> <b class='flag-5'>调试</b>演示](https://file.elecfans.com/web2/M00/45/DA/poYBAGKPGziABtawAAAYlXODTds073.jpg)
【GD32 MCU 入门教程】二、GD32 MCU 烧录说明 (2)SWD/JTAG在线下载
![【GD32 MCU 入门教程】二、GD32 MCU 烧录说明 (2)SWD/<b class='flag-5'>JTAG</b>在线下载](https://file1.elecfans.com/web2/M00/02/3E/wKgaoma0kR6ATpzXAADFgXwSppw100.png)
如何在服务器上调试本地FPGA板卡
如何使用JTAG来调试ESP-12模块?
STM32F407调试接口报错SWD/JTAG Communic怎么解决?
windows下无法进行jtag的驱动设置,是需要将jtag相关的IO接到jtag调试器后再到PC进行设置吗?
FPGA的JTAG口很脆弱?以后要多加小心了
RISCV soft JTAG调试_v1.2
fpga软件是什么意思
RISCV soft JTAG调试_v1.1
![RISCV soft <b class='flag-5'>JTAG</b><b class='flag-5'>调试</b>_v1.1](https://file1.elecfans.com/web2/M00/C0/C2/wKgZomXYVHCALAhiAAAa3iF9Eis888.png)
评论