TA的每日心情 | 开心 2019-11-20 15:00 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于verilog的FPGA编程经验总结(XILINX ISE工具) 1 r. j/ ~0 h1 b, p }! x
6 n- w+ ~( V1 S" z1 M+ |) o6 n
1.用ISE仿真的时候.所用变量一定要初始化. ISE默认初始量为"XXXXX", 而Quarters是默认为"00000"的, 其实实际上, 下到FPGA里后也是默认为0的,只是可以说ISE严谨得令人DT吧.# D% ^, g$ [5 i( e8 G- ]
比如说用一个累加器, result = A+B+result ,必须保证在某一刻A, B, result都为定值时, 之后的数据才不会一直为"XXXXX";
+ _3 V9 Z; K9 |* r3 O, b2 L- ]0 O. f: e5 q
, Y, _# f0 M" {2.所有的中间线(就是module间用来传递参数的信号)都要用wire定义一下. 这个ise一般会提醒的;9 X$ x: E0 y5 V0 m0 k# |) v. i
! t/ S: B: F' ^' `; \( x! z
9 |) P7 F* @+ U+ b2 P2 l7 O6 Y3.任何一个warning都是有用的;7 G& \6 ]4 R+ K- T! e. L* ?& m
& g1 B6 O: |( r0 r; ]) h4 q D8 `" o8 A$ s) q5 |6 Y7 o4 p* T: o
4.debug时要多把中间变量设成输出,然后查看仿真波形;
2 S5 w7 L, [! a: k3 J4 A& d# z; s8 S( E
( m `" Y. C! W o( P; w! P5.其实,新版本还是比较好用的.虽然取消了test bench wave 功能. 但是最好学会编测试文件,后期比test bench wave好用, 而且貌似一旦测试信号太多,test bench wave就不显示某些输出了;
; s7 g; p0 N9 e7 R& z$ w3 _6 i5 z3 d3 A* j% g4 X' Z3 C
- l4 b3 u( T, u# H0 ^6. warning: Nod <....> is unconnected. 表明<...>所在的模块没用被执行,一般是参数没进来, 或者进来的参数不对("XXXX"之类)的原因引起的.# o) D8 Y4 y& P3 ^; m
9 J w2 L6 J6 S
; u' N' C1 J4 ~" U
7.建立rom时候,Error: sinrom can't be resolved. 因为在把程序挪地方的时候,sinrom.ngc文件没有一同拷过来.9 s( T) Y- ], Z7 W, a" R
$ ~& J& Y+ Y' B
7 Z# t/ u8 `# p) S; i: u8.把"XXXXX"信号处理掉的一个方法可以是: 从信号中随意选出一位 if (data[0] == 0) ....; else if (data[0] == 1).... else data = 0; 就可以把"XXXX"信号给清成"0000"了. 可以很好的解决1中仿真的问题.
0 ~' |7 _' i. C/ I B' e, I) I+ j" @) \0 G# }2 R+ r2 K* {9 J
, n8 m2 r m! z8 Z, C9.如果某一个不是时钟的信号被当作周期信号来用的话,就会出现 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 不管也行.; L- @# {! q% m: I* K+ K
6 d/ V) \5 G( L. C- S% P. @( Y7 w$ F, ^/ B
10. 一开始用FPGA时不要害怕,用ucf文件配好引脚,直接LOAD,先不用管什么区域约束,以后进阶了再学. . |
* I F7 `6 H* ]+ ~4 B8 `' k* E1 | |
|