CPLD器件的在系统动态配置_第1页
CPLD器件的在系统动态配置_第2页
CPLD器件的在系统动态配置_第3页
CPLD器件的在系统动态配置_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、    CPLD器件的在系统动态配置    CPLD器件的在系统动态配置    类别:EDA/PLD      微控制器动态配置cpld器件的方法。将配置文件存放在存储器中,配置文件中的控制代码驱动在微处理器中运行的配置引擎;将配置文件中的配置信息通过jtag口移入cpld,实现器件的动态配置;通过更换存储器中配置文件,达到同一器件实现不同功能的目的。这种方法为嵌入式系统升通读重构提供了一种新的思路,将来一定会得到广

2、泛应用。引言随着应用的不断深入,嵌入式系统升级的问题摆在了人们面前。在这种背景下isp技术应运而生。在系统可编程isp(in ststem programmability)技术是指能对器件、电路甚至整个系统进行现场升级和功能重构的技术。这种重构可以在实验开发过程中、制造过程中,甚至是在交付用户使用之后进行;而整个在系统可编程设计的最后一个步骤,也是最关键的步骤,也是最关键的步骤,就是器件的配置。配置过程加载设计规定的编程数据到器件中,以定义器件内部功能块及其互连,从而实现器件功能的重构升级。当然isp配置方式是多种多样的,其中计算机加下载线就是最常见的配置器件的方法;但是这个方法需要计算机配合

3、,对嵌入式系统来说不太实用,因此需要一个更加方便灵活的配置方案。lattice公司cpld器件不仅具有isp功能,同时融合引脚锁定功能和jtag技术,使得抛弃计算机而使用微控制器在系统配置、修改、升级cpld器件成为可能。特别是引脚锁定功能,实现了真正意义上的“动态”配置。采用引脚锁定技术,将配置前引脚状态锁定,配置完成以后各个引脚仍能保持配置前状态。本文介绍一个用微控制器在系统配置lattice mach4000系列cpld器件的方案。图11 原理isp器件要实现配置,除了isp器件的硬件系统中要提供正确的isp接口以外,还需要有配置文件和配置工具。(1)配置接口lattice公司为器件提供

4、了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。这个

5、标准即为jtag。边界扫描技术最初发展盐业,是为了测试电路各个ic器件之间的互边是否正确。随着isp发展,许多生产厂商利用jtag规定的四条引脚的测试存取口作为isp的开发平台,使得isp也变得有标准可循,给用户带来了极大方便,于是jtag在其权限内把isp性能扩充到了ieee1149.1中。发展到现在可以这样说,ieee1149.1标准为我们提供了一条简单的串行接口,将那些具有jtag接口的器件串接在一打扫描链中。通过这个接口既能实现isp又能实现测试。ieee1149.1标准对边界扫描结构的定义包括4个基本单元:4个引脚的测试存取口tap(test access port)、数据寄存器、指

6、令寄存器和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口进入的指令被移进指令寄存器;

7、当tap控制器入于update-ir状态时,指令寄存器的指令有效。根据这个原理,通过控制此状态机,将配置信息移入器件内。另外,tap测试存取口4个引脚有严格的时序要求,如图2所示。其中tms、tdi在tck上升沿有效,tdo在tck下降沿有效。要想通过jtag口实现isp或者测试,都必须遵守这些时序要求。通过对两种接口的研究发现,它们均能实现isp,然而jtag口的测试功能以及与其它具有jtag口器件之间的灵活的连接性显得更有优势,这也使得lattice公司认识到了isp接口的局限,因此在它后来开发生产的新器件中都采用了jtag。在本方案中用到的latticemach4000系列cpld器件,

8、运行频率最高达400mhz,待机电流仅为20a,宏单元数目最高达1024个,引脚到引脚延时2.5ns,在系统配置要用jtag接口。图2    (2)配置文件在进行配置前需要得到一个jed文件,也就是我们所说的熔丝图文件。在这个文件里包含了相应器件的配置信息,即该器件内部互连逻辑。在开发环境isplever3.0里按照自上而下的顺序进行逻辑设计,经过行为仿真和时序仿真后,开发环境将生成这个熔丝图文件。除了jed文件,另外还需要一个能说明菊花花链组成顺序的.xcf文件。特别是当系统中有多个isp器件且组成菊花链进行配置时,通过这个文件将分散在各个器件内部的j

9、tag链按照先后顺序组成一条系统级的扫描链,下载工具通过这个文件里的信息决定当前tdi上的数据是哪个器件的数据。有了这2个文件以后就可以通过下载工具进行器件配置了。(3)配置工具lattice公司在pc和workstation平台提供的下载工具叫ispvm。通过这个下载软件加上下载线可以实现器件配置。另外,lattice在业界首创的利用系统板上的微控制器或微处理器进行编程的嵌入式、多供应商、单链、在系统可编程工具ispvm embedded,作为一种软件实现,一旦在微控制器或处理器安装成功,系统将有能力直接通过电路板上的处理器对板上所有可编程逻辑器件进行编程或再编程,而无需使用下载电费或人工干

10、预。当然,为了使用这种软件,必须将jed文件转化成该软件支持的文件格式vme。vme作为专门支持ispvm embedded的文件,里面除了包括来自于jed和xcf的配置信息以外,不觉包括了能驱动ispvm embedded配置引擎的控制信息。正是这些控制信息使tap状态机进入相应状态,从而将配制信息移入器件内。需要注意的是,如果要将vme存储在存储器上,还需要将其转化成hex格式。本方案将在msp430单片机上实现ispvm embedded,从而提供一种嵌入式系统升级方案。2 方案设计系统硬件电路如图3所示。msp430单片机p2口作为配置接口,接到lattice mach4128v的jt

11、ag口上,外挂一个e2prom,用来存储hex格式的vme文件。整个过程是,通过串口接收来自计算机的配置文件,放到e2prom,接收完毕以后,单片机运行配置引擎,读取e2prom,配置指令通过jtag口对lattice mach 4128v进行配置。需要指出的是,lattice mach 4128v并没有用专门的引脚来控制进入配置模式或退出配置模式,而仅仅是通过tap控制所处状态来决定的。ieee1149.1标准中规定:器件加电时或应用中不利用边界扫描逻辑,强迫tap控制器处于test-logic-reset状态,因此在通过程序控制jtag进行器件配置结束时,一定要通过软件方式强迫tap控制器

12、回到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,串口读写和e2pr

13、om读写部分。作为整个配置的核心,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代码

14、表明将向器件中移入数据流。通过这种方式,配置主引擎ispvmcode()将vme中包含的配置信号器件从而完成配置,配置完成ispvmcode()返回一个配置成功与否的代码。最后ispvmend()强迫tap状态机进入test-logic-reset状态。void ispvmend(void)ispvmstatemachine(reset);/tap状态机进入test-logic-reset状态/ispvmdelay(1);/一段延时后,器件由配置模式切换到运行模式/事实上,作为专门针对嵌入式平台的配置工具ispvm embedded并不依赖于特定的硬件或系统平台,所以可以很容易地往用户自己的系

15、统上移植。3个与硬件相关的函数需要用户自己改写,readprot()从输入引脚读一个字节,writeport()通过输出引脚向外发送一个字节,ispvmdelay()系统延时。在msp430上的实现如下:#define pintdi 0x02 /定义p2.1为tdi#define pintdo 0x08 /定义p2.3为tdoshort int isp_pins用来存放当前jtag口的引脚信号unsigned char readport(void)unsigned char portval;portval=p2in; /读取p2口return (unsigned char)(portval &

16、amp;pintdo)?0x01:0x00);/返回tdo引脚信号void writeport(unsigned char pins,unsigned char value)if(value)isp_pins=pinsisp_pins;/把isp-pins引脚置高elseisp_pins=pins&isp_pins;/把isp-pins引脚置低p2out=isp_pins;void ispvmdeay(unsigned short int delay_time)/delay_time来自于配置文件,通过它告诉配置引擎具体需要延时多久if(delay_time &0xa000)/

17、ms级延时delay_time &=0xa000;else if(delay_time>=1000)/如果是s级,转换成ms级延时delay_time=delay_time/1000;elsedelay_time=1;/延时小于1ms时,就延时1msps1ms=delay_time;cctl0=ccie; /开定时while(ps1ms);/在中断ps1mscctl0&=ccie; /关定时有一点需要指出,ispvm embedded要求将已转化成hex格式的vme作为程序的一部分固化在单片机里。很显然,要想更换配置文件,就必须连同单片机程序一同换掉。这对实现动态配置是不

18、利的,也是为什么在本方案中外加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 i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论