|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
现代科技对系统的可靠性提出了更高的要求,而FPGA技术在电子系统中应用已经非常广泛,因此FPGA易测试性就变得很重要。要获得的FPGA内部信号十分有限、FPGA封装和印刷电路板(PCB)电气噪声,这一切使得设计调试和检验变成设计中最困难的一个流程。另一方面,当前几乎所有的像CPU、DSP、ASIC等高速芯片的总线,除了提供高速并行总线接口外,正迅速向高速串行接口的方向发展,FPGA也不例外。每一条物理链路的速度从600 Mbps到10 Gbps,高速I/O的测试和验证更成为传统专注于FPGA内部逻辑设计的设计人员所面临的巨大挑战。这些挑战使设计人员非常容易地将绝大部分设计时间放在调试和检验设计上。3 c+ M' L9 X2 z6 A G1 K
! [- n" b* F h本文就调试FPGA系统时遇到的问题及有助于提高调试效率的方法,针对Altera和Xilinx的FPGA调试提供了最新的方法和工具。
! D2 ^9 x* T) Q % R- n6 z+ k& K5 C7 z$ I" j5 H8 @
1 FPGA一般设计流程
3 ^/ x; P2 n( ], I9 j
, B& Q1 f) [( t( O* d8 y在FPGA系统设计完成前,有2个不同的阶段:设计阶段、调试和检验阶段,如图1所示。设计阶段的主要任务是输入、仿真和实现;调试和检验阶段的主要任务是检验设计,校正发现的错误。
. z, [4 Q% x5 m: J4 H* q+ h: o7 S0 \4 a4 a* Z
/ D% M- ?; \7 w* M' f
1.1 设计阶段
% K: ^2 _. Y; Z; o5 H" ]8 N8 t
7 `4 c7 F* l9 R- S在这一阶段不仅要设计,而且要使用仿真工具开始调试。实践证明,正确使用仿真为找到和校正设计错误提供了一条有效的途径。但是,不应依赖仿真作为调试FPGA设计的唯一工具。
+ w+ z$ o5 R0 @% T \5 c7 C " M1 d$ g0 A$ z( C
在设计阶段,还需要提前考虑调试和检验阶段,规划怎样在线快速调试FPGA,这可以定义整体调试方法,帮助识别要求的任何测试测量工具,确定选择的调试方法对电路板设计带来的影响。针对可能选用的FPGA存在的高速总线,除了考虑逻辑时序的测试和验证外,还应该充分考虑后面可能面临的信号完整性测试和分析难题。' @. L- r0 D5 r( K8 F4 _; k
! W; B2 v# @& h: W \8 m$ z& X
1.2 调试和检验阶段9 l- h: S _# n1 T* _/ O$ o
% d* v' L5 L$ S
在调试阶段,必须找到仿真没有找到的棘手问题。怎样以省时省力的方式完成这一工作是一个挑战。本文将研究如何选择正确的FPGA调试方法及如何有效地利用新方法的处理能力,这些新方法可以只使用少量的FPGA针脚查看许多内部FPGA信号。如果使用得当,可以突破最棘手的FPGA调试问题。+ U" ^+ ?5 m& @3 t; w2 t
4 B1 ^7 a% I% k* Y* ]' U1 e$ u
1.3 FPGA调试方法; \8 B: T7 g0 ~+ X7 O
2 X1 N' x; P) k. X
在设计阶段需要作出的关键选择是使用哪种FPGA调试方法。在理想情况下,设计者希望有一种方法,这种方法可以移植到所有FPGA设计中,能够洞察FPGA内部运行和系统运行过程,为确定和分析棘手的问题提供相应的处理能力。
% S( f2 Q* f6 J! v( v D) Z4 W U; o9 q9 y/ R2 _5 I. N2 v i
基本在线FPGA调试方法有2种:使用嵌入式逻辑分析仪以及使用外部逻辑分析仪。选择使用何种方法取决于项目的调试需求。! m V) Y2 T% l8 T0 D7 `& X( q- q, U
. J, s( ^0 P: p5 X0 ~. \6 j) }- `2 嵌入式逻辑分析仪内核
3 J& J+ D. ?* d" H2 d3 X' p 7 B! K! ^, s- h7 z q/ W
主要的FPGA厂商针对器件的在线调试都提供了嵌入式逻辑分析仪内核,这些知识产权模块插入FPGA设计中,同时提供触发功能和存储功能。它们使用FPGA逻辑资源实现触发电路;使用FPGA存储模块实现存储功能;使用JTAG配置内核操作,并用它将捕获的数据传送到PC上进行查看。) t9 a. p9 s' H8 C0 _6 r
0 t2 ]! x% o1 y% d( [由于嵌入式逻辑分析仪使用内部FPGA资源,因此其通常用于大型FPGA,这些大型FPGA可以更好地消化插入内核带来的开销。一般来说,用户希望内核占用的FPGA逻辑资源不超过可用资源的5%。9 C) ?! q. `2 V4 j* y8 w; B) z- Q
: Q8 y3 A) a% e+ t* V) |& N$ o与其他调试方法一样,还要知道这种方法存在的部分矛盾。3 m* e( D1 \' i
. G. w, s. J: `. j2 j
2.1 针脚与内部资源( T! }9 W1 c: C: v& g
1 l/ N) f/ ~2 @: o1 ^4 P
嵌入逻辑分析仪内核不使用额外的测试针脚,因为它通过现有的JTAG针脚访问内核。这意味着即使设计受到FPGA针脚限制,仍可以使用这种方法。矛盾在于,它使用的内部FPGA逻辑资源和存储模块可以用来实现设计。此外,由于使用片内内存存储捕获的数据,因此内存深度一般相对较浅。
% e7 Z; j4 G! b+ ]
' ^. _. X) M1 f- q0 N. y9 ~0 ^% X2.2 探测与运行模式: J- B$ Q, b1 } p3 `% c
5 |8 M( v% q( d/ [0 K9 z
嵌入式逻辑分析仪核心的探测非常简单,它使用现有的JTAG针脚。矛盾在于,尽管嵌入式逻辑分析仪可以查看FPGA操作,但没有一种方式将这些信息与电路板级或系统级信息时间关联起来。而将FPGA内部的信号与FPGA外部的信号关联起来对解决棘手的调试问题至关重要。在分析方法上,嵌入式逻辑分析仪只能进行状态分析。
( S/ R9 H( c/ n6 U
" P+ j' P9 h z2 V1 O1 R% Y5 e0 E2.3 成本与灵活性" I) ^# [6 {5 T4 Y$ d
9 \3 f% W. b2 @大多数FPGA厂商提供了嵌入式逻辑分析仪内核,而其价格要低于全功能外部逻辑分析仪。虽然用户希望更多的功能,但嵌入式逻辑分析仪内核的功能无论从通用性、分析方式、触发能力,还是从存储和分析能力都弱于全功能外部逻辑分析仪,而用户通常需要这些功能来捕获和分析棘手的调试问题。例如,嵌入式逻辑分析仪只能在状态模式下操作,它们捕获与FPGA设计中已有的指定时钟同步的数据,因此不能提供精确的信号定时关系。: ?. U) y0 N3 [0 U$ F
8 t2 Y/ J0 } A3 外部逻辑分析仪
2 d3 c* _7 l6 Y7 l8 `9 I; t ; Y' ^" |0 V, j' @+ a
由于嵌入式逻辑分析仪方法存在部分限制,FPGA设计人员采用外部逻辑分析仪方法,来利用FPGA的灵活性和外部逻辑分析仪的处理能力,如泰克TLA系列逻辑分析仪。; ^+ k: F6 I+ l" N+ J! J
+ X- w+ h* G; v! W( l {; @在这种方法中,有用的内部信号路由到FPGA没有使用的针脚上,然后连接到逻辑分析仪上。这种方法提供了非常深的内存,适合调试出现故障和实际导致该故障的原因在时间上相距很远的问题;对于需要采集大量数据进行后期分析的设计人员也非常必要。另外,它还可以把内部FPGA信号与电路系统中的其他活动时间关联起来。9 R. P/ w6 p* G- H8 g4 X b; ]
3 p0 c6 J' m0 K* _, m9 N- |3 O
与嵌入式逻辑分析仪方法一样,也需要考虑许多矛盾。
4 K% Z$ N% h. @; R. f
3 k6 h; r$ B# A; ~& B9 V* O+ Z3.1 针脚与内部资源: x# t1 Q; I7 F8 {
5 ?, t& @; t3 ? Q2 F" u( a外部逻辑分析仪方法采用非常少的逻辑资源,不使用FPGA内存资源。它释放了这些资源,来实现所需功能。其矛盾在于,必须增加专用于调试的针脚数量,而设计时需要使用这些针脚。
( b; J3 @* y( n# R- V4 { ^
2 q9 f4 B8 j3 A& Z( _! D5 l& G3.2 探测与工作模式
( ~. ~4 F% {9 o( E& u 8 t1 _" O- m6 h8 V( W8 U# s. K
外部逻辑分析仪探测要比嵌入式逻辑分析仪方法要求的探测复杂一些。必须确定怎样使用逻辑分析仪探头探测FPGA内部信号,而不能使用电路板上已有的JTAG连接器。最简便的方式是在电路板中增加一个测试连接器,这可以简便地把FPGA信号与系统中的其他信号关联起来。3 b# i# Q4 f5 \/ `! O9 A3 ?9 T
0 {9 \3 w0 g0 s% A( t3.3 成本与灵活性1 ?$ I9 x2 J5 ` W5 e6 s
( E: V+ v7 @4 H* l P
尽管外部逻辑分析仪的购买价格确实要高于嵌入式逻辑分析仪,但使用外部逻辑分析仪可以解决更加广泛的问题。逻辑分析仪不仅可以用于FP3 J; L4 b# T/ S9 K) z+ K
. }, g+ }' p- u' RGA调试,还可以用来解决其他数字设计挑战,它被公认为是进行通用数字系统硬件调试的最佳工具。外部逻辑分析仪能够实现更加灵活的采集模式和触发功能。通过外部逻辑分析仪,可以设置最多16个不同的触发状态(每一个状态含有16个条件判断分支),每一个通道提供256 MB的内存,并且可以在定时分析模式下以高达125 ps的分辨率(8 GS/s采样) 捕获数据。
6 r$ v+ @0 g8 W
" r0 V3 F, X* M6 q4 FPGAView进行FPGA调试
/ ?1 f( j5 E3 o) Q' t- F
/ C/ [7 o( P. H6 `: ?3 Z外部逻辑分析仪方法有效地利用了FPGA的处理能力,并根据需要重新对设备配置,将有用的内部信号路由到通常很少的针脚上。这是一种非常有用的方法,但它也有一定的局限性:用户每次需要查看一套不同的内部信号时,都必须改变设计(在RTL级或使用FPGA编辑器工具),把希望的信号组路由到调试针脚上。这不仅耗时,而且如果要求重新汇编设计,还会改变设计的定时,可能会隐藏需要解决的问题。当更改FPGA内部测试信号时,在外部逻辑分析仪上的被测信号名称需要手工进行更新。一般说来,调试针脚数量很少,内部信号与调试针脚之间1:1的关系限制着设计查看能力和洞察力。为克服这些局限性,出现了一种新的FPGA调试方法,它不仅提供了外部逻辑分析仪方法的所有优势,还消除了主要局限性。FPGAView软件在与泰克TLA系列逻辑分析仪配套使用时,为调试FPGA和周边硬件电路提供了一个完整的解决方案,如图2所示。$ x3 B( ?/ m/ G' o* w" ~
A+ C. I _6 @
: V$ @ | c4 [; q( [
这种组合可以时间关联的查看FPGA的内部活动和外部活动;迅速改变FPGA内部探点,而无须重新汇编设计;每个针脚监测多个内部信号;在TLA逻辑分析仪上自动更新切换的内部信号名称。此外,FPGAView可以在一台设备中处理多个测试内核(适合监测不同的时钟域),并可以在一个JTAG链上处理多台FPGA设备。/ N2 q- ?. B. u ^* N/ B) p
; [2 o: g+ Z% q8 X% D& r: ]7 m4 n5 快速使用FPGAView
! K. _' t" M0 T% Y
: [7 s0 v4 J( k" g4 `7 X |使用FPGAView的步骤如下所述:, V) L$ w9 T: j' R
7 k( \% d! d/ N' G( n% W(1) 插入内核 X3 s. d h0 b2 i8 J
3 l% f$ ^. X1 H7 s! p! B
这步是配置测试内核,把它插入到FPGA设计中。例如,在使用ALTERA或Xilinx器件时,可以使用FPGA开发工具提供的逻辑分析仪接口编辑器,创建最适合自己需求的测试核。
/ P: E$ p1 b6 l& P: B. s% \
. V+ {, U8 s. ^6 T+ ~, J! a4 a, |5 e对大多数的测试内核,可以指定下述参数:* c3 t7 ]. g: T/ d
7 h4 D' _3 V1 z- X8 M' w
①针脚数量(pin count):表示希望专用于逻辑分析仪接口的针脚数量;
, P2 c# [4 S# \
; I5 w* T4 ]' P' C" y②组数(bank count):表示希望映射到每个针脚上的内部信号数量;
7 f* Y4 G9 M3 J" Y b( k
+ @) L1 m$ L8 G' J③输出/捕获模式(output/capture mode):选择希望执行的采集类型;可以选择组合逻辑/定时模式(combina-TIon/TIming)或寄存器/状态模式(registered/state);
4 \! r" D( O0 l5 j9 Z8 H 8 z, H! K, x6 Q; d
④时钟(clock):如果用户选择了registered/state的捕获模式,这一选项允许选择测试内核的取样时钟;
, S( p7 ~! e" O2 o % Z p' f+ o& W( k. K; s7 J
⑤通电状态(power-up state):这个参数允许指明用于逻辑分析仪接口的针脚的通电状态。
9 ^. O' S3 X/ X" S4 q & ?! \( _% }6 v7 s
(2) 把测试内核信息加载到FPGAView中
9 o* j9 O5 c6 A& x) J8 g ' t& s: W; v2 @6 d! l: p" n
从FPGAView软件窗口中,可以与JTAG编程电缆建立连接,并且连接到TLA系列逻辑分析仪(TLA逻辑分析仪使用Windows平台)或PC工作站上。
/ Y8 \6 \. c* r
% @! {1 L( M2 t0 v. B8 w0 u1 d在使用ALTERA FPGA芯片时,按打开(Open)工具条按钮,调出一个文件浏览器,选择QuartusⅡLAI Editor软件以前生成的逻辑分析仪接口(.lai)文件。这样就加载了与LAI核心有关的所有信息,包括每一组的信号数量、组数和信号名称,另外如果设备中的LAI内核多于一个,那么还包括每个LAI内核的信息。
% G U* Z7 r$ s6 Z2 H% T* c, g+ O) }9 A- O5 E7 v X
(3) 把FPGA针脚映射到逻辑分析仪上
" E" M O$ D0 J0 s4 J. _ $ N& G- `0 H2 p5 e1 H3 T
映射FPGA针脚和TLA逻辑分析仪探头之间的物理连接。FPGAView可以自动更新逻辑分析仪上显示的信号名称,与测试内核当前监测的信号相匹配。为此,简单地点击探头(probes)按钮,将出现一个拖放窗口,把测试内核输出信号名称与逻辑分析仪上的相应通道连接起来。对某条目标连接,这个通道分配过程只需一次。
! p6 P2 x! ^$ v$ q
7 l2 ~! F4 w7 A9 z) u7 _6 H; \(4) 进行测量
4 V) G2 B! j' f5 m9 J8 z% |+ [% I
( m v( t0 i: J, i. w n使用组(bank)列表下拉菜单,选择想要测量的组。一旦选择了组,FPGAView会通过JTAG接口与FPGA通信,并配置测试内核,以便选择希望的组。
! \5 |! |9 w# D% Z- p/ G
B0 I. N: A3 X% d. j$ V) x0 W9 {& [% vFPGAView还将这些通道名称通过对TLA系列逻辑分析仪的控制进行自动分配,从而可以简便地理解测量结果。为测量不同的一套内部信号,用户只需选择不同的信号组。全功能TLA系列逻辑分析仪会自动地把这些FPGA信号与系统中的其他信号关联起来。
7 z* Z& k; b g+ p+ K1 z+ P. W. T
, k$ p: z$ ]! g1 N: T V% l- e$ X在TLA逻辑分析仪中,针对设计人员关心的各种时间信息,提供了业内独有的定时参数自动测量功能,通过鼠标简单地拖放操作,能够得到周期、频率、占空比、脉冲宽度、通道/通道延迟、边沿计数、周期计数、违规计数、周期抖动、以及周期间抖动等信息。9 u6 U5 R6 R+ d2 l. O3 _. [
) h& [; v* u/ I5 E& O$ H6 结论
3 H) e* v$ W. X9 M3 w) Y% o - G* \7 N$ G/ Y
调试针对Altera和Xilinx的FPGA系统时用嵌入式逻辑分析仪和外部逻辑分析仪这2种方法各有其优势和不足,而FPGAView等新方法进一步提高了外部逻辑分析仪方法的吸引力。能够快速方便地移动探点,而不需重新汇编设计,同时能够把内部FPGA信号活动与电路板级信号关联起来,能够较好地满足产品开发周期的要求。
4 Y _* N8 d/ ?) N. O |
|