EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本文主要论述在ARM嵌入式系统中如何实现FPGA从串配置的方法,将系统程序及配置数据存储在系统Flash中,利用ARM的通用I/O口产生配置时序,省去专用的配置PROM。
; W4 x e9 N" h% K$ L. z! \7 [$ X5 m- k8 ~" T, w* D
文中ARM微处理器采用samsung公司的ARM7TDMI系列中的S3C4480X,FPGA采用xilinx
' N4 O3 l+ [; f1 `5 R3 Y# V% R公司spartan3E系列中的XC3S100E,详细讨论FPGA的从串配置的时序,同时论述S3C4480X从串配置spartan3E系列FPGA的软、硬件实现方法。实践证明,该方法在成本、体积、灵活性上均具有优势,将此方法应用在嵌入式系统中具有很强的实用价值。 引言
8 J |+ m: W- M1 z, }7 C% x& C! e* I: L. W3 V$ h2 Y0 O
基于ARM微处理器技术的应用已经得到了广泛、深入的应用,包括工业控制领域、网络应用、消费类电子产品、成像和安全产品等领域。
: A; x& r0 t' @8 O+ l1 D1 _
2 q8 |! B1 b* ]/ J+ e& ?& W0 @ FPGA通过把设计生成的数据文件配置到芯片内部的SRAM完成其逻辑功能,具有可重复编程性,可灵活实现各种逻辑功能,FPGA的这种特性使其在现代电子系统设计中得到了广泛应用。. _1 d( v% P: x( ]6 v8 K- f) K
# K2 Q# z/ W5 I+ `1 \8 W
基于SRAM工艺的FPGA是易失性的,系统掉电后SRAM内的数据将全部丢失,需要外接ROM保存其配置数据,系统每次上电时必须重新配置数据才能正常工作。通常设计时采用两种方案保存SRAM内的数据,一是使用专用的PROM,Xilinx公司的XCFxx系列PROM提供FPGA的配置时序,上电时自动加载PROM中的配置数据到FPGA的SRAM中;另一种是在含有微控制器的系统中,如嵌入式系统,采用其他非易失性存储器来存储配置数据,如EEPROM、FLASH等,微控制器模拟FPGA的配置时序将ROM中的数据置入FPGA中。与前面一种方案相比,在对成本和体积敏感的系统中,该方案更适用。0 W* V# Z) l0 n4 K
0 y) a; T7 P1 z' \: Z; Y3 Q. Q0 s从串配嚣原理7 L5 G/ S2 H, Q8 s: j
. ~. \ ^9 K) V$ V+ o4 ?
1.从串配置原理5 O2 W4 x* Y2 S
% p4 H! A+ R7 Q3 g9 }" O
Xilinx公司的Spartan3E系列FPGA采用90nm工艺的2.5V低电压FPGA芯片,高性能、低功耗、可无限次编程。XC3S100E总门数达10万门,可采用从串、主串、从并、主并、JTAG等方式进行配置,与从串配置相关的引脚功能及配置如下:3 |) h: r& R& }* E
3 `4 S* |8 R w
①M[2:O]:配置模式选择位。M2,M1,M0均接上拉电阻,即M[2:O]=111时为从串模式。
+ q* i* n6 [& R' F" A) _ o& G2 N5 U: C/ r2 c4 p6 a
②CCLK:配置时钟位,由微处理器提供,上升沿有效。- a- W$ O& H8 N6 ]8 `5 C' L
2 {1 b; v0 w$ v ③DIN:串行数据输入位。
) x" i8 x& D2 }: j* p5 _2 {3 N0 ~: }9 V5 `( G: |7 X
④DOUT:串行数据输出位,用于菊花链式配置。. N: M: H" F3 C5 t
) O( P1 O0 Y- q
⑤)PROG_B:低电平异步复位FPGA内部逻辑位。内部配置Memory完全复位后,该引脚指示高电平,此时才能配置FPGA。
$ B; p2 r$ l4 P0 @. v. |, ^% Z
7 ~) L4 V6 n# m# K; q ⑥ INIT_B:由低电平到高电平跳变时,采样配置模式选择位M[2:0],确定配置方式;配置过程中若出现配置错误,INIT_B将呈现低电平。, p: _3 m: Z* E) `' q, W
, {4 n4 S0 M: R+ N ⑦DONE:复位时为低电平,配置成功,则为高电平。
4 G; c2 { c( a: `# J ^4 C G- ?8 @8 F# T M. n9 W8 Q
2.微处理器从串配置FPGA的时序
5 L2 |, [, L; K, x* w+ R2 ]" L
- `2 L; c6 @8 Y2 oFPGA的配置过程:
7 e/ Z! @5 C% U4 l) ]4 ?; V* b. f0 o: V7 T0 c
①系统上电后,将PROG_B置为低电平,复位FPGA内部逻辑重新配置FPGA,延时100 μs充分复位内部逻辑后,将PROG_B置为高电平。
, N! \+ L/ }0 u: g) C# y9 k" i# y: |( y! T
% c' ^, o# J5 Z9 d% r3 U% a9 Z) e ②INIT_B保持低电平,将PROG_B置高电平大于300ns后,FPGA将INILB置为高电平,在INIT_B由低向高跳变的瞬间,采样配置模式选择位M[2:0],采用从串配置模式。
% k+ {% x6 N" Q1 c( S1 U
$ p: J4 q. R( r ③FPGA采样配置模式后,微处理器开始配置FPGA时钟CCLK和数据,在CCLK的每个上升沿,每bit数据被传入到DIN,数据字节先发低位,再发高位,配置过程中若发生错误,则INIT_B呈现低电平。
& M8 e$ m# R+ y) }) E; R8 V( ^
- z7 [. v* o* n0 H7 \ ④所有配置数据传送完成,CRC校验无误,则DONE呈现高电平,否则为低电平。
q" }$ z( o3 U7 Z
0 }; ?% M$ L0 m3 W! g% q ⑤DONE为高后,FPGA释放全局三态(GTS),激活IO管脚,释放全部置位复位(GSR)和全局写使能(GWE)有效,开始执行配置区里的逻辑。
. e- ~/ x6 }$ W3 X$ c) D
- M- s% \" _3 M: \" V1 M 3.配置文件产生的方法
* T. x% L2 h& m4 h4 `# _* T( S6 O2 T; ~& m- ]2 A* T
用Xilinx公司提供的开发工具ISE8.1将工程经过综合、映射、布局、布线后产生编程文件,编程文件有.bit、.bin、.mcs、.tek、.hex等格式,其中.bit格式用作JTAG下载,其他几种格式用作专用PROM编程。系统产生配置文件时首先按照产生专用PROM编程文件的方法产生.bin文件,然后将该bin文件转换成ASC Il码文件存储,并且各个字节之间用逗号分隔,最后把该配置数据存放在系统程序的一个头文件的数组Config_data_array[]中,作为系统程序源代码的一部分,和其它程序一起编译。 z; k _1 q/ b2 ^
5 u7 v9 x( ]! y8 f1 U+ @! `硬件设计
2 U }# r" M6 v6 {5 w- P3 U
! u, y. [$ ^5 H) ~& R: S ARM微处理器S3C44BOX片内集成ARM7TDMI核,同时集成了丰富的外围功能模块,内部增加的8K高速缓;中器大大提高了性能。S3C44BOX可访问256MB的地址空间,最高运行频率达66MHz,包含4M Flash程序存储器,XC3S100E从串配置程序和配置文件都固化于其中保存,该FIash支持低电压写入(1.65~3.3V)。SDRAM具有8M的运行空间,系统在直接运行Flastl时速度非常慢,通常将Flash中的代码搬到SDRAM中运行。9 L. w/ t" H/ N2 t( _
4 x/ a, X2 F* }% [# ?! `, J
S3C4480X与XC3S100E接口主要是PROG_B、lNIT_B、DONE、CCLK、DIN五根信号线,硬件接口电路如图2所示,其中VCC33表示3.3V,VCC25表示2.5V。 1.在S3C44BOX中实现配置时序3 S5 u& f1 ^0 q9 w7 m" k* Y
( i! y- |4 q/ k3 V
Xilinx公司的每个特定型号的FPGA器件,其配置文件大小是相同的,跟FPGA内部逻辑设计的复杂度无关,Spartan3E系列的10万门FPGA×C3S100E,其配置文件固定为581344bits,若CCLK的时钟周期设置为2 μ s,配置时间约为1.2s。
& w2 i7 O' R M' s; x" U/ H
9 Y2 z/ g1 @1 D& h$ x* X 软件配置以确保ARM完全按照配置信号的时序工作,本文采用S3C44BOX的通用IO口GPF0、GPFl、GPF2、GPF3胶GPF4模拟FPGA的DIN、CCLK、DONE、INIT_B及PROG_B的时序。: [- L5 N% i$ d$ t
/ J) s+ U6 b1 s8 z S3C44BOX微处理中大多数引脚都是多功能引脚,通过端口配置寄存器选择不同的功能。以端口F为例,控制寄存器rP-CONF用作设定引脚功能、输入、输出或特殊功能;数据寄存器rPDATF[0:8]对应GPF0-GPF8引脚上的数据;读写寄存器rP-DATF的相应位,对应于相应引脚的读或写的控制。
* Z, B% }* m( W2 c0 j; J5 A
) R/ E. l2 O* E/ Z( A 微处理器将CCLK设为上升沿时,可先向GPF1写0,再写1得到,延时程序由for循环实现,程序如下所示:
3 \& n; Q$ h! ?/ F" W3 l![]() 微处理器读取某个引脚状态,如等待INIT_B(GPF3)为高电平时,可通过如下程序实现: b1 l+ M) L9 }5 b
! ^3 D- M" g/ v1 U
CCLK在每个上升沿将1 bit数据输入到DIN,首先将GPF1置低电平,1bit数据在GPF0准备好,然后将GPF1置高即可传输,重复循环着将Config_data_array[]中的每个字节按先低位再高位的次序写入FPGA中。
4 M& @5 D( M4 ^$ a I9 s* x( T! j0 N6 A3 B
( |7 y# u* i1 b; r6 C: h9 ~实验结果验证% @6 Y4 X$ I+ p3 G2 t, h# q) m- k
6 P+ W$ V8 i$ y6 q# a
验证环境:编程专用PROM的led.bin文件。用一个简单的C程序将bin文件转成ASC II码文件,把该ASC II码文件复制到配置数据数组corlfig_data_array[]中,然后把配置程序、配置数据、和系统程序在ADT环境下一起编译,将生成的bin文件通过JTAG口烧写到FLASH中。重新上电后,FPGA配置正常,实验运行结果与预设一致。
( o) X5 {' z' k8 p结束语2 s( o) q/ V6 o2 a* M
' y, e! W( J- B2 N 基于ARM的FPGA从串配置方案结构简单,接线容易,软件编程也不复杂,虽然该配置控制电路以Xilinx公司Spartan13E系列的FPGA为例,但稍加修改即可适用于其它系列的FPGA器件,具有一定的通用性。
X# d6 Z2 A8 i5 h
8 A5 S/ U/ [5 y- z 另外,FPGA具有可重复配置的灵活性,在嵌入式系统中可以通过串口、网口远程烧写Flash重构系统功能,这种在线重构技术,为设备的智能化在线维护、功能重组和在线升级等提供了可能,具有很强的灵活性。4 x4 i1 q1 F9 | c1 k9 b+ A
|