Quartus II对于已经编译过的工程进行仿真。在结束modelsimSE仿真时,若代码未改变,你又重新进行仿真时,软件会对整个工程再次编译一次。wenfan提醒了下,我才知道是软件上可以设置未改动下,工程就不会再次编译了。方法是Assignments-->Settings...-->Compilation Process Settings-->将Use smart compilation勾上。
来源:http://www.cnblogs.com/oomusou/archive/2009/02/17/modelsim_megafunction.html 真无双老师关于DCFIFO的仿真,非常好。
来源:http://wenku.baidu.com/view/aad33e202f60ddccda38a080.html FIFO核调用实例,GOOD!
来源:http://wenku.baidu.com/view/09c9cb86d4d8d15abe234ed4.html 处理空满情况
http://wenku.baidu.com/view/fcce8974f46527d3240ce021.htmlFIFO作用说明
首先FIFO的原理你要弄清,一般设计中会直接调用IP core,是不需要你写代码的。
什么是fifo,请参考百度。
1:fifo的重要作用就是不同时钟域的数据缓存,只是一种BUF作用。比如不同速率模块间的传输,用fifo做缓存,这时候fifo的容限,也就是深度还是需要根据两者速率计算到恰到好处。当然跨时域问题还有其他的解决方法:例如双口RAM,信号握手,高时钟采样,同步器等,跨时钟域的问题面试的时候会经常被提到。重点。
2:做位宽匹配,实际上也是一种缓存单元,例如单片机位8位数据输出,而DSP可能是16位数据输入,在单片机与DSP连接时就可以使用FIFO来达到数据匹配的目的,写入1个数据,触发2次读操作,类似。
3:做相位补偿。一般是深度很浅的FIFO,一般是1个clk的容限。例如在很多布线延时比较严格的情况下,数据的传输可能会偏不能较大。FIFO的作用就是缩小这种偏移。
不过最重要的还是第一种,如果是跨时钟域的数据交换,请用FIFO做BUF。以后你会碰到很多!也基本都是这个。
4:控制FIFO的读写控制信号不同,为了匹配两个模块间的传输,而加了FIFO。---------思考中!