浅谈FPGA的汇编与编程技术
2010-12-31徐阳
徐阳
(宁省盘锦市职业技术学院,辽宁 盘锦 124010)
1 引言
FPGA是一类高集成度的可编程逻辑器件,起源于美国的Xilinx公司,在这二十年的发展过程中,FPGA的硬件体系结构和软件开发工具都在不断的完善,日趋成熟。FPGA结合了微电子技术、电路技术、EDA技术,使设计者可以集中精力进行所需逻辑功能的设计,缩短设计周期,提高设计质量。
2 FPGA的软件设计开发流程
2.1 设计输入
设计输入就是指设计人员将所设计的系统或电路以开发软件要求的某种形式表示出来,并输入计算机的过程。
2.2 芯片数据库
这里芯片数据库的设计目标是做成支持把硬件部分设计的结构转换成软件部分可识别的格式,提供软件设计其它步骤所需要的数据,从而进行软件部分的处理。与一般意义上的数据库不同,芯片数据库还要考虑如何表示FPGA芯片的内部结构。
2.3 逻辑综合
逻辑综合,是将较高抽象层次的描述自动转换到较低层次描述的一种方法。这里是指将RTL级的描述转换为门级网表的过程。逻辑综合要求的输入除RTL描述的程序模块或者原理图文件或波形文件外,还需要另外两个输入文件,一个是综合工具支持的工艺库,这些工艺库包含一些标准的单元,在综合时,综合工具会将RTL级代码描述的设计用工艺库中的标准单元转化为逻辑电路;另一种输入是约束条件,用于决定综合过程中的逻辑优化方法,约束条件一般包含时序、面积、速度、功耗、负载要求和优化方法等,甚至还包含综合时需要注意的设计规则。
2.4 工艺映射
根据综合生成的网表,将用户设计嵌入FPGA芯片。这里的嵌入,实际是在前文所提的芯片数据库上进行的。工艺映射的结果是得到原子(ATOM)网表,即包含多个查找表的等效电路的描述。
2.5 布局
将查找表装入逻辑块,得到逻辑块网表,通常一个逻辑块内包含有几个查找表和寄存器。布局算法决定电路中不同的逻辑块在FPGA芯片中的分布,优化的结果应该是,相互关联的逻辑块放在一起,这样可以尽可能的减少和缩短连线,在布局中也应考虑连线分布密度的平衡和获得最快的电路速度。布局之后将得到布线所需的所有通路信息。
2.6 布线
一旦确定了逻辑块的布局,接下来就应该确定逻辑块之间的选择连线和开关。将目标芯片的布线结构等效为一个有向图,在这样一个布线资源图中,每一条线和每个逻辑块的引脚都是一个节点,潜在的连接是边,相应的问题就转化为寻找布线资源图的最短路径。
2.7 汇编
目的是产生目标位流文件bit-stream,汇编模块将适配过程的器件逻辑单元和引脚分配信息转换为器件的编程图像,并将这些图像以目标器件的编程对象文件或SRAM对象文件的形式保存为编程文件,以便编程器使用该文件对器件进行编程配置。在汇编过程中,也可以进行时序分析。
2.8 编程
器件编程也可以称为配置,就是将编程数据下载到相应的FPGA器件中去,进行真正的芯片测试。
3 FPGA的汇编技术
FPGA支持软件设计流程中的汇编模块的目的是产生目标位流文件bit-stream。汇编模块将适配过程的器件逻辑单元和引脚分配信息转换为器件的编程图像,并将这些图像以目标器件的编程对象文件或者SRAM对象文件的形式保存为编程文件,以便编程器使用该文件对器件进行编程配置。对FPGA的相关配置文件加以简单介绍。
a.sof文件:如果选择模式为JTAG或者PS方式,使用Altera的下载电缆对FPGA进行配置时,将用到sof文件。该文件是QuartusⅡ自动产生的。在使用sof文件配置时,QuartusⅡ下载工具将控制整个配置的顺序,并向配置数据流内自动插入合适的头信息。其他的配置文件类型都是从相应的sof文件产生出来的。
b.pof文件:是用来对各种Altera配置芯片进行编程的文件。要注意的是,需要在QuartusⅡ中设置编程器件类型,才可以生成该类型的pof文件。对于一些小的FPGA,多个FPGA的sof文件可以放到一个pof文件内,烧制到一个配置器件中;而对一些较大的FPGA,如果一个配置器件不够,可以使用多个配置器件。
c.rbf文件:是二进制的配置文件,只包含配置数据的内容。通常被用在外部的智能配置设备上,如微处理器。例如,一种典型的用法是将rbf文件通过其它工具转换成十六进制的数组文件,编译到微处理器的执行代码中,由微处理器将数据加载到FPGA中。当然,也可以由处理器在配置过程中完成实时的转换工作。d.ttf文件:与rbf文件内容一样的ASCII码格式文件,在每个配置数据字节之间用逗号隔开。
e.rpd文件:用外部编程设备对AS串行配置芯片进行在系统编程的文件。这个文件是由pof文件转换而来的,选择不同的AS配置芯片,转换得到的rpd文件大小都不一样。
f.jam文件:是一种以Jam器件编程语言描述的ASCII码文件。它包含了对JTAG链中一个或多个FPGA进行编程、验证和空白校验的数据信息。用户可以在QuartusⅡ的编程器或微处理器中使用jam文件,并可以用jam文件对所有QuartusⅡ支持的器件进行配置。甚至JTAG链上还可以包含非Altera的器件。e.hex文件:由Intel公司提出的配置文件格式。它是一个ASCII码文本文件,以Intel的十六进制格式保存物理程序存储器中的目标代码的映像,可以用在外部的配置设备上。hex文件中,每一行包含一个hex记录,这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。
4 FPGA的编程技术
4.1 FPGA的配置编程
这个过程的目的是将编程文件下载到FPGA芯片,进行真正的芯片测试。与CPLD不同,FPGA是基于门阵列方式为用户提供可编程资源的,其内部逻辑结构的形成是由配置数据决定的。这些配置数据通过外部控制电路或微处理器加载到FPGA内部的SRAM中,由于SRAM的易失性,每次上电时,都必须对FPGA进行重新配置,在不掉电的情况下,这些逻辑结构将会始终被保持,从而完成用户编程所要实现的功能。器件编程需要满足一定的条件,如编程电压,编程时序和编程算法等。一次性编程的FPGA需要专用的编程器完成器件的编程工作,基于SRAM的FPGA可以由EPROM或其他存储体进行配置。在系统的可编程器件则不需要专门的编程器,只要1根下载编程电缆就可以了。在系统编程是指对器件、电路板或整个电子系统的逻辑功能可随时进行修改或重构的能力。
4.2 FPGA的编程模式
FPGA的配置方式分为主动式和被动式,数据宽度有8位并行方式和串行方式两种。在主动模式下,由FPGA器件引导配置操作过程,FPGA在上电后,自动将配置数据从相应的外存储器读入到SRAM中,实现内部结构映射。这种配置方式通常用于SRAM类型的可编程逻辑器件芯片。目前大多数FPGA都是基于SRAM工艺的,而SRAM工艺的芯片在掉电后信息就会丢失,一定需要外加一片专用配置芯片,在上电的时候,由这个专用配置芯片把数据加载到SRAM中,然后FPGA就可以正常工作,由于配置时间很短,不会影响系统正常工作。也有少数FPGA采用反熔丝或Flash工艺,对这种FPGA就不需要外加专用的配置芯片而在被动模式下,FPGA则作为从属器件,通常由控制器或计算机控制配置的整个过程,实现配置数据的下载。这种配置方式常用于E2PROM类型的可编程逻辑器件芯片的编程,编程数据长期不会消失。FPGA的配置引脚可分为两类:专用配置引脚和非专用配置引脚。专用配置引脚只有在配置时起作用,而非专用配置引脚在配置完成后则可以作为普通的I/O口使用。专用的配置引脚有:配置模式脚 M2、M1、M0;配置时钟CCLK;配置逻辑异步复位PROG,启动控制DONE 及边界扫描 TDI、TDO、TMS、TCK。非专用配置引脚有Din、D0~D7、CS、WRITE、BUSY、INIT。在不同的配置模式下,配置时钟CCLK可由FPGA内部产生,也可以由外部控制电路提供。FPGA共有四种配置模式:从串模式,主串模式,从并模式以及边界扫描模式。具体的配置模式由模式选择引脚M0、M1、M2决定。
[1]段桂江,保质设计的集成化过程与方法模型研究,中国机械工程,2005.
[2]王美清,集成化设计质量管理平台,航空制造技术,2004.