Rocket - jtag - JtagShifter
https://mp.weixin.qq.com/s/pHtrlmSCPqzlDdfj3qkNPQ
简单介绍JtagShifter的实现。
1. 简单介绍
实现移位寄存器链,包含并行Capture和Update功能,用于实现从TDI到IR/DR,再到TDO的串行移位路径。
2. ShifterIO
定义Shifter的输入输出接口:
a. data:被移位(移入移出)的数据;
b. shift:控制是否移位(high in the ShiftIR/DR state);
c. capture:控制是否捕获数据(high in CaptureIR/DR state);
d. update:控制是否更新数据(hign in UpdateIR/DR state);
另外:
a. 多个ShifterIO可以组合在一起成为一个shifter chain;
b. chainControlFrom方法只是把控制接口串在一起,并没有串接data;
3. ChainIO
定义包含一个输入移位器接口和一个输出移位器接口的移位器链:
4. Capture
定义CaptureIO:
其中,
a. bits:输入信号,从中输入要捕获的数据(data to capture);
b. capture:输出信号,只是是否在捕获数据;
5. Chain
定义会引入一个ChainIO输入输出接口的特征:
6. JtagBypassChain
定义包含bypass寄存器的移位器链,按照规范中的说法,是select the bypass register to be connected for serial access between TDI and TDO in the Shift-DR controller state:
1) io
输入输出接口是一个ChainIO,用于把数据串行移入移出:
2) reg
reg即是bypass register,只有一个比特:
reg中的数据输出到chainOut这个ShifterIO:
reg中的数据从chainIn中来:
这里同时也考虑到capture的情况,可以参考规范。
3) assert
这个断言后面还会出现,用于断定capture/update/shift这三个值不能同时为真:
7. CaptureChain
包含并行数据捕获功能的移位器链:
1) io
在ChainIO的基础上,添加CaptureIO:
2) n
n是并行捕获数据的宽度,同时也是构造移位器链所需要的单比特寄存器数:
3) regs
regs用于存放并行捕获的数据,同时也支持移位:
4) 移位
regs可以通过移位逐位输入输出。
a. 串出
b. 串入
c. 移位
5) 捕获
regs也可以通过捕获并行输入输出。
a. 并行捕获
并行(一次性)地把io.capture.bits中的数据输入到regs中:
b. io.capture.capture赋值
相较于io.chainIn.shift通过外部输入,io.capture.capture的值根据io.chainIn.capture和io.chainIn.shift来决定:
8. CaptureUpdateChain
包含并行捕获和更新的移位寄存器链:
1) io
在ChainIO的寄存上加入CaptureIO和update相关的数据:
其中,更新相关的数据使用ReadyValid接口;
2) captureWidth/updateWidth/n
a. captureWidth:捕获数据的宽度;
b. updateWidth:更新数据的宽度;
c. n:两者中的较大值;
n取较大值,因为生成的寄存器既要并行输入要捕获的数据,也要并行输出更新的数据:
3) 移位
a. 串出
b. 串入
c. 移位
4) 捕获
把io.capture.bits并行输入到regs中:
这里使用math.min(n, captureWidth)是没有必要的,可以直接使用captureWidth;因为n ≥captureWidth,所以两者中较小的肯定是captureWidth。
5) 更新
在判断到io.chainIn.update为真时,会把io.update.valid值为真:
此时由regs产生的updateBits就并行更新(parallel update)输出到io.update.bits中了:
6) 断言
这个断言的意义在这里就更明确了,用于断定capture/update/shift这三个值不能同时为真:
Rocket - jtag - JtagShifter的更多相关文章
- Rocket - jtag - JtagTap
https://mp.weixin.qq.com/s/0u9jM2u-FkTlrk3QNuZaBw 简单介绍JtagTap的实现. 1. 简单介绍 定义TAP(Test Access Port)所需要 ...
- Rocket - jtag - JtagStateMachine
https://mp.weixin.qq.com/s/cFXVOBHayV2w27jpT5RglA 简单介绍JtagStateMachine的实现. 1. 简单介绍 根据IEEE 1149.1-200 ...
- STM32C8T6 JTAG使用到PB3|PB4|PA13|PA14|PB15端口做普通IO时,需禁止JTAG!
GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIO ...
- STM32用JLINK 烧写程序时出现NO Cortex-m device found in JTAG chain现象和解决方案
现象 CPU: STM32107VC 用JLINK 烧写程序时出现NO Cortex-m device found in JTAG chain 如图无法查找到硬件就是CPU 提示1:NO Cortex ...
- 偶遇STM32 JTAG和SWD口(调试)被禁用无法下载,已经粗暴解决!
处女座,为了板子走线美观,拉线方便,在项目量产前,还更改了原来外设的IO口,埋头苦干一天,移植ok,发现PB3一直不听使唤,好,加班检查代码,检查初始化,时钟,IO对应,然后试PCB板,是否短路,断路 ...
- (转)小心FPGA的JTAG口(上电和下电顺序)
同志们,根据ALTERA官方FAE(现场应用工程师)的强烈建议,请注意不要随意带电插拔你的JTAG下载接口,否则会损坏FPGA芯片的JTAG口信号管脚.现象:在排除了下载线的问题后,还是不能访问FPG ...
- JTAG 学习 -SVF格式
yxr注: 主要zt,附上自己的心得如下: 1)反观SVF文件,除了设置必要的条件之外(初始条件和TIR等四条命令),真正的运行命令就两条,SIR向JTAG TAP状态机的IR寄存器送命令,SDR往J ...
- [异常解决] JTAG 与STM32的SWD连接接线方式
如果我们的板子上只留了4个接口:V3.3,SWDIO,SWDCLK,GND.那么和JTAG的连接关系参见下图: dd400cf22b5c01e57a6c9e198d5383a0_189.jpg (0 ...
- Quartus 11.0 的AS 下载方式和JTAG下载jic文件的方式
FPGA下载的三种方式:主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式: AS由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS系列.如EPCS1,EP ...
随机推荐
- String、StringBuffer和StringBuilder比较
从执行速度效率来说: String为字符串常量,一旦创建就不能修改,第一次创建一个String对象,实例化后有初始值:当第二次创建String对象后,再次赋值,表面上看是改变了第一个String对象的 ...
- Day_10【常用API】扩展案例2_获取输入日期是哪一年的哪一天的星期几
分析以下需求,并用代码实现 1)已知日期字符串:"2015-10-20",将改日期字符串转换为日期对象 2)将(1)中的日期对象转换为日历类的对象 3)根据日历对象获取改日期是星期 ...
- Boosting算法总结(ada boosting、GBDT、XGBoost)
把之前学习xgb过程中查找的资料整理分享出来,方便有需要的朋友查看,求大家点赞支持,哈哈哈 作者:tangg, qq:577305810 一.Boosting算法 boosting算法有许多种具体算法 ...
- python语法学习第十一天--模块
容器----------->数据的封装 函数----------->语句的封装 类-------------->方法和属性的封装 模块----------->程序本身 导入: ...
- 一文带你了解Spring核心接口Ordered的实现及应用
前言 最近在看框架的时候,发现了这个接口,在此进行总结,希望能够给大家帮助,同时提升自己. order接口的大体介绍 Spring框架中有这个一个接口,名字叫Ordered,联想我们在数据库中应用的O ...
- Gulp的代理转发插件
需求背景 前后端分开部署时,需要单独为前端启动一个服务,如果使用gulp-connect的话,那么代理需要额外的插件来配置.首先说下为什么需要代理,gulp-connect是静态web的server( ...
- 使用 python 进行 面部合成
完整代码已上传至GitHub: https://github.com/chestnut-egg/Face 一. 准备工作 1. 此程序使用的是 Face++ 的API,所以需要去Face++官网注册账 ...
- 封装组件el-upload通过v-model (一): 上传单张图片
ElementUI 中的el-upload 上传图片 我进行了二次封装.(默认大家都是有一定的vue基础的,细节就不过多的讲了) 在项目中我们主要拿到图片或者其他的一些参数 ,我这里是上传后返回的Gu ...
- dot 使用教程
dot使用教程 安装: windows: 安装后需要将安装文件的bin目录添加到命令行, 可以在命令行生成图片 linux: mac: dot和vscode 安装插件:Graphviz (dot) l ...
- 2018-06-18 sublime代码编辑器
sublime代码编辑器:主流前端开发编辑器,体积较小,运行速度快,文本功能强大,支持VI扩展,linux下面有个自带的文本编辑神器,名字叫做:vi ,熟练vi模式可以大量减少使用鼠标的次数,从而增加 ...