|
这些天一直在尝试Xilinx方面的SOPC设计。ISE用起来不是特别困难,时序仿真,功能实现都能够拿下。但是在用EDK的时候,出现了一些问题。4 A }' R1 V+ c, V
- ^( G: e) G. i: V
在XPS6.1i上面,可以实现一个简单的跑马灯程序,能够在XPS开发环境中对.bit文件进行download,结果也完全符合我的要求。但是低版本的毕竟有很多弊端,就连地址分配也要我手动来做。利用ChipScope Pro 6.1来调试程序的时候,又不知道从何下手,关于这个版本的的文档我还没有找到合适的,也可能是我理解能力有限。于是我换做XPS8.1i来做,却连.bit文件都无法下载成功,出现如下提示信息:5 {, k- d" M, `$ O1 O9 P
6 M# u$ c$ ]3 Q5 \ J0 }// *** BATCH CMD : program -p 1
6 V& z$ _# C9 |ERROR:iMPACT:583 - '1': The idcode read from the device does not match the
( _3 n6 I/ S, l1 b idcode in the bsdl File.
% F D2 |0 P. w1 J5 EINFO:iMPACT:1578 - '1': Device IDCODE : 00000000000000000000000000000000
2 j6 u! p" P% S/ z- J; U, aINFO:iMPACT:1579 - '1': Expected IDCODE: 00000001010000011100000010010011$ R- i% A* ^' x5 p! y( G( y
Elapsed time = 0 sec.
- T1 l, q9 `6 G' M6 r2 }// *** BATCH CMD : quit
, P6 c6 l* H+ @1 q: q" a. L1 C+ S6 D i! z& V1 ~2 J
于是,我决定尝试在ISE8.1i中将生成好的.bit文件进行download。结果还真成功了,提示如下:
# x- O0 Q* J. E0 d: T
) i) d# U" }, @! A2 U% ZCommand: Program -p 1 -defaultVersion 0 3 N/ _% `: q, U! R5 C
// *** BATCH CMD : Program -p 2 -defaultVersion 0 7 O5 l1 j- x% i: H. j) x2 b
PROGRESS_START - Starting Operation.
9 P6 Q2 M, D( N- V; E$ JChain TCK freq = 0.
# i, K. ]# R3 D! }" UValidating chain...
% o& i/ J8 j* R7 {9 u0 qBoundary-scan chain validated successfully.% ?: \8 J% d% P3 i9 i
'2' rogramming device...
$ M/ N8 [$ O2 }3 k: ^; udone.
! b7 t1 }! x, e6 O'2': Reading status register contents...
- h) Q9 [ W! J. W! m: j[4 S2 c# j; `( H0 N
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 $ O- k( i# ]& s9 c9 F
1 1 0 1 1 0 0 & N$ M+ g5 z; Y# w4 ^
]
- ~+ k9 Q' ?; E3 T( ^9 f[9 k% z2 n+ E5 x q0 l8 I* b
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 7 K1 |7 m8 H6 q+ d3 U
1 1 0 1 1 0 0 " C. t L) i8 D/ k1 p/ q$ a
]
! t( u+ \% ^; M: P3 c7 {' V" oCRC error : 0
( ]* {7 `. `" v& TRESERVED : 0
9 C! E: p. c4 O% c# o1 PDCM locked : 12 U! p( E! r5 g9 n
DCI Matched : 1
; y" |: |$ p; R" U( ilegacy input error : 00 \4 O8 {- \3 E1 t! s
status of GTS_CFG_B : 1
8 d) `8 y0 U3 O" ~" y8 Zstatus of GWE : 1+ {0 [/ Z9 f V/ G& W" z7 V' T
status of GHIGH : 1
# }. z! z8 T7 z6 ^, Ovalue of MODE pin M0 : 10 a; H J) N- c- E( M, R, R5 {
value of MODE pin M1 : 0" ?1 q; ]( [% l( [: z
value of MODE pin M2 : 1; w& B9 ?' F5 y, ]$ a6 t
value of CFG_RDY (INIT_B) : 13 y T: _2 M& q9 {+ s$ @
DONEIN input from DONE pin : 1
% [' i/ _6 @) J# XID_ERROR : 0/ |# m' S! [) J6 W% i, R( E; r
RESERVED : 0
0 j5 ^9 j/ @% m# PRESERVED : 04 Z+ H' q1 a$ w6 X$ z; |* o' \
INFO:iMPACT:2219 - Status register values:9 d. F: f) U6 O) F
INFO:iMPACT - 0011 0111 1011 1000 0000 0000 0000 0000
7 F# f, _* P: |5 E( [* @8 p6 {INFO:iMPACT:579 - '2': Completed downloading bit file to device.
3 b8 ^1 M% R! x) |1 HINFO:iMPACT:580 - '2':Checking done pin ....done.7 ?) Q* _& w/ q9 R+ p+ Z2 N
'2': Programmed successfully.
& s+ B; D8 P6 w- C* oPROGRESS_END - End Operation.
* p) c: d$ B: DElapsed time = 21 sec.( Q; E& w# k5 X' L
% k/ R, w$ o+ i# l& c但是程序仍然没有跑起来。
( n& O. E7 b0 P/ W! w0 }% z: j* e+ b' \" M; ?6 I
不知道哪个环节出了问题……
) z0 G6 I: C5 b5 ?
2 {0 c6 W5 [- p8 f
" ]% _& ?# a8 Y
+ x; G) f' w9 e下载了第三方板级定义文件avnet_xbd_files,在利用BSB建立target board的时候,将use repositiry paths指定到avnet_xbd_files解压所在目录C:\Avnet_Repository,然后在Board Vendor 中选择 Memec,在Board name中选择适合我的开发板的器件Spartan-3 3S400,在Board revision 中选择2。接下来的任务就是裁剪掉我的板子上没有的外围接口模块。然后就轻车熟路了……。 MemoryTest通过,然后又加了个跑马灯的测试,也通过。
3 J$ q* [( C. A$ c% K. j% t" O5 N3 V' S- D. m! c" X
但是,还没有弄明白的是,为什么我建立Custom Board却怎么也不好使,肯能是那些细节还没有注意到。继续看文档。
6 x# |& u! G! [3 A5 h3 T
; p" s- y& Q- X" P另外发现,在调试软件程序的时候,各个IP Core的DataSheet很有用!( ^: a3 F* _4 u# J. {7 b
2 e/ w2 z( P) t8 g" S- Z* M- {1 U$ ]1 Z% `3 J6 H% v! h
- o0 ~* P1 _6 Y7 B) Z- k$ z5 i9 D
既然是自己建立Custom Board不好使,那么我就直接修改模板文件.xbd。嘿嘿……定制完全属于自己个板级设备。调试通过!!
2 p$ u! {6 o6 \& m. G. v g7 _这么一来,以后的IP Core的增减过程就变得很复杂了,应该还有更好的办法!
& c- S0 T! v/ l& t9 J' p1 ?7 ]/ M
2 ^+ s, |, |& E: W7 j1 j
! y+ p+ ]( [0 u! h1 p# i以上是我调试的时候出现的问题,以及我自己的解决办法,肯定高手指点!! |
|