jtag的时序可以参考文章
https://blog.csdn.net/cy413026/article/details/127894360
也可以参考xilinx的jtag2axi的databook
jtag2axi的简单说明
这里简单记录jtag2axi的一些学习心得,具体实现方案待补充
这里以jtag转axi slave为例说明,这种IP常用在soc用jtag配置IP时使用,jtag转axi,最终axi转apb
jtag2axi不支持多ID
jtag2axi不支持outstanding
不支持qos,cache等这些复杂的特性
读写不能同时处理,一次只能处理一个通道
所以最简单的情况就是AW+W/B,AR/R这些每一步处理都是一个状态机,输出ready是一个状态,等到valid之后跳转;输出valid之后等待输入ready后在跳状态。
设该状态机为axi_trans_state
发awcmd-->等待被接受-->发w数据--->等待被接受--->等待b通道响应--->rdy状态--->下一次写或读。
在完成一次写或读trans之间是不能被打断 有其他状态的。
rdy状态下 可以通过tdi配置一些prot,cache,axsize
axlen只支持0,也即只有一个beat
由于jtag的tdi和tdo都只有1bit,所以写数据wdata只能是将tdi的数据串转并拼成wdata,把rdata并转串分多拍写道tdo
至于tms导致的jtag_curr_state的变化和axi_trans_state的关系 还未思考清楚
可以用arm coresight的组件完成jtag2axi的转换,arm coresight的技术手册 路径如下节描述
因为是在coreSight里面所以这个jtag2axi做的相当复杂,实际上不考虑axsize,axcache,axprot,可以做的相对简单。
coresight中的jtag2axi是一下几个组件集成而来:
cxdapaxiap
cxdapbusic
cxdapswjdp
而且有且仅有上面三个module集成而来。具体每个module是干嘛的也可参看下一节Table1-1
coresight简介
arm coreSight soc-400 R3P1 技术参考手册
coresight是为复杂soc的debug和trace提供解决方案的,它的所有组件可以分为以下几类
control and access component
sources
links
sinks
timestamp
有几个缩略词
DAP:debug access port
ATB: advanced trace bus
coresight中常用的是apb和atb总线。当然还有jtag、axi、ahb。所以会涉及到这些总线之间的协议转换和同步桥,异步桥。
coresight主要包含以下的block