一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 8117|回复: 6
收起左侧

用CPU配置FPGA

[复制链接]
发表于 2008-12-5 16:36 | 显示全部楼层 |阅读模式
用CPU配置FPGA(一)概 述( G% x6 h5 F. n1 c
一. 概 述  c& t4 B5 z9 s% D7 p
% Y2 t  [* f3 T- G: V1 E3 w" O/ u5 |
目前很多产品都广泛用了FPGA,虽然品种不同,但编程方式几乎都一样:利用专用的EPROM对FPGA进行配置。专用的EPROM价格不便宜,且大不跟上都是一次性OPT方式编程。一旦更改FPGA设计,代价不小。为了进一步降低产品的成本和升级成本,可以考虑利用板上现有CPU子系统中空闲的ROM空间存放FPGA的配置数据,并由CPU模拟专用EPROM对 FPGA进行配置。 本文将以PowerPC860和EP1K30为例,讲解如何利用CPU来配置FPGA。
* {/ i( \1 E, H: ~9 \& ]! R
3 D7 ]8 b3 E* c- M) I7 b" _CPU配置FPGA的优点% j, l4 C; k& Y5 l$ u4 j

8 R2 g2 o: H4 @/ u与Configuration EPROM方式相比本设计有如下优点:: `! D) E6 p; Q6 d6 q, b: {9 l; K

' H9 P  r# i/ P- \- {1.降低硬件成本——省去了FPGA专用EPROM的成本,而几乎不增加其他成本。以ALTERA的10K系列为例,板上至少要配一片以上的EPC1,每片 EPC1的价格要几十元,容量1M位。提供1Mb的存储空间,对于大部分单板来说(如860系统的单板),是不需要增加硬件的。即使增加1Mb存储空间,通用存储器也会比FPGA专用EPROM便宜。
4 ^3 V7 s- o" q( X
; I4 V/ V# k1 d7 z" n' l' f2.可多次编程——FPGA专用EPROM几乎都是OTP,一旦更换FPGA版本,旧版本的并不便宜的EPROM只能丢弃。如果使用本设计对FPGA配置,选用可擦除的通用存储器保存FPGA的编程数据,更换FPGA版本,无须付出任何硬件代价。这也是降低硬件成本的一个方面。( n5 W- F6 Y7 K0 P4 i, f

0 [4 y, b+ B4 ^# y( |3. 实现真正"现场可编程"--FPGA的特点就是"现场可编程",只有使用CPU对FPGA编程才能体现这一特点。如果设计周全的话,单板上的FPGA可以做到在线升级。% Y$ A4 f; H# i$ \
5 l7 p9 Q# q- Z( g3 ^! C
4. 减少生产工序--省去了对"FPGA专用EPROM"烧结的工序,对提高生产率,降低生产成本等均有好处。对于双面再流焊的单板,更可省去手工补焊DIP器件的工序。0 G5 ?( J( f1 f# }' z

' f8 a, ~, G/ t当然,与Configuration EPROM方式相比也有一些需要注意的的地方:, W+ ~5 x6 m! T8 V2 N
, ~. e8 K% V8 O- R! p+ T' b& m
1.需要CPU提供5根I/O线--一般来说,这并不困难。对于MPC860一类的CPU来说,区区5根I/O线是不成问题的。即使是某些设计中实在没有多余的I/O供配置使用,也可通过板上的PLD扩展。虽然这样做可能会增加成本,但获得的真正"现场可编程"的功能是非常宝贵的。
' g" _6 ], F" p. ^" F, v( O" `$ q  w5 L
2. CPU的Boot应不依赖于FPGA--这在单板设计时需要特别考虑的。由于CPU对FPGA进行配置所需的资源很少,这一点比较容易做到。$ }$ e* ?4 a1 l- q4 t# M2 }. w/ k

! M& N+ T1 g  m" r设计摘要4 ~# _7 h. G( g6 E) ^, M
本设计严格按照FPGA的PS配置流程进行,并在配置过程中始终监测工作状态,在完善的软件配合下,可纠正如上电次序导致配置不正常等错误。因此,采用此方法对FPGA进行配置,性能将优于Configuration EPROM方式。4 ^) _0 ]5 r2 n
本设计是利用板上现有CPU子系统中空闲的ROM空间存放FPGA的配置数据,并由CPU模拟专用EPROM对FPGA进行配置,以降低硬件成本并实现FPGA的在线升级。' T$ e8 {+ r  u( K: p
本设计已在MPC860和EP1K30环境下完成验证,适用于有5个多余I/O的CPU对Altera FPGA的配置。
! L5 {" ^0 U6 l! q6 Q4 w6 R9 U3 ?( A" G5 M* q. l8 ]" v
参考资料  d6 M! e: x, ~
. m. T& s! w- L. q1 o
ALTERA:AN-116 Configuring SRAM-Based LUT Devices( l; s9 j( O* h5 n. H
ALTERA: ACEX 1K Programmable Logic Device Family
 楼主| 发表于 2008-12-5 16:37 | 显示全部楼层

用CPU配置FPGA(二)硬件设计

用CPU配置FPGA(二)硬件设计9 P2 q# `2 f4 o
二. 硬件设计
7 Q* V9 }+ n( S6 \# z( ?: L! x
1.配置基本原理
: U! N# F$ j, p) o
RAM-Based FPGA由于SRAM工艺的特点,掉电后数据会消失。因此,每次系统上电后,均需对FPGA进行配置。对于Altera的FPGA,配置方法可分为:专用的EPROM (Configuration EPROM)、PS(Passive serial 无源串行)、PPS(Passive parallel synchronous 无源同步并行)、PPA(Passive parallel asynchronous 无源异步并行)、JTAG(不是所有器件都支持)。
9 }3 d( H, q! m+ `http://www.dzkf.cn/upimg/allimg/20060906/1353410.jpg
本设计采用PS方式对FPGA进行配置,是基于如下几个方面的考虑:
7 n: t' |, u) Y5 c+ ~( `
1. PS方式连线最简单% U2 ]- {. X4 V) O
2. 与Configuration EPROM方式可以兼容(MSEL0、1设置不变)  v, e( }- R6 q9 S& u- m+ }( k
3. 与并行配置相比,误操作的几率小,可靠性高
只需利用CPU的5个I/O线,就可按图 2所指示的时序对FPGA 进行PS方式的配置。
2.配置电路的连接

/ c# V4 B+ E+ @. H2 |CPU仅需要利用5个I/O脚与FPGA相连,就实现了PS方式的硬件连接,具体信号见下表(信号方向从CPU侧看):

) E' d+ N) ]7 S1 {
信号名
I/O
说明
Data0
7 F# F2 A; C' x$ B3 K3 U1 W
O
configuration data
DCLK
. _, j9 s2 a8 e. G
O
configuration clock
nCONFIG
/ J2 O6 G- s: p5 w4 I/ Z9 I
O
device reset (a low to high transition starts the configuration within the device)
Conf_done) E9 b" r7 p5 Q9 y3 z
I
Status bit (gets checked after configuration, will be high if configuration complete)
nSTATUS
# b; V- i& r. i2 f
I
Status bit indicating an error during configuration if low
% X  V! D4 v+ b! x
http://www.dzkf.cn/upimg/allimg/20060906/1353412.jpg
0 C' X+ `" i9 k1 R4 a+ N* B
图 3 PS配置单片FPGA的硬件连接

7 `# A8 y- S4 E  L  P( f
图 4 PS配置多片FPGA的硬件连接

5 d! _* M, y  M8 _
3.配置操作过程
. ?4 X. I& e( K2 ~& _7 ^" {, t/ H
CPU按下列步骤操作I/O口线,即可完成对FPGA的配置:
, M) S/ M! U$ S$ q6 B# G0 Z
1. nCONFIG="0"、DCLK="0",保持2μS以上。
5 @$ i8 G9 T- {; h/ [  }2. 检测nSTATUS,如果为"0",表明FPGA已响应配置要求,可开始进行配置。否则报错。正常情况下,nCONFIG="0"后1μS内nSTATUS将为"0"。
6 b2 M# ~: n6 g5 u$ e5 Q3. nCONFIG="1",并等待5μS。
/ z* h7 [; C2 H4. Data0上放置数据(LSB first),DCLK="1",延时。, s7 G& e2 G: E! C# y
5. DCLK="0",并检测nSTATUS,若为"0",则报错并重新开始。. J0 d7 O( T: R& y. j( I
6. 准备下一位数据,并重复执行步骤4、5,直到所有数据送出为止。: F2 g; {1 H" Y9 a: T" \, E6 Y
7. 此时Conf_done应变成"1",表明FPGA的配置已完成。如果所有数据送出后,Conf_done不为"1",必须重新配置(从步骤1开始)。
' R* A. _% e0 q8 {% z8. 配置完成后,再送出10个周期的DCLK,以使FPGA完成初始化。
, s/ `# q5 S, Z, A
注意事项:
! f% v( [0 e" `! j" j: w
1. DCLK时钟频率的上限对不同器件是不一样的,具体限制见下表:
型号
最高频率
ACEX1K、FLEX10KE、APEX20K
33MHz
FLEX10K
16MHz
APEXII、APEX20KE、APEX20KC
57MHz
Mercury
50MHz
2. 步骤7中FPGA完成初始化所需要的10个周期的DCLK是针对ACEX 1K和FLEX 10KE的。如果是APEX 20K,则需要40个周期。

. ]9 Y/ ~3 b6 ^, e3. 在配置过程中,如果检测到nSTATUS为"0",表明FPGA配置有错误,则应回到步骤1重新开始。
. t0 K7 m( ?. n" H5 i- h: E
图 5 操作流程框图$ W6 c. |, `: }
4.实现在线升级

; D) v( |! j$ N* [: d* w采用本模块的最大优点是可以实现单板FPGA的在线升级。要实现在线升级,单板设计必须考虑以下几个问题:

& `1 l; Y5 G( k- H' K1. CPU的启动必须不依赖于FPGA,即CPU子系统应在FPGA被配置前可独立运行并访问所需资源。CPU对FPGA进行配置所需的资源很少,一般来说,仅RAM和BootROM的访问而已。4 O. C% Z3 u6 p0 x$ ]
2. FPGA配置前(或配置过程中)必须保证控制的设备处于非工作态或不影响其他设备工作的稳定态。
. j& q3 K3 V0 G3. 为了实现FPGA的在线升级,存放FPGA配置数据的存储器器必须是CPU可重写的,且此存储器应是非易失性的,以保证单板断电后,FPGA数据不需从后台重新获得。
具体过程

3 [" }4 m& P# {结合图6的实例,对FPGA在线升级作一具体描述。7 D3 y+ `5 B* M: v, F6 i8 p
http://www.dzkf.cn/upimg/allimg/20060906/1353415.jpg
图6 FPGA在线升级
1. 使用编译和连接工具,将FPGA的第一个版本与MPC860的工作程序连接在一起,分别占用地址为0x70000-0x7FFFF和0x00000-0x6FFFF的存储空间。
$ y& }5 s/ d. P2. 单板启动时,MPC860自动将0x70000-0x7FFFF的数据下载到FPGA中,完成FPGA配置。+ X4 }9 z  s" H/ _3 q$ u9 R
3. 当FPGA需升级时,将新的RBF配置文件放在后台计算机中。/ w+ @' r( S6 h( Q! h0 k$ E
4. MPC860把BOOTROM的0x70000-0x7FFFF空间当作普通数据存储区,通过后台将新的RBF配置文件放在0x70000-0x7FFFF中。2 E0 B$ S* j! F! U0 X
5. MPC860调用BOOTROM中的FPGA配置子程序,对FPGA从新下载数据,完成FPGA升级。
( i% ~8 F! @7 A0 @6 w

7 z% m1 z7 L; S4 x% m5 W8 X以MPC860和Altera EP1K30为例,电原理图如下:
! N8 j* p/ h8 _# n* v, }) ^' I+ Jhttp://www.dzkf.cn/upimg/allimg/20060906/1353416.jpg
图7 电原理图
 楼主| 发表于 2008-12-5 16:38 | 显示全部楼层

用CPU配置FPGA(三)软件操作

编程文件格式的转换
    MAX+plusII或QuartusII生成的SOF或POF文件不能直接用于CPU配置FPGA中,需要进行数据转换才能得到软件可用的配置数据。在MaxplusII中的具体步骤如下:
1. 进入数据转换对话框
图1 进入数据转换对话框
2.选择需要转换的SOF文件,对于配置多个FPGA的场合,应选择所有的SOF文件并排好次序。输出文件的格式我们选则二进制的rbf(Sequential)。 (也可以选择其他格式,如HEX等,在CPU软件编写上会与本文例子略有区别,关于不同文件格式的区别,在altera的AN116号文档上有详细解释)
图2 选择相应的输出数据格式
在QuartusII软件的file菜单下,同样可以找到类似菜单进行格式转化。

5 t5 j, d7 R5 n$ }& i, K+ T! Y- ~
CPU程序设计
9 S9 y& `# _! n! a2 I; E: F
以MPC860为例,我们可以将转换完成的RBF文件作为二进制文件,直接写到MPC860系统的某一ROM/Flash区域。由于这段数据的起始地址和长度都是已知的,相应的软件编写是很方便的。
本设计的CPU源程序
void InitPORT(void)
{ // 初始化PB口相应位:
' f' O6 d4 c$ p// PB24-输出,PB25-输入,PB26-输出,PB27-输入,PB28-输出3 i, C$ f5 e) t9 W
IMMR->pip_pbpar=0x00000000;1 G6 j0 d( N2 A0 S# E9 z/ L4 c
IMMR->pip_pbdir=0xFFFFF5AF;
; C$ t; o; J' r  q0 A- L& DIMMR->pip_pbodr=0x00000000;
0 |, e" y. E) x5 q0 {9 w/ uIMMR->pip_pbdat=0xffffff57;; ~5 l- @7 k: X6 h9 W- _
}
UBYTE Fpga_DownLoad(void)
2 A" [8 q( Y! J5 a- R{ // FPGA配置
& y) |% q4 V+ _2 D2 B  oUBYTE *Bootaddr;
, E" a) A: G  U/ T! ^- Z5 M3 eUWORD CountNum=0x0;! s& N5 O8 U. ?5 n" R+ _
UBYTE FpgaBuffer, i;
// 获得Boot区首地址
5 q9 v+ j8 X: w* L6 Y8 x2 T0 EBootaddr=(UBYTE *)(IMMR->memc_or0 & IMMR->memc_br0 & 0xFFFF8000);
Set_nCONFIG(0); // nCONFIG="0",使FPGA进入配置状态3 z; }; i- @7 d! e  ?: c( A
Set_DCLK(0);3 f: O7 F# u/ U) L: P
DELAY5us();4 X; X0 p4 ]5 u# E( ]
if (Read_nSTATUS() == 1)2 X3 }' e5 B* e: y% L0 M& n# _
{ // 检测nSTATUS,如果为"0",表明FPGA已响应配置要求,可开始进行配置。否则报错6 o; P0 D. E* G/ R
Err_LED(1);
/ ]! F8 {( e# Q- r0 Qreturn 0;4 G) c) l7 x! y* U. _1 ?
}
9 j" d& y1 _6 L/ ~! g( y( eSet_nCONFIG(1);
: O  Q( T) [: Q+ o4 Z7 \( |DELAY5us();
% n& c2 Q8 N0 P0 }+ R
// 开始输出配置数据:3 d. r0 l% t/ R& [" i0 M
while(CountNum <= 0x0e74e)' d2 q" e' H* J5 Q6 m- n, L: W
{
7 d3 I' t6 Q9 R1 G+ |. ?" n1 K" jFpgaBuffer= *(Bootaddr+0x70000+CountNum);
3 _/ y1 a  O4 `/ }+ }, k6 Ofor (i=0; i<8; i++)
( M1 U) m/ J5 g3 K8 t& v{ // DCLK="0"时,在Data0上放置数据(LSB first)
, c: g6 t6 j( ?- Z. j' O0 WSet_Data0(FpgaBuffer&0x01);$ _; C2 N6 C+ V# W( d
Set_DCLK(1); // DCLK->"1",使FPGA读入数据
+ {& N3 z8 `. j6 d( `FpgaBuffer >>= 1; // 准备下一位数据
/ p6 _3 o2 z- y8 n( \4 A2 Z6 Uif (Read_nSTATUS() == 0)4 T, D. [, @) L/ H9 [3 \
{ // 检测nSTATUS,如果为"0",表明FPGA配置出错 2 e  o7 x6 a: \# ]% D7 M6 ~
Err_LED(1);
  K& U  e" n- ]3 j+ x2 t7 sreturn 0;
/ ]$ M, R. n; ~7 i+ _; V/ z}" q/ g, e: b  b- z( q# t& _) d+ H
Set_DCLK(0);7 M  b, h; d! v1 o0 V
}3 T; C/ w3 Z% j: G( B
CountNum++;! d( i4 v: J3 X! p. Q! N
}

3 V) Y7 h1 y2 o6 [$ @// FPGA初始化:
. V3 U) B- z; G; K( f0 G// ACEX 1K和FLEX 10KE需要10个周期,APEX 20K需要40个周期
( \! z% r$ A' ^for(i=0; i<10; i++)
  \- _: ~+ k  |6 d6 ~, _{0 R1 |: ?; \% G0 A' D
Set_DCLK(1);
* R% a8 ?; I8 E2 FDELAY100us();( j2 W$ d: ?4 h5 M6 ^* Z" Y" \
Set_DCLK(0);
% R% R1 b0 g- a9 Z: rDELAY100us();7 p. j) Q" {3 J* P9 `
}' J1 \# E" o8 B
Set_Data0(0);3 ~! z( ~$ d" y+ i: ?. r4 ^6 E6 w
if (Read_nCONF_Done() == 0)
2 A( F3 @" R0 B{ // 检测nCONF_Done,如果为"0",表明FPGA配置未成功+ Y3 {, @1 w% i0 u) `6 x
Err_LED(1);
( K% y9 e6 d8 \$ H% \7 O% ~/ E& o6 freturn 0;7 b% q- g! W% _. x& C% G$ s/ f
}5 u& v) s7 z$ ?; x* u6 p
return 1; // 成功返回, q3 f. Q; v! M2 {' z( H
}
// Data0输出
! r5 P( t$ J4 h8 zvoid Set_Data0(UBYTE setting)9 L' c) E9 G# k5 ~; z
{ // PB243 z% F# `( C! r! p
if (setting) IMMR->pip_pbdat |= 0x00000080;
4 e3 h% z+ Q- u  ^else IMMR->pio_pbdat &= 0xFFFFFF7F;! r5 d6 H+ |  `9 D2 ]& B) O
}
// 读nSTATUS状态
" N( Q1 q- K. |) Q" `UBYTE Read_nSTATUS(void)6 `# R) P% M! D' ?8 S
{ // PB25' f/ h0 X! y) u( W
if (IMMR->pio_pbdat & 0x00000040) return 1;5 x5 A! c$ F4 h! D6 ?
else return 0;
$ d" R( f5 u+ a$ c) {( p) m}
// 设置nCONFIG电平2 o' \, G6 B" }8 p" O, A8 f
void Set_nCONFIG(UBYTE setting)
9 a" ~8 B& |, x# A, Z9 R4 v; ?6 H{ // PB26
/ j8 v+ W: v, P( Jif (setting) IMMR->pip_pbdat |= 0x00000020;$ d# G. G% Y* ^" {
else IMMR->pio_pbdat &= 0xFFFFFFDF;
- ]8 c& ?- b+ G  {  u. q}
// 读nCONF_Done状态2 v7 Y; p% {% F
UBYTE Read_nCONF_Done(void)" @( c5 `2 A* P# l& X% D
{ // PB27
  \# n* D2 ~$ A: Dif (IMMR->pio_pbdat & 0x00000010) return 1;
: {+ u/ d+ P* I4 Y2 \# velse return 0;
* {8 g6 I" R+ L% V5 h# f& j}
// 输出DCLK7 o) Y: c. A2 d1 a
void Set_DCLK(UBYTE setting)
; W5 R# E3 y& y/ R0 B{ // PB28; W% {8 x4 S' ^' ~/ {
if (setting) IMMR->pio_pbdat |= 0x00000008;' R2 Y+ g. p6 l% N4 g9 e5 j9 i5 \
else IMMR->pio_pbdat &= 0xFFFFFFF7;0 n/ {* [  e  j) H/ U6 d* m3 t
}" n8 d8 Y3 r  N% p0 y! a4 k, ^8 z% m
// 结束
 楼主| 发表于 2008-12-5 16:39 | 显示全部楼层

用CPU配置FPGA (四) 应用实例

我们已在某单板上实现了该设计。现以该单板为例,说明如何实现CPU对FPGA的配置。      在该单板上是使用MPC860作CPU,BootROM采用SST39VF040,一片FPGA型号EP1K30QC208-3。我们在MCP860的PB口选5根线与EP1K30连接成PS配置方式,硬件连接参考第二章,Data0也由MPC860输出,信号定义见下表
0 E5 v1 p0 |+ E2 y: C! h, Z4 l
MPC860引脚
I/O
信号名称
EP1K30引脚
PB24
O
DATA0
156
PB25
I
nSTATUS
52
PB26
O
nCONFIG
105
PB27
I
CONF_DONE
2
PB28
O
DCLK
155
, e" _8 ^6 w) a4 K" X& F- r: w# K  C

5 S  Q) l  l4 A: TEP1K30所需要的配置数据为58kB(准确的长度参见生成的 RBF文件),由于BootROM比较空,我们将配置数据安排在BootROM的0x70000~0x7FFFF区间内。第一次的配置数据可利用编程器将 RBF文件当作二进制文件写到BootROM的起始地址为0x70000的区域,也可以通过860仿真器把数据写到指定位置。
3 S7 K4 o2 b2 x% J具体软件操作参见第二章。
, O) I# m2 [! v# m
FPGA在线更改配置
6 t. L% o) o7 Q) D, f/ A
为检验FPGA在线升级的可能性,我们在CPU的BootROM中放置了不同逻辑的FPGA配置数据。CPU正常运行时,测试软件随意更换FPGA的配置数据。在每次配置完成后,FPGA均能实现相应的逻辑功能。$ t! M8 H2 D3 P% r2 y
如果和系统软件配合,在线更改EPROM中的配置数据,FPGA的在线升级是完全可以实现的。
: u& a4 b0 p: T- {8 J为了便于调试和实际生产,我们将FPGA的初始配置数据放置在BootROM中。如某些单板BootROM的写功能必须禁止,此时FPGA配置数据可放在其它存储器中,如存放应用程序的FLASH中,升级FPGA配置数据可以和升级应用程序一并完成。* k/ J* _. b8 ?$ z8 F
3 g* L2 z5 p2 h0 O# I* \
电缆下载

. d7 V  n! R% s' P3 l4 x+ Z为了提高调试进度,通常会采用电缆下载的方式。在单板上兼容这两种配置方式有多种办法,我们采用了比较简单又便于生产的"0欧姆电阻连接方式"。电气连接的示意图如下:
8 x' H( P2 A% J0 p* P- O" ]7 z
图1 兼容电缆下载
在最初调试FPGA时,R1~R5不焊,直接用电缆下载。同时,MPC860的程序中跳过FPGA配置的代码。等FPGA设计定型后(相当于准备使用EPC1时),焊上R1~R5,利用CPU配置FPGA。
) U( g: B" R( {0 B当然,R1~R5也可改用跳线或拨动开关。这两种连接方式在开发调试中比0欧姆电阻方便,但实际使用中可靠性不如0欧姆电阻高,如跳线会出现短路块脱落、拨动开关会出现接触不良等现象。而且,0欧姆电阻连接方式最便于生产,价格也最低。建议开发阶段的单板可以用跳线或拨动开关,转产时采用0欧姆电阻连接方式。
  G" q* [7 p1 G% W9 d
在使用下载电缆时需要注意电源的选择。由于Altera以前的 Byteblaster下载电缆是5V供电的,有不少设计都把下载电缆插座接到5V电源上,这种5V供电的下载电缆可能导致不能忍受5V信号的CPU损坏。因此,使用本模块时,下载电缆应使用低电压版本的ByteblasterMV,下载插座的电源接3.3V。

! g: Z* J+ ]' D* w, k2 T/ i使用、调试、维护说明

. O& W5 W" ?8 V% E如果使用本模块出现配置出错,有如下可能:
/ D3 R* {! B! X/ S  B2 t, R0 X
错误原因
解决方法
配置数据有错
重新生成配置数据,并检查生成过程是否正确
CPU输出信号频率太高
控制DCLK频率,具体数据参见“操作过程”相关章节
CPU与FPGA连接有误
检查硬件连线
下载电缆影响
拔去下载电缆
CPU的I/O口故障
用示波器检查PB24~PB28信号波形
FPGA故障
更换FPGA
$ @( ~) H  L. y' C, n7 `7 ?: L5 u3 `
# Y* J( o& m; z6 _
经验教训

" I7 m! \0 Q4 ?. W+ _本模块在设计过程中有如下几个要点,请使用者注意:
  • CPU的启动必须不依赖于FPGA,这在单板设计时需要特别考虑的。即CPU子系统应在FPGA被配置前可独立运行并访问所需资源。CPU对FPGA进行配置所需的资源很少,一般来说,仅RAM和BootROM的访问而已。当然,其他挂在CPU总线上的设备必须处于非访问态,FPGA所控制的设备也应处于非工作态或不影响其他设备工作的稳定态。
  • 为了实现FPGA的在线升级,存放FPGA配置数据的区域必须是CPU可重写的
  • 利用CPU配置FPGA,在使用者的主观感觉上会觉得FPGA"起来"得比较慢。这是因为FPGA的配置要等CPU启动完成后才进行。因此,应充分考虑FPGA所控制的设备在FPGA被配置完成前处于非工作态或不影响其他设备工作的稳定态。
  • 关于配置数据占用空间的问题。对于Altera的FPGA来说,每个确定型号的器件,配置数据的长度是一定的(和设计逻辑无关)。因此,一旦确定了FPGA的型号,配置数据占用EPROM的空间也可以在设计中确定。
  • 在使用中请保留下载电缆插座,以加快调试进度。
  • 下载成功后,软件应有指示,便于维护。
  • 要从系统的角度考虑现场升级,保护好FPGA数据。
  • 单板调试时电缆下载的问题。为了兼容两种下载方式,需要电缆下载时,可在CPU程序中跳过配置程序。
  • 如果单板有可能使用电缆下载,必须考虑CPU的I/O能否忍受下载电缆信号电平
发表于 2011-11-4 12:39 | 显示全部楼层
我以前打算这样做,版主这样试过了吗
发表于 2011-12-15 17:59 | 显示全部楼层
altera的文档里面连代码都给了,8051汇编的,很短
发表于 2013-1-21 13:31 | 显示全部楼层
http://pimg.163.com/club/newclub/images/PP0.gif我只是路过,不发表意见
2 E4 A# h6 r, Z) E5 w6 h) U, U6 y$ z: J$ Y+ I& k& G! f! a
' K5 `, ?, Y2 F9 s- v% v% z

; ^& I+ V" t# r: P
5 y& T! ?. h; R  c7 x# b" L' ]# ~7 E# z; }; Y6 l  [5 W
! t2 I( k" }# R4 ?. r' c* T

- e& N/ o6 y' _1 k3 k+ Y2 [0 ^; B- E. \

+ j6 f( r) t4 q. |% r$ K3 C; u! T7 x$ W

& Q" f* ~! i3 J
0 K5 b: n0 i/ X% b& ?3 A0 F7 T' t3 n
  R$ L2 `1 u: Z# e% J8 F3 \, ]$ n' y  \% ]0 y1 g

8 ~; _# l( E5 H- o5 j' ]
/ H0 }9 [- A) O7 U2 R* Z3 w% q6 z9 O6 P5 @/ r

) d. B( ?  Q, B9 W5 t# w  \- }
! g" K1 J0 `, _/ w' Q
+ g0 j6 m/ `( x1 G2 a! X8 yhttp://qb.lqualyn.com/images/sigline.gif1 K1 c  c6 O" G" d1 g/ C8 Z
孕妇如何防辐射

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-18 22:02 , Processed in 0.057536 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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