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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: TUJzzz

[求助] VIVADO ip核复制问题

[复制链接]
 楼主| 发表于 2022-1-7 15:28:37 | 显示全部楼层
本帖最后由 TUJzzz 于 2022-1-7 15:39 编辑


jinj198908 发表于 2021-12-22 09:56
接口信号命名有规律的话,用FOR循环例化


大佬,我百度一些情况,发现博客例子中都是使用generate去控制统一个寄存器的不同位数,例如 将generate生成展开:
.dina(datain[1])
.dina(datain[2])
.dina(datain[3])

我想用generate去完成不同寄存器的控制(寄存器名称有规律),例如
将generate生成展开:
.dina(datain1_1)
.dina(datain1_2)
.dina(datain1_3)

不知道是否可行,我试着写成下面这个样子,但是dina接口那行会提示‘undeclared symbol datain1_i ,assumed default net type wire’,不知是否有问题。
genvar i;
generate  
    for(i=1;i<=8;i=i+1)
    begin :RAM1
        DP_RAM_18X128 RAM1_i (
          ...
          .dina(datain1_i),   
          ...
        );
    end
endgenerate
 楼主| 发表于 2022-1-7 15:31:22 | 显示全部楼层
本帖最后由 TUJzzz 于 2022-1-7 15:38 编辑


zzj0329 发表于 2021-12-22 10:03
generate或者脚本吧


大佬,我百度一些情况,发现博客例子中都是使用generate去控制统一个寄存器的不同位数,例如将generate生成展开:
.dina(datain[1])
.dina(datain[2])
.dina(datain[3])

我想用generate去完成不同寄存器的控制(寄存器名称有规律),例如
将generate生成展开:
.dina(datain1_1)
.dina(datain1_2)
.dina(datain1_3)

不知道是否可行,我试着写成下面这个样子,但是dina接口那行会提示‘undeclared symbol datain1_i ,assumed default net type wire’,不知是否有问题。
genvar i;
generate  
    for(i=1;i<=8;i=i+1)
    begin :RAM1
        DP_RAM_18X128 RAM1_i (
          ...
          .dina(datain1_i),  
          ...
        );
    end
endgenerate

发表于 2022-1-9 15:33:36 | 显示全部楼层
谢谢分享
发表于 2022-1-10 08:28:37 | 显示全部楼层
本帖最后由 jinj198908 于 2022-1-10 08:42 编辑


TUJzzz 发表于 2022-1-7 15:28
大佬,我百度一些情况,发现博客例子中都是使用generate去控制统一个寄存器的不同位数,例如 将generate生 ...


明显不行啊,对于编译器来说 datain1_i 只是一个寄存器,datain【i】才是一组寄存器啊。如果想要的宽度不是1,可以定义成datain[8*(i+1)-1:8*i]这种形式
 楼主| 发表于 2022-1-10 19:53:55 | 显示全部楼层


jinj198908 发表于 2022-1-10 08:28
明显不行啊,对于编译器来说 datain1_i 只是一个寄存器,datain【i】才是一组寄存器啊。如果想要的宽度不 ...


感谢大佬回复,还想请问一下,假设有10个[7:0]位宽的数据。除了您论述的方法,构造成 8乘10的数组 (reg[7:0] datin[9:0]),然后用generate例化,datain。这样是否可行。
发表于 2022-1-11 08:14:07 | 显示全部楼层


TUJzzz 发表于 2022-1-10 19:53
感谢大佬回复,还想请问一下,假设有10个[7:0]位宽的数据。除了您论述的方法,构造成 8乘10的数组 (reg[7 ...


应该是可以的,你自己写段代码试下,也花不了多长时间
 楼主| 发表于 2022-1-11 09:21:12 | 显示全部楼层
感谢感谢
 楼主| 发表于 2022-1-11 09:23:00 | 显示全部楼层


jinj198908 发表于 2022-1-11 08:14
应该是可以的,你自己写段代码试下,也花不了多长时间


感谢大佬
发表于 2022-1-12 19:28:26 | 显示全部楼层


TUJzzz 发表于 2022-1-7 15:31
大佬,我百度一些情况,发现博客例子中都是使用generate去控制统一个寄存器的不同位数,例如将generate生 ...


generate不能把RAM1_i ,datain1_i中的i按genvar展开
只能支持,(i)
不妨试试下面的,我没测试过

`define RAM1(i)   RAM1_``i
`define datain1(i)  datain1_``i   

genvar i;
generate  
    for(i=1;i<=8;i=i+1)
    begin :RAM1
        DP_RAM_18X128 `RAM1(i) (
          ...
          .dina(`datain1(i)),  
          ...
        );
    end
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-6-9 19:32 , Processed in 0.024635 second(s), 6 queries , Gzip On, Redis On.

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