在算fir滤波器输出频率与输入频率是否相等时,从波形上观察,频率跟相位都是相等的。但根据modelsim wave上波形的周期算出来的频率与我testbench所给的频率有很大的差距,被测模块产生的皮率整整比测试模块产生的频率大了1000倍。由于之前做modelsim的仿真很少,排错时也一直没注意,后来查看语法书才怀疑可能是这个上面出了问题。我之前是系统初始的‘timescale 1us/us,这样我产生的系统时钟就是以1us为单位的,整整比预期的频率小了一千倍。后面改为’timescale 1ns/1ns,问题解决,我的系统时钟是50MHz的。
‘timescale指令用于定义时延的单位和时延的精度。具体格式如下:
‘timescale time_unit/time_precision
time_uint和time_precision由1,10,100以及单位s,ms,us,ns,ps和js组成。列如:
’timescale 1ns/100ps
表示时延单位为1ns,时延精度为100ps。在编译过程中,‘timescale指令影响这一编译器指令后面所有模块中的时延值,直至遇到另一个’timescale指令或‘resetall指令。当一个设计中的多个模块带有自身的’timescale编译指令时,模拟器/仿真器总是定位在所有模块的最小时延精度上,并且所有时延都相应的换算为最小时延精度。 |