|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
" ~( d& o! Z4 i3 A0 k
引言
$ O7 M2 z# L/ @, I8 q; X( d8 p- G0 c& ]4 Q2 K* o
之前我们在PC上构建了ORPSoC的仿真环境,通过仿真环境,我们可以观察任何模块的工作波形,极大的方便了问题定位和错误分析。但是,“是骡子是马,拉出来溜溜”,只能看看仿真波形显然还不过瘾,我们还需要用FPGA板子跑一边才行。但要想在板子上运行和调试软件,最方便最直接的方式就是用gdb将程序load到内存,进行调试运行。本小节就以ML501板子为例来说明OpenRISC调试系统的构建过程。; L7 j3 {6 _ Q; K8 b8 h
: H2 a; n, b+ F1 |4 l* x7 {: N
& I7 P- Q, [/ S) `) J1, 调试系统结构
+ F4 c9 a! A9 s( n# f
8 w4 z& b. }( m: F8 v/ ]
4 h( `3 P, d* g* y& y
' Y3 F+ {4 Y! x2 d" B2 {5 K1 P其中棕色模块来自advanced debug system,PC端用的是orpsoc的vox的ubuntu镜像,蓝色模块来自ORPSoCv2 for ML501。9 ^1 v8 Y% j' O5 {! x; v
n1 N i3 K; |; i! w/ j6 ~5 x
0 J5 w! @) s* `$ n0 x- F4 J
8 o k1 ^; w+ c7 y" x# L# q+ u9 E/ K1 E2, 资源准备
# u- ^9 O3 t/ D0 y5 y* B% {& L4 Q; E, H Y, b
a,Ubuntu镜像* E1 _6 k4 z0 c3 @2 Q1 p( d8 Q
/ _) \" Y6 u" s7 D* v+ r3 x
http://opencores.org/or1k/Ubuntu_VirtualBox-image_updates_and_information
$ d& E- H7 M1 k( u# H5 E+ W# u
2 l) m5 r0 I" \9 p/ a T8 f) Q0 L( `b,adv_debug_sys
/ E1 e5 }6 _& V- P* P3 F3 F2 R. V9 L+ Z
http://opencores.org/project,adv_debug_sys* S1 Z. o. Q2 g- x
, P* U' ] d, L1 ^% Y+ \ f
c,ML501板子及下载器。
* v# k0 K4 r/ G* A
8 y) W7 ]( l9 ? C3 z' P/ F1 ? http://www.xilinx.com/products/boards-and-kits/HW-V5-ML501-UNI-G.htm# f( A3 U( E" g i
9 d- s! Q$ c& |% Q! ^( R& w
) [+ b% s* C- D- J2 I2 q2 f
$ z) e0 W8 F x; F, ?5 ?3, 调试环境的构建% C5 Y2 U m- d' g2 W# a9 u6 D
% W( E. ]4 S; t6 e1> 安装adv_jtag_bridge s/ [; \: L' `+ h+ r- Z
- W0 t D- S* a6 z
解压:# ~4 f. C7 X# J4 ]0 c
! Q3 [* q% {" ~7 x% g
tar xvf adv_debug_sys_latest.tar.gz3 @: M& }( w7 p* e2 z8 ~& ]* g
2 E/ k E* g& Q$ A安装:
9 o. ?8 q" p% [/ i( z8 o: B
! j2 }( L+ N( y% ^. t+ ^" e$ D6 |cd adv_debug_sys/trunk/Software/adv_jtag_bridge
$ _, U) I. J$ S9 }./autogen.sh
, b- g+ k; {+ p; T# e1 E& @./configure: O# }. o+ q7 p# s% W+ t
./make, S0 L4 P* w% b( z' |; X4 r$ j
./sudo make install' ^( T' q1 C5 P! W6 \4 {7 l( V1 \
. ~6 V, L0 W( Y0 R2 R; I/ N4 g# ^9 u: c, c+ i3 c
2> 在windows下构建ORPSOC针对ML501的ISE工程0 w. ^3 ~. B8 p
1 {, ]( J* R4 a4 o S( Z6 LORPSOCv2的工程有两种方式,一种是在linux下,另外一种是在windows下。
( `) S1 @& \, k2 ?2 z V2 s4 T8 \7 l; [. N6 ]) C% ^1 `$ z; ?4 V5 u
linux下的工程,前面已经介绍过了:http://blog.csdn.net/rill_zhen/article/details/16880801
" [% Z2 `! n) x; f6 f/ I( C# X; @! S U: K
安装完ISE之后,就可以综合了。+ j+ i" \- r, Z+ S' k
# T5 c& L* X c
下面介绍windows下的综合,0 E! ^- ~3 @$ s& |* [0 d( a
& ]" i* ~/ Q/ A# R
首先根据linux下的ise的prj文件,将对应的所有文件copy到windows下。
1 ~) i) w! E. b* \' a; @* m K' Y: a- L* j* M2 z
prj文件内容如下:& O/ O4 u n3 n- K+ w1 Z
* S- z3 @+ r) x& A7 |orpsoc.prj:
: T8 I3 ^9 j/ ? W/ Y& [0 g8 ?: Y
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/arbiter/arbiter_bytebus.v+ V& r* x+ G- Q1 y
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/arbiter/arbiter_dbus.v9 N" n/ p+ _' }0 _% N
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/arbiter/arbiter_ibus.v
* Z: v g$ [8 [6 R. ~1 ~9 ?% H% q3 Gverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/clkgen/clkgen.v
5 n/ R0 U6 U3 d9 @4 Y; D. w3 W' Kverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/gpio/gpio.v
, e: S, E: A J& I( i8 G; a: s) u- gverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/lfsr/lfsr.v
3 P1 ? o# n. l- J' uverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/orpsoc_top/orpsoc_top.v
7 V3 g3 g* f: s9 c$ y( iverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_chipscope.v% C6 T! V S7 X8 J1 _5 s
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_ctrl.v' e) u6 R* S1 D) w1 F0 L
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_idelay_ctrl.v
4 y+ ]) H! {; f, A5 Jverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_infrastructure.v* ^1 S& z; ^: W
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_mem_if_top.v& j% d% D! F/ y
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_mig.v
5 t: U$ _7 g7 v3 v% Xverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_calib.v& p! \6 O) G" q( V1 W
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_ctl_io.v
# Z( ]& c }' Z8 tverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_dm_iob.v2 @7 k8 T) b$ y3 T. X
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_dq_iob.v
+ u+ V% Y& P( G. lverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_dqs_iob.v- W! n3 q- U2 E# v$ o# ]
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_init.v
: s Y3 B/ w- A# J$ _verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_io.v
) B# R; T9 |. p3 y# f5 X/ ]. y7 xverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_top.v7 k2 A+ v# C7 u5 p1 C& h+ x1 s
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_write.v
( K4 B0 X3 o- {' g2 Rverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_top.v
# O& h; E: D7 R! \- Sverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_usr_addr_fifo.v) f V! T1 x' V! n3 c* a8 _
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_usr_rd.v/ w# ^) d5 n [- ?7 L$ I
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_usr_top.v% d9 F; B4 f A% I
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_usr_wr.v* f1 t; `" n/ N1 Q
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/xilinx_ddr2_if_cache.v
) ?' R- c3 g" v' S* F2 P3 ?verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/xilinx_ddr2_if.v
% C; ?6 A) D" c! x4 \$ Pverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/xilinx_ddr2.v
1 z1 b! p/ r2 C6 {verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ssram/xilinx_ssram.v
8 h$ q; |; `8 b) A' Q2 pverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/cfi_ctrl/cfi_ctrl_engine.v: `8 u/ T0 m; \/ w8 S6 r
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/cfi_ctrl/cfi_ctrl.v
$ u8 T& S) `' mverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/dbg_if/dbg_cpu_registers.v
. A/ h# J/ S9 f) h rverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/dbg_if/dbg_cpu.v
- U# ?- r1 }5 t4 B7 G) y& T6 Kverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/dbg_if/dbg_crc32_d1.v
( x8 { T8 E, X2 m9 Fverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/dbg_if/dbg_if.v3 ?+ |8 ]8 i m
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/dbg_if/dbg_register.v
! ~5 x$ R1 e0 U- B+ xverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/dbg_if/dbg_wb.v- b; n; _, y8 \6 n1 v% L: h/ B
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_clockgen.v1 T4 K4 A+ Q5 a7 T: [) u& e% S7 j
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_crc.v
n/ q% K" ?: H* K3 gverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_fifo.v5 L/ I1 d' ^: w, @5 K+ E
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_maccontrol.v
* X5 S% ]+ z& @0 t; `verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_macstatus.v
2 E, R2 n8 c) p4 w9 N3 f# b/ Everilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/ethmac.v
& R0 p/ {0 m% P/ M: Overilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_miim.v
0 u" D" z( q0 Yverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_outputcontrol.v0 J8 @) S: d- n2 A3 V5 X8 h
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_random.v0 c3 t: f4 X7 b& a( {! N1 l4 U
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_receivecontrol.v7 z6 B8 V' P( \" O1 q
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_registers.v: Y- Z+ _9 g; r8 j7 n
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_register.v
% d) k3 f8 N c# C, W5 lverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_rxaddrcheck.v1 e5 b/ b' k8 |5 t% Q; O: ^/ F
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_rxcounters.v" _. S* d: r- ^/ I
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_rxethmac.v
8 R& \) T) H8 q& z& m2 Z* \verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_rxstatem.v0 `, h& d3 M: @, ~9 f2 n) u
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_shiftreg.v
3 G( d6 ]$ D4 f7 Hverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_spram_256x32.v. }' t {: r( c- o
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_transmitcontrol.v. H8 n; A5 n* C$ p M4 J0 b
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_txcounters.v
' B5 ]' y, A9 Z: \* n1 cverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_txethmac.v
* ~3 w" e+ D' ]verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_txstatem.v( T2 U$ k1 B( l
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_wishbone.v" L0 ]+ ]* |& n* t7 E/ r
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/xilinx_dist_ram_16x32.v0 s( |6 w7 _6 P. ]" t h$ k
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/i2c_master_slave/i2c_master_bit_ctrl.v4 q: o$ E0 n* N8 h! Y3 o( G( b( o: J
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/i2c_master_slave/i2c_master_byte_ctrl.v1 c8 F, A# U: `) B& C5 F7 d
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/i2c_master_slave/i2c_master_slave.v1 ?) o: }3 Z* W4 e1 }6 ?% |: v
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/intgen/intgen.v
* J, ?* z |& Mverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/jtag_tap/jtag_tap.v
5 B7 d0 P/ A% S1 o, }" Vverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_alu.v
7 k$ t' ] l1 {8 Rverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_amultp2_32x32.v
3 {6 Y7 W+ H7 r+ ~- M4 J# [verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_cfgr.v
$ ~" `( l4 f( s" O0 Cverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_cpu.v
" U" y4 g+ l8 d2 }( p3 Sverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_ctrl.v
7 W& y$ v/ g" tverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dc_fsm.v
7 q! q% |+ I. K) k& Z/ W+ G6 Lverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dc_ram.v! z0 @( u: I& K2 K4 ~& C$ L
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dc_tag.v
/ X) N3 R3 } ]1 j2 B- k: lverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dc_top.v
! @: A4 j! h" y2 s7 tverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dmmu_tlb.v
; A! z# l4 E5 W4 M; Q6 averilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dmmu_top.v
7 b/ g, g& f$ `8 g% g5 R f4 b$ X ^verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dpram_256x32.v
9 _ H" @3 R, J: L! h( Zverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dpram_32x32.v
- l+ E4 @6 v& M1 B1 D, |4 sverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dpram.v
) V2 @4 P0 ~, L) [verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_du.v. |2 H3 G, G5 S. V1 R# S" g
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_except.v
) g% |0 r: X5 I; Bverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_addsub.v7 L2 _4 t8 u3 B% g2 |, {" _
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_arith.v& s# z/ x* b5 Q6 Z/ Z4 _
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_div.v
! A# R. B1 k+ wverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_fcmp.v$ i; q$ j, Y% k) `9 t
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_intfloat_conv.v
- q' ~' p- i( o. q4 yverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_mul.v
2 M- i4 V7 c" o8 Q% nverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_post_norm_addsub.v
) V( S, y! t6 ~verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_post_norm_div.v
; C r+ q H0 S" xverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_post_norm_intfloat_conv.v0 @2 D- H9 K3 \; s2 P0 d
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_post_norm_mul.v
* K. \5 V: o' T1 Pverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_pre_norm_addsub.v% s5 x4 G. D9 [5 t8 A- d5 t1 ^
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_pre_norm_div.v$ I% w$ _; F' y1 C! k7 ]1 y
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_pre_norm_mul.v
J4 @4 }. A/ e; J0 [verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu.v8 y6 v& I, s0 Z4 ]/ R$ w
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_freeze.v
3 i$ I) u8 P! xverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_genpc.v
$ _. Y& l* q( ~( ~! ~) ~verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_gmultp2_32x32.v4 L+ W3 J" P% j7 i k
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_ic_fsm.v: I/ C' ^7 \4 X/ N/ ^
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_ic_ram.v
2 R! {0 A1 b. f8 V# W/ T9 D+ K5 averilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_ic_tag.v: d I* p, @% s: B: c3 k0 v
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_ic_top.v
8 ]0 l% S4 M* h; ?# Kverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_if.v& X# T- _3 m/ F$ q
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_immu_tlb.v
P7 b) z% i, w2 m5 Yverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_immu_top.v" @3 R' G6 {) W @6 J+ l! B
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_iwb_biu.v
+ v0 I m$ G9 o7 rverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_lsu.v
4 v& E6 w. `* N+ z! Y Overilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_mem2reg.v- l5 v3 d! o. ^( G' `
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_mult_mac.v( U* k2 ]# k5 I9 G5 j. m! ~; ?
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_operandmuxes.v
0 b; I" X# m* G: u; a5 Gverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_pic.v% [- u# q( e: q: r0 V5 R. I% T
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_pm.v
/ T1 C5 O1 c, Pverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_qmem_top.v- ^; u9 Y" X s
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_reg2mem.v& W* s3 S+ g' z5 f
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_RFram_generic.v7 U8 e# g: J0 F1 A
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_rf.v
% q8 A. L9 `1 qverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_sb_fifo.v: Z5 U; X* i { t, H% T
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_sb.v
+ z: {* _5 h, Z) @" J5 e% X: o4 jverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_1024x32_bw.v2 W+ J( W' Q( p7 |4 S
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_1024x32.v$ o! ]6 q1 R9 o# H1 t7 g* u- @. U
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_1024x8.v
. p) H; O0 o- y! a. y( pverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_128x32.v
, J5 ]% f) z" Q1 b/ @" mverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_2048x32_bw.v* \, o, r# a( d+ u& n$ \" e
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_2048x32.v
& |( a1 R3 h3 everilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_2048x8.v
0 d' j) A! h0 j2 Iverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_256x21.v
+ I% n8 W6 }5 {6 g9 T2 t, Everilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_32_bw.v
; m4 K% X" o: C8 A' nverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_32x24.v& P( Z# i6 `; X, ], ~
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_512x20.v
9 u w2 H# R6 J9 N; N! J) o% Mverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_64x14.v
: h- s" G0 l" f+ ]% Z3 r& `' s% Cverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_64x22.v! O2 m% v; e9 R5 f) H+ s" j5 E1 i( k
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_64x24.v
, _; f2 j% X2 e1 m" o. H# x: y9 ^* fverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram.v
7 T8 r$ i. d% x. t/ L% Y' s/ Q! M# f5 {verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_sprs.v& F: G7 t' W9 w2 @2 z* O4 X _
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_top.v
" @, V7 E" x8 Rverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_tpram_32x32.v
2 v* X. B3 S, z( g' }1 }verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_tt.v
9 x' T# m( T& w( m. [% E; \verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_wb_biu.v
8 m9 a' q) L* j! A& t3 @verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_wbmux.v
1 p, F$ ]3 G! ^$ z7 ~# y1 qverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_xcv_ram32x8d.v0 M j' D+ a' _
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ram_wb/ram_wb_b3.v( i o; b) r( i& L) z# D
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ram_wb/ram_wb.v I3 e6 ~* K- K" I
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/rom/rom.v
6 Z# J5 q* z1 w& Everilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/simple_spi/fifo4.v
, ]. o$ J" u% ]* v" Wverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/simple_spi/simple_spi.v, s3 N& {( K& d) d. `
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/smii/smii_if.v5 l1 |8 M; v9 ~0 h% E' j- H
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/smii/smii_sync.v
- a" @8 M0 b5 s) c8 L7 `* ]verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/smii/smii.v) Q& b; B6 A) ~, j! J) l( c# ^
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/raminfr.v( T- h7 N7 o+ z- n0 z" C4 S
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart16550.v' w- y5 o5 ^! g* m/ @
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_debug_if.v
+ _, {* N; r: i& wverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_receiver.v; Z$ x) T( v/ ~4 J, J$ D
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_regs.v
# `" L3 R7 {- overilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_rfifo.v8 j2 ~+ n. K) F' `; c
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_sync_flops.v% K" }3 R4 q3 a# {4 L$ X- _
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_tfifo.v9 Z4 v3 `; e! n+ K
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_transmitter.v0 g) C# W6 k# T( r; ~' J/ J* v
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_wb.v; M* d( F3 j; I8 }. u% ?: B
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/directControl.v
- @. J+ t8 D+ ~: f6 g) cverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/dpMem_dc.v0 w1 b% F3 o& e' {& C2 x* t
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/endpMux.v
/ t! _ B7 x' U3 g; t% N! Bverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/fifoMux.v
4 _* |4 K8 w" vverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/fifoRTL.v
& U; D& @' r* ]* M( E) Fverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/getPacket.v
! F+ r0 B( U7 q: j8 averilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/HCTxPortArbiter.v
7 {) o$ w* s G7 G) H, o- zverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/hostcontroller.v: f( r. O) i$ X' U% w* ?/ c
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/hostSlaveMuxBI.v; ^2 D: |$ O* g& V4 M' t
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/hostSlaveMux.v
3 n$ B; }3 }/ P6 i- Sverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/lineControlUpdate.v
, M8 r4 n% g) Q m+ Dverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/processRxBit.v
5 U2 p2 [$ G1 s _verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/processRxByte.v2 ^% j$ U* `8 m& v' \; T
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/processTxByte.v/ @: @0 a3 X, G% S7 I
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/readUSBWireData.v2 {( f0 Z5 A3 d M% r! c4 \: |
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/RxfifoBI.v! m+ p, [, M# t" I$ h( l
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/RxFifo.v
7 L7 [' }* d ^) ? vverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/rxStatusMonitor.v# r1 _! E4 k& _' o4 c" m5 \# K' j! A
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/SCTxPortArbiter.v
+ D( _0 E4 S$ }( r y; tverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/sendPacketArbiter.v
+ O6 o5 K+ Q( T9 j& Dverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/sendPacketCheckPreamble.v# u! v P4 C/ ^3 n8 ^
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/sendPacket.v4 x7 r3 t) X0 i1 Q) C8 [8 e. _
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/SIEReceiver.v
) @. z/ l. s* j+ f" y& Mverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/SIETransmitter.v
% }2 ]8 R2 C K5 _4 o" ^8 c& v- Tverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/slavecontroller.v
$ B9 V+ ?8 A% c6 E5 ^/ n9 Y% g: G7 ]verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/slaveDirectControl.v
+ F0 d# O; T: J5 Tverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/slaveGetPacket.v
. \* f* C7 Z9 R& Lverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/slaveRxStatusMonitor.v
3 Q P5 t2 b5 ?' T! P. Jverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/slaveSendPacket.v2 q0 t e2 _5 k$ h: F5 z
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/SOFController.v
Z7 y6 @' `5 y( |' j; K. S/ iverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/SOFTransmit.v9 Z7 v2 A6 F# j
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/speedCtrlMux.v8 h6 j/ Z) L7 ?
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/TxfifoBI.v
/ m% D+ r2 N" @+ T+ B( X9 wverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/TxFifo.v
( Y$ n6 s% }. c, H1 Dverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/updateCRC16.v
8 T7 h- y( t' R l% ~verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/updateCRC5.v
$ y) X7 D. ^. q b+ Tverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/USBHostControlBI.v: L: J) g9 y6 Z& h4 A
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/usbHostControl.v- m6 J1 p' A/ c( ?# W* M$ x
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/usbhostslave.v( b" `2 F9 e2 f* @
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/usbhost.v
2 m8 E v/ M% z9 P! |- M2 ^% V) yverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/usbSerialInterfaceEngine.v' r! X5 N8 }$ Z; h4 _( d
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/USBSlaveControlBI.v
, P; ]# r" a+ E" D' overilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/usbSlaveControl.v
6 a9 {4 S( I2 w/ K, X, T% E# Rverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/usbslave.v' U2 M# O* s1 a7 C
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/USBTxWireArbiter.v; T( N, _6 K) `& C' }' q
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/wishBoneBI.v
+ R1 o# O6 B# Y9 j/ q& ?6 }1 yverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/writeUSBWireData.v
( V' a" _! W' p5 U5 B- ^ O$ Vverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/wb_ram_b3/wb_ram_b3.v
' g T3 n* Q+ W: s2 [verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/wb_switch_b3/wb_switch_b3.v
5 r% \$ O, N, j7 P. [6 w W: k1 L- d" r i
4 G5 M* l4 E/ L2 l* ?
此外还要将以下文件copy到windows下:
0 B( I8 {5 }8 s: \' I
0 G; e" Y& p( L4 f9 H% H$ q# L; g: f$ {( F* J3 K$ ~6 P
bootrom.v,ml501.ucf,xilinx_ddr2_if_cache.ngc,synthesis-defines.v,timescale.v。: x% V0 U5 M: x% p# R
/ t" J! |- U; x这些文件都可以在~/soc-design/orpsocv2/boards/xilinx目录下找到。9 x J( V9 U# r/ S" }/ w; ]8 s! o! |& o
& W% Q# p( k* g l7 u
orpsoc.prj文件,在安装ISE之后,综合时会自动生成。
5 r7 _+ k: U8 t& ] p1 E1 v/ D/ A
6 K }# C. y) P% o+ u1 m1 i3 D所有文件准备好之后,在windows下,打开ISE,创建一个工程(需要设置芯片型号等信息),将上面所有的文件加入工程即可。
6 B+ J" b: P* ~% r% R! ~. [
\) e9 v* v' E需要注意的是bootrom.v的生成,一定要指令ML501对应的board.h。
) E4 r1 ], [: [- s) l/ _0 n9 v& @) U
9 P0 i! [8 l: a" `1 N
" m; Z. s( {0 O# ]6 ?8 Q
; Z" s: |1 j2 r! h$ R3> 例化xilinx_internal_jtag
, q" b W4 e' }. e- y& i- l) i5 k+ v0 q! e/ q1 y! q
orpsoc中默认使用的是单独的jtag tap,我们使用xilinx_internal_jtag。, h1 E/ |1 i0 W# G" P" W
1 s: F& J0 l- k' v# L7 Y5 R
将adv_debug_sys\trunk\Hardware\xilinx_internal_jtag\rtl\verilog中的两个文件加到ISE工程里面,然后修改orpsoc_top.v,例化之。- i' x0 k h5 F$ k+ N* M# A
* [: T/ W# [7 R在例化之前要先修改:5 y/ ~4 {9 l5 A# f
) a9 S" @ P) e( E, T. d x
xilinx_internal_jtag.v:由于ml501板子本身就有4个jtag device(0,1,2,3),所以我们的device id要设置成4。
0 `) F; C# a; x) i# D
- Q. q. }. q) i// May be 1, 2, 3, or 4
! r8 e4 |7 a( u) Z. H: Q' m// Only used for Virtex 4/5 devices5 |5 J0 d! X; e, x
parameter virtex_jtag_chain = 4;
9 a4 ~3 s! O( j- T' N( @
7 ^, h- }! S; {3 Cxilinx_internal_jtag_options.v:
$ I' t& e# c3 O5 \; o+ i- x' z! t" X5 O9 w# h3 E# |* _& _, M o
//`define SPARTAN2' Z, F% _+ w3 x, h; o4 g+ W9 b
//`define SPARTAN3 // This is also used for SPARTAN 3E devices
5 I }$ J0 b: h% y& y//`define SPARTAN3A: Z$ m1 v) r: i' j. t
//`define VIRTEX
- K3 e0 I2 R& P2 Z3 v//`define VIRTEX2 // Also used for the VIRTEX 2P
$ U5 j: g) u7 l//`define VIRTEX4
; B1 q; E; o% ~+ U \`define VIRTEX5, o+ n4 S, e& e. M- W
. r5 J( Z; p! J9 W; ]7 Q4 K
$ ?/ \4 \' i; W
例化:orpsoc_top.v:5 ?2 r/ m0 [6 F2 i- V
4 H7 O/ t1 m- o) R/ C! ?/ g% p+ j`ifdef JTAG_DEBUG
0 a" Z# {3 A @! X& M8 c# q
# k0 f+ `9 G6 x4 z1 ~ /// y4 C6 F8 d+ _8 v6 Z5 V8 j: {
// JTAG TAP
# E8 x% Y3 [: S# D* L: s) g //
* ~1 o0 f- f" {! E# t; D( c) V- }
: M- I# _4 i% |8 Q; ~/ ` 6 m3 X6 T6 i6 a& Q. R Q3 S1 b
//# Y) `0 }) A8 c- B' y- A
// Wires
9 T3 c5 C' j9 ]2 ?0 k //
) m8 l: o6 k; x! {1 n$ W wire dbg_if_select;
) u0 G4 L4 z: a ~3 E wire dbg_if_tdo;
# w1 i: F; E5 D4 w2 x6 R wire jtag_tap_tdo; 0 D3 s5 b! H0 D: [6 f1 G. K
wire jtag_tap_shift_dr, jtag_tap_pause_dr,
g! l. o4 o. i7 Z6 a+ s jtag_tap_upate_dr, jtag_tap_capture_dr;
. C8 g1 M5 L! e6 K H1 N# F //
# H, D5 m3 x/ r! H o5 u4 y // Instantiation
1 ^7 L! B: d5 ~# ~, J0 T2 X+ S: z% N //
7 r$ t7 f* w6 j, v) y& Q; l wire xilinx_internal_jtag_clk;3 V h7 b4 q. b) Z& ~
wire xilinx_internal_jtag_rst;$ Z @& J' ]! g( [) z8 v3 `
xilinx_internal_jtag xilinx_internal_jtag_rill; ^; s8 ^# T4 Z; o) s" a0 F# K0 ^
(
7 q' |/ l- j% f/ K& \ .tck_o (xilinx_internal_jtag_clk),
! ~4 y' s( ~1 B% h1 c1 t; A .debug_tdo_i (dbg_if_tdo),
/ R9 P' Q9 I5 b# N. ^1 y# n0 \ .tdi_o (jtag_tap_tdo),
5 I$ V) j" V7 J8 e0 H* L, _8 ` .test_logic_reset_o (xilinx_internal_jtag_rst),
, _; w" p& z: t9 R9 E$ m# q Y .run_test_idle_o (),1 x# Z4 l' P/ `0 V
.shift_dr_o (jtag_tap_shift_dr),
7 F1 ?! ` g% B' U4 P# h6 h. f .capture_dr_o (jtag_tap_capture_dr),
9 l! O: ?$ ?! z8 o9 T& s .pause_dr_o (jtag_tap_pause_dr),3 w2 I3 t' H' m Z
.update_dr_o (jtag_tap_update_dr),7 _( D+ l2 K: r8 R6 M7 R
.debug_select_o (dbg_if_select)0 A! [* O1 l& }/ z$ j- T J' B
);& V. H6 ^5 Q- c R( m, K; `
/*9 n; ?+ }3 B9 A) L
jtag_tap jtag_tap0
, q! D7 J% J& j% Z. N4 i; g (
, H5 D5 f* @ I- i, F // Ports to pads
6 d- Q8 h% F) l2 e .tdo_pad_o (tdo_pad_o),
- P- Z2 r' h( f4 z O( b+ E .tms_pad_i (tms_pad_i),: e% c# U2 K) X9 g
.tck_pad_i (dbg_tck),3 W& ?" X2 r% d# h5 I
.trst_pad_i (async_rst),
; H3 I+ x& ^; X) m# g' L( B .tdi_pad_i (tdi_pad_i),5 H$ t7 f8 Q \6 T
7 A$ J9 K$ U- P+ v
.tdo_padoe_o (tdo_padoe_o),( M! e/ U, w/ P: w
& `* \8 W! I7 S
.tdo_o (jtag_tap_tdo),6 |$ q U9 a1 D$ \
6 e! A' C- s% ~# p .shift_dr_o (jtag_tap_shift_dr),
. Z9 E- s+ r7 Q7 V .pause_dr_o (jtag_tap_pause_dr), [- N# A* C, H
.update_dr_o (jtag_tap_update_dr),
+ M7 r1 S" T8 C' Q1 [) X .capture_dr_o (jtag_tap_capture_dr),$ |2 I2 V( j& q) S3 \
. N8 l1 M+ n( ~/ U' I .extest_select_o (),1 J6 ?8 l9 l8 N8 W- I' d
.sample_preload_select_o (),3 O0 k1 a: G3 \2 p% e/ w0 y; ]5 a
.mbist_select_o (),. U) Z- d+ E+ i/ A
.debug_select_o (dbg_if_select),
7 W& m' ^& D" u' R
8 D9 `( m8 d0 N' ]' h5 A( c / {/ h/ ~4 y3 }8 H: ]
.bs_chain_tdi_i (1'b0),! R5 k7 v' H5 l4 Q6 K' M
.mbist_tdi_i (1'b0),3 V: O! M, V6 A; Q' U- V
.debug_tdi_i (dbg_if_tdo)
( \* R( S1 c% a4 ?6 f, u! y4 Q
' g. O: F9 F" q$ a );*/, C* g) {. w+ E2 V! p3 o k
( R& L6 o z) P: L
0 q: @- E# } C* A`endif // `ifdef JTAG_DEBUG* o+ t, G2 x$ F7 f
+ u7 ?# B9 H7 U2 {- z5 E
# x! B0 t$ o" [0 b# l% n
4> 例化adbg_top
8 [& B* A( X* }1 x% P: d/ |6 r# s' F* X8 Q( b# N, ^ m
同样,orpsocv2中使用的dbg_if也需要替换成adv_debug_sys中的adbg_top。
9 x% K7 ` W: _! {( V
3 e, c9 s' K5 F( K1 a; u将adv_debug_sys\trunk\Hardware\adv_dbg_if\rtl\verilog目录下的文件加到ISE工程,修改orpsoc_top.v例化之。7 H5 v7 A/ P2 _! D* D. H7 f% E
% U, u% l" v) L N' o" K5 {`ifdef JTAG_DEBUG
# Q$ V8 [" P n' c1 n4 K 0 K* N# l% H7 q# b3 Z4 [( U% _3 R2 |
//7 d$ v* l6 b ] z5 C9 ]+ j/ k) k0 i
// OR1200 Debug Interface1 c* o# Z& l, L$ O
// / G( W" j6 ~4 X+ F1 O: M
7 I! }) T& l% l+ M$ g
adbg_top dbg_if04 f- `$ |/ m6 i! e k) l
(: h8 o) y/ {+ b. m3 M6 W
// OR1200 interface( a# D4 v8 L$ c" d: g' E
.cpu0_clk_i (or1200_clk), G2 U$ c" s; \6 L0 @& u: A. o3 t
.cpu0_rst_o (or1200_dbg_rst), : x. y8 z" {- l, z7 }6 d
.cpu0_addr_o (or1200_dbg_adr_i),; Y5 x$ m1 p& u9 m% i: P
.cpu0_data_o (or1200_dbg_dat_i),) d5 i% w- q' C W6 z
.cpu0_stb_o (or1200_dbg_stb_i),
0 C+ o( R# p2 E a7 y+ M" m! ] .cpu0_we_o (or1200_dbg_we_i),
, L1 a( j' `' W7 K .cpu0_data_i (or1200_dbg_dat_o),- a1 y7 Z2 \5 Z2 n! k9 Y
.cpu0_ack_i (or1200_dbg_ack_o),
/ H% m9 P( K# v* p 2 g! R/ u% E; S6 y0 w& w3 D. l
, @$ K6 O: ]% @; t8 k% S& |) c" U. C* D
.cpu0_stall_o (or1200_dbg_stall_i),7 d9 Y6 ?# B6 _( b
.cpu0_bp_i (or1200_dbg_bp_o|(|or1200_dbg_wp_o)),
% ]/ m2 Y/ B0 q8 L 9 F' H7 }( G, F# |8 D
// TAP interface. d# }0 f4 r: I a( L5 x& k
.tck_i (xilinx_internal_jtag_clk),5 r" x3 o' {4 m5 ~* b0 t% ?
.tdi_i (jtag_tap_tdo),* A0 K$ I5 \" Q4 m- P
.tdo_o (dbg_if_tdo), - p$ y2 H# k. H" z4 M: h7 x3 b
.rst_i (xilinx_internal_jtag_rst),
" U+ h8 A& F- M# | .shift_dr_i (jtag_tap_shift_dr),$ Z6 `" F$ R* ?; l0 w! }
.pause_dr_i (jtag_tap_pause_dr)," D& y2 b9 E1 l- v
.update_dr_i (jtag_tap_update_dr),
/ s4 n, ?% }' N) K .capture_dr_i (jtag_tap_capture_dr),//new add
4 A. o" O! l+ v$ m+ ]5 u .debug_select_i (dbg_if_select),
' b( K* J; n) U/ J3 C' E- t5 E ( t! f8 E7 ]- V @+ z0 h
// Wishbone master5 r8 m6 J2 C: W* B2 d# f8 Z' |3 ^
.wb_clk_i (wb_clk),$ }6 h K! {' W5 Q- O) B
.wb_rst_i (wb_rst),
! t6 y+ h, H3 T/ }4 d/ w0 P; W6 p .wb_dat_i (wbm_d_dbg_dat_i),8 X% k! X" A& C- {
.wb_ack_i (wbm_d_dbg_ack_i),! t# ~+ Q, p) k8 o9 Y2 X3 V% E
.wb_err_i (wbm_d_dbg_err_i),
# j4 Q* z& j' C; O1 W .wb_adr_o (wbm_d_dbg_adr_o),
$ U, O: z" k/ j* S; Q5 V- E% N2 E .wb_dat_o (wbm_d_dbg_dat_o),9 v* ]4 `5 y" w. Q e
.wb_cyc_o (wbm_d_dbg_cyc_o),
2 u0 V% U* C4 F. D" g .wb_stb_o (wbm_d_dbg_stb_o),
/ o' q% d* g- n' G; f5 a .wb_sel_o (wbm_d_dbg_sel_o),
: q: L0 e, A) X0 z3 u4 ? x* a3 d .wb_we_o (wbm_d_dbg_we_o ),% J/ l4 A/ }! j. @
.wb_cti_o (wbm_d_dbg_cti_o),0 o6 O$ b$ H" r% g9 t% |8 O- V
.wb_cab_o (),) D. N6 B [: y/ d
.wb_bte_o (wbm_d_dbg_bte_o): v4 K' r* F8 Z% B7 h
);
/ I' R3 [% w9 p# I+ Q /*9 E( R" Y1 t* |1 |. @% Y3 W% D
dbg_if dbg_if0% b5 W L: S' J0 P
(/ f4 ^5 w% I7 a" N& K7 ]& {
// OR1200 interface
, Y4 [+ c$ d& X6 b) X .cpu0_clk_i (or1200_clk),, D+ H, M2 S& u' [; j2 R
.cpu0_rst_o (or1200_dbg_rst),
+ k) C5 e) K+ C# Y .cpu0_addr_o (or1200_dbg_adr_i),$ e& q- o" m1 ?2 u1 x: Z# L. g
.cpu0_data_o (or1200_dbg_dat_i),
" q7 C! E: [5 V: H .cpu0_stb_o (or1200_dbg_stb_i),
6 E( g- r1 l& k+ \) g9 n3 Y .cpu0_we_o (or1200_dbg_we_i),6 [5 u7 f( ]. I
.cpu0_data_i (or1200_dbg_dat_o),
2 `3 T3 i3 o- R3 L' o .cpu0_ack_i (or1200_dbg_ack_o), ' o5 P% z6 b0 ?
/ w# f0 Z* Q+ W+ i- j% b. v$ Y
\$ Y5 s* x- S9 ^) r+ L' x2 S .cpu0_stall_o (or1200_dbg_stall_i),
: @2 e3 D% r1 h) Z .cpu0_bp_i (or1200_dbg_bp_o),
$ n" X& L; t) A/ U6 x; X ( W. k3 p s6 Y
// TAP interface4 B( K% S6 `$ [! c7 n# F& U" |
.tck_i (dbg_tck),
$ d; |( x; {1 p2 f5 P- R .tdi_i (jtag_tap_tdo),
" x+ O; G- k6 ], V: b .tdo_o (dbg_if_tdo), ' V7 Y: j4 L5 Y1 G; L
.rst_i (wb_rst),
% x3 `% ?( A8 u .shift_dr_i (jtag_tap_shift_dr),, g* @- C' q7 Z' h# s
.pause_dr_i (jtag_tap_pause_dr),4 D5 [* U2 C. c9 d) ]8 P# J
.update_dr_i (jtag_tap_update_dr),
! [* }: J& T1 g .debug_select_i (dbg_if_select),
, q$ I' U% J3 Z % e8 j5 E4 R' S0 [/ A2 @. N
// Wishbone debug master0 z1 e/ k+ _8 f
.wb_clk_i (wb_clk),$ p h9 G. }; ]( t+ ~ d) s; U
.wb_dat_i (wbm_d_dbg_dat_i),
; v( Q2 f0 ]1 I$ r .wb_ack_i (wbm_d_dbg_ack_i),$ B7 \2 x& @2 L6 T S
.wb_err_i (wbm_d_dbg_err_i),0 L+ H) \" y; z% {
.wb_adr_o (wbm_d_dbg_adr_o),+ U% n D- B/ I' I3 t8 z/ z! }* R
.wb_dat_o (wbm_d_dbg_dat_o),
6 |) C ^7 t" x# ~! i .wb_cyc_o (wbm_d_dbg_cyc_o),
) E% h' Q9 @7 x: ]5 x5 l6 I: a$ s# B .wb_stb_o (wbm_d_dbg_stb_o),: A o. }* B9 I8 J, p2 G/ q/ k% e
.wb_sel_o (wbm_d_dbg_sel_o),
% D+ y0 e3 ?4 h, X& N4 R* _$ n+ y .wb_we_o (wbm_d_dbg_we_o ),4 k4 W7 P- V/ A: w8 ?, A
.wb_cti_o (wbm_d_dbg_cti_o),
- m+ M1 f8 J4 U/ I% f" o1 v; I$ A .wb_cab_o (),
+ ^9 \3 d4 j3 D- Y/ n .wb_bte_o (wbm_d_dbg_bte_o)
; k) o$ D; h: ]( k );*/$ k! _+ X1 ~# O# z) m+ ], b. M
( I. d3 r, g) E: Z
g; b' e, [$ [
`else // !`ifdef JTAG_DEBUG
9 E( K- K1 v* _) b- ]; ^ c5 d+ U" i5 O# W6 {
! C a- ]* @! y2 o5> 修改ucf文件
5 ~3 S3 K9 b) \! Q2 y1 I/ s4 b& `" J- A! f0 }
由于我们采用的是xilinx_internal_jtag,不需要外部单独的jtag引脚,所以需要将ml501.ucf文件中jtag的4个引脚分配注释掉。
, `; P6 z/ u G
1 U, t) T" d8 W. A* Y注意,最后一行不要注掉。( {4 d# B) C& y2 I' g. E. \8 V# d( z
( r' `- C& k$ ~# t#NET tdo_pad_o LOC = E26; # HDR2_6) M, |* Q ?' a; o: o5 z
#NET tdi_pad_i LOC = E25; # HDR2_89 z( L4 \4 [/ W9 Q: i8 Z
#NET tms_pad_i LOC = G22; # HDR2_102 H" J% c9 ]% Y# o
#NET tck_pad_i LOC = G21; # HDR2_123 T4 S, ^3 b' h2 u$ e4 A# V
7 N B1 {" O( N0 H& a+ x5 p#NET tdo_pad_o TIG; NET tdo_pad_o PULLUP; NET tdo_pad_o IOSTANDARD = LVCMOS25;& S: b# Z5 Z7 W4 [8 ~7 s/ x
#NET tdi_pad_i TIG; NET tdi_pad_i PULLUP; NET tdi_pad_i IOSTANDARD = LVCMOS25;
6 [$ n% {# \. Y- F8 Q9 Z#NET tms_pad_i TIG; NET tms_pad_i PULLUP; NET tms_pad_i IOSTANDARD = LVCMOS25;1 g) q |4 { {
#NET tck_pad_i TIG; NET tck_pad_i PULLUP; NET tck_pad_i IOSTANDARD = LVCMOS25;
) q" U/ p' h% h9 P" |# Overide the following mapping error:
6 K- N; u+ M3 l+ ?2 y4 e4 @# ERROR:Place:645 - A clock IOB clock component is not placed at an optimal clock3 R+ X. J l9 W. {
# IOB site.
% T6 X+ S: O n3 V' }NET "tck_pad_i" CLOCK_DEDICATED_ROUTE = FALSE;
& c& G: s# }& R3 p' q
6 c& ?" K8 B) `% s {: a( {: n/ L1 o! I( ?3 F
6> FPGA配置文件(orpsoc_top.bit)的下载
& S3 K, f+ @% U7 I* F& D6 \' s, q5 I: y( o
进行以上修改之后,在windows下综合生成bit文件。
X$ \# p; N/ p% ~ ]' V
; O- r+ h; A; i4 X" D需要注意的是,我们要用JTAG下载,所以在生成bit文件时的配置(startup clk)需要选择‘JTAG CLK’。
6 P6 B8 P0 K O: B" v I" S( r' D, G$ a2 M4 E/ I2 A
6 v. X$ b3 T3 V, v! M y7> 软件的下载与调试
+ v$ M% ?2 N) [+ w. _
. @4 ~9 r+ g& n在windows下用iMPACT将orpsoc_top.bit烧到FPGA(xc5vlx50)里面。
8 Q* h2 }8 s/ K0 _5 x7 C
+ B/ o9 Q. s& w+ }在jtag chaininit的时候,从打印信息中,我们可以发现,需要的4个bsd文件:xc5vlx50.bsd,xc95144xl.bsd,xccace.bsd,xcf32p.bsd。! p/ F' I) a; S) t8 P4 {$ E
7 p: H6 ~. W; w- Z这些文件可以在ISE的安装目录中找到。
; J$ T L* Q- F+ i) A3 Y- q
3 ~/ `9 @; D X2 R4 a+ D- \' m* g, ~; | S
8>ML501的调试
: i5 ~3 y1 C. H7 T8 w! w4 A% V+ c; F4 w6 f& @5 [3 K, e" e! a
, d& L# u& w, h- B6 Q% G
万事俱备,只欠东风。做完以上工作之后,我们就可以对ML501上的ORPSoC进行调试运行软件了。
/ B7 t1 Z& z1 Z; s1 t# e4 @/ G0 \0 I0 _5 R0 O# s6 [
首先,在vbox的分配USB设备中选中下载线对应的名称,我这里是“Xilinx”。可以通过lsusb命令来查看。
' M9 g5 |9 t& x1 a2 R4 _$ K/ u) ?! q N2 l2 @
然后,将xc5vlx50.bsd,xc95144xl.bsd,xccace.bsd,xcf32p.bsd复制到linux下的某个目录(eg.~/ml501_bsd)。
" O) O0 }' w L( h! H
6 L8 A6 p. F# t- A [ ^& w然后,运行adv_jtag_bridge 检测下载器,建立RSP server(默认RSP端口号是9999)。+ m; x1 Q# z: w5 ]4 x7 I
+ R5 B, f, }6 }adv_jtag_bridge -b ~/ml501_bsd/ xpc_usb
/ N1 f5 t8 f) r
- a6 p( I2 k1 V0 e具体使用方法,请参考adv_jtag_bridge的手册。
, u- c+ D8 u$ S* d! e& ]
. S3 p o* B; B3 \& k% X% m运行之后,如下图所示:" v& i6 R% M3 u
# h: }( g) q' ]2 Y E
& Q! e; |$ C0 c, B0 ]7 e( ]# V
0 d0 D0 ~/ s7 ~) L! f
通过在xpc_usb之前加入‘-b’参数可进行自检:0 {4 A9 i# b: J
! a4 f O% d) W8 k; T& C
4 }5 Q% d5 t7 @5 u8 J0 B
! e( w7 ~& o8 R$ Z
然后,运行or32-elf-gdb,建立和adv_jtag_bridge的RSP的链接。
G8 R, w, o* w |( u
: h y# ], i: C* h3 por32-elf-gdb
S. n; N* E) itarget remote:99995 C' H* |( w+ v1 M- y& H
file ~/soc-design/linux/vm;inux 或者file ~/soc-design/orpmon/orpmon.32; O, {7 q- T8 p0 m: V! [
load
|6 M( e0 C" ]& _3 w% i
4 o1 b$ B- v$ [! G3 X如下图所示:
2 y3 G( V/ t; {/ }5 ~1 _0 o. T5 Y, M# [' p( c. T
load linux:
# s: y; ~) v. ^* n$ S; k, k! Q" m' t* z! K" w
1 m2 r% s6 f/ a! V
: p( G. [2 m0 T" P% x' O. Q1 `
load orpmon:; C6 G, L6 N/ Z, I- u# P
2 a; t( v7 h% y& Z5 Z4 t
" q8 W8 j3 X/ o7 B3 C$ t- t; l; a% {' C9 Q. r
5 H3 o6 w0 n8 A! G! \9 ~这里需要注意的是,orpmon在编译之前,需要修改配置文件(~/soc-design/orpmon/include/board.h),使之针对ML501板子:, H" n; I; W4 w/ L: ?+ t! |
7 L# t6 U! w8 J/ G
* A9 f- G: x. }8 m. ]7 o* T6 N# ~: `; i/ V% p& i
8 V N' F {+ L5 [# {: p# k7 _6 |此外还要修改时钟,使之和板子的时钟一致:板子的时钟在~/soc-design/orpsocv2/boards/xilinx/ml501/sw/board/include/board.h中有定义。
3 O- j) }! p: A% Z% O% x: C' ~+ i
& s( i4 E# T" c9 i% S a; |9 ^! O3 ] `8 N& j
修改完后,make即可生成ELF文件(orpmon.or32)和bin文件(orpmon.or32.bin)。
a- g2 ^( a: P, I6 n% h n. L
& x) I3 g1 v& k) K" UELF文件用来直接load到RAM执行,bin文件用bin2sizewordbin工具生成orpmon.or32.szbin和FPGA综合之后的orpsoc_top.bit合成mcs文件,烧到FPGA板子上的SPI FLASH里面。
3 P4 ?; K6 T$ k1 t9 v+ W( `( Q" p8 Y
W1 u( X+ r, m
在下载程序之后,将板子的串口通过串口转USB线连接到PC机,打开串口调试工具,或者超级终端。6 r: @" ?- f+ }1 H! h3 }
# A, `( S1 [3 r3 M9 L0 l2 j运行程序,即可看到输出,如下图所示:
) {7 X x6 k4 U, P% e* [
4 H+ ~7 p1 }, k5 l( a
0 X9 ]. u3 U( t3 ?
+ Z F0 l9 f( {" @9 v) ^
) d7 D3 v$ P0 z7 U6 w) f
4 v. x% G* a b2 v- b! k8 L
9 \& Z: W% g D7 b" p7 U4,小结$ E: H! `$ S* i$ X+ D3 Q0 K; V3 ?
3 s* y$ t' d9 S
自此,我们搭建了orpsoc的仿真环境,调试环境。通过仿真环境,我们可以观察仿真波形,通过调试环境,我们可以用FPGA开发板进行实际验证。
: [) C5 J- K4 S0 h; X& K% G, z$ c+ I% h4 F# n l7 R' v% Z
Enjoy!: V' Y4 [/ T5 N! |! y* {. o( @6 d
|
|