EDA365电子论坛网

标题: FPGA器件在嵌入式系统中的配置方式的探讨 [打印本页]

作者: Allevi    时间: 2018-10-11 12:40
标题: FPGA器件在嵌入式系统中的配置方式的探讨
本帖最后由 Allevi 于 2018-10-11 12:58 编辑
. ]$ i- U% B: N5 c2 `% g
0 b( `9 b4 Z, k- V6 C在当今商业竞争日益加强的环境中,产品是否便于现场升级和是否便于灵活运用,成为商家迅速占领市场的关键因素。在这种背景下,Alter公司开发的基于SRAM LUT结构的FPGA器件得到了广泛应用。 8 L5 y% t8 _1 s6 A
( @, X9 f+ Y, f4 Q6 w( o/ {! ^) n# R
现场可编程门阵列FPGA(Field Programmable Gate Array)是一种高密度可编程逻辑器件,其逻辑功能是通过把设计生成的数据文件配置进芯片内部的静态配置数据存储器(SRAM)来实现的,具有可重复编程性,可以灵活实现各种逻辑功能。由于SRAM的易失性,每次系统上电时必须重新配置数据,即ICR(In-Circuit Reconfigurability)。只有在数据配置正确的情况下,系统才能正常工作。因此需要外接ROM保存其配置数据。FPGA的配置是有时序要求的,如果FPGA本身不能控制配置时序,就需要外部配置器件来进行时序控制。以Altera公司的FPGA为例,因其本身不能控制时序,就有专用的EPC系列配置器件供其使用。在嵌入式系统中,因为含有微处理器,可以使用微处理器产生配置时序,将保存在系统ROM中的配置数据存储到FPGA中。所以没有必要使用专用的EPC系列配置器件来配置FPGA。这样不仅节约了成本,还有效地缩小了系统体积。本文重点讨论在嵌入式系统中FPGA的配置方案。 6 ^: z! A1 z' O
# L) Z( U( Q8 T6 s
1.FPGA器件的配置方式
/ v- A1 I3 U7 O: t0 M" H) R- `9 j9 X: i9 ]
Altera公司生产的具有ICR功能的FPGA器件有FLEX6000、FLEX10K、APEX和ACEX等系列,它们可以用以下方式进行配置:
# Y. s/ a" Z* e7 x2 O- V; ?
5 a+ O7 h3 ]4 q# T! Q  ?% I1 Q1. 使用专用EPC配置器件,如EPC16、EPC8、EPC2、EPC1;
' S/ g: [: c$ e% S" u4 f1 z" _  S6 Q/ v( H/ v% o+ _
2. 被动串行方式(PS),使用微处理器的串行接口;
& M+ Z, m( V; p$ j0 i4 j7 v6 d* u! B" h# n. z2 u0 ~1 b, U
3. 被动并行同步方式(PPS),使用微处理器的并行同步接口; 4 D/ E. }8 P& j3 e5 J
. v% ?! N$ N2 }$ a; K
4. 被动并行异步方式(PPA),使用微处理器的并行异步接口;
9 g- B6 V/ A( x/ x3 U7 z* M+ H
7 B* x7 r1 {7 f/ [/ k9 ~5. 边界扫描方式(JTAG),使用JTAG下载电缆。 ! E2 Z, X7 {% C: H
/ o7 F. q. M0 v6 U2 T9 ]
2.下面详细分析上述五种配置方式:

9 V! q# Z$ ^+ t$ e3 S
% X& f$ S) _% z& k' s) m7 Q4 X使用EPC配置器件时,首先将配置文件从计算机下载到EPC配置器件中去,然后由EPC配置器件控制配置时序对FPGA进行配置。EPC配置器件有一次可编程和可擦写编程型两种:一次可编程型芯片只能写入一次,不适于开发阶段反复调试、修改及产品的方便升级;可擦除编程型价格昂贵,且容量有限,对于容量较大的可编程逻辑器件,需要多片配置芯片组成菊花链进行配置,增加了系统设计的难度。
6 h$ b( J6 f% `: d4 }( y, i' u7 l/ M: c  d1 j0 P+ c+ _
使用PS、PPS、PPA方式配置时,配置文件事先是以二进制形式保存在系统ROM中,然后通过微处理器将配置数据送进FPGA中。PS是通过串行方式送到FPGA中,PPS是以并行方式送给FPGA。FPGA在其内部将并行数据转换成串行数据,该数据转换时需要外部配置时钟的驱动。比较PS和PPS,所用的配置时间几乎相同,而PS的接口方式比较简单,所以嵌入式系统中通常选择PS方式配置FPGA。使用PPA方式配置数据时,微处理器将配置数据以并行方式送给FPAG,然后在FPGA内部进行数据串行化处理。与PPS不一样的地方是串行化处理时不需要配置外部时钟的驱动,但接口更复杂,工程中很少使用。
- ?6 E( ^$ e9 \9 q& I0 w- f8 K' z8 t" z
边界扫描方式需要连接计算机,无法在现场使用,嵌入式系统中很少采用这种方式。 % @$ q; x% V* F1 p; K: W7 p* H: l' s

  G' q( {" f7 K通过上述的分析,在嵌入式系统中要使用FPGA时,可以采用专用EPC配置器件、PS、PPS、PPA,但是PS、PPS、PPA比专用EPC配置更具成本和体积优势。在PS、PPS、PPA中,PS又是最优的通信方式。所以在嵌入式系统中,通常选择PS被动串行方式来配置FPGA。 . D! G' f+ k- x% g* x5 a. j
7 G8 i3 y* D1 F7 @! L
3. 嵌入式系统中FPGA的配置电路设计 4 o" P. V. H. U4 h3 R2 z' S

9 [, u1 [  r% J- v7 Q0 W3.1. PS方式配置时序
! b/ @! M! y9 s4 B: r9 ~5 y2 [% M+ Q6 m
在嵌入式系统中,微处理器可以产生配置时序,能够和FPGA直接通信,将ROM中的配置文件传输到FPGA的SRAM中去。通常使用PS被动串行方式进行配置FPGA,下面就通信中使用到的五根信号线的配置时序进行说明。
9 j  V/ l$ `; ?; V: B
2 ]1 D7 {0 a. r; C五根信号线分别为nCONFIG、nSTATUS、CONF_DONE、DCLK、DATA,连接微处理器的五个I/O口和对应的FPGA的引脚。

$ ^8 V6 e7 U( {  z, D8 h; E
5 h. q$ _* q# \- ]# B* i
图1 PS方式配置信号时序图
3 \3 S1 _# x6 p# {
) Y- h3 n1 I, E9 F! Z; ~
微处理器上的五个I/O端口连接上述五个信号线。其中连接nCONFIG、DCLK、DATA端口设置成输出态,nSTATUS、CONF_DONE端口设置成输入态。当微处理器开始与FPGA通信时,微处理器首先在nCONFIG上送出一个大于8μm的负脉冲,并且检测nSTATUS上的信号。当FPGA接收到nCONFIG上的下降沿时,迅速将nSTATUS和CONF_DONE拉低,并且保持低电平信号一直到nCONFIG抬高电平。当nCONFIG上抬高电平后过1μm,nSTATUS也将电平抬高,微处理器检测到nSTATUS上的变化后认为FPGA已经做好了接收数据的准备。下一步微处理器将产生配置时钟脉冲,配置时钟的第一个上升沿至少要比nSTATUS上升沿晚1μm。又由于配置数据和配置时钟上升沿同步,所以在配置时钟上升沿发生之前,数据线必须已经有了配置数据信号。配置数据是按照低位在前高位在后的顺序把数据送上数据线。当所有数据都传输完毕后,CONF_DONE线上电平被抬高以示配置完毕。如果传输中出现了异常,FPGA迫使nSTATUS拉低电平,微处理器一旦检测到了这种现象将重新开始配置。由于配置文件中已经包含了FPGA初始化的一些代码,所以传输完配置文件后,FPGA就可以正常工作了。
0 G% Q+ z( m0 T- ?# A+ z2 |
1 w' B  q- W0 q/ H$ }
3.2 配置电路设计

7 H0 N( A& @. d. \& z1 B
2 A& p" n8 N% {5 Y0 o嵌入式系统中FPGA的PS方式配置方式电路设计如图2所示。左侧的微处理器和FLASH、SDRAM组成了一个最基本的嵌入式系统。FLASH作为程序的存储器,其中存储着系统的整个应用程序、配置程序和配置文件。SDRAM作为系统程序运行空间,可以有效地解决微处理器自身SRAM容量小的问题。
: _4 ]8 d- t7 F6 ?9 u' l6 L9 [- V
; d/ A) Y( k9 W4. 系统软件设计FLASH
8 f3 [0 z0 z; D1 X( C7 M1 o  Z- j1 @3 |: b6 U0 \4 m  k* |, e
中存储的程序包括系统程序、配置程序、配置文件。系统加电后,微处理器从FLASH的0地址的引导程序开始运行,完成系统初始化后,微处理器将FLASH中的应用程序移至到SDRAM中运行。由于目前嵌入式系统大多采用实时多任务操作系统,所以设计时应将配置程序放置在第一个运行的任务中,保证开机后就开始运行。 7 q, m( Z# W! w0 @" i7 H  A, E' o

8 Q" e( m6 c- I( B" C软件设计时根据微处理器与FPGA通信信号线上的时序要求来设计。首先初始化微处理器的端口,在P0引脚上产生一个20μm的负脉冲,读取P4引脚上的信号,如果是高电平就开始数据准备,将数据读出,通过位移操作以串行比特流把低位的数据送上P1引脚,通过P2产生一个时钟上升沿。因为时钟上升沿与数据传送是同步的,这样P1引脚上的信号就传送到了FPGA。再将读出的数据右移位,将低位送上P1引脚,在P2上再产生一个时钟上升沿。如此循环下去,等读出的一个字节传送完毕时再读取下一个字节,按同样的方式传送出去。数据传送的同时检测P4(nSTATUS)是否为低,如 ' K% D8 n! d" r/ G: |7 [
6 E- g9 c. h, W, T/ J
果传送过程中遇到错误,P4将为低,这样系统需要重新配置。等到把数据传送完毕后检测P3引脚的状态,如果是高电平说明配置成功,如果是低电平则说明配置失败,系统需要重新配置。 2 x* F$ w8 J/ a" w, p! ^6 o1 X& [2 t0 C
: p/ T' a- n( C0 |; l% z& o0 Z9 g
软件设计语言可以选择C,也可用汇编。开发过程中根据芯片的硬件本身特点,注意各方面的优化。因为嵌入式系统中从SDRAM中读取数据的速度很快,所以软件设计时无须考虑从SDRAM到微处理器的传输速度问题。向FPGA器件写数据时,最低有效位居先。微处理器产生的配置时序可以通过给时序引脚发送高低电平来实现。 9 G2 e% Z' D$ G

# e6 Y- n6 B6 G5 F5. 结论
4 x3 U0 e# @: M. \! D/ f2 T
/ c( K6 d% o) }% ], K当今嵌入式系统已应用到各个领域中,因此无论成本还是体积上的优化,都是很有必要的。用嵌入式系统本身的资源优势来完成其它部件的专用功能,能够很有效地达到最优化集成、降低成本的作用。本文讨论的通用方案适用于不同的微处理器和Altera公司所有相关系列的FPGA产品。由于FPGA具有可重复配置的功能,所以在嵌入式系统中可预先包含多个不同功能的配置文件,根据现场的需要进行相应的配置。这充分显示出FPGA现场升级、灵活运用的设计理念。
6 w6 |. p2 Q" d  I* e% f/ `; x

% N) P) b1 k  @5 s( }! O" p' d
作者: Mhza    时间: 2018-10-12 14:36
学习学习




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2