在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4810|回复: 18

[求助] verilog宏功能模块在modelsim仿真错误

[复制链接]
发表于 2016-1-12 16:28:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我用verilog的宏功能模块弄了一个12X12有符号的乘法器子模块,然后将生成的代码直接和自己的滤波器代码放在一起仿真,子模块在程序中被实例化调用,但modelsim仿真时出错,找不到原因,求教
QQ截图20160112162905.jpg
QQ截图20160112162913.jpg
发表于 2016-1-12 17:18:32 | 显示全部楼层
代码还可以这样写么?
一个文件里这样写不出错么?
endmodule
module
 楼主| 发表于 2016-1-12 17:23:54 | 显示全部楼层
回复 2# z894811350


    额 , 没问题把,主模块和子模块关系没事吧,我verilog编译通过了
发表于 2016-1-12 17:28:15 | 显示全部楼层
不是说的很明白嘛,lpm_mult这个module没有定义。看看filelist是否忘记添加这个模块之类的小错误
发表于 2016-1-12 17:28:48 | 显示全部楼层
QuartusII 是支持一个文件中多个module。不知道modelsim支不支持。

首先当然不是拆分文件,首先看看你的调用。top放到后面去试试
 楼主| 发表于 2016-1-12 19:40:41 | 显示全部楼层
回复 4# whz7783478


   module mult12X12 (clock,dataa,datab,result);



input
  clock;


input
[11:0]  dataa;


input
[11:0]  datab;


output
[23:0]  result;



wire [23:0] sub_wire0;


wire [23:0] result = sub_wire0[23:0];



lpm_mult
lpm_mult_component (





.clock (clock),





.dataa (dataa),





.datab (datab),





.result (sub_wire0),





.aclr (1'b0),





.clken (1'b1),





.sum (1'b0));


defparam



lpm_mult_component.lpm_hint = "MAXIMIZE_SPEED=5",



lpm_mult_component.lpm_pipeline = 1,



lpm_mult_component.lpm_representation = "SIGNED",



lpm_mult_component.lpm_type = "LPM_MULT",



lpm_mult_component.lpm_widtha = 12,



lpm_mult_component.lpm_widthb = 12,



lpm_mult_component.lpm_widthp = 24;



endmodule


这个就是我那个verilog产生的宏功能模块,这种代码不像verilog,我都看不懂。。。lpm_mult这个也是模块吗,能详细说一下怎么搞吗,还有你说得那个表在哪

 楼主| 发表于 2016-1-12 19:42:58 | 显示全部楼层
回复 4# whz7783478


module mult12X12 (clock,dataa,datab,result);



input
  clock;


input
[11:0]  dataa;


input
[11:0]  datab;


output
[23:0]  result;



wire [23:0] sub_wire0;


wire [23:0] result = sub_wire0[23:0];



lpm_mult
lpm_mult_component (





.clock (clock),





.dataa (dataa),





.datab (datab),





.result (sub_wire0),





.aclr (1'b0),





.clken (1'b1),





.sum (1'b0));


defparam



lpm_mult_component.lpm_hint = "MAXIMIZE_SPEED=5",



lpm_mult_component.lpm_pipeline = 1,



lpm_mult_component.lpm_representation = "SIGNED",



lpm_mult_component.lpm_type = "LPM_MULT",



lpm_mult_component.lpm_widtha = 12,



lpm_mult_component.lpm_widthb = 12,



lpm_mult_component.lpm_widthp = 24;



endmodule


这个就是我用verilog产生的宏功能模块,这个我看不懂,都不像verilog,lpm_mult这个也是模块吗,能具体说一下一个怎么做吗

 楼主| 发表于 2016-1-12 19:46:00 | 显示全部楼层
回复 5# 清霜一梦


   你意思是不是说不要子模块,把它合并到主模块里面
发表于 2016-1-12 20:19:46 | 显示全部楼层
回复 7# cfpdl
lpm_mult 这个module的.v文件是否在工程中?
发表于 2016-1-13 09:45:47 | 显示全部楼层
回复 8# cfpdl

不是,是modelsim比QuartusII 要傻一点。你引用的模块要先声明,要在前面,后面才是你的top。

类似于C语言中,子函数在前面写,主函数man在最后面。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-27 17:50 , Processed in 0.033707 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表