| |
从上周到公司实习的第一天就开始写一个数据压缩的算法,在XILINX的FPGA上实现。具体是将24位数据压缩为16位的数据,中间用到log2运算。在这期间遇到了四个问题,在仿真过程中有很多彷徨,以些为记:
1. 第一次使用浮点除法器的IP核,发现无论如何使用的数据都不能得到任何结果,最后猛然发现是因为输入数据的格式不正确,因为浮点除法器的IP核的输入要求是浮点型的,且符合IEEE 754标准,详见百度。
2. 添加信号到modelsim的wave波形图里,发现modelsim自动退出,说明modelsim启动了优化功能,在软件安装路径中找到modelsim.ini,去掉只读属性,将VoptFlow=1改为0,再重启即可。
3. 原先单独仿真arctanh IP核时成功的,但四个IP核连起来仿真就不行了,原以为是modelsim的bug,觉得是别的IP核影响到了该IP的功能,但事实证明这种认识的幼稚。原来的arctanh根本没仿真成功,xilinx的arctanh IP core要求两个输入之比只能在4/5之内,之前仿真arctanh时的输入刚好在这个范围内罢了。
4. 有很多时候编好了testbench,启动modelsim后wave窗口总是不出现,这大多是因为testbench语法不规范,但没有检测出错误之处。遇到这种情况可以查看modelsim\view\transcript。有时候例化模块得端口不一致也会导致初步来wave波形图。
5. 电路有时候会综合出来是正确得,但仿真结果确实错误的,即仿真与综合不匹配,这有时是由竞争条件引起得。