您现在的位置: 华玉生活网 >> 技术文库 >> 无线 >> 正文>> 繁体中文

NexperiaPNxl500平台USB接口的JTAG控制器设计,Nexperia,PNxl500,USB接口,JTAG控制

JTAG调试技术是一种嵌入式调试技术,它的接口标准是IEEE发布的边界扫描标准IEEE1149.1。目前,大多数芯片生产厂商在芯片中封装了测试电路,形成了一种板级测试协议JTAG接口标准,将其复杂的电路测试转换成具有良好结构性能的测试,可以通过软件简单而灵活的处理。本文介绍了一种应用于NexperiaPNxl500平台的USB接口的JTAG控制器设计与实现。该控制器对比以往的PCI接口的JTAG控制器,更加方便实用,并且该设计中选用了专用的JTAG测

JTAG调试技术是一种嵌入式调试技术,它的接口标准是IEEE发布的边界扫描标准IEEE 1149.1。目前,大多数芯片生产厂商在芯片中封装了测试电路,形成了一种板级测试协议JTAG接口标准,将其复杂的电路测试转换成具有良好结构性能的测试,可以通过软件简单而灵活的处理。本文介绍了一种应用于Nexperia PNxl500平台的USB接口的JTAG控制器设计与实现。该控制器对比以往的PCI接口的JTAG控制器,更加方便实用,并且该设计中选用了专用的JTAG测试控制器芯片代替以往通过逻辑可编程器件实现JTAG时序的方法,简化设计的同时提高了稳定性。

系统总体设计

本设计的整体调试系统可以分为三个部分:

(1) 具有USB功能的windows主机。此主机上必须具备用于PNxl500调试的应用程序、USB用户设备驱动以及USB系统驱动三个单元;

(2) 由CY7C68013和SN54ACT8990两款芯片设计实现的应用于PNXl500平台的JTAG控制器;

(3) 以PNXl500作为核心处理器的目标板。

整个系统的结构图如图1所示

tr>

JTAG简介

JTAG标准

IEEE 1149.1-1990边界扫描测试技术的目的是测试集成电路芯片之间的互连,测试集成电路芯片自身,监视和修改集成电路芯片T作时的内部行为。支持JTAG标准的芯片必须集成一个测试访问端口(TEST ACCESSPORT,TAP),TAP至少提供TCKTDI、TMS三个输入端口和TDO数据输出端口。TAP控制器的状态机通过时钟TCK和模式TMS进行状态改变,测试访问状态机的主要目的是选择指令寄存器或者数据寄存器,使其连接到TDI和TDO之间。TAP的运行如图2所示。

PNXl500的JTAG接口

PNXl500中JTAG单元设计主要包括一个TAP,两个JTAG数据寄存器和两个JTAG控制寄存器。这四个物理寄存器分别是:TM—DBG—DATA—IN数据输入寄存器,TM—DBG—DATA—OUT数据输出寄存器和TM—DBG—CTRLl和TM—DBG—CTRL2两个控制寄存器。它们在PNXl500中的逻辑连接图如图3所示。

图3中除了4个物理存在的寄存器外还描述了两个虚拟寄存器:TM—DBG—IFULL—IN和TM—DBG—OFULL—OUT。 其中第一个虚拟寄存器是由TM—DBG—CTRL2.ifuIl串 上TM—DBG—DATA—IN寄存器组成的。而第二个虚拟寄存器则是由TM—DBG—CTRLl.ofull串 上TM—DBG—DATA—OUT寄存器所组成。这种设计有效的缩短了两个数据寄存器的扫描时间,从而提高了程序的下载速度。

图4所示为PNXl500 JTAG接口的时序。

在PC机与PNXl500目标板之间,需要设计一个JTAG控制器,使得PC机发出的命令按照IEEEll49.1协议传输给目标板。PNXl500中JTAG接口单元在TCK上升延对TMS采样,根据TMS状态,决定连接在TDI于TDO之间的寄存器。

JTAG控制器的设计与实现

硬件系统

应用于PNXl500的USBJTAG控制器选用了CYPRESS公司FX2系列USB接口芯片CY7C68013以及TI公司生产的SN54ACT8990。他们的硬件连接图如图5所示。

CY7C68013内嵌增强型8051内核,具有4KB LISB端点缓冲区,可设置为双缓冲,三缓冲或者四缓冲,支持USB2.0高速传输。其时钟高达48MHz,单指令周期为83.3ns。芯片包含双串口,支持230K波特率,400K高速IIC接口,8KB片内RAM,可以存放数据和代码,5个复用端口和5个外部中断源。其中端点缓冲区“量子FIFO”支持GPIF和Slave FIFO传输方式,实现端点FIFO和外设“胶连接”,支持8/16位总线。

SN54ACT8990是JTAG测试总线控制器TBC(Test—BusCOntrollers)芯片。该芯片提供了处理器与符合IEEE 1149.1标准的测试总线之间的接口,使得处理器与JTAG接口工作于异步方式。该芯片具有5位的地址线,16位的数据线,通过读写控制线,与主机通信。芯片中包括10个控制寄存器,2个指令寄存器,6个控制内部计数器的寄存器,4个状态寄存器,一个发送数据寄存器以及一个接收数据寄存器,这些寄存器均可以通过地址线直接寻址。

在硬件设计过程中,由于USB2.0在高速模式时达到480Mbit/s,所以在PCB布线时,要注意保持D+和D一两条差分线平行对称,整个板子尽量保持地平面的完整性,从而保证信号的完整性。

软件系统

JTAG控制器的软件系统,主要完成3个接口间的通信:CY7C26801 3对于SN54ACT8990的控制,JTAG控制器与PNxl500的通信以及.JTAG控制器LISB接口与PC机的通信。

SN54ACT8990的控制

CY7C68013与外设有主/从两种接口方式:可编程接口GPI:F和Slave FIFO。这里采用主机方式。我们通过68013的可编程接口GPIF,对8990进行控制,8990中的测试总线控制器TBC根据指令产生TMS序列发送到目标板,使得目标板上TAP状态做相应的跳转。SN54ACT8990读写时序如图6所示。

根据8990时序,我们进行GPIF波形设计,我们使用了cYPRESS公司提供的GPIFDesigner-开发工具,它提供了一个非常便捷的可视化窗口,只需在图形界面上进行简单修改就可以自动生成复杂的波形描述符,导出一个名为gpif.c的文件。

JTAG与PNXl500CPU的通信

JTAG控制器和PNxl500CPU对于映射于内存空间的JTAG寄存器均有访问权,但形式不同。JTAG控制器是通过IEEEll49.1协议,利用串行通信形式读写寄存器,而PNxl500 CPU是通过寻址的方式操作寄存器,数据是以并行的方式,直接移入内存。JTAG数据和控制寄存器在内存影射偏移地址如表1所列。

根据PNxl500这种构造特点,在设计中需要用软件来实现JTAG控制器和PNXl500DSPCPU之问的通信,并防止两者同时操作同一个JTAG寄存器。

通过在.JTAG控制器中运行一个检测程序(front—end),不断的监视TM_DBG_CTRLl.ofull标志位,判断是否有来自于PNxl500的数据,如果有,则通过TDI和TCK将数据从TM_DBG_DATA_OuT寄存器中串行移出。同时,此检测程序还将把来自于PC机的数据,依照IEEE 1149.1协议标准写人TM_DBG_DATA_IN寄存器中,并置起TM_DBG_CTRL2.ifull标志位,通知PNX1500数据已经到达。相应的,在PNXl500中运行一个监视程序(monitor),当程序发现TM—DBG—CTRL2.ifull被置起,将TM_DBG_DATA_IN中的数据一次性并行移人内存指定位置,清除标志位。如果PNXl500要通过JTAG口发送数据,通过monitor程序将数据并行写入TM_DBG_DATA_OU 数据移出寄存器中并置起TM_DBG_CTRLl.oful标志位,通知JTAG控制器接收。front-end和monitor是通过更改和监视TM_DBG_N_CTRL寄存器的状态来交互的,程序设计流程图如图7所示。

JTAG控制器USB与PC的通信

针对JTAG控制器与PC机之间的通信,采用了自定义的一种数据包的结构,如表2所列。

通过CY7C68013固件模块的设计,完成对数据包的接收,分析,执行等操作。固件模块的设计主要包括3个部分:

(1)主模块,完成设备的初始化,固件运行后的“重新枚举”,并循环等待PC的命令。

(2)数据收发模块,完成数据包的分析,执行PC命令。收到写命令后,将通知8990接口模块,将数据包里的数据写入PNXl500。收到读命令后,将特定地址的数据读入单片机的缓冲区,并通知PC,PC通过EP2将数据取走。

(3)8990接口模块。

CYPRESS公司提供了。EZ—USB FX2开发套件,其中包含有提供给用户的一个固件函数库(Ezusb.Iih)和固件框架(Framework),该固件框架已经帮用户实现了电源管理、初始化、重枚举等功能。用户只需在预留的位置添加代码,实现相应的功能。

本设计主要完成对PNXl500目标板的程序下载和调试功能,所以选用USB中的批量(BULK)传输模式。这需要在固件框架下的TD_Init()函数中加入功能代码,完成端点配置、GPIF的初始化等工作。在TD—poll()函数中完成循环等待PC命令等功能。

CY7C68013驱动程序设计

基于WDM(windows驱动模型)的USB接口驱动程序的结构化模型如图8所示。

驱动程序由4个部分组成:驱动人口子程序,电源管理子程序,即插即用子程序(包括设备添加子程序)以及系统控制子程序。

对于本设计,选用DriverWorks来完成开发驱动程序。DriVerWorks提供了完善的源代码生成工具Driverwizard以及相应的类库,类似于MFC编程。由库代码自动处理例行的底层烦杂操作。通过DriverWizard生成的代码只需作少量的修改便可以使用。

本设计实现了通过IJSB接口对于Nexperia PNxl500平台进行程序下载和调试的功能。它比以往PCI接口的JTAG控制器,更加的便捷,支持即插即用。并且此控制器采用了专用的JTAG测试控制芯片,提高了JTAG时序产生的稳定性。另外本设计可以很方便的移植到其它一些支持。JTAG技术的芯片上。由于各芯片支持的JTAG模式略有不同,但是都是遵照.JTAG接口的基本协议,所以通过少量的软件代码修改,就可以兼容使用。本设计已实际用于基于PNXl500的开发系统中,实测速度1Mbyte/s。


  • 扩展阅读
  • 上一个文章:
  • 【返回网站首页】 【返回无线】
  • 下一个文章:
  • 【字体: 】【】【发表评论】【加入收藏】【告诉好友】【打印此文
    文章 软件 电影 商品

    相关文章

    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    | 服务声明 | 充值中心| 华安五金电器 | 收费标准| 论坛| 留言| 实用查询| 会员中心| 下载帮助| 设为首页|

    技术支持:瑞达科技 即时交谈QQ:237013889 QQ群:13810759 E-Mail:237013889@qq.com
    非盈利网站,如有侵权,请来信来电告知,第一时间处理,谢谢!
    桂ICP备17008104号 华玉生活网网站统计
    tj