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的更多相关文章

  1. Rocket - jtag - JtagTap

    https://mp.weixin.qq.com/s/0u9jM2u-FkTlrk3QNuZaBw 简单介绍JtagTap的实现. 1. 简单介绍 定义TAP(Test Access Port)所需要 ...

  2. Rocket - jtag - JtagStateMachine

    https://mp.weixin.qq.com/s/cFXVOBHayV2w27jpT5RglA 简单介绍JtagStateMachine的实现. 1. 简单介绍 根据IEEE 1149.1-200 ...

  3. STM32C8T6 JTAG使用到PB3|PB4|PA13|PA14|PB15端口做普通IO时,需禁止JTAG!

    GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIO ...

  4. 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 ...

  5. 偶遇STM32 JTAG和SWD口(调试)被禁用无法下载,已经粗暴解决!

    处女座,为了板子走线美观,拉线方便,在项目量产前,还更改了原来外设的IO口,埋头苦干一天,移植ok,发现PB3一直不听使唤,好,加班检查代码,检查初始化,时钟,IO对应,然后试PCB板,是否短路,断路 ...

  6. (转)小心FPGA的JTAG口(上电和下电顺序)

    同志们,根据ALTERA官方FAE(现场应用工程师)的强烈建议,请注意不要随意带电插拔你的JTAG下载接口,否则会损坏FPGA芯片的JTAG口信号管脚.现象:在排除了下载线的问题后,还是不能访问FPG ...

  7. JTAG 学习 -SVF格式

    yxr注: 主要zt,附上自己的心得如下: 1)反观SVF文件,除了设置必要的条件之外(初始条件和TIR等四条命令),真正的运行命令就两条,SIR向JTAG TAP状态机的IR寄存器送命令,SDR往J ...

  8. [异常解决] JTAG 与STM32的SWD连接接线方式

    如果我们的板子上只留了4个接口:V3.3,SWDIO,SWDCLK,GND.那么和JTAG的连接关系参见下图: dd400cf22b5c01e57a6c9e198d5383a0_189.jpg (0 ...

  9. Quartus 11.0 的AS 下载方式和JTAG下载jic文件的方式

    FPGA下载的三种方式:主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式: AS由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS系列.如EPCS1,EP ...

随机推荐

  1. Linux查看redis占用内存的方法

    redis-cli auth 密码info # Memory used_memory:13490096 //数据占用了多少内存(字节) used_memory_human:12.87M //数据占用了 ...

  2. JDBC09 CLOB文本大对象

    CLOB(Character Large Object) -用于储存大量的文本数据 BLOB(Binary Large Object) -用于存储大量的二进制数据 -大字段有些特殊,不同数据处理的方式 ...

  3. python 基础应用4

    1.列表所有元素全部单独输出 #所有元素全部单独输出 li = [1,2,3,'taibai',[4,5,6,'taibaia']] for i in li: if type(i) == list: ...

  4. Python脚本:linux上将筛选的文件夹复制到另一个目录,保存目录结构以及文件和文件夹操作方法

    import os,shutil def newDir(dir_path): if not os.path.exists(dir_path): os.makedirs(dir_path) def co ...

  5. Python 的缩进是不是反人类的设计?

    前些天,我写了<Python为什么使用缩进来划分代码块?>,文中详细梳理了 Python 采用缩进语法的 8 大原因.我极其喜欢这种简洁优雅的风格,所以对它赞美有加. 然而文章发出去后,非 ...

  6. mysql连表查空,查询第二张表中没有第一张表中的数据

    select consumer_id,user_name,mobile,invite_code from csr_consumer where invite_count<(select coun ...

  7. webservice初级

    在学习webservice的时候,经常将ns和url花了好久时间才理解过来,这里备份下! 首先定义接口: @WebService public interface IService { @WebRes ...

  8. scikit-learn 梯度提升树(GBDT)调参笔记

    在梯度提升树(GBDT)原理小结中,我们对GBDT的原理做了总结,本文我们就从scikit-learn里GBDT的类库使用方法作一个总结,主要会关注调参中的一些要点. 1. scikit-learn ...

  9. Elasticsearch URI search 查询语法整理

    Elasticsearch URI search 一.请求体查询与空查询 1. 请求体查询(request body search) 简单查询语句(lite)是一种有效的命令行adhoc查询.但是,如 ...

  10. 1.3Go环境搭建之Windows

    1.1.2. Golang SDK SDK 的全称(Software Development Kit 软件开发工具包) 2) SDK是提供给开发人员使用的,其中包含了对应开发语言的工具包 1.1.3. ...