前言
無(wú)意間發(fā)現(xiàn)了JTAG to AXI Master IP核,發(fā)現(xiàn)這個(gè)東西對(duì)于FPGA單獨(dú)調(diào)試應(yīng)該比較有用,故而來(lái)研究了一番,發(fā)現(xiàn)這個(gè)東西切實(shí)很好用而且也比較簡(jiǎn)單。想起我之前為了構(gòu)造一個(gè)指令系統(tǒng)專門寫了一個(gè)UART2BUS,如果當(dāng)時(shí)我知道使用JTAG to AXI Master IP核,那我可能就直接使用這個(gè)了,所以說(shuō)真的是要不停的學(xué)習(xí)才能不會(huì)落伍呀
用法
很多FPGA工程都是通過(guò)總線寄存器來(lái)進(jìn)行時(shí)序的控制,參數(shù)的傳遞等等。那JTAG to AXI Master IP就提供了一種這樣的便捷的方法,而且只需要JTAG接口就可以了,這個(gè)接口對(duì)于每一個(gè)FPGA板卡來(lái)說(shuō)肯定是必備的,而且調(diào)試環(huán)境也是Vivado現(xiàn)成提供的。在項(xiàng)目初期,F(xiàn)PGA單獨(dú)進(jìn)行開(kāi)發(fā)的時(shí)候(或者軟件部分還沒(méi)有參與進(jìn)來(lái)的時(shí)候),利用JTAG to AXI Master IP 相關(guān)調(diào)試的工作就可以不需要軟件人員的配置而繼續(xù)進(jìn)行下去。
這里我套用我的博文《ZYNQ開(kāi)發(fā)系列——使用AXI4LITE接口進(jìn)行PS和PL交互》中的工程,在其基礎(chǔ)上將JTAG to AXI Master IP添加上去
基地址和地址區(qū)間設(shè)置為與PS相同的,這樣相當(dāng)于不僅僅ARM可以對(duì)BUS_AXI進(jìn)行操作,JTAG_AXI_0這個(gè)IP核也是可以對(duì)BUS_AXI進(jìn)行操作
就是這么簡(jiǎn)單,什么手冊(cè)都沒(méi)看,看著端口名字就知道怎么連接了。
Tcl指令
我們可以打開(kāi)vivado界面通過(guò)按鈕來(lái)找到FPGA器件后,然后再輸入tcl指令,而在這里,我為了以后使用的便利性,我就不打開(kāi)vivado了。直接打開(kāi)vivado tcl shell輸入指令來(lái)操作,為后面的操作腳本化來(lái)做準(zhǔn)備。
open_hw connect_hw_server open_hw_target current_hw_device [get_hw_devices xc7z030_1] refresh_hw_device -update_hw_probes false [lindex [get_hw_devices xc7z030_1] 0] proc ReadReg { address } { create_hw_axi_txn read_txn [get_hw_axis hw_axi_1] -address $address -type read run_hw_axi read_txn set read_value [lindex [report_hw_axi_txn read_txn] 1]; delete_hw_axi_txn read_txn set tmp addr=0x append tmp $address append tmp , data=0x append tmp $read_value return $tmp } proc WriteReg { address data } { create_hw_axi_txn write_txn [get_hw_axis hw_axi_1] -address $address -data $data -type write run_hw_axi write_txn set write_value [lindex [report_hw_axi_txn write_txn] 1]; delete_hw_axi_txn write_txn }讀地址測(cè)試:
ReadReg 43c00000 ReadReg 43c00004 ReadReg 43c00008 ReadReg 43c0000c ReadReg 43c00010
讀寫測(cè)試:
WriteReg 43c0001c 00000001 ReadReg 43c0001c WriteReg 43c0001c 00000002 ReadReg 43c0001c
大功告成?。?/p>
展望
這確實(shí)是一個(gè)比較方便的調(diào)試手段,不需要額外增加其他硬件資源,而JTAG下載線是FPGA調(diào)試所必備的。這種調(diào)試手段確實(shí)能夠提升效率,后續(xù)我要研究下如何使用我的vb.net的上位機(jī)來(lái)進(jìn)行操作,通過(guò)上位機(jī)來(lái)控制,做到每個(gè)寄存器地址的實(shí)時(shí)掃描以及解析,將又不失為一種更為高效的調(diào)試手段。 我在網(wǎng)上看到有一篇《JTAG to AXI Master的API函數(shù)讀寫操作》,看起來(lái)似乎不錯(cuò),準(zhǔn)備研究和嘗試一下,同時(shí)或者我自己將tcl指令封裝起來(lái)也不失為另外一種實(shí)現(xiàn)方法。
-
寄存器
+關(guān)注
關(guān)注
31文章
5273瀏覽量
119657 -
Xilinx
+關(guān)注
關(guān)注
71文章
2147瀏覽量
120712 -
總線
+關(guān)注
關(guān)注
10文章
2851瀏覽量
87844 -
IP核
+關(guān)注
關(guān)注
4文章
320瀏覽量
49335 -
efpga
+關(guān)注
關(guān)注
1文章
32瀏覽量
15661
原文標(biāo)題:FPGA開(kāi)發(fā)技巧備忘錄——Xilinx JTAG to AXI Master IP的使用
文章出處:【微信號(hào):FPGA十年老鳥,微信公眾號(hào):FPGA十年老鳥】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論