搜索
bottom↓
回复: 3

quartus 和 modelsim中的注意事项

[复制链接]

出0入0汤圆

发表于 2015-7-14 19:24:05 | 显示全部楼层 |阅读模式
2015年7月2日 by shawge
在《The IEEE Verilog 1364-2001 Standard》标准中,允许只有1bit的wire型变量不需要事先声明直接使用。如下代码在quartus中以verilog 2001编译不会报错,但是在modesim中就会报错。
即在quartus中你可以如下写:
assign wSignal = 1'b1; //不必事先声明
在modelsim中你该改为这样(为了兼容和适应不同版本的EDA工具,同时为了更好的可阅读性,我们建议以下面这种方式书写):

wire wSignal; //当然也可以在这里直接附值
assign wSignal = 1'b1;
在quartus中启用verilog-2001标准的操作步骤:
Assignments->settings->Analysis & Synthesis Settings -> Verilog HDL Input

在modelsim中启用verilog-2001标准的操作步骤:
在modelsim主窗口中:Complie->Verilog & SystemVerilog中的Language Syntax

2. 在modelsim和quartus中,如果你将本模块的的输入端口连接到该模块子模块的输出端口,都不会报错(如下),

module A
(
...
done,
....
)
input done;//此处误将输出信号写成了输入信号
///////
moudelB u_B
(
...
.done(done),
...
);
endmodule
也就是说如果你在代码中误将本模块的输出型端口定义成了输入型,那么当你对这个端口进行附值时,modelsim和quartus都是不会报错的(当然会在调用该模块的顶层模块中产生警告)。
3. 在verilog代码中,你的组合逻辑如果以always段书写,但没有写敏感表,
always data = dataIn;
modelsim仿真时会一直卡在那里,出现“A time value could not be extracted from the current line”,而无论quartus或者modelsim编译的时候都不会对这个产生错误或者警告。
4. 对于用于标记的信号Flag,应该采用时钟打一拍,而不是采用这种直接组合逻辑的写法,
assign doneSdrInit = (init_timer == INIT_PER+202) ? 1'b1 : 1'b0; //tMRD
上面的写法初看没有问题,但是由于信号未与时钟对齐,在某些情况下就会出现仿真和SignalTap捕获到结果不一致的问题,

图中的doneSdrInit在仿真中信号是在clk的上升沿设为高(符合设计初衷),clk只能在下一个时钟采样到该信号为高。
而在SignalTap中我们看到的结果去是这样的,clk可以就在当前时钟捕获到doneInitSdr。

造成这种不一致的是因为在实际综合后doneInitSdr就是一个组合逻辑,其结果与它所依赖的信号时时相关即刻反应,而仿真是以clk为时钟信号去离散模拟的,尽管实际上doneInitSdr早已为高。因而改为下面这种形式。

always @(posedge CLK, negedge RESET_N)
begin
    if(!RESET_N)
        doneSdrInit <= 1'b0;
    else
        begin
        if(init_timer == INIT_PER+202)
            doneSdrInit <= 1'b1;
        end
end
通过系统时钟将doneSdrInit与时钟对齐。
5. 未完待续……

最后打打广告吧,我的个人博客 http://www.hex55.com

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2015-7-15 14:25:11 | 显示全部楼层
群主还是没有解决导入图片的问题啊
不过还好,可以看懂
沙发

出0入0汤圆

发表于 2015-12-16 21:55:10 | 显示全部楼层
你博客中CCD测径,用的是什么型号的ccd?

出0入0汤圆

发表于 2015-12-16 22:52:46 | 显示全部楼层
感觉Xilinx自带的Isim挺好用的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 02:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表