|
这些天一直在尝试Xilinx方面的SOPC设计。ISE用起来不是特别困难,时序仿真,功能实现都能够拿下。但是在用EDK的时候,出现了一些问题。
: y3 t, L# a& {) s" H4 P0 | S: F4 q/ b3 s# w& q x% K
在XPS6.1i上面,可以实现一个简单的跑马灯程序,能够在XPS开发环境中对.bit文件进行download,结果也完全符合我的要求。但是低版本的毕竟有很多弊端,就连地址分配也要我手动来做。利用ChipScope Pro 6.1来调试程序的时候,又不知道从何下手,关于这个版本的的文档我还没有找到合适的,也可能是我理解能力有限。于是我换做XPS8.1i来做,却连.bit文件都无法下载成功,出现如下提示信息:
% ~+ q; u4 P4 U
) \! o$ M: s( u- T// *** BATCH CMD : program -p 1 + y( l' ?# G f
ERROR:iMPACT:583 - '1': The idcode read from the device does not match the7 [' ]: W _" v) j; K
idcode in the bsdl File.3 c: v7 K/ _- U$ ?7 c# }1 B
INFO:iMPACT:1578 - '1': Device IDCODE : 00000000000000000000000000000000$ u8 l) S; H7 c. T
INFO:iMPACT:1579 - '1': Expected IDCODE: 00000001010000011100000010010011$ _4 K. i' P- Z7 z
Elapsed time = 0 sec.$ x: M+ c; U& R( s' l
// *** BATCH CMD : quit
! R: ^; M; q9 n
7 m$ e- i6 L* r8 R m J. m0 @* F于是,我决定尝试在ISE8.1i中将生成好的.bit文件进行download。结果还真成功了,提示如下:
$ {0 L- c9 t2 o( B; r) ]) N8 Z; P8 s8 T; d
Command: Program -p 1 -defaultVersion 0
; j" N" u c6 q" U// *** BATCH CMD : Program -p 2 -defaultVersion 0
$ l7 |" k6 ~! \+ }PROGRESS_START - Starting Operation.
U+ L9 |3 N. x2 MChain TCK freq = 0.
0 m P8 C8 z, _0 `Validating chain...
1 t8 m% T; ]% @ w4 x8 jBoundary-scan chain validated successfully.
* |& q6 @9 M4 G, q; O$ b'2' rogramming device...4 ] L9 O3 v, Z
done.6 h# X4 [' X1 K7 N
'2': Reading status register contents...) q6 r; j) `" z3 Q( F4 O
[! Z0 v" V2 M/ e& M' ]* r' s
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
+ Y2 X; P1 T: } 1 1 0 1 1 0 0 ( i) w* K6 A" \% S! J7 M
]3 G( S& W) j& f1 l2 Q
[# `( R% C/ |2 {& w# C% v- |7 M* h4 e
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 4 m: ~8 T7 _: A, v% J) }2 @* k! O
1 1 0 1 1 0 0 1 N8 X+ I2 V7 s6 y6 d$ g
]
9 d# R7 o" V; A/ k% V$ J- w5 PCRC error : 0
3 V8 p" n; F6 `5 q9 e% fRESERVED : 0, e0 k& s- }3 s# ^
DCM locked : 1+ }: s6 r8 d, m
DCI Matched : 1! M; _5 T* t: q% G" B& ~" r6 i
legacy input error : 0/ e$ a. u# K4 d: w
status of GTS_CFG_B : 1! s2 ~, ?3 _& V3 f' f( ]. i
status of GWE : 1- {7 h; ^% w% H3 f
status of GHIGH : 1
* z9 ~& Y$ Z$ U) W( h: Vvalue of MODE pin M0 : 19 c! O8 W; }. C. r
value of MODE pin M1 : 0+ M9 D: e8 R5 q- j
value of MODE pin M2 : 1! i/ R, }6 t) o+ I
value of CFG_RDY (INIT_B) : 1
+ D& \' k8 ^2 |7 g" i: \( h, kDONEIN input from DONE pin : 12 ^2 x# |' G1 u# k1 E, g( L) z3 i( c
ID_ERROR : 0 z P+ H% y% i9 {( f: U
RESERVED : 0: e% |: m, i- w3 d0 j% m- L R, P
RESERVED : 0
- p/ G2 \8 G) y0 T1 A) T8 JINFO:iMPACT:2219 - Status register values:( ]5 e) e/ Y1 M3 U
INFO:iMPACT - 0011 0111 1011 1000 0000 0000 0000 0000 % X1 Y; B1 l9 t4 J3 u9 Q! I, z( o" b
INFO:iMPACT:579 - '2': Completed downloading bit file to device.
: O- |. V( H$ R# A0 q9 zINFO:iMPACT:580 - '2':Checking done pin ....done.
8 O; j- O% S4 C# H( B% i4 J'2': Programmed successfully.' I7 m- h" w3 T
PROGRESS_END - End Operation.; u5 `2 I. K- |3 s( [; k
Elapsed time = 21 sec.
6 W6 [3 @$ u6 ^3 x# \" h% L( w) u, T; [: z+ x F
但是程序仍然没有跑起来。
0 x! d7 N4 v9 `4 R9 ^' L& N' `2 T+ p" ?: j$ ]9 K% O2 I
不知道哪个环节出了问题……; a7 P1 l* m- H6 m# T( @
* [$ L% l7 N+ d$ I& X/ I- [) M; t B) L3 c
$ y' H& T. ^) W$ P/ X3 U
下载了第三方板级定义文件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通过,然后又加了个跑马灯的测试,也通过。" N4 M! D) u+ C; o, f: R8 p
/ n/ E: d _! P但是,还没有弄明白的是,为什么我建立Custom Board却怎么也不好使,肯能是那些细节还没有注意到。继续看文档。
; \: w- M+ l" s k! |: U
7 J, x2 V+ H' J) H& o另外发现,在调试软件程序的时候,各个IP Core的DataSheet很有用!$ v& O3 ?" F7 Z( q0 |3 Q
6 x! Y L1 p5 A0 G; ~! @0 l
( q/ `# H, M2 v6 V0 w i: B
, b+ r; S( N. O8 B2 P既然是自己建立Custom Board不好使,那么我就直接修改模板文件.xbd。嘿嘿……定制完全属于自己个板级设备。调试通过!!2 {9 q2 ^' A- |! z8 j
这么一来,以后的IP Core的增减过程就变得很复杂了,应该还有更好的办法!
; O% n/ u. |* ]. V1 D% C$ o7 J- [
& M) d1 T! g6 M4 z- r* ^* P
以上是我调试的时候出现的问题,以及我自己的解决办法,肯定高手指点!! |
|