找回密码
 注册
关于网站域名变更的通知
查看: 334|回复: 1
打印 上一主题 下一主题

嵌入式系统中从串配置FPGA的实现

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-6-15 19:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

本文主要论述在ARM嵌入式系统中如何实现FPGA从串配置的方法,将系统程序及配置数据存储在系统Flash中,利用ARM的通用I/O口产生配置时序,省去专用的配置PROM。+ i! a7 d: _$ ~% C" k
2 i$ ?# `8 y2 K2 r: i' w+ b; w
  文中ARM微处理器采用samsung公司的ARM7TDMI系列中的S3C4480X,FPGA采用xilinx
, }# y) g4 L' i2 l公司spartan3E系列中的XC3S100E,详细讨论FPGA的从串配置的时序,同时论述S3C4480X从串配置spartan3E系列FPGA的软、硬件实现方法。实践证明,该方法在成本、体积、灵活性上均具有优势,将此方法应用在嵌入式系统中具有很强的实用价值。

引言) L$ @+ C0 F4 P
6 S$ e" h- F# g; g, K
  基于ARM微处理器技术的应用已经得到了广泛、深入的应用,包括工业控制领域、网络应用、消费类电子产品、成像和安全产品等领域。4 N- E" e2 t$ a$ F: m0 l5 }9 u  c! _. w
- @; d$ I5 b: U6 l
  FPGA通过把设计生成的数据文件配置到芯片内部的SRAM完成其逻辑功能,具有可重复编程性,可灵活实现各种逻辑功能,FPGA的这种特性使其在现代电子系统设计中得到了广泛应用。
; v: o0 h& ^7 h  _9 C) `9 o0 B. |/ k' p5 Y
  基于SRAM工艺的FPGA是易失性的,系统掉电后SRAM内的数据将全部丢失,需要外接ROM保存其配置数据,系统每次上电时必须重新配置数据才能正常工作。通常设计时采用两种方案保存SRAM内的数据,一是使用专用的PROM,Xilinx公司的XCFxx系列PROM提供FPGA的配置时序,上电时自动加载PROM中的配置数据到FPGA的SRAM中;另一种是在含有微控制器的系统中,如嵌入式系统,采用其他非易失性存储器来存储配置数据,如EEPROM、FLASH等,微控制器模拟FPGA的配置时序将ROM中的数据置入FPGA中。与前面一种方案相比,在对成本和体积敏感的系统中,该方案更适用。# m. E' q% @0 {
* v2 m" T1 N& N$ b3 M
从串配嚣原理
  u9 T! a  S4 x- }% n- a/ z' o3 _* X. J$ g' [, s* e
1.从串配置原理
; z# O+ s% H2 y8 R/ F$ ~, Z( ^) {5 B/ [) f
  Xilinx公司的Spartan3E系列FPGA采用90nm工艺的2.5V低电压FPGA芯片,高性能、低功耗、可无限次编程。XC3S100E总门数达10万门,可采用从串、主串、从并、主并、JTAG等方式进行配置,与从串配置相关的引脚功能及配置如下:
6 C5 w( S1 K, C9 C6 Z
3 z5 {! K& L, N; i- ]; X  ①M[2:O]:配置模式选择位。M2,M1,M0均接上拉电阻,即M[2:O]=111时为从串模式。
3 [7 L  P9 E2 a/ S4 c- x
. n- b+ |4 f/ m$ R+ ^, a$ B  ②CCLK:配置时钟位,由微处理器提供,上升沿有效。; n5 _4 d/ |* ^+ b/ E! G1 m5 w0 J
1 T9 p  ?1 h$ t9 o0 F
  ③DIN:串行数据输入位。
+ a2 L) _& n6 v$ Y9 E* Q( H# \. P. V3 X
  ④DOUT:串行数据输出位,用于菊花链式配置。% ^$ y! i2 H$ S" C6 ]1 ^* ~

6 E- ~3 D1 U  a+ }8 b  \  ⑤)PROG_B:低电平异步复位FPGA内部逻辑位。内部配置Memory完全复位后,该引脚指示高电平,此时才能配置FPGA。
7 g9 Z  t# t6 v0 v) V( z; l0 C& i& _) }/ E6 ?7 x8 Q
  ⑥ INIT_B:由低电平到高电平跳变时,采样配置模式选择位M[2:0],确定配置方式;配置过程中若出现配置错误,INIT_B将呈现低电平。2 Y. Q* j' c3 q6 F5 X( {

9 v" S7 U/ H/ x  ⑦DONE:复位时为低电平,配置成功,则为高电平。
9 X: x& g" S" H6 E) c8 f! W
3 t& L- I) c# H- Q% c: L2.微处理器从串配置FPGA的时序3 Y, l/ P) _8 N" L) \

0 X" }, B, d2 b2 lFPGA的配置过程:$ o" w' n. ~6 J" a

4 B. u' ^+ t( \8 ?& p- X) G  ①系统上电后,将PROG_B置为低电平,复位FPGA内部逻辑重新配置FPGA,延时100 μs充分复位内部逻辑后,将PROG_B置为高电平。% m" k) N6 p7 o8 r
* s; O: H# ]$ N  z) g4 n! r; J
  ②INIT_B保持低电平,将PROG_B置高电平大于300ns后,FPGA将INILB置为高电平,在INIT_B由低向高跳变的瞬间,采样配置模式选择位M[2:0],采用从串配置模式。
" t) s% c) b3 N3 M' W/ Q. u" {5 G
3 e; I# P% S; [# \% r6 l2 j5 h  ③FPGA采样配置模式后,微处理器开始配置FPGA时钟CCLK和数据,在CCLK的每个上升沿,每bit数据被传入到DIN,数据字节先发低位,再发高位,配置过程中若发生错误,则INIT_B呈现低电平。+ l& k/ [0 K3 q( a

9 x/ `  g# r! B% H4 l1 t; A  ④所有配置数据传送完成,CRC校验无误,则DONE呈现高电平,否则为低电平。2 d4 I+ g/ z3 M- G- [) [

2 y2 x& i$ _6 A  R/ q4 r6 I3 ~  ⑤DONE为高后,FPGA释放全局三态(GTS),激活IO管脚,释放全部置位复位(GSR)和全局写使能(GWE)有效,开始执行配置区里的逻辑。% y3 `( g% H' Y

) ~9 B2 l. Z- c! Q" v& l

3.配置文件产生的方法
. ^3 o$ k3 z) W, y& {3 e
$ ^* M5 E" F: e  用Xilinx公司提供的开发工具ISE8.1将工程经过综合、映射、布局、布线后产生编程文件,编程文件有.bit、.bin、.mcs、.tek、.hex等格式,其中.bit格式用作JTAG下载,其他几种格式用作专用PROM编程。系统产生配置文件时首先按照产生专用PROM编程文件的方法产生.bin文件,然后将该bin文件转换成ASC Il码文件存储,并且各个字节之间用逗号分隔,最后把该配置数据存放在系统程序的一个头文件的数组Config_data_array[]中,作为系统程序源代码的一部分,和其它程序一起编译。( y0 O7 W7 d3 i, a! [/ K

9 O9 ^" m2 w7 r- [/ V6 _2 l硬件设计# K, T) U, q8 E( }$ E8 ?
9 H5 f& o9 a; `# ^' e( ^
  ARM微处理器S3C44BOX片内集成ARM7TDMI核,同时集成了丰富的外围功能模块,内部增加的8K高速缓;中器大大提高了性能。S3C44BOX可访问256MB的地址空间,最高运行频率达66MHz,包含4M Flash程序存储器,XC3S100E从串配置程序和配置文件都固化于其中保存,该FIash支持低电压写入(1.65~3.3V)。SDRAM具有8M的运行空间,系统在直接运行Flastl时速度非常慢,通常将Flash中的代码搬到SDRAM中运行。3 G7 n5 `2 [5 ]

  N% }' P5 H2 b( t, e% ^  S3C4480X与XC3S100E接口主要是PROG_B、lNIT_B、DONE、CCLK、DIN五根信号线,硬件接口电路如图2所示,其中VCC33表示3.3V,VCC25表示2.5V。

1.在S3C44BOX中实现配置时序% i( S- B4 ^) {# v: ~
" D3 \4 ]  J1 d2 ^. s% F
  Xilinx公司的每个特定型号的FPGA器件,其配置文件大小是相同的,跟FPGA内部逻辑设计的复杂度无关,Spartan3E系列的10万门FPGA×C3S100E,其配置文件固定为581344bits,若CCLK的时钟周期设置为2 μ s,配置时间约为1.2s。
  t7 a3 Q! l6 K; m
8 E% ]9 i5 f8 L! L3 \2 G0 P  软件配置以确保ARM完全按照配置信号的时序工作,本文采用S3C44BOX的通用IO口GPF0、GPFl、GPF2、GPF3胶GPF4模拟FPGA的DIN、CCLK、DONE、INIT_B及PROG_B的时序。
# g& p8 T; R- p; G* b0 O9 }% Y
- l( i8 t3 D' {4 d% R6 }  S3C44BOX微处理中大多数引脚都是多功能引脚,通过端口配置寄存器选择不同的功能。以端口F为例,控制寄存器rP-CONF用作设定引脚功能、输入、输出或特殊功能;数据寄存器rPDATF[0:8]对应GPF0-GPF8引脚上的数据;读写寄存器rP-DATF的相应位,对应于相应引脚的读或写的控制。5 M! h4 K: Q3 E  E% I7 B" t+ T1 \! G
) Y9 v6 }) ]3 `2 _3 u1 t
  微处理器将CCLK设为上升沿时,可先向GPF1写0,再写1得到,延时程序由for循环实现,程序如下所示:
% ^8 S$ n" Q, X

  微处理器读取某个引脚状态,如等待INIT_B(GPF3)为高电平时,可通过如下程序实现:8 @) M" A( r; D& K# Z; e- }
6 F4 B$ R2 s8 y/ z, I3 K& _( q* M
  CCLK在每个上升沿将1 bit数据输入到DIN,首先将GPF1置低电平,1bit数据在GPF0准备好,然后将GPF1置高即可传输,重复循环着将Config_data_array[]中的每个字节按先低位再高位的次序写入FPGA中。
* B2 T$ I* B  S1 ?( ~2 m( E
! w' ]$ W9 z" |( O, n" G2 f实验结果验证9 i/ d. [' J8 a/ ]

  k0 A% Q/ u  X& j) K! X& n  验证环境:编程专用PROM的led.bin文件。用一个简单的C程序将bin文件转成ASC II码文件,把该ASC II码文件复制到配置数据数组corlfig_data_array[]中,然后把配置程序、配置数据、和系统程序在ADT环境下一起编译,将生成的bin文件通过JTAG口烧写到FLASH中。重新上电后,FPGA配置正常,实验运行结果与预设一致。
# A; _3 g0 n5 o. O结束语- r/ v" `9 f$ t4 ?* Y6 d4 ~3 Z4 ?
. q& l7 u& [- ]0 p" u! A% S5 e
  基于ARM的FPGA从串配置方案结构简单,接线容易,软件编程也不复杂,虽然该配置控制电路以Xilinx公司Spartan13E系列的FPGA为例,但稍加修改即可适用于其它系列的FPGA器件,具有一定的通用性。
+ \# Q2 y* E0 M4 ~, A7 x9 ~( m5 I( L7 {; R9 F0 V# {
  另外,FPGA具有可重复配置的灵活性,在嵌入式系统中可以通过串口、网口远程烧写Flash重构系统功能,这种在线重构技术,为设备的智能化在线维护、功能重组和在线升级等提供了可能,具有很强的灵活性。$ h# t& \1 o7 S/ I) d

该用户从未签到

2#
发表于 2020-6-15 19:39 | 只看该作者
实践证明,该方法在成本、体积、灵活性上均具有优势,将此方法应用在嵌入式系统中具有很强的实用价值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-13 05:40 , Processed in 0.125000 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表