同一代码不同FPGA器件后仿结果不同是怎么回事?
时间:10-02
整理:3721RD
点击:
用VHDL编写了一个比较大的程序,用QuartusII综合仿真,器件为stratixII 时正确,可是改为CycloneII时仿真结果不对,时钟周期增大了也不行,
用systemverilog 编写的同样功能的程序,做了同样的改动后,仿真结果只是多了几个毛刺。
用modelsim 用Xilinx的Vertex3后仿也正确。
求达人解释一下?谢!
用systemverilog 编写的同样功能的程序,做了同样的改动后,仿真结果只是多了几个毛刺。
用modelsim 用Xilinx的Vertex3后仿也正确。
求达人解释一下?谢!
我用xilinx仿真过,错误的。但是下载到fpga上。正确。软件不可全信
有可能是代码中用了异步设计,延迟会因为器件的不同而改变
路过,过来看看
谢谢解答。
我的设计分为几个模块,还有时钟分频,而且用双边沿触发,
1、时钟分频的实现方法如果是采用行波时钟的方式(异步设计),容易造成时钟偏差,很难控制芯片内部的逻辑基本单元中的触发器的建立/保持时间,同时不同芯片的内部参数也有所不同,同一代码的时序分析结果分析得不同也很正常。
2、如果分频后的时钟作为后级设计的工作时钟,那么整个设计不只使用一个主时钟,而是用多个时钟来实现的话(异步设计),存在信号的跨时钟域转换问题,跨时钟域的信号如果设计不当,会采到亚稳态。
学习学习
在设计过程中最好避免双沿触发;
同时跨时钟域一定要做至少两级同步,之后的信号才可以在当前时钟域使用;
否则极易引发亚稳态,导致后仿出错,而且这类错误还与仿真器相关。
谢谢各位的解答。
另有一问:如何使用ALTERA FPGA 里面的锁相环?
10# hudie2002
在quartus的MegaWizard中生成altpll,在你的设计中例化你生成的core
谢谢解答!
6楼回答正解
出这种事情,原因就是你设计不对。
用formality看看,肯定有很多问题,导致在不同器件综合出来功能不一致。
其实你把VHDL设计叫做程序,就注定了这个设计问题比较大,呵呵。
