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