whwlxl 发表于 2010-8-5 11:32:50

Verilog中使用 addr = x + y*640; 为什么得到的 addr不正确?

各位大侠:

在 Quartus II 9.1 Verilog 中使用 addr = x + y*640; 为什么得到的 addr不正确?

发现Quartus 调用了lpm_mult 模块,有什么需要注意的地方吗?

chunk 发表于 2010-8-5 11:39:48

你真打算最终获得一个乘法器吗?

whwlxl 发表于 2010-8-5 12:07:51

是的

whwlxl 发表于 2010-8-5 12:10:24

好像发现了问题不是在这,而是在给 x, y赋值时,出错了。

if( r_cmd_xyhl==XYHL_STA )
begin
r_cmd_x = EB_D;
r_cmd_xyhl = XYHL_END;
end
else
begin
r_cmd_x = EB_D;
r_cmd_xyhl = XYHL_STA;
r_xy_calc = CMD_ADDR_CALC;
end

如果改成
r_cmd_x = EB_D;
r_xy_calc = CMD_ADDR_CALC;
就正常了

seemrain 发表于 2010-8-5 12:29:38

常数×变量不需要用乘法器也可以哈。。

p.nicholas 发表于 2010-8-5 13:58:37

assign addr = x + y<<9 + y<<7;

shangdawei 发表于 2012-3-27 09:07:38

p.nicholas 发表于 2010-8-5 13:58 static/image/common/back.gif
assign addr = x + y

乘法变加法{:victory:}
页: [1]
查看完整版本: Verilog中使用 addr = x + y*640; 为什么得到的 addr不正确?