探究Linux与FPGA之间的JTAG通讯技术 (linux fpga jtag)

随着数字电子技术的不断发展,FPGA(Field Programmable Gate Array)芯片逐渐成为了数字电子设计中不可或缺的组成部分。而Linux操作系统作为一种高效稳定的开源操作系统,已经广泛应用于各种计算机系统。因此,如何实现FPGA芯片与Linux操作系统的交互,已经成为了FPGA芯片应用的重要问题。JTAG(Joint Test Action Group,联合测试动作组)通讯技术被广泛应用于FPGA芯片的编程和调试过程中,JTAG通讯技术又是怎样实现FPGA芯片与Linux操作系统的交互的呢?

本文将从以下几个方面:JTAG通讯基本概念、JTAG通讯的协议规范、JTAG通讯在FPGA芯片的应用、JTAG通讯在Linux操作系统中的应用以及衍生出的一些问题。

一、JTAG通讯基本概念

JTAG通讯技术由美国IEEE(美国电气和电子工程师协会)制定的IEEE 1149.1标准定义,是一种芯片级测试和编程协议。该协议可用于标准的无缝集成电路(ASIC)、数字信号处理器(DSP)和微控制器或微处理器(微处理器也可以是FPGA)上。通过JTAG通讯接口,用户可在芯片出货前或在用户场景下对芯片进行编程、配置或测试。

JTAG通讯技术实现的基础是Test Access Port(TAP,测试访问端口)和Test Access Port Controller(TAP Controller,测试访问端口控制器),其中TAP是JTAG通讯内部的逻辑单元,负责数据的输入和输出,而TAP Controller则是控制TAP的外部设备,负责控制TAP进行数据的输入、输出以及状态的切换。

二、JTAG通讯的协议规范

JTAG通讯的协议规范主要包括两个部分:1)TAP控制状态机定义;2)TAP数据寄存器的定义。

TAP控制状态机定义(见图1):

![image-1.png](attachment:image-1.png)

图1 TAP控制状态机定义

在TAP控制状态机中,有五个状态,分别是Test-Logic-Reset(TLR,测试逻辑复位)状态、Run-Test/Idle(RTI,运行测试/闲置)状态、Select-DR-Scan(SDRS,选择数据寄存器扫描)状态、Capture-DR(CDR,捕获数据寄存器)状态和Shift-DR(SDR,移位数据寄存器)状态。TAP的控制状态机根据TCK时钟信号进行状态的切换,而TCK时钟信号由TAP Controller控制。

TAP数据寄存器的定义

TAP数据寄存器指的是寄存器链(Register Chn)中的寄存器,寄存器链是由多个寄存器级联而成的链形结构。在寄存器链中,有三种类型的寄存器:Instruction Register(IR,指令寄存器)、Data Register(DR,数据寄存器)、Bypass Register(BYP,旁路寄存器)。

其中,IR寄存器用于存放特定的指令码,而DR寄存器则用于寄存芯片内部的数据。BYP寄存器则充当了信号旁路器的角色,将TDI的数据直接传送到TDO线上,而不经过任何处理。

三、JTAG通讯在FPGA芯片的应用

在FPGA芯片中,JTAG通讯技术主要有两个应用:FPGA芯片的编程和调试。

FPGA芯片的编程主要是通过JTAG通讯技术将开发板中的bit文件下载到FPGA芯片中。这一过程主要分为两步:首先使用JTAG通讯技术将FPGA芯片配置为按位流式配置模式(Bitstream Configuration Mode);然后将开发板中的bit文件下载到FPGA芯片的数据寄存器中,最后通过JTAG通讯技术将bit文件传送到FPGA芯片的配置存储器中(Configuration Memory)。

在FPGA芯片的调试中,JTAG通讯技术主要用于测试芯片的正常工作状态以及芯片的一些内部状态。直接借助JTAG通讯技术,可以连通芯片内部数据和信号,将其输入/输出到测试工具中,从而观察芯片的正常工作状态并检测芯片是否存在故障点。

四、JTAG通讯在Linux操作系统中的应用

在Linux操作系统中,JTAG通讯技术主要用于FPGA芯片的编程、配置和调试。常用的JTAG调试工具有GDB、OpenOCD、JTAG Tools等。通过这些工具,用户可以在Linux操作系统中实现对FPGA芯片的编程、下载bit文件、调试芯片等操作。

当然,在Linux操作系统中使用JTAG通讯技术也存在一些问题。例如,JTAG通讯的速率会受到Linux操作系统的中断频率、IO负载和其他因素的干扰,从而影响JTAG通讯速率的稳定性。此外,在Linux操作系统中使用JTAG通讯技术也需要特定的硬件和驱动程序,从而增加了系统的配置和部署难度。

五、衍生出的一些问题

除了上面提到的问题,还有一些细节问题需要注意,下面列举几个:

1. JTAG通讯接口的电气特性:在实际应用中,需要根据芯片的物理接口特性来选择合适的JTAG通讯接口及通讯速率,以确保JTAG通讯的成功运行。

2. TAP状态机的缺省状态:在JTAG通讯中,当TAP状态机一旦处于错误状态,要通过TLR状态将TAP状态机返回到初始状态。因此,在FPGA芯片设计和调试时,需要特别关注TAP状态机的缺省状态,以免出现调试难题。

3. TCK时钟的设置:在使用JTAG通讯技术进行调试时,需要特别关注TCK时钟的设置。如果TCK时钟的速率过快,可能会出现芯片内部时序的不稳定;而如果TCK时钟的速率过慢,则会导致通讯速率降低。

4. 设计TAP Controller时需要考虑的问题:在设计TAP Controller时,需要特别考虑JTAG通讯的并发性、时序要求、通讯速率要求等方面的问题,以确保JTAG通讯的正确性和稳定性。

六、

本文主要介绍了JTAG通讯技术的基本概念、协议规范以及在FPGA芯片和Linux操作系统中的应用。通过这些内容的介绍,我们可以更好地了解JTAG通讯技术在数字电子设计中的地位和应用,为开展更加高效、稳定的数字电子设计提供了有力的支撑。

相关问题拓展阅读:

Altera的FPGA的AS,PS和Jtag配置模式的区别

主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式。

AS模式(active

serial

configuration

mode):FPGA器件每次上电时作为控制器,由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,从配置器件EPCS主动发出读取数据信号,从而把EPCS的数据读入FPGA中,实现举棚对FPGA的编程配置数据通过DATA0引脚送入

FPGA,配置数据被同步在DCLK输入上,1个时钟周期传送1位数据。

PS模式(passive

serial

configuration

mode):则由外部计算机或控制器控制配置过程。通过加强型配置器件(EPC16,EPC8,EPC4)等配置器件来完成,EPCS作为控制器件,把FPGA当作存储器,把数据写人到FPGA中,实现对FPGA的编程。该模式可以实现对FPGA在线可编程。在下载配置的时候对于Cyclone

II的器件,如EP2C8,在JTAG下载方式对应.sof,AS下载方式对应.pof。

JTAG:JTAG是直接烧到FPGA里面的

由于是SRAM

断电后要重烧,AS是烧到FPGA的配置芯片里保山梁存的

每次上电就写正唯则到FPGA里。

关于linux fpga jtag的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 探究Linux与FPGA之间的JTAG通讯技术 (linux fpga jtag)