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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6040|回复: 31

[求助] Verilog 接口问题

[复制链接]
发表于 2023-2-20 10:41:32 | 显示全部楼层 |阅读模式
500资产
  求教各位大佬, 如果说在写Verilog代码过程中, 想要在子模块中并行输出数量很大的数据, 有没有什么便捷方式可以处理, 不用一个个的写? 不想将并行数据转换成串行数据, 那样会增加很多的硬件开销, 希望既可以较小的硬件开销, 又可以便捷的得到并行输出的端口

最佳答案

查看完整内容

1)不用将后缀改为.sv,右键对应的.v文件,点击source Node Properties(或者快捷键ctrl+E),这样打开文件属性,在type一栏直接改成system verilog即可,这样vivado后续编译或者语法识别都会按照sv的规则来。 2)system verilog可以用于综合同样也可以用于验证,其实当前这个时代你可以理解verilog已经被system verilog完全取代,只不过由于在IC前端设计方面verilog也可以用,同时重构代码太麻烦,因此verilog一直沿用至今 ...
发表于 2023-3-1 22:00:04 | 显示全部楼层


zx7504081 发表于 2023-3-1 21:32
端口例化和之前的一样。

比如有个底层模块把数组或者mem型:


EETOP的代码编辑功能太垃圾了,我文本重新写
module example (
output [2:0]mem [0:1]
);
endmodule
module top;
logic [2:0] string [0:1];
example inst0(
.mem(string)
);
endmodulle

发表于 2023-2-20 10:41:33 | 显示全部楼层


KongDu 发表于 2023-2-21 16:19
  • 我用的是vivado, 改成System Verilog 标准的话, 是否也需要将文件的后缀改成.sv?
  • 对于System Ver ...


  • 1)不用将后缀改为.sv,右键对应的.v文件,点击source Node Properties(或者快捷键ctrl+E),这样打开文件属性,在type一栏直接改成system verilog即可,这样vivado后续编译或者语法识别都会按照sv的规则来。

    screenshot-20230221-162531.png

    2)system verilog可以用于综合同样也可以用于验证,其实当前这个时代你可以理解verilog已经被system verilog完全取代,只不过由于在IC前端设计方面verilog也可以用,同时重构代码太麻烦,因此verilog一直沿用至今
    发表于 2023-2-20 10:53:34 | 显示全部楼层
    将多维数组转换成一维数组,然后用位宽控制数组的元素。
    发表于 2023-2-20 10:54:39 | 显示全部楼层
    本帖最后由 PayPal 于 2023-2-20 17:53 编辑

    例如需要输出
    [M-1:0] data[N-1:0];
    输出端口写
    o_data[N*M-1:0];
    输入端口写
    i_data[i*M +: M];
    发表于 2023-2-20 11:38:17 | 显示全部楼层
    个人理解将端口命名为数组或者memory型。

    举个例子,比如有一个很大的数据输出。
    写成串口型可能要声明成output wire [99:0] port,只需要赋值(输出)一次,但是就如你说的硬件开销大。
    可以拆分成output wire [4:0] port [0:19],这样就变成20个5bit端口,这样手动赋值20次。
    虽然不知道能不能帮助上,但我理解大致是这个意思
     楼主| 发表于 2023-2-20 15:35:13 | 显示全部楼层


    PayPal 发表于 2023-2-20 10:54
    例如需要输出
    [M-1:0] data[N-1:0];
    端口写


    但是这么写是否会额外的增加一个并转串的模块, 这个模块也会额外的占用其他资源?
     楼主| 发表于 2023-2-20 15:38:14 | 显示全部楼层


    zx7504081 发表于 2023-2-20 11:38
    个人理解将端口命名为数组或者memory型。

    举个例子,比如有一个很大的数据输出。


    这个方式我试过, 但是会给出语法的报错


                                   
    登录/注册后可看大图

    发表于 2023-2-20 17:19:43 | 显示全部楼层
    verilog语法不支持二维数组作为输入输出端口吧?
    我以前碰到过一样的问题,最终还是一个一个写了,会脚本的话,让脚本生成就好了。
    发表于 2023-2-20 17:50:36 | 显示全部楼层


    KongDu 发表于 2023-2-20 15:38
    这个方式我试过, 但是会给出语法的报错


    端口是o_data[N*M-1:0]
    发表于 2023-2-20 17:51:30 | 显示全部楼层


    KongDu 发表于 2023-2-20 15:35
    但是这么写是否会额外的增加一个并转串的模块, 这个模块也会额外的占用其他资源? ...


    不会,只是增加一些布线
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-16 04:52 , Processed in 0.028521 second(s), 9 queries , Gzip On, Redis On.

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