一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 10855|回复: 6

用CPU配置FPGA

[复制链接]
发表于 2008-12-5 16:36 | 显示全部楼层 |阅读模式
用CPU配置FPGA(一)概 述5 `: n& H0 Y/ \$ G7 K
一. 概 述1 e- a0 {1 l& c. a5 C- N

+ T0 Z5 e7 o9 S8 j- \; R* c4 F目前很多产品都广泛用了FPGA,虽然品种不同,但编程方式几乎都一样:利用专用的EPROM对FPGA进行配置。专用的EPROM价格不便宜,且大不跟上都是一次性OPT方式编程。一旦更改FPGA设计,代价不小。为了进一步降低产品的成本和升级成本,可以考虑利用板上现有CPU子系统中空闲的ROM空间存放FPGA的配置数据,并由CPU模拟专用EPROM对 FPGA进行配置。 本文将以PowerPC860和EP1K30为例,讲解如何利用CPU来配置FPGA。
2 T/ d9 ~! L, t  N: X/ a5 o1 M  N& ~- n; _8 `- Z
CPU配置FPGA的优点
  q) y7 A: Q* w) ?, H- V1 U8 M" `7 @6 `
与Configuration EPROM方式相比本设计有如下优点:
- h( N/ ~8 N' N, M8 G* A) ?& k) {2 C; s% C$ [
1.降低硬件成本——省去了FPGA专用EPROM的成本,而几乎不增加其他成本。以ALTERA的10K系列为例,板上至少要配一片以上的EPC1,每片 EPC1的价格要几十元,容量1M位。提供1Mb的存储空间,对于大部分单板来说(如860系统的单板),是不需要增加硬件的。即使增加1Mb存储空间,通用存储器也会比FPGA专用EPROM便宜。
) \7 H: D0 l# k7 c+ I; {
# W, ]+ F. t0 N: G) q) E2.可多次编程——FPGA专用EPROM几乎都是OTP,一旦更换FPGA版本,旧版本的并不便宜的EPROM只能丢弃。如果使用本设计对FPGA配置,选用可擦除的通用存储器保存FPGA的编程数据,更换FPGA版本,无须付出任何硬件代价。这也是降低硬件成本的一个方面。
, w2 k0 w1 L: f8 r# j& C# V% q1 k8 W7 ^
3. 实现真正"现场可编程"--FPGA的特点就是"现场可编程",只有使用CPU对FPGA编程才能体现这一特点。如果设计周全的话,单板上的FPGA可以做到在线升级。# @& _! s, o7 L0 N" B
0 k. d: v4 P7 H4 }5 l8 f
4. 减少生产工序--省去了对"FPGA专用EPROM"烧结的工序,对提高生产率,降低生产成本等均有好处。对于双面再流焊的单板,更可省去手工补焊DIP器件的工序。
9 @8 K. u+ I8 ?$ D5 x
* Y, x6 _% j% ~& J/ n; D当然,与Configuration EPROM方式相比也有一些需要注意的的地方:. f' \5 p8 @) L& e! I7 y5 d

9 M4 e# }8 J: J1 {+ H3 K1.需要CPU提供5根I/O线--一般来说,这并不困难。对于MPC860一类的CPU来说,区区5根I/O线是不成问题的。即使是某些设计中实在没有多余的I/O供配置使用,也可通过板上的PLD扩展。虽然这样做可能会增加成本,但获得的真正"现场可编程"的功能是非常宝贵的。/ n5 v& f( {/ u

+ b: d/ |' E( n4 F/ D2 C( u) w2. CPU的Boot应不依赖于FPGA--这在单板设计时需要特别考虑的。由于CPU对FPGA进行配置所需的资源很少,这一点比较容易做到。
8 U' X6 U6 R5 k( w* t6 H. x
/ W7 d: F5 h# R1 j$ d设计摘要4 U5 d% V* M5 }. \" \( j
本设计严格按照FPGA的PS配置流程进行,并在配置过程中始终监测工作状态,在完善的软件配合下,可纠正如上电次序导致配置不正常等错误。因此,采用此方法对FPGA进行配置,性能将优于Configuration EPROM方式。  j+ B4 b8 t/ D
本设计是利用板上现有CPU子系统中空闲的ROM空间存放FPGA的配置数据,并由CPU模拟专用EPROM对FPGA进行配置,以降低硬件成本并实现FPGA的在线升级。$ w- w4 j$ m6 ~- A
本设计已在MPC860和EP1K30环境下完成验证,适用于有5个多余I/O的CPU对Altera FPGA的配置。
. i6 ?2 h! c: I7 @6 V! x0 B
7 x8 S! H# a7 ?  ]( K参考资料
, s5 t3 q9 F* c: i1 w5 j& r! J3 r) q) T, n  ~8 ?+ f; Q7 _
ALTERA:AN-116 Configuring SRAM-Based LUT Devices8 f+ O5 L7 G( S- p4 i# Q8 `& n8 O
ALTERA: ACEX 1K Programmable Logic Device Family
 楼主| 发表于 2008-12-5 16:37 | 显示全部楼层

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

用CPU配置FPGA(二)硬件设计9 G: X& a4 _: R4 G, _
二. 硬件设计; J+ S% q/ o, u( Y$ D
1.配置基本原理
8 {1 T% \: \5 W! B  Q% b( d
RAM-Based FPGA由于SRAM工艺的特点,掉电后数据会消失。因此,每次系统上电后,均需对FPGA进行配置。对于Altera的FPGA,配置方法可分为:专用的EPROM (Configuration EPROM)、PS(Passive serial 无源串行)、PPS(Passive parallel synchronous 无源同步并行)、PPA(Passive parallel asynchronous 无源异步并行)、JTAG(不是所有器件都支持)。
. d+ Z% w# `. w3 W% b( rhttp://www.dzkf.cn/upimg/allimg/20060906/1353410.jpg
本设计采用PS方式对FPGA进行配置,是基于如下几个方面的考虑:

, ~: Z' y  F) j6 |# e1. PS方式连线最简单: `$ M1 s1 o2 V2 `
2. 与Configuration EPROM方式可以兼容(MSEL0、1设置不变)
3 X( u; Y; f: ~4 o$ J1 A3. 与并行配置相比,误操作的几率小,可靠性高
只需利用CPU的5个I/O线,就可按图 2所指示的时序对FPGA 进行PS方式的配置。
2.配置电路的连接

0 N; F; O2 a2 o6 z: X1 MCPU仅需要利用5个I/O脚与FPGA相连,就实现了PS方式的硬件连接,具体信号见下表(信号方向从CPU侧看):

# q: @! `3 E. k( X8 {0 R# w- z
信号名
I/O
说明
Data0
. W/ W  m6 _3 A6 c" ]! A
O
configuration data
DCLK$ m- F, q2 Z4 T& _) G
O
configuration clock
nCONFIG
! C" G# w# t: M% H) r( V
O
device reset (a low to high transition starts the configuration within the device)
Conf_done! s' H" s/ C+ G
I
Status bit (gets checked after configuration, will be high if configuration complete)
nSTATUS
5 D. G% D: B0 t" ^* W
I
Status bit indicating an error during configuration if low

, T3 ]# e2 q* h4 o1 l& zhttp://www.dzkf.cn/upimg/allimg/20060906/1353412.jpg$ ?3 g6 g2 v+ @4 @& r0 p
图 3 PS配置单片FPGA的硬件连接
0 k8 W( s3 G/ c0 e0 R
图 4 PS配置多片FPGA的硬件连接

5 q# T: y4 L+ y* _, Q, e/ ^
3.配置操作过程
9 \1 }4 ]( g  [" ?. K
CPU按下列步骤操作I/O口线,即可完成对FPGA的配置:

& _2 E- V8 N8 R, f& O3 u8 z/ ^1. nCONFIG="0"、DCLK="0",保持2μS以上。
( G; A1 |, ~0 W3 j2. 检测nSTATUS,如果为"0",表明FPGA已响应配置要求,可开始进行配置。否则报错。正常情况下,nCONFIG="0"后1μS内nSTATUS将为"0"。; l2 m6 P$ z; S
3. nCONFIG="1",并等待5μS。$ a, V; f' i$ [+ V2 y* q
4. Data0上放置数据(LSB first),DCLK="1",延时。+ S* B" ]7 O3 h1 W) q" J
5. DCLK="0",并检测nSTATUS,若为"0",则报错并重新开始。
4 G+ d6 L1 N7 p: {! c6. 准备下一位数据,并重复执行步骤4、5,直到所有数据送出为止。$ v3 R4 @  n; K7 v8 R
7. 此时Conf_done应变成"1",表明FPGA的配置已完成。如果所有数据送出后,Conf_done不为"1",必须重新配置(从步骤1开始)。
) [9 U0 s0 {" ~; W8. 配置完成后,再送出10个周期的DCLK,以使FPGA完成初始化。
/ ?% Q9 H. p3 g8 R$ o
注意事项:

/ W5 ]% U$ `9 n+ ?# ^- u9 p1. 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个周期。
* _* C2 y: X: m( P0 C5 C) W
3. 在配置过程中,如果检测到nSTATUS为"0",表明FPGA配置有错误,则应回到步骤1重新开始。' y; S! r' j; v4 c8 o. N
图 5 操作流程框图* v* ?. Y# j2 {" w% r) m6 y7 n
4.实现在线升级

! X" _% _: c' A/ z- y0 d采用本模块的最大优点是可以实现单板FPGA的在线升级。要实现在线升级,单板设计必须考虑以下几个问题:
5 J' S( b' U5 I; j2 C
1. CPU的启动必须不依赖于FPGA,即CPU子系统应在FPGA被配置前可独立运行并访问所需资源。CPU对FPGA进行配置所需的资源很少,一般来说,仅RAM和BootROM的访问而已。
" ~! ]. t/ G4 R+ M2. FPGA配置前(或配置过程中)必须保证控制的设备处于非工作态或不影响其他设备工作的稳定态。
9 H* [/ D" L+ e' N! l6 _( o' [3. 为了实现FPGA的在线升级,存放FPGA配置数据的存储器器必须是CPU可重写的,且此存储器应是非易失性的,以保证单板断电后,FPGA数据不需从后台重新获得。
具体过程

1 r3 q# A/ [# i9 f7 ]结合图6的实例,对FPGA在线升级作一具体描述。
" ?: y0 V9 O' d9 F8 ^http://www.dzkf.cn/upimg/allimg/20060906/1353415.jpg
图6 FPGA在线升级
1. 使用编译和连接工具,将FPGA的第一个版本与MPC860的工作程序连接在一起,分别占用地址为0x70000-0x7FFFF和0x00000-0x6FFFF的存储空间。
8 B- |+ f) e* v2. 单板启动时,MPC860自动将0x70000-0x7FFFF的数据下载到FPGA中,完成FPGA配置。% y% a8 W, n6 R, `3 D. k% V
3. 当FPGA需升级时,将新的RBF配置文件放在后台计算机中。/ J7 _* T- ~! E2 _* o& }$ f0 H# _  f
4. MPC860把BOOTROM的0x70000-0x7FFFF空间当作普通数据存储区,通过后台将新的RBF配置文件放在0x70000-0x7FFFF中。8 n: R4 D8 L7 }" U% K7 T4 k6 i
5. MPC860调用BOOTROM中的FPGA配置子程序,对FPGA从新下载数据,完成FPGA升级。- B  _7 ?% A' q' {/ j/ K, D

6 Z" x2 d+ r* Z9 V) Z0 x以MPC860和Altera EP1K30为例,电原理图如下:
9 q5 J# S- \& A+ ~, C9 ~! C8 Ihttp://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菜单下,同样可以找到类似菜单进行格式转化。
* s4 Z! |) x3 N2 `( h( m
CPU程序设计

3 l1 U7 L6 E6 c以MPC860为例,我们可以将转换完成的RBF文件作为二进制文件,直接写到MPC860系统的某一ROM/Flash区域。由于这段数据的起始地址和长度都是已知的,相应的软件编写是很方便的。
本设计的CPU源程序
void InitPORT(void)
{ // 初始化PB口相应位:
- D3 T8 i/ x; {% {// PB24-输出,PB25-输入,PB26-输出,PB27-输入,PB28-输出6 b( g: H  q; |  x
IMMR->pip_pbpar=0x00000000;
) D& M* k, z+ N# N' m, d6 TIMMR->pip_pbdir=0xFFFFF5AF;
; v, N$ C* W% c- s$ R2 hIMMR->pip_pbodr=0x00000000;
5 {8 d! U9 n0 FIMMR->pip_pbdat=0xffffff57;
: L8 \+ F1 V" I# |* T. c! c2 e}
UBYTE Fpga_DownLoad(void)( g% C3 r8 o$ _8 ^2 ]( ]
{ // FPGA配置
/ }4 H) V/ S  W1 x. \: A. C6 `UBYTE *Bootaddr;
, f4 e0 Z& T* b$ v/ L! g( bUWORD CountNum=0x0;$ k" j8 ], k' o, ]" h' N1 F, W4 {
UBYTE FpgaBuffer, i;
// 获得Boot区首地址, t3 k) N4 `9 }8 u) }
Bootaddr=(UBYTE *)(IMMR->memc_or0 & IMMR->memc_br0 & 0xFFFF8000);
Set_nCONFIG(0); // nCONFIG="0",使FPGA进入配置状态* r" Q' C0 Q9 G  t7 I2 ]
Set_DCLK(0);! a: P* l' [# R' W
DELAY5us();
* Z' U6 Y( _1 u- Zif (Read_nSTATUS() == 1)
" f* V7 H2 n/ A{ // 检测nSTATUS,如果为"0",表明FPGA已响应配置要求,可开始进行配置。否则报错5 l' c' N% R2 h. Y5 o- r; D- y
Err_LED(1);
. J4 s4 q% q2 m% _' `" ?9 E/ ~return 0;( A: H0 P8 q5 l* a
}
- j- K& P3 p' j2 K% WSet_nCONFIG(1);% [1 s' `. v# R! v; k: S" e1 h' J
DELAY5us();
$ ~0 }4 R( g. {/ X# q2 L
// 开始输出配置数据:
% y6 J* u% m8 r  B1 A3 H* fwhile(CountNum <= 0x0e74e)3 L/ {! z% F" X* u
{2 N/ k( M( s0 u; C$ B4 t
FpgaBuffer= *(Bootaddr+0x70000+CountNum);6 U5 ^$ @" t2 V/ M9 i- s; h
for (i=0; i<8; i++)
0 E, b" q$ K$ E/ G0 F; b  Z{ // DCLK="0"时,在Data0上放置数据(LSB first)
# q4 O6 [2 h* i% i3 t: CSet_Data0(FpgaBuffer&0x01);! a' g7 R% s( ]4 h% I! J7 k
Set_DCLK(1); // DCLK->"1",使FPGA读入数据! W4 h$ Y5 ]! [1 s$ {
FpgaBuffer >>= 1; // 准备下一位数据
* @; ?7 @2 z+ M4 i( B' eif (Read_nSTATUS() == 0)
$ T9 ?: {- o) `& H4 y& W8 I{ // 检测nSTATUS,如果为"0",表明FPGA配置出错
& v* W, G! o/ z: ?$ mErr_LED(1);' t9 p  N; x# b6 e5 c! X: Z
return 0;
# Q$ y" k* \, g}
' G' l* w* P$ u; p: r* ISet_DCLK(0);
. {6 L) f' v0 a7 [" ]+ q2 D7 z}. y6 g, G; z0 c6 j
CountNum++;7 q. Z$ t2 y! m! T" n% l' _+ A
}

) }) Y. ]2 W" M' i, X// FPGA初始化:- z% g) |; Z! X: `
// ACEX 1K和FLEX 10KE需要10个周期,APEX 20K需要40个周期
' i- Q% x" A- ~9 |+ u' B/ Vfor(i=0; i<10; i++)
! [& j. W$ t* i( ?4 I$ N{
1 ~) b) k8 A0 N+ qSet_DCLK(1);4 L7 c: K1 j2 V. n9 q
DELAY100us();
- g3 V( n0 Y, SSet_DCLK(0);( P% I& o+ L% E, C. |) @1 r
DELAY100us();" m1 B- r* i0 Y" q, m; ]" |; z' z
}* L( `! U) r7 y
Set_Data0(0);
! \9 d& X: }, R, M$ u! Rif (Read_nCONF_Done() == 0)7 m6 n4 w! v" Q7 ]( R& I% e. X! c* r  A
{ // 检测nCONF_Done,如果为"0",表明FPGA配置未成功
0 {4 w/ ?3 `7 C% e3 K! RErr_LED(1);
, f6 E0 A' _4 r4 g" N# Ireturn 0;& h1 m0 h2 V5 L) I/ K  Z, @
}, R  `; Y3 X/ a9 E6 M' c$ c* E
return 1; // 成功返回
* J) |1 l0 j, z( T2 D}
// Data0输出
) e* h2 E7 Q0 m3 O" qvoid Set_Data0(UBYTE setting)' ]# [* S9 W) z1 f+ f
{ // PB24
0 ]7 B3 v% f! `' p' hif (setting) IMMR->pip_pbdat |= 0x00000080;
+ ~4 G8 p. h. u2 ~0 welse IMMR->pio_pbdat &= 0xFFFFFF7F;
. _& [. H6 P- W( {. W}
// 读nSTATUS状态2 D) P( S8 T- Z5 w/ ]+ ^
UBYTE Read_nSTATUS(void)2 C6 u9 {: z% T$ i( x3 K
{ // PB257 H7 a* k: j& T. A8 y' @1 g" g
if (IMMR->pio_pbdat & 0x00000040) return 1;
2 e. Y, J2 Z" G" Z! Y3 w: ]" Aelse return 0;
  \2 y9 v! m& u: D) |}
// 设置nCONFIG电平* b! R. r0 T% S# c
void Set_nCONFIG(UBYTE setting)
/ P  d1 A3 L! z0 O- P. w2 H{ // PB26
/ d$ T, G2 b! T" dif (setting) IMMR->pip_pbdat |= 0x00000020;# m( J- `8 L: E8 s% g# |$ S: b8 O
else IMMR->pio_pbdat &= 0xFFFFFFDF;
/ H8 d1 W7 {/ Z8 A6 j}
// 读nCONF_Done状态
; F/ v6 g2 \; \UBYTE Read_nCONF_Done(void)
) m5 ?( B7 M# G{ // PB27
% K9 g! j9 o7 @' Z6 L: Oif (IMMR->pio_pbdat & 0x00000010) return 1;
/ a! p6 m( h& d$ z8 O; Delse return 0;
* @" Q/ F$ N4 |/ t+ B" F. l4 |9 P}
// 输出DCLK/ F' l* [! D# W$ {9 V+ i
void Set_DCLK(UBYTE setting)
' W0 r' d7 q+ y; ]{ // PB28+ h: C+ }& h+ f1 O
if (setting) IMMR->pio_pbdat |= 0x00000008;
2 u, Q1 |+ I! v% m# L  N5 r/ |else IMMR->pio_pbdat &= 0xFFFFFFF7;9 C4 S# H% O1 f. C& l0 c5 U
}; j" {  i$ J: B: S
// 结束
回复

使用道具 举报

 楼主| 发表于 2008-12-5 16:39 | 显示全部楼层

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

我们已在某单板上实现了该设计。现以该单板为例,说明如何实现CPU对FPGA的配置。      在该单板上是使用MPC860作CPU,BootROM采用SST39VF040,一片FPGA型号EP1K30QC208-3。我们在MCP860的PB口选5根线与EP1K30连接成PS配置方式,硬件连接参考第二章,Data0也由MPC860输出,信号定义见下表
: r; p5 R) p7 ]1 {
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

& I# M# j& q, N3 L& k

0 J9 u/ u9 V& xEP1K30所需要的配置数据为58kB(准确的长度参见生成的 RBF文件),由于BootROM比较空,我们将配置数据安排在BootROM的0x70000~0x7FFFF区间内。第一次的配置数据可利用编程器将 RBF文件当作二进制文件写到BootROM的起始地址为0x70000的区域,也可以通过860仿真器把数据写到指定位置。" x" Y: I" o* N. u3 Z) R- E* `
具体软件操作参见第二章。
" ?, B7 e. B/ W8 @
FPGA在线更改配置

. h- q$ w' J  M  I2 ?5 \为检验FPGA在线升级的可能性,我们在CPU的BootROM中放置了不同逻辑的FPGA配置数据。CPU正常运行时,测试软件随意更换FPGA的配置数据。在每次配置完成后,FPGA均能实现相应的逻辑功能。7 X; c+ H' b. i& O9 A
如果和系统软件配合,在线更改EPROM中的配置数据,FPGA的在线升级是完全可以实现的。/ i2 `2 F- C+ ]7 S' X( A
为了便于调试和实际生产,我们将FPGA的初始配置数据放置在BootROM中。如某些单板BootROM的写功能必须禁止,此时FPGA配置数据可放在其它存储器中,如存放应用程序的FLASH中,升级FPGA配置数据可以和升级应用程序一并完成。% @. [+ t- ?2 B# |1 ^8 r, W

9 H8 g% k8 w: g电缆下载

4 z2 K- U8 `0 i% I4 \6 o! I8 p为了提高调试进度,通常会采用电缆下载的方式。在单板上兼容这两种配置方式有多种办法,我们采用了比较简单又便于生产的"0欧姆电阻连接方式"。电气连接的示意图如下:
6 ]- j% A# j/ g  P+ k$ X* z
图1 兼容电缆下载
在最初调试FPGA时,R1~R5不焊,直接用电缆下载。同时,MPC860的程序中跳过FPGA配置的代码。等FPGA设计定型后(相当于准备使用EPC1时),焊上R1~R5,利用CPU配置FPGA。
2 U% _' r; ?  A1 s: m% s当然,R1~R5也可改用跳线或拨动开关。这两种连接方式在开发调试中比0欧姆电阻方便,但实际使用中可靠性不如0欧姆电阻高,如跳线会出现短路块脱落、拨动开关会出现接触不良等现象。而且,0欧姆电阻连接方式最便于生产,价格也最低。建议开发阶段的单板可以用跳线或拨动开关,转产时采用0欧姆电阻连接方式。
4 s0 Q5 r9 a3 l) W$ i! G
在使用下载电缆时需要注意电源的选择。由于Altera以前的 Byteblaster下载电缆是5V供电的,有不少设计都把下载电缆插座接到5V电源上,这种5V供电的下载电缆可能导致不能忍受5V信号的CPU损坏。因此,使用本模块时,下载电缆应使用低电压版本的ByteblasterMV,下载插座的电源接3.3V。
) |) Z2 k+ ?8 ~! j' y
使用、调试、维护说明

$ l5 k; O( q" i: \% h4 s如果使用本模块出现配置出错,有如下可能:
1 [9 e& P, D$ L' I! C
错误原因
解决方法
配置数据有错
重新生成配置数据,并检查生成过程是否正确
CPU输出信号频率太高
控制DCLK频率,具体数据参见“操作过程”相关章节
CPU与FPGA连接有误
检查硬件连线
下载电缆影响
拔去下载电缆
CPU的I/O口故障
用示波器检查PB24~PB28信号波形
FPGA故障
更换FPGA

$ e+ ]. g% ^: b! l$ z& x8 [( U
6 D7 k. b$ y- l2 [/ O' u8 b
经验教训

& V2 e( l( L4 n5 X本模块在设计过程中有如下几个要点,请使用者注意:
  • 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我只是路过,不发表意见
1 c3 q) c& V# q0 f" n6 B% m* m7 y) [" G3 s+ ~; T; g( k' A

) ^7 ?. j) c0 |: g4 O" o& Z
5 T# j& J; H6 j
# J# S  C: v& I. Y. W1 [  c# y

8 z% M$ f; C6 Y& {3 G
, E* S8 M' H$ ~/ h  G6 e$ U1 G1 C& ~% C0 M, X

. z4 p4 L' F* b8 w7 Z& u
7 B4 W  d" g* R+ `1 u+ t* O+ H! k, b
! U) I2 F3 q; H! \' s' i7 i
5 }0 }" g9 |- S* Y) E; f
" J- }$ a; t  L/ S; Y
* S6 W; P9 o8 h- g
# Z- g$ n" {3 D3 \5 M; T! d4 Y' t- Q- j! w/ ]$ r' d  Q: K

7 E4 l6 m3 t+ a4 @% \0 k9 p0 q
& R3 |1 O0 p" n% c5 d) S. r# _% m9 n/ ^9 N
% e0 v  U  j- T" b; @5 n
http://qb.lqualyn.com/images/sigline.gif
6 N! z3 Q( ]& g& S" m  i孕妇如何防辐射
回复

使用道具 举报

本版积分规则

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

GMT+8, 2025-10-28 06:37 , Processed in 0.037131 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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