微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > modelsim不全认可verilog语法的事吗

modelsim不全认可verilog语法的事吗

时间:10-02 整理:3721RD 点击:
这是一个booth乘法器!
程序如下:
`timescale 1ns/1ns
module ceshi1(a,b,c);
input[3:0] a;
input[3:0] b;
output [7:0] c;
reg[8:0] q;
reg[7:0] c;
integer i;
always @ (a,b)
begin
q={4'b0000,b,1'b0};
for(i=4;i>=0;i=i-1)
if(i==0)c=q[8:1];
else
begin
case(q[1:0])
2'b01:q[8:5]<=q[8:5]+a[3:0];
2'b10:q[8:5]<=q[8:5]-a[3:0];
default: q<=q;
endcase
#2q<={q[8],q[8:1]};
#2 $display("q=%b,i=%d,c=%b",q,i,c); //************若不要此句,结果错误!
end
end
endmodule
这个$display在里面只起到显示结果的作用吧,可有可无,但是为什么么没有就不行呢!
而且在我用红色标出的begin —end里面。语句应该是顺序执行的,但是没有延迟就不是顺序执行!
我是在modelsi中运行的!
敬请高手赐教!

调试这个程序化了我整整一天的时间,现在虽然好了,但是不能在ise中综合!
而且对于其中的疑惑人未能揭开,摆脱各位!

新手吧
估计老兄是新手吧。建议看看什么是可综合设计、什么是时序逻辑、组合逻辑。booth算法理解起来还是有点难度的,老兄还是先把简单的东西搞清楚了后再来搞这个booth乘法器。

好像q被赋值了两次,但在逻辑综合时,只有最后的赋值才执行,因此case语句不起作用。逻辑模拟不一样。

小弟的确是新手!
看了些关于科综合的条件以及阻塞于非阻塞的区别,把程序中所有的《=改为=后,问题顺利解决!多谢各位!
不过理解还不是很透!
只能继续努力,希望得到各位的指教!

modelsim只有查不出来的语法错误,还有不认识的正确语法么?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top