网站首页 | 经济学论文 | 证券金融 | 管理学 | 会计审计 | 法学论文 | 医药学论文 | 社会学论文 | 教育论文 | 计算机 | 艺术论文 | 哲学论文 | 财务管理 |
写论文网
  • 中国哲学论文
  • 西方哲学论文
  • 思想哲学论文
  • 科技哲学论文
  • 美学论文
  • 国学论文
  • 逻辑学论文
  • 哲学其它论文
  • 您的位置:写论文网 > 哲学论文 > 哲学其它论文 > 室分系统的常用器件【CPLD器... 正文 2019-12-25 07:25:37

    室分系统的常用器件【CPLD器件的在系统动态配置】

    相关热词搜索:

    CPLD器件的在系统动态配置

    CPLD器件的在系统动态配置 关键词:ISP 在系统可编程技术 动态配置 CPLD 引言 随着应用的不断深入,嵌入式系统升级的问题摆在了人们面前。在这种背 景下ISP技术应运而生。

    在系统可编程ISP(In Ststem Programmability)技术是指能对器件、电路 甚至整个系统进行现场升级和功能重构的技术。这种重构可以在实验开发过程中、 制造过程中,甚至是在交付用户使用之后进行;
    而整个在系统可编程设计的最后 一个步骤,也是最关键的步骤,也是最关键的步骤,就是器件的配置。配置过程 加载设计规定的编程数据到器件中,以定义器件内部功能块及其互连,从而实现 器件功能的重构升级。

    ISP器件要实现配置,除了ISP器件的硬件系统中要提供正确的ISP接口以 外,还需要有配置文件和配置工具。

    (1)配置接口 Lattice公司为器件提供了ISP接口和JTAG接口。

    ISP接口是Lattice公司自行开发设计的,具有如下引脚定义:
    SDI——数据输入和状态机控制;

    MODE——和SDI一起控制状态机;

    MODE——和SDI一起控制状态机;

    SCLK——时钟输入;

    SDO——数据输出,可选引脚;

    IspEN——工作模式和配置模式选择,同时还有一个ISP状态机,包含3个 状态,由MODE和SDI控制状态机所处技术,在Shift状态通过SDI移入命令,在 Execute状态执行命令。联合测试行动小组JTAG(Joint Test Action Group)在20世纪80年代中期 制定了边界扫描技术,在1990年被修改后成为IEEE的一个标准 ——IEEE1149.1-1990。这个标准即为JTAG。边界扫描技术最初发展盐业,是为 了测试电路各个IC器件之间的互边是否正确。随着ISP发展,许多生产厂商利用 JTAG规定的四条引脚的测试存取口作为ISP的开发平台,使得ISP也变得有标准 可循,给用户带来了极大方便,于是JTAG在其权限内把ISP性能扩充到了 IEEE1149.1中。发展到现在可以这样说,IEEE1149.1标准为我们提供了一条简单 的串行接口,将那些具有JTAG接口的器件串接在一打扫描链中。通过这个接口 既能实现ISP又能实现测试。

    IEEE1149.1标准对边界扫描结构的定义包括4个基本单元:4个引脚的测试 存取口TAP(Test Access Port)、数据寄存器、指令寄存器和TAP控制器。TAP 引脚定义如下:TCK为测试时钟输入,TDI为测试数据输入,TDO为测试数据输 出,TMS为测试模式选择。数据寄存器包含两种BYPASS寄存器和BSR(Boundary Scan Register)寄存器,其中BSR由BSC(Boundary Scan Cell)串联而成,正是 通过BSC才把来自于TAP的数据移入ISP芯片内部逻辑。另外TAP控制器作为一 个有限状态机,共有16个状态。它控制着测试存取口、指令寄存器和数据寄存器。

    TAP控制器如图1所示。

    通过TCK、TMS控制TAP控制器的状态。当TAP控制器处于Shift-IR状态时, TDI口进入的指令被移进指令寄存器;
    当TAP控制器入于Update-IR状态时,指令 寄存器的指令有效。根据这个原理,通过控制此状态机,将配置信息移入器件内。

    另外,TAP测试存取口4个引脚有严格的时序要求,如图2所示。

    其中TMS、TDI在TCK上升沿有效,TDO在TCK下降沿有效。要想通过 JTAG口实现ISP或者测试,都必须遵守这些时序要求。

    通过对两种接口的研究发现,它们均能实现ISP,然而JTAG口的测试功能 以及与其它具有JTAG口器件之间的灵活的连接性显得更有优势,这也使得 Lattice公司认识到了ISP接口的局限,因此在它后来开发生产的新器件中都采用 了JTAG。在本方案中用到的LatticeMACH4000系列CPLD器件,运行频率最高达 400MHz,待机电流仅为20μA,宏单元数目最高达1024个,引脚到引脚延时2.5ns, 在系统配置要用JTAG接口。

    图2(2)配置文件 (3)配置工具 2 方案设计 系统硬件电路如图3所示。

    MSP430单片机P2口作为配置接口,接到Lattice MACH4128V的JTAG口上, 外挂一个E2PROM,用来存储HEX格式的VME文件。整个过程是,通过串口接 收来自计算机的配置文件,放到E2PROM,接收完毕以后,单片机运行配置引擎, 读取E2PROM,配置指令通过JTAG口对Lattice MACH 4128V进行配置。需要指 出的是,Lattice MACH 4128V并没有用专门的引脚来控制进入配置模式或退出配 置模式,而仅仅是通过TAP控制所处状态来决定的。IEEE1149.1标准中规定:器 件加电时或应用中不利用边界扫描逻辑,强迫TAP控制器处于Test-Logic-Reset 状态,因此在通过程序控制JTAG进行器件配置结束时,一定要通过软件方式强 迫TAP控制器回到Test-Logic-Reset状态,下面提到的ispVMEnd()函数实现的就是 这个功能。另外,当通过JTAG口完成器件配置或测试以后,TMS、TDI引脚器 件内部上拉。虽然如此,为了防止TCK可能出现的信号使JTAG状态机离开 Test-Logic-Reset状态,或者因为上电瞬间可能产生的TCK信号导致状态机进入未 知状态,设计电路时必须在TMS引脚加4.7kΩ下拉电阻。另外,电路中Vcc=3.3V。

    3 软件介绍 软件部分包括PC机程序和MSP430单片机程序。其中PC机程序将HEX格式 的VME文件通过串口传送给单片机;
    MSP430单片机程序包括ispVM EMBEDDED,串口读写和E2PROM读写部分。

    作为整个配置的核心,ispVM EMBEDDED主要由存储在E2PROM的VME 文件驱动,从而将配置信息串行移入Lattice MACH 4128中。整个过程如下:首 先,验证VME文件的版本,只有相应版本的ispVM EMBEDDED才能解释同样版 本的VME文件,ispVMStart()函数强迫TAP状态机进入配置主引擎ispVMCode(), 来自于VFME中的控制代码将驱动这个引擎执行相应操作,其中3个控制代码最 为常见的STATE、SIR、SDR和STATE代码控制TAP状态机进入声明的状态,如 Shift-DR、Shift-IR等。SIR代码表明将向器件中移入指令流,SDR代码表明将向 器件中移入数据流。通过这种方式,配置主引擎ispVMCode()将VME中包含的配置信号器件从而完成配置,配置完成ispVMCode()返回一个配置成功与否的代码。

    最后ispVMEnd()强迫TAP状态机进入Test-Logic-Reset状态。

    Void ispVMEnd(void){ IspVMStateMachine(RESET);/*TAP状态机进入Test-Logic-Reset状态*/ IspVMDelay(1);/*一段延时后,器件由配置模式切换到运行模式*/ } 事实上,作为专门针对嵌入式平台的配置工具ispVM EMBEDDED并不依 赖于特定的硬件或系统平台,所以可以很容易地往用户自己的系统上移植。3个 与硬件相关的函数需要用户自己改写,Readprot()从输入引脚读一个字节, Writeport()通过输出引脚向外发送一个字节,ispVMDelay()系统延时。在MSP430 上的实现如下:
    #define pinTDI 0x02 //定义P2.1为TDI #define pinTDO 0x08 //定义P2.3为TDO short int isp_pins用来存放当前JTAG口的引脚信号 unsigned char readPort(void){ unsigned char PortVal;
    PortVal=P2IN;
    //读取P2口 return ((unsigned char)(PortVal pinTDO)0x01:0x00));//返回TDO引脚信号 } void writePort(unsigned char pins,unsigned char value){ if(value) isp_pins=pins|isp_pins;//把isp-pins引脚置高 else isp_pins=~pinsisp_pins;//把isp-pins引脚置低P2OUT=isp_pins;
    } void ispVMDeay(unsigned short int delay_time){//delay_time来自于配置文 件,通过它告诉配置引擎具体需要延时多久 if(delay_time 0xA000){//ms级延时 delay_time =~0xA000;
    } else if(delay_time=1000)//如果是μs级,转换成ms级延时 delay_time=delay_time/1000;
    else delay_time=1;//延时小于1ms时,就延时1ms PS1ms=delay_time;
    CCTL0=CCIE;
    //开定时 while(PS1ms){};//在中断PS1ms CCTL0=~CCIE;
    //关定时 } 有一点需要指出,ispVM EMBEDDED要求将已转化成HEX格式的VME作 为程序的一部分固化在单片机里。很显然,要想更换配置文件,就必须连同单片 机程序一同换掉。这对实现动态配置是不利的,也是为什么在本方案中外加 E2PROM的原因。这样无须更改程序,只换掉E2PRO中的配置文件即可。因此还 需要更改GetByte()函数。

    对24C512的操作应该遵循I2C总线协议,而在MSP430中没有I2C总线硬件, 所以本方案中用软件方法模拟。由于I2C串行总线数据交换速度较慢,因而当从 E2PROM中读出数据再往CPLD中移入时,形成了配置过程的速度瓶颈。在解决 这个问题时,我们充分利用了MSP430149单片机内部2KB RAM,采用E2PROM最快的读取方式——顺序读,将配置数据预先读入到RAM中,GetByte()函数直 接从RAM中读取数据。这种方法在一定程度上提高了配置速度。我们改写的 GetByte()函数是这样的:
    unsigned char GetByte() { unsigned char data;
    static unsigned short int index=0;
    …… if(index==0){ //有新的数据来自E2PROM fp=wmeArray;//放在unsigned char vmeArray[1024] } data=*fp++;
    if(index1024) index++;
    else { index=0;
    if((num+1024)totalnum是已经读取字节数) ReadBlock(address,totalnum-num);//totalnum是整个配置文件字节数 } else{ ReadBlock(address,1024);//从I2PROM的 address=adress+1024;//adress地址开始读1024字节 } } return(data);} PC机上应用程序用Delphi7.0开发设计,利用专门的串口控件很容易开发 出串口通信程序,从而将VME配置文件发送到MSP430。当配置完成以后由 MSP430返回“配置成功”。

    4 结论 我们设计的基于MSP430的CPLD动态配置方案,充分利用了CPLD可重复 配置的特性,为嵌入式系统升级重构提供了一种新的思路,将来一定有很好的应 用前景。当然在这个方案中,由于采用外加E2PROM的原因,在配置速度上较慢。

    虽然本方案针对的是Lattice MACH4000系列CPLD器件,但是稍加改动也可用于 Lattice其它ispJTAG器件,如ispXPLD、 ispGDX2等。另外在实际应用中,如果能加上网络模块,还可以实现远程 的动态配置。

    • 范文大全
    • 教案
    • 优秀作文
    • 教师范文
    • 综合阅读
    • 读后感
    • 说说
    室分系统的常用器件【CPLD器件的在系统动态配置】》由(写论文网)整理提供,版权归原作者、原出处所有。
    Copyright © 2019 写论文网 All Rights Reserved.