基于PCIE与FPGA结合的多核JTAG调试代理系统的制作方法

文档序号:17095792发布日期:2019-03-13 23:51阅读:434来源:国知局
基于PCIE与FPGA结合的多核JTAG调试代理系统的制作方法

本实用新型涉及芯片调试领域,特别是一种基于PCIE与FPGA结合的多核JTAG调试代理系统。



背景技术:

随着SoC系统设计技术的快速发展,SoC芯片内部频率越来越快,编写及运行程序越来越大。针对多核开展基于JTAG协议的多核调试架构优化、通讯机制优化等关键技术的研究,进而设计完成一个基于PCIE接口的JTAG仿真器,构建一套完整的多核调试环境,无论从节约时间还是提高资源利用的角度上看都将带来很大的提高。传统的单核调试模式,在调试速度方面呈现出诸多不便,并且现有的JTAG调试系统无法满足多核调试体系结构与目标环境的使用要求。



技术实现要素:

针对上述现有技术存在的问题,本实用新型提供了一种基于PCIE与FPGA结合的多核JTAG调试代理系统,下面对本实用新型内容进行说明。

基于PCIE与FPGA结合的多核JTAG调试代理系统,包括:依次相连的宿主机、JTAG仿真器、目标机,JTAG仿真器包括:

PICE IP核,与宿主机相连;

发送接收模块,与PICE IP核相连,用于传递数据和指令;

BRAM模块,用于存储数据;

Process模块,用于对BRAM模块的数据进行处理及JTAG指令转换,并且Process模块还包括多核选择调试接口模块和多核JTAG控制器,其中多核JTAG控制其与目标机相连;

Control模块,用于控制Process模块及发送接收模块对BRAM模块的读写;

FPGA电路单元,用于对JTAG仿真器进行编程;

PCIE接口,PICE IP核通过PCIE IP核与宿主机连接。

进一步的,发送接收模块包括:

TX模块,提取的BRAM模块的数据和指令经TX模块传递给PICE IP核;

RX模块,PICE IP核接收的数据和指令经RX模块传递给BRAM模块进行储存。

进一步的,宿主机包括:

基于ECLIPSE的CDT插件的开发环境,用于用户编写调试程序,下载调试程序及调试程序操作。

编译器,用于将源文件编译为可执行文件并翻译为汇编语言;

调试器,能够基于所述的可执行文件通过调试代理经JTAG仿真器向目标机发送指令并接受数据。

进一步的,宿主机还包括GDB模块,其用于接受指令并向下位机下发GDB指令;与GDB模块对应的设有调试代理模块,其用于接受所述的GDB指令并转化其指令为JTAG指令。

进一步的,调试代理模块包括本地单元和PICE单元,其中,本地单元与GDB建立连接,用于接受GDB指令、解析、校验;PCIE单元用于负责接受、缓存调试指令,转化为JTAG指令发送到目标机。

进一步的,所述的本地单元调试代理通过建立四个并行的线程等待宿主机调用,并且各线程间同一时刻只容许一个线程在线调试,当该线程结束调试或调试挂起状态时,其它线程才可处于运行状态。PCIE单元调试代理通过JTAG菊花链连接多核选择调试接口的方式并配合本地单元调试代理实现多核并行调试。

进一步的,宿主机与JTAG仿真器基于PICE层结构进行数据传输,PICE层结构包括:事务层,能够根据来自应用层和应用程序的信息组建事务层包,等待推向下层;

数据链路层,在事务层包上再连接若干序号和CRC校验附加信息,形成数据链路层包;

物理层,在数据链路层包上添加起始帧字符和结束帧字符;

应用层,能够为事务层启动事务,生成事务层提供所必须的信息。

进一步的,物理层主要由逻辑物理层和电气物理层组成,其中,逻辑物理层与数据链路层直接相连;电气物理层为物理层与链路的模拟接口,由各通路差分信号的驱动器和接收器组成。

进一步的,应用层提供的所述的信息包括:事务类型、地址、要传送的数据量、数据、传输类别和消息索引。

进一步的,事务层按照数据传输方向分为发送和接受两部分,分别负责组建事务层包和拆解事务层包。

本实用新型通过使用FPGA和PCIE通讯机制加速了调试指令处理、传输速度,并且配合上位机PCIE驱动程序保证数据以DMA方式正确的发送与接受数据。

附图说明

为了更清楚地说明本实用新型实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本实用新型的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本实用新型的系统框图。

图2是JTAG仿真器的结构示意图。

图3是多核JTAG连接结构示意图。

图4是PICE层结构图。

图5是事务层包结构图。

图6是本实用新型的仿真图。

具体实施方式

为使本实用新型的目的、技术方案和优点更加清楚,下面将对本实用新型的技术方案进行详细的描述。显然,所描述的实施例仅仅是本实用新型一部分实施例,而不是全部的实施例。基于本实用新型中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本实用新型所保护的范围。

基于PCIE与FPGA结合的多核JTAG调试代理系统,包括:依次相连的宿主机、JTAG仿真器、目标机,JTAG仿真器包括:

PICE IP核,与宿主机相连;

发送接收模块,与PICE IP核相连,用于传递数据和指令;

BRAM模块,用于存储数据;

Process模块,用于对BRAM模块的数据进行处理及JTAG指令转换,并且Process模块还包括多核选择调试接口模块和多核JTAG控制器,其中多核JTAG控制其与目标机相连。

Control模块,用于控制Process模块及发射接收模块对BRAM模块的读取;

FPGA电路单元,用于对JTAG仿真器进行编程;

PCIE接口,通过PCIE IP核与宿主机连接。

进一步的,发送接收模块包括:

TX模块,提取的BRAM模块的数据和指令经TX模块传递给PICE IP核;

RX模块,PICE IP核接收的数据和指令经RX模块传递给BRAM模块进行储存。

如图2所示,工作时,宿主机通过调试代理模块发送调试指令经PCIE接口、PICE IP核进而到RX模块,此时Control模块控制RX模块按照时序逐字节接收并存储到BRAM模块,当收到停止信号时,Control模块通知Process模块从BRAM模块获取数据并对数据进行处理及JTAG转换,此时Control模块向RX模块发送停止接受信号,告知上位机等待,直到数据处理结束后再次发送。当Process模块处理完数据后并接受来自下位机的数据,发送至BRAM模块并告知Control模块数据已处理可以提取数据。Control模块再将数据从BRAM模块提取发送至TX模块,经PCIE发送至PC/宿主机。

如图3所示,PCIE单元调试代理主要实现多核JTAG的状态机以菊花链方式串行连接,实现了多路选择调试接口与多核JTAG状态机并行连接,通过对多路选择调试接口的操作实现多核选择与并行调试操作。

在本实用新型的一些实施例中,宿主机包括:

基于ECLIPSE的CDT插件的开发环境,用于用户编写调试程序,下载调试程序及调试程序操作。

编译器,用于将源文件编译为可执行文件并翻译为汇编语言;

调试器,能够基于所述的可执行文件通过调试代理经JTAG仿真器向目标机发送指令并接受数据。

在本实用新型的一些实施例中,宿主机还包括GDB模块,其用于接受指令并向下位机下发GDB指令;与GDB模块对应的设有调试代理模块,其用于接受所述的GDB指令并转化其指令为JTAG指令。

调试代理模块包括本地单元和PICE单元,其中,本地单元与GDB建立连接,用于接受GDB指令、解析、校验;PCIE单元用于负责接受、缓存调试指令,转化为JTAG指令发送到目标机。

如图1所示,调试代理程序是IDE开发环境与目标机进行在线调试的中间桥梁,也是与调试器建立连接的重要节点,IDE进入调试界面启动调试器并通过调试代理向目标机发送指令并接受数据。

通常在调试中,调试过程包括GDB和调试代理模块,GDB负责接受上位机下发的指令并向下位机下发GDB指令,而调试代理模块在目标机中工作主要负责接受GDB指令并转化其指令为JTAG指令。为了减少目标机工作负荷、提高JTAG协议转化速率以及实现多核并行调试,将调试代理模块分为两部分:一部分工作由本地主机负责,另一部分工作由PCIE负责。本地主机端调试代理程序通过socket套接字与GDB建立连接,并接受GDB指令、解析、校验。PCIE负责接受、缓存调试指令,转化为JTAG指令发送到目标机工作。

进一步的,所述的本地单元调试代理通过建立四个并行的线程等待宿主机调用,并且各线程间同一时刻只允许一个线程在线调试,所以还需建立一个互斥信号量,任何时刻只允许一个线程运行,其他线程等待。ThreadProc是被调程序入口,对应本实用新型的中的dsp1main(dsp2main、dsp3main、dsp4main)函数。以下简单概述dsp1main函数:

socket()、bind()、listen()、accept()函数用于与GDB建立socket端口连接、绑定、监听。recv()负责接受GDB指令到指定缓存里。连接建立成功后,调试代理模块需要对目标机发送状态机复位指令、进入调试状态指令和DSP停止指令以及获取DSP的IDECODE指令。

连接建立完成后,GDB每发送一条指令,调试代理模块都会对该条指令进行解析、校验,提取有效指令并通过DSP1_execute_command()函数对不同指令完成相应的功能。为了方便对GDB指令的解析以及阅读,调试代理模块部分规定了自己的指令替代调试指令。

在本实用新型的一些实施例中,如图4所示,本实用新型所采用的的PCIE数据传输功能是基于其分层的结构,即包含:事务层、数据链路层和物理层,各层中按照数据流方向为发送和接受两个功能模块。从总体来看,各层中的发送功能块构成设备的发送部分,处理数据流向外的传输业务宿主机与JTAG仿真器基于PICE层结构进行数据传输,其中:

事务层,能够根据来自应用层和应用程序的信息组建事务层包,贮存在虚通道的发送缓冲器里,等待推向下层;

数据链路层,在事务层包上再连接若干序号和CRC校验附加信息,形成数据链路层包;

物理层,在数据链路层包上添加起始帧字符和结束帧字符;

应用层,能够为事务层启动事务,生成事务层提供所必须的信息。

上述各层结构均为设备的发送部分,而设备的接受部分逆向相反的进行该过程从而实现数据的接受功能。

设备的应用层也称设备核,如以太网控制器和SCSI控制器等,主要实现了设备的核心功能。应用层为事务层启动事务生成TLP提供所必须的信息,这些信息包括事务类型、地址、要传送的数据量、数据、传输类别和消息索引等,同时应用层也接受事务层送来的这些信息。

事务层按照数据传输方向分为发送和接受两部分,分别负责组建TLP(事务层包)和拆解TLP。PCIE协议规定了设备的事务层完成了数据传输过程中的流控制,即接受设备周期性的向发送设备发送流控制包FC小,发送者根据流控制包中包含的流控制信用量信息,在接受方有足够缓冲空间时才向其发送TLP。事务层以传输类别(TC)、虚通道(VC)、TV/VC映射以及优先级仲裁为数据传输提供服务质量,同时完成事务排序防止产生潜在的死锁和活锁。事务层按照系统软件的规定支持ACP/PCI电源管理,设备的配置空间也与事务层联系在一起。

数据链层主要功能是保证TLP传输过程中的数据完整性,数据链路层采用CRC冗余校验检验接受包中数据,并采用ACK/NAK应答机制保证数据无误传输。数据链路层负责生成和解析数据链路层包(DLLP),DLLP具有多种类型,用于实现对接收包的应答以及有关电源管理和流控制方面的功能。

物理层可分为逻辑物理层和电气物理层。逻辑物理层与数据链路层直接相连,包含对包进行乱序编码和逆处理的数字电路,电气物理层是物理层与链路的模拟接口,由各通路差分信号的驱动器和接收器组成。物理层除了组装和解析物理层包PLP外,还完成了链路训练和初始化、链路电源管理等功能。

如图5所示,其中头标和数据区是TLP的核心部分,由事务层根据软件层/设备核发送来的信息构成,事务层还可以计算出头标和数据区的端-端CRC字段(32位),称为ECRC,并添加到包上。ECRC字段是可选的,主要用在TLP的最终目标设备事务层检查TLP头标和数据区上的CRC错误。若接受设备是交换开关,则根据TLP头标的地址信息将该包从交换开关的一个端口路由到另一个端口,不允许交换开关修改ECRC。若接受设备是TLP的最终目标设备,则在事务层TLP头标和数据区的ECRC校验,若无误则将头标和数据上推至设备核/软件层。

TLP头标的长度为3DW或4DW,格式和内容随事务类型而变化,对于TLP头标的结构,包括头标的通用字段和保留字段(应置位0)。头标格式Fmt和类型Type规定了事务的类型、头标长度和是否有数据载荷,传输类别TC表示TLP的传输类别编号,其中TC0是默认的类别,TC1~TC7用来要求设备为TLP提供不同的服务质量;TD位为1时表明TLP包含ECRC;错误和中毒位为1表明允许TLP正常传输完成但TLP所带数据视为无效;属性Attr字段中的位5位1时表明使能PCI-X式的宽松排序,位4为1表明不要求系统硬件去监听处理器Cache,否则要求PCI式的监听Cache。长度Length表明TLP的数据载荷长度,以双字为单位,TLP的最大数据长度为1024DW。First DW BE和Last DW BE中的四位分别对应数据载荷的第一个DW的和最后一个DW,为1时表明相应字节有效。

如图6所示,本实施例还对本实用新型进行了仿真,由于Control模块是主要的组成部分也是该设计中的核心部分,因此通过ISE自带的ISIM仿真软件,仿真了Control模块,波形如下所示,当RX接受数据存储到BRAM中,Control模块会提取BRAM的数据发送给Process进行处理。在仿真中,每次从BRAM中读取四个字节的随机数据,读地址(rd_ram_addr)范围0000-0003,写地址(wr_ram_addr)范围0010-0013,当读片选信号(rd_ram_ce)为高时从BRAM读出数据到Process进行处理,jtag_rx_to_done信号负责控制RX模块接受数据,当为高时停止接收。每读四个字节数据jtag_rx_to_done拉高一个周期,然后再拉低。Process处理完数据后会将写片选选中(wr_ram_ce),此时处理后的结果(wr_ram_din)写回到BRAM,并拉高jtag_tx_to_done告知TX模块数据已准备好,PCIE可以发送数据给PC。此处需要说明的是,为了方便测试,Process模块只做加5运算处理。

上述仿真验证了Control模块和处理模块是否可以协同PCIE IP核和PC端完成通信,并发送接收正确数据。

以上所述,仅为本实用新型的具体实施方式,但本实用新型的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本实用新型揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本实用新型的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1