CPLD在线升级

news2024/12/23 8:44:54

文章目录

  • 前言
  • 一、JTAG芯片介绍
  • 二、JTAG协议分析
    • 1.TAP状态机


前言

CPLD(Complex Programmable Logic Device)是一种可编程逻辑器件,可以用于实现数字逻辑电路的功能。CPLD通常包含可编程逻辑单元(如逻辑门阵列)和可编程的连接资源(如可编程互连)。CPLD的在线升级是指在运行时对CPLD进行固件升级,以更新其逻辑功能或修复错误。

要进行CPLD的在线升级,通常需要以下步骤:

  1. 准备升级文件:首先,需要准备包含新固件的升级文件。这个文件通常是由CPLD供应商提供的。升级文件可以是二进制文件、Intel HEX文件或其他特定格式的文件。

  2. 连接CPLD:将CPLD与升级工具连接起来。连接方式可以是通过JTAG接口、SPI接口或其他特定的接口。

  3. 启动升级工具:启动CPLD的升级工具。这个工具可以是供应商提供的专用工具,也可以是通用的编程工具,如Quartus Prime(用于Altera CPLD)或Xilinx ISE(用于Xilinx CPLD)。

  4. 选择目标设备:在升级工具中选择要升级的目标CPLD设备。这通常涉及选择正确的设备型号和连接接口。

  5. 导入升级文件:将升级文件导入升级工具。工具将解析文件并准备进行升级。

  6. 执行升级:执行升级操作。这通常涉及擦除CPLD的当前固件,然后将新固件编程到CPLD中。

  7. 验证升级:升级完成后,可以使用升级工具进行验证,以确保新固件已正确编程到CPLD中。


一、JTAG芯片介绍

具有JTAG口的芯片都有如下JTAG引脚定义:
TCK——测试时钟输入;TCK为TAP的操作提供了一个独立的、基本的时钟信号,TAP的所有操作都是通过这个时钟信号来驱动的。

TDI——测试数据输入接口,数据通过TDI输入JTAG口;所有要输入到特定寄存器的数据都是通过TDI接口一位一位串行输入的(由TCK驱动)

TDO——测试数据输出接口,数据通过TDO从JTAG口输出;所有要从特定的寄存器中输出的数据都是通过TDO接口一位一位串行输出的(由TCK驱动)。

TMS——测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式。TMS信号在TCK的上升沿有效。TMS信号用来控制TAP状态机的转换。通过TMS信号,可以控制TAP在不同的状态间相互转换。

MCPLD升级使能信号
RCPLD升级使能信号

二、JTAG协议分析

JTAG(Joint Test Action Group)是一种用于测试和调试电子设备的标准接口和协议。它提供了一种在芯片级别上进行测试、调试和编程的能力。JTAG协议定义了一组命令和信号,用于在芯片上进行测试、配置和调试操作。

JTAG协议包括以下几个主要组成部分:

  1. TAP(Test Access Port)控制器:TAP控制器是JTAG协议的核心组件,它负责控制JTAG操作的执行。TAP控制器包含一个状态机,用于管理JTAG操作的状态转换。它还提供了与外部设备(如处理器、调试器或测试设备)进行通信的接口。

  2. TAP控制器状态机:TAP控制器的状态机定义了JTAG操作的不同状态和状态之间的转换规则。常见的状态包括测试逻辑重置(Test Logic Reset,TLR)、运行-测试/配置(Run-Test/Idle,RTI)、选择-测试/配置(Select-DR-Scan/IR-Scan,SDR/SIR)等。

  3. 数据寄存器链(DR):数据寄存器链是一系列连接在JTAG链上的寄存器,用于进行数据的输入和输出。DR链可以包含多个寄存器,每个寄存器可以存储一定数量的数据。

  4. 指令寄存器链(IR):指令寄存器链是用于加载和执行JTAG指令的寄存器链。它类似于数据寄存器链,但用于传输和处理指令数据。

在使用JTAG进行测试、调试或编程时,通常遵循以下步骤:

  1. 初始化:通过TAP控制器将JTAG链上的所有设备初始化到一个已知状态。

  2. 选择设备:选择要与之通信的目标设备,将其与TAP控制器连接。

  3. 选择-测试/配置(SDR/SIR):将TAP控制器切换到选择-测试/配置状态,以选择要进行测试或配置的寄存器链(DR或IR)。

  4. 数据传输:在选择-测试/配置状态下,通过TAP控制器进行数据的输入和输出。可以通过DR链传输测试数据或配置数据,通过IR链传输指令数据。

  5. 状态转换:根据需要,通过TAP控制器在不同的状态之间进行转换,以执行特定的操作,如测试、配置或调试。

JTAG协议分析可以涉及对JTAG信号和命令的解析、状态机的分析以及数据传输的分析等。这通常需要使用JTAG分析工具或逻辑分析仪等设备来捕获和分析JTAG信号,并使用相关的协议分析软件进行解析和分析。

需要注意的是,JTAG协议在不同的芯片和设备之间可能会有一些差异,因此在进行JTAG协议分析时,需要参考相关芯片或设备的文档和规范,以了解其特定的JTAG实现和功能。

1.TAP状态机

TMS、TCK、TDI、TDO
JTAG数据操作是基于移位寄存器的
状态机每一个状态有两个状态触发——TCK上升沿和TMS电平决定跳转分支
在这里插入图片描述
TAP 控制器是一个基于 TMS 的同步状态机 (Test Mode Select) 和 TCK (Test Clock) 信号并控制 TAP IEEE 1149.1 标准定义的电路操作序列。 对于当前莱迪思,TCK 信号可以以最大 25 MHz 的频率驱动 符合 IEEE 1532 标准的设备。
在 Shift-DR 状态下,存在一个解码器来选择哪个移位寄存器是 启用并将其连接在 TDI 和 TDO 之间。以下是移 寄存器:地址移位寄存器、数据移位寄存器、32位移位寄存器、 和旁路。32 位移位寄存器用于存储 ID 代码和 用户代码。输入任何寄存器的第一位被放入 MSB,随着附加位的计时,数据向 TDO 移动一位。

1. SIR case 语句首先提取寄存器的大小。规模 稍后将用于指示将发送或读回多少位数据  从设备。然后处理器将设备转换为安全状态  IRPAUSE,然后到状态 SHIFTIR。如果 HIR 存在(参见 HIR 案例  语句),那么处理器将绕过 HIR。SIR 子开关是一个 基于字节码的开关,之后可能会找到  SIR 字节码。
2. TDI字节码表示有数据需要移入设备。处理器将设置 TDI 索引变量指向该位置 TDI 数据在算法缓冲区中开始的位置。  
3. DTDI字节码表示有数据需要移入装置。与 TDI 字节码不同,DTDI 字节码表示数据  将来自数据缓冲区。如果数据缓冲区已压缩  上,将检查数据帧的第一个字节以查看该帧是否为 确实可以压缩。
4. TDO字节码表示有数据需要读取,从设备验证。处理器会将 TDO 索引变量设置为指向算法缓冲区中 TDO 数据开始的位置。
5. DTDO字节码表示有数据需要读取  从设备验证。与 TDO 字节码不同,DTDO 字节码  表示数据将来自数据缓冲区。如果数据缓冲区有压缩开启,会检查数据帧的第一个字节看  如果框架确实是可压缩的。  
6. MASK字节码表示有需要使用的掩码数据  将 TDO 值与扫描出的实际值进行比较时  设备。处理器将设置 MASK 索引变量指向该位置  MASK 数据在算法缓冲区中的起始位置。 
7.  UNKNOWN case 语句是无法识别的字节码的默认值。  这种情况会返回错误代码 ERR_ALGO_FILE_ERROR 或 -5,以指示  算法中的错误。  
8. CONTINUE 字节代码终止 SIR 指令。当这个字节是  遇到,表示TDI、DTDI、TDO、DTDO、MASK索引  指向它们的正确位置并且处理器已准备好发送或  从设备读取和验证数据。

如果尚未设置 CASCADE,则处理器将设备转移到 安全状态 IRPAUSE,然后到 SHIFTIR。如果 HIR 存在(参见 HIR 案例 语句),那么处理器将绕过 HIR。SIR 子开关是一个 基于字节码的开关,之后可能会找到 SIR 字节码。

字节码 CONTINUE 出现在每个 SIR 和 SDR 的末尾 指令作为终结者。
字节码 END_FRAME 出现在 VME 中每一帧的末尾 数据作为终结符。
使用的压缩方案基于连续出现 帧中的0xFF字节。这个字节无处不在,因为一个全0xFF 的数据文件 是一个空白模式。当连续数的Ñ 0xFF的字节是 遇到,VME 数据文件将有字节0xFF后跟 数字n转换为十六进制,其中n不能超过255。对于 例如,如果以下是部分数据框 FFFFFFFFFFFFFFFFFFFF12FFFFFF 结果压缩数据将是 0xFF 0x0A 0x12 0xFF 0x03 当处理器遇到第一个字节0xFF 时,它会获取下一个字节 确定0xFF被压缩了多少次。下一个字节是0x0A , 这是十六进制的十。这指示处理器0xFF是 压缩十次。接下来的字节是0x12 ,按原样处理。 下一个字节再次是0xFF后跟0x03 ,它指示处理器 该0xFF的被压缩的三倍。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/792631.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单向链表SingleLink

1.实现单向链表 public class SingleLink {private Node head;private int size;private class Node{private Object data;private Node next;public Node(Object data) {this.data data;}}public SingleLink() {// TODO Auto-generated constructor stubhead null;size 0;}…

Android 通用带箭头提示窗

简介 自定义PopupWindow, 适用于提示类弹窗。 使用自定义Drawable设置带箭头的背景,测试控件和弹窗的尺寸,自动设置弹窗的显示位置,让箭头指向锚点控件的中间位置,且根据锚点控件在屏幕的位置,自动适配弹窗显示位置。…

作为前端应该了解的后端常识

1、前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 什么是服务端 服务端,又称后端、server 端前端是用户可见、可操作的部分,如树枝树叶服务端为前端提供 “支撑”和 “营养”&…

Ubuntu22.04 locale出错

问题: locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory 解决参考&#xff…

下载Google113版本无更新组件,禁止更新

自动化测试下载谷歌驱动需要与浏览器版本一致,需要设置google浏览器禁止自动更新,这样google就可以不再自动更新了,目的是防止浏览器更新后,那么浏览器驱动也需要同时更新,这样在工作中会十分麻烦。 因此这里提供无更…

day45-SpringMVC

0目录 SpringMVC 1.2.3 1.SpringMVC 1.1 引入依赖&#xff1a; <!--SpringMVC的依赖--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0&…

如何在 docker hub 分享自己的镜像?看完不踩坑

前言&#xff1a;前几天vip课讲了如何创建配置jenkins容器&#xff0c;怕大家踩坑&#xff0c;我提前打好了jenkins镜像&#xff0c;直接让大家通过命令去拉取镜像就可以了。 然而&#xff0c;很多好学的同学来问这个是怎么操作的。今天就来聊一聊&#xff0c;怎么将自己打好的…

centos 8安装A10显卡驱动-AI人工智能

centos 8安装A10显卡驱动命令:./NVIDIA-Linux-x86_64-535.54.03.run --kernel-source-path/usr/src/kernels/4.18.0-147.el8.x86_64 安装完毕; 测试: 检查驱动版本号: nvidia-smi 验证驱动模块已加载: lsmod | grep nvidia

centos7安装mysql数据库详细教程及常见问题解决

mysql数据库详细安装步骤 1.在root身份下输入执行命令&#xff1a; yum -y update 2.检查是否已经安装MySQL&#xff0c;输入以下命令并执行&#xff1a; mysql -v 如出现-bash: mysql: command not found 则说明没有安装mysql 也可以输入rpm -qa | grep -i mysql 查看是否已…

CMIP6数据处理及在气候变化、水文、生态等领域技术教程

详情点击链接&#xff1a;最新CMIP6数据处理及在气候变化、水文、生态等领域技术教程 一&#xff0c;CMIP6中的模式比较计划 1.1 GCM 全球气候模型&#xff08;Global Climate Model, GCM&#xff09;&#xff0c;也被称为全球环流模型或全球大气模型&#xff0c;是一种用于…

vue项目中为高德地图信息窗体添加点击事件踩坑

这里遇到了一个坑&#xff0c;在给信息窗体中的内容添加点击事件时&#xff0c;信息窗体弹出的时候点击事件自动执行了。在此记录一下踩坑和解决过程。 部分代码如下&#xff1a; this.map.on(click, e > {const item {val: 1234,name: zhang}const content <li οnc…

快解析内网穿透帮我实现零成本自建网站

我是一名 90后&#xff0c;大概就是大家嘴里“别人家的孩子”&#xff0c;大学学的是IT专业&#xff0c;毕业后结婚、生子一切按部就班 。随波逐流工作了几年&#xff0c;父母年龄变大&#xff0c;培养孩子投入也增加&#xff0c;逐渐开销变大&#xff0c;可是我的薪资还处于中…

【设计模式】详解观察者模式

文章目录 1、简介2、观察者模式简单实现抽象主题&#xff08;Subject&#xff09;具体主题&#xff08;ConcreteSubject&#xff09;抽象观察者&#xff08;Observer&#xff09;具体观察者&#xff08;ConcrereObserver&#xff09;测试&#xff1a; 观察者设计模式优缺点观察…

使用serverless实现从oss下载文件并压缩

公司之前开发一个网盘系统, 可以上传文件, 打包压缩下载文件, 但是在处理大文件的时候, 服务器遇到了性能问题, 主要是这个项目是单机部署.......(离谱), 然后带宽只有100M, 现在用户比之前多很多, 然后所有人的压缩下载请求都给到这一台服务器了, 比如多个人下载的时候带宽问…

springboot解决跨域

跨域问题指的是不同站点之间&#xff0c;使用 ajax 无法相互调用的问题。跨域问题本质是浏览器的一种保护机制&#xff0c;它的初衷是为了保证用户的安全&#xff0c;防止恶意网站窃取数据。但这个保护机制也带来了新的问题&#xff0c;它的问题是给不同站点之间的正常调用&…

“单片机定时器:灵活计时与创新功能的关键“

学会定时器的使用对单片机来说非常重要&#xff0c;因为它可以帮助实现各种时序电路。时序电路在工业和家用电器的控制中有广泛的应用。 举个例子&#xff0c;我们可以利用单片机实现一个具有按钮控制的楼道灯开关。当按钮按下一次后&#xff0c;灯会亮起并持续3分钟&#xff…

Android 中 app freezer 原理详解(一):R 版本

基于版本&#xff1a;Android R 0. 前言 在之前的两篇博文《Android 中app内存回收优化(一)》和 《Android 中app内存回收优化(二)》中详细剖析了 Android 中 app 内存优化的流程。这个机制的管理通过 CachedAppOptimizer 类管理&#xff0c;为什么叫这个名字&#xff0c;而不…

第五章:linux进程控制

系列文章目录 文章目录 系列文章目录前言进程创建fork函数初识fork写时拷贝fork常规用法fork调用失败的原因 进程终止进程退出场景进程的退出码系统自带的退出码strerrorC语言提供的退出码 进程退出深度理解进程常见退出方法正常退出缓冲区 进程等待进程等待必要性进程等待的方…

SAP中获取成品物料的全部配置(SAP配置BOM攻略四)

基于系统内的全配置BOM设定&#xff0c;全部的子配置是由四大配置产生&#xff08;即车身颜色、内饰颜色、车型、选装&#xff09;。如果按某一车型&#xff0c;要带出该车的全部BOM子物料&#xff0c;首先需要具备通过四大配置&#xff0c;得到全部子配置的能力&#xff0c;然…

【iVX】在百花齐放的低代码平台中独领风骚

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后端的开发语言A…