保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

CPLD器件的在系统动态配置


过程如下:首先,验证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=~pins&isp_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

《CPLD器件的在系统动态配置(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/163462.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。