|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Diabloa 于 2018-12-1 09:26 编辑
8 g& u, W9 M7 g; a! p* ]7 ]! X: W; ^5 g7 l% I% s) N, r" s$ f
从零开始调试 & p3 w: O7 N/ R4 c( f2 U
对于新手来说,如何上手调试FPGA是关键的一步。
+ T* k1 x* E1 A- ~" Q. } 对于每一个新设计的FPGA板卡,也需要从零开始调试。5 T @- `" p A7 l; ^
那么如何开始调试?
) n* C# p& q; ?% L8 K" E0 c, O5 |; N
下面介绍一种简易的调试方法。$ C8 E% H" J& b7 w
(1) 至少设定一个输入时钟 input sys_clk;
! i% j9 P! i9 D0 k1 L- ~. K, G (2) 设定输出 output [N-1:0] led;4 U9 U$ N6 c: m) ]/ y N2 \
(3)设定32位计数器 reg [31:0] led_cnt;
" f' q7 [; G' p y, ? (4) 时钟驱动计数器开始工作$ t6 G2 I/ \) N1 [! ~2 u' l8 R8 Q
always@(posedge sys_clk)" e" c2 J1 X* }
led_cnt <= led_cnt + 1
% y. B" l$ D& p" S* \1 } (5)输出led信号。8 B& u; @ G. Z" Z
assign led = led_cnt[M:N];
: M I5 J h. I$ Q+ w 程序完成。 k `7 t7 ]9 ^6 t2 P) e3 }8 C
(6)设定管教约束6 T. I2 A9 v }6 D" G
如果为XILINX FPGA ,在UCF文件中 NET “sys_clk” LOC = 管脚名称# {6 w+ V3 S! z4 ~0 e: h
如果为ALTERA FPGA ,在QSF文件中,添加 set_location_assignment 管脚名称 -to sys_clk" Z) P3 X1 e. E4 M6 E6 V+ Y- ^: Q
其他管脚,可依次类推。
- m# z {3 h- G) R) Z$ m2 P4 j+ e (7)编译,布局、布线,生成配置文件。
! N4 ]5 Q* \, r: A( Z1 J XILINX 生成BIT文件。# B' s& N" L0 Z8 H# u; j$ O6 h
ALTERA 生成SOF文件
% E: k8 q& U2 O4 L& H# F) s1 G y+ z (8)连接JTAG,下载相应的配置文件。
0 k; J) Z/ }5 H8 j2 X3 c (9)观察是否闪灯(肉眼可见)。8 s0 E% W: @3 o! T% E
/ ~# C8 u. J# Y
关于闪灯的解释如下:$ O3 H, c- ?! k/ Y
assign led = led_cnt[M:N]; led_cnt 为32bit的信号,需要几个闪灯,则根据输入时钟的频率和肉眼能够分辨的时间(100ms)。如输出时钟为25Mhz。则闪灯看见的位置能够分批到10hz。需分频2.5M= 32‘h2625A0,因此,则需要输出至少为led_cnt[21]位,才能看到闪灯。
) `5 A2 e. Y! _ J
; @. o( G* }2 Q H 虽然程序简单,但是,通过调试可以确认:
; G# K, ]5 o+ G# F" f (1)首先可确定JTAG下载器的正确连接,能够正常下载下载文件。如不能,常见问题包括* P. @+ {# s8 H
(一)检查是否安装驱动。! o2 E3 p& U6 S! I+ S
(二)下载器是否由红灯变成黄灯/绿灯。如红灯亮一般情况下,JTAG的与电路板VCC没有供电。
! k1 m7 r# {0 m: c( ? (三)检查JTAG连接的线序。
' l; h% n2 u& Z8 n$ v/ K (四)检查JTAG电路,检查原理图上TMS,TDI,TDO的上拉和下拉电阻是否与datasheet中一致。2 T. E1 L" T' p1 u+ n
通过以上四种方式,可排除绝大部分JTAG下载的错误。/ @# j' Z, p v# V i4 h' F8 e
+ o4 \6 z8 Q! k
(2)可以判断晶振是否起振,下载后无灯闪。# `; x/ ?2 O2 M/ f( Q
(一)首先,示波器查看晶振频率,观察晶振的输出,如无输出,查看晶振的电源和地信号,如电源正常,而晶振无反应,则更换晶振。
: n% M0 ]4 d+ _5 o2 W (二)如无示波器,也有替代的方法,通过嵌入式逻辑分析仪抓信号(任意信号)。如逻辑分析仪点击采样后无反应,则无时钟输入。
( u" l0 l+ J1 \# u% S: R 这是因为逻辑分析仪也需要时钟进行逻辑值的存储。: _5 R! i S. c% s( r
(3)如正常下载后闪灯,证明该FPGA板卡硬件设计上能够达到最低限度的FPGA调试状态。
( j/ q7 A+ P8 a' _% _4 \& u) G$ ~. R
最后,说明一下,为什么是闪灯而不是亮灯的程序,这是因为,首先闪灯可以判断外部晶振工作正常,并且由于LED等通常为上拉,也就是说逻辑值0表示灯亮,而也不排除某硬件工程师非要下拉。逻辑1表示亮。因此采用闪灯更加方便。( e- [8 O* X$ r# o/ S2 D9 k1 ~9 g$ s
1 H8 u1 t3 Z @ 问题:为什么LED灯值为什么要上拉?9 Z1 P5 }* e, ^' h: V" x
) o, c9 |& h0 p1 V; H
这是因为:LED上拉后,需要灯亮时电流由外部电源提供,而下拉,灯亮时电流由芯片的CMOS电路驱动。这种在设计中应避免。
; g" C& G1 I" P: M, k, ]8 F9 O7 l' ~9 z" c/ X1 a
^. X2 C1 O: a& v- C
|
|