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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7234|回复: 10

[求助] 例化相同的模块

[复制链接]
发表于 2017-6-22 13:18:32 | 显示全部楼层 |阅读模式

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

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

x
我想例化64个相同的模块,这个怎么办?可以用FOR吗?
发表于 2017-6-22 13:48:10 | 显示全部楼层
好像可以用python写个脚本,不过我也不会,坐等高手
发表于 2017-6-22 13:54:27 | 显示全部楼层
1. 据我所示,没法用循环的。
2. 可以用C、perl等,打印出相应的verilog代码,再贴回去。
发表于 2017-6-22 16:52:21 | 显示全部楼层
回复 2# 2740710202

使用generate(genvar,label)
#转自,http://www.cnblogs.com/fbi888/archive/2013/11/27/3445178.html

generate_loop

generate_loop
发表于 2017-6-22 17:12:57 | 显示全部楼层
本帖最后由 harry_hust 于 2017-6-22 17:37 编辑

可以用for语句产生啊,for就是用来干这些循环的事情。
只是要注意一点的是端口信号不能增量命名,但是可以通过把信号定义成 wire [data_width-1:0] signals [63:0] 这样的形式。
忘了还有一点是模块命名,可以直接用 {string, i} 这种形式进行字符连接。
还是举个例子吧,这个我也没试过,不知道能不能综合。





  1. wire [data_width-1:0] data_in [63:0] ;wire [data_width-1:0] data_out [63:0] ;
  2. for(i=0; i<64, i++) begin
  3.    basemodule {“basemodule_inst”,i}
  4.       (
  5.          .din    (data_in[64*i]),
  6.          .dout  (data_out[64*i]),
  7.       );
  8. end


复制代码
发表于 2017-6-22 17:22:57 | 显示全部楼层
回复 1# 谁枫而飘
   

    parameter SIZE = 5;
    input [SIZE-1 : 0] sig;
    input [SIZE-1 : 0] sig_in;
    output [SIZE-1 : 0] sig_o;
    genvar i
    generate
        for (i=0;i<SIZE;i=i+1)
        begin: TAG
             module_test inst_ (.a(sig),.b(sig_in),.c(sig_o));
        end
    endgenerate
发表于 2017-6-22 17:28:13 | 显示全部楼层
回复 6# sdlyyuxi
漏了变量
module_test inst_ (.a(sig\[i\]),.b(sig_in\[i\]),.c(sig_o\[i\]));
发表于 2017-6-22 19:25:28 | 显示全部楼层
这种循环生成,反而会产生问题
 楼主| 发表于 2017-6-23 08:43:42 | 显示全部楼层
刚刚去实践了下,用generate for可以综合
发表于 2017-6-23 09:50:50 | 显示全部楼层
两种办法,generate 或者实例数组,看情况使用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-7-6 22:26 , Processed in 0.022733 second(s), 8 queries , Gzip On, MemCached On.

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