vivado 编译&仿真 bug 集合(持续更新)

        在CMV8000和ov7725这两个项目的工作过程中,遇到了各种各样的大小问题,有的出现在编译的时候,有的出现在debug的时候,有的出现在仿真的时候,林林总总,大致的总结一下,以后再遇到类似的问题可以少走弯路。我使用的软件环境是vivado 2017.3。

1:使用vivado自带的仿真工具,仿真的时候出现只要一添加子模块里面的信号到波形窗口,波形窗口就卡死,等一会儿才稍微能动,波形缩小看到有高电平,放大后全是低电平,而且testbench模块的输出信号全是0。这让我十分的不解。最后才发现原来是因为在source code 里 if  else 语句 else 后有多条语句时,千万一定要用begin  end 括起来。要不然就会出现上述的问题。修改了以后马上好了。

2:CMV8k 使用spi总线对sensor进行寄存器配置,管脚分配的时候原理图上 spi的输出out 和输入in 管脚,很容易搞反,我在一开始的时候就出现了这个问题,debug核插入后,始终检测不到。there is no debug croe ,采样频率已经很高了,被采样信号的时钟分配也没错,程序烧到板子上后总是检测不debug核,突然想是不是管脚分配不对,试着换了一下果然通了。原理图设计的时候管脚命名每个人的习惯不一样。要注意。

3:vivado 在生成bit流文件的时候要求,不能有闲置的output,要把所有的管脚都分配好,除了专用管脚专用分配外,其余的管脚也要分配到闲置管脚上,否则生成bit流文件时会报错。

4:vivado 仿真时提示:Iteration limit 10000 is reached. Possible zero delay oscillation detected where simulation time can not advance. Please check your source code. Note that the iteration limit can be changed using switch -maxdeltaid. 报错的原因在xilinx官网有网友提问,当然也有网友解答了这个问题,检查FSM设计,事实证明确实没错,在写FSM时,两段式状态机或者三段式状态机,状态的改变在always中属于组合逻辑,要特别注意使用阻塞赋值方式,这也是我没有注意到的点,修改之后马上正常了。

5:vivado 软件在set up debug 以后,正常会在左边窗口直接显示插入的ila核,但是有时候也会出现不能显示的问题,明明已经按照步骤插入了debug核,为什么看不到?我用规范的方法插入了ILA核,在我的笔记本上RTL中没有显示ILA核,把工程copy到另一台电脑上再打开就ok了,所以软件有时会有bug ,只要操作是按照规范来的就行。

6:ILA核的时钟设置要注意,尽量使用晶振产生的时钟经过PLL后分出来,否则有可能出现检测不到debug core的情况。

同时,采样时钟一般设置为被采样时钟的3倍,不推荐设置小数倍数的采样频率,否则采样到的信号会不均匀。

7:CMOS在配置好以后,出现控制通道正常,输出像素数据全都是1的情况,一般有两种可能,第一种可能就是曝光时间过长像素饱和了,第二种情况是寄存器没有配置对,要仔细查看datasheet,某一个寄存器设置不正确都有可能导致意想不到的问题。

8:在线逻辑分析抓的是信号在某一个状态的情况,因此如果要对状态机中的某一个信号进行观察,需要让这个状态机循环起来,否则只能抓到状态机末状态的时候该信号的状态。

9:在使用PLL分频的时候,有时候会出现当出入时钟确定时,分出来的频率出现非整数频率的情况,这是因为每个PLL内部有个分频/倍频系数,这个系数和输入时钟有关,当出现非整数频率的时候可以改变输入频率的大小解决这个问题,即PLL+PLL的形式。

10:

 

 

 

 

你可能感兴趣的:(FPGA)