微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 使用嵌入式处理器对可编程逻辑器件重编程

使用嵌入式处理器对可编程逻辑器件重编程

时间:06-05 来源:互联网 点击:

用器驱动输出管脚,下载电缆也可以通过多路复用器对JTAG 链进行编程或验证[5] 。TDI、TCK 和TMS 信号的同步通过嵌入式处理器的时钟信号和寄存器来完成,TDO 的缓冲区可以防止总线竞争,TDI、TCK 和TMS 的缓冲区在调试的时候还可以用来读回寄存器的值。图中的与门通过R/W 信号来控制执行读或写操作,而AS 和DS 信号则可以在另一个级别上对电路进行选择和去选择。

图1 接口逻辑

2.3 内存使用情况

下面讨论使用嵌入式处理器对可编程逻辑器件重编程时内存的使用情况。为了能够兼容没有内存分配服务的嵌入式处理器,Jam Player 不仅需要程序存储空间而且需要动态内存。程序存储空间(如硬盘驱动器或ROM)用于存储Jam Player 可执行二进制文件和Jam 文件;动态内存(如RAM)将在调用Jam Player的时候使用。

Jam Player 按照下面的步骤来使用内存:

(1)嵌入式处理器从ROM 中调用Jam Player;

(2)Jam Player 从ROM 中读取Jam 文件,然后把它存入RAM;

(3)Jam Player 对Jam 文件中包含的压缩程序数据解压,并将解压后的数据存入RAM;

(4)Jam Player 在RAM 中初始化符号表(symbol table)、堆栈(stack)和堆(heap)。

符号表包含Jam 文件的标记(labels)和变量(variables);堆栈用于FOR 循环,CALL 和PUSH 语句;堆作为临时内存用于数学表达式的求值以及填充数据的存储。在处理Jam 文件时每碰到一个命令堆栈和堆大小都将增加,可用动态内存越来越少,而Jam 文件、解压缩后的数据以及符号表需要的动态内存空间在整个过程中则保持不变。

Jam Player 的内存使用情况如图2 所示。

图2 Jam Player 的内存使用情况

2.3.1 程序存储空间(ROM)使用情况

所需程序存储空间为:

Jam Player的大小由使用的嵌入式处理器以及接口逻辑的复杂度决定,Jam文件总的程序存储空间由JTAG链上正在被编程的器件数量决定。如果JTAG链上只有一个器件,该器件对应Jam文件的大小即为所需程序存储空间的大小。Jam文件的大小还取决于目标器件,在压缩后一般在26K字节到30K字节。假设JTAG链中有3个器件,所有3个器件都将要编程,所需Jam文件存储空间将为3个Jam文件大小的总和。表1给出了单器件所需要程序存储空间的情况。

表1 单器件需要的程序存储空间

2.3.2 动态内存(RAM)的使用情况

所需RAM 空间为:

Jam 文件需要的RAM 空间与ROM 空间大小一样,在程序存储空间使用情况里已经讨论过了。在Jam Player从ROM 读出Jam 文件存储到RAM 之后,Jam Player 对Jam 文件里的压缩数据解压并将解压后的数据存储到RAM。解压后的数据占用RAM 空间的大小可以通过Jam 文件里的ACA 变量来得到。每个ACA 变量都在“变量声明/初始化”部分列出,每个数组的大小由变量声明方括号里的数值决定。例如:

说明解压后的ACA变量大小为434460比特,也就是大约53K字节。

符号表的大小由下式给出:

一个变量或标记名称的大小为48字节,JAM_C_MAX_SYMBOL_COUNT在jamdefs.h文件里定义,默认值为1021。实际上大多数Jam文件最多使用400个变量和标记名称。将JAM_C_MAX_SYMBOL_COUNT修改为400能节省一部分动态内存,

相比较Jam Player使用的总RAM空间大小而言堆栈和堆需要很少的RAM,jamdefs.h文件里的JAMC_MAX_NESTING_DEPTH常量定义堆栈的最大深度。表2给出了单器件所需要RAM空间的情况。

表2 单器件需要的RAM 空间

3 结论

本文通过软件、硬件以及内存的使用情况等方面的介绍,详细描述了一种通过嵌入式处理器使用Jam编程与测试语言对ISR器件重编程的新方法,为在产品原型及制造阶段对可编程逻辑器件重编程提供了参考,具有很强的实用意义。

本文作者创新点:由于在产品原型及制造阶段,单板上的JTAG接口很可能出于产品外形及内部结构设计的考虑已经无法与下载电缆相连接,此时将无法通过下载电缆对可编程逻辑器件重编程。而通过串行接口或以太网接口将可编程逻辑器件的更新程序发送到处理器,由处理器对可编程逻辑器件重编程,解决了这个难题。

参考文献

[1] 杜延,刘从越.嵌入式实时系统软件测试实践[J].微计算机信息,2007,4-2:86-88.

[2] Kamal,Raj.嵌入式系统:体系结构、编程设计[M].清华大学出版社,2005.

[3] 郑亚民,董晓舟.可编程逻辑器件开发软件QuartusII[M].国防工业出版社,2006.

[4] Stuart,R.Ball.嵌入式微处理器系统设计实例(第三版)[M].电子工业出版社,2004.

[5] 田泽.嵌入式系统开发与应用[M].北京航空航天大学出版社,2005.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top