使用Jtag Master 调试FPGA程序

对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路径如下。

在这里插入图片描述

Avalon-MM总线时序

jtag_master模块例化到fpga代码中,使用Verilog根据Avalon-MM时序图编写读写代码。master_read有效时将数据发送到master_readdata。master_write有效时,将master_writedata数据写入FPGA。

file

	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

file

  • 运行如下指令
source jtag.tcl   //tcl 脚本
config output_files/test.sof   //下载文件
start_jtag    //打开jatg master服务
test     //测试读写函数
end_jtag  //关闭jatg master服务

file
公众号 硬码农二毛哥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硬码农二毛哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值