TA的每日心情 | 开心 2019-11-20 15:00 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于verilog的FPGA编程经验总结(XILINX ISE工具) : n+ J$ b8 g- K* ]) I
8 P9 q* h& h0 k1 O
1.用ISE仿真的时候.所用变量一定要初始化. ISE默认初始量为"XXXXX", 而Quarters是默认为"00000"的, 其实实际上, 下到FPGA里后也是默认为0的,只是可以说ISE严谨得令人DT吧.# u# o" |/ C: h$ K
比如说用一个累加器, result = A+B+result ,必须保证在某一刻A, B, result都为定值时, 之后的数据才不会一直为"XXXXX";9 ]- K/ d; C, j7 z- n7 y, ~+ O: k$ o
. q6 W: q6 c" |1 H- ]6 }
4 `" T6 D3 F; t- t2.所有的中间线(就是module间用来传递参数的信号)都要用wire定义一下. 这个ise一般会提醒的;
& ^' Z& x7 S9 E$ t$ V4 f+ ~4 v% W' `; H- X/ Y8 }
" ~& B2 @: \9 G& X9 i! M4 p% O7 p3.任何一个warning都是有用的;
6 n3 i, v0 h0 f) a3 z
7 G3 n) ]# j2 ` `1 v' R
z9 Q) W& z5 ^: T; R) n4.debug时要多把中间变量设成输出,然后查看仿真波形;
4 \1 _" i8 p2 Y- {
0 `0 S! h$ m0 o0 X+ t7 ?7 z; w' ~3 d4 ]; W) c' ]0 [* w
5.其实,新版本还是比较好用的.虽然取消了test bench wave 功能. 但是最好学会编测试文件,后期比test bench wave好用, 而且貌似一旦测试信号太多,test bench wave就不显示某些输出了;6 Z L' G9 S# s7 z1 g1 ~% U( O g' X
3 z3 z4 D V. }4 Z, M
) t( Y( l s4 {1 D6. warning: Nod <....> is unconnected. 表明<...>所在的模块没用被执行,一般是参数没进来, 或者进来的参数不对("XXXX"之类)的原因引起的. i; \4 t1 H8 b1 V) H
S5 `# z6 x) N" N# `
) u* w0 L$ S e) x* q& G7 s Z2 L7.建立rom时候,Error: sinrom can't be resolved. 因为在把程序挪地方的时候,sinrom.ngc文件没有一同拷过来.! I: @ w9 G7 Q! y+ f
/ M. L! A' ^7 w, C8 A& Z( p# L7 G- _/ y8 \- T/ U
8.把"XXXXX"信号处理掉的一个方法可以是: 从信号中随意选出一位 if (data[0] == 0) ....; else if (data[0] == 1).... else data = 0; 就可以把"XXXX"信号给清成"0000"了. 可以很好的解决1中仿真的问题.+ y; l9 R2 t2 O
( K. ?0 N) } Z: f0 H5 Z8 U
) f5 I) ^; |( K, x7 A9.如果某一个不是时钟的信号被当作周期信号来用的话,就会出现 WARNING:Route:455 - CLK Net:trn_clk_OBUF may have excessive skew. because 0 CLK pins and 1 NON_CLK pins failed to route using a CLK template 不管也行.! s* n. r6 q+ e$ k# v+ k
' H* t, T; b9 t5 S1 j
" \1 j' V* n# w; X/ }/ b B" P* H10. 一开始用FPGA时不要害怕,用ucf文件配好引脚,直接LOAD,先不用管什么区域约束,以后进阶了再学. . |
! L" `! T0 n& O* ^9 C! W5 ]+ W |
|