0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

记录一下verilog重复例化的两种方式

冬至子 来源:行走的BUG永动机 作者:BUG永动机 2023-05-26 17:36 次阅读

1 for循环方式例化方法

先给出 sub_module

module sub(
    input [7:0] din,
    output logic [7:0] dout
);
    assign dout = din;
endmodule

要将这个module分别例化成u_sub_0u_sub_1,并且每个都例化四次

for循环的实现方式如下

module top(
    input [8*4-1 : 0] din0, 
    input [8*4-1 : 0] din1,
    output logic [8*4-1 : 0] dout0,
    output logic [8*4-1 : 0] dout1
);
    genvar i;
    generate for(i=0; i<4; i++) begin:inst
        sub u_sub_0 (
              //output
              .dout(dout0[i*8 +: 8]),
              //input
              .din(din0[i*8 +: 8])
           );
        
        sub u_sub_1 (
              //output
              .dout(dout1[i*8 +: 8]),
              //input
              .din(din1[i*8 +: 8])
           );
    end
    endgenerate
endmodule

来看看例化后的效果

图片

可以看到,总共4组inst,每组inst中存在两个u_sub

接下来点开inst[0]中的u_sub_0,看看它的信号是什么样的

图片

依次点击,然后到shell界面粘贴内容

图片

此时可以清晰的看到,这个din信号是来自哪里,这也体现了,在begin后命名block的重要性

2 数组的方式例化

同样的 sub_module,同样的例化要求,这次改用数组的方式进行例化

module top(
 input [8*4-1 : 0] din0, 
    input [8*4-1 : 0] din1,
    output logic [8*4-1 : 0] dout0,
    output logic [8*4-1 : 0] dout1
);
    sub u_sub_0 (
       //output
          .dout(dout0),
          //input
          .din(din0)
       );
    
    sub u_sub_1 (
       //output
          .dout(dout1),
          //input
          .din(din1)
       );
endmodule

来看看这次的例化效果

图片

在打印出这种方式的层次化结构

图片

图片

同样有清晰的辨识效果

4 一些其他的技巧

对于二维数组而言,如果想在verdi中将二维数组展开,那么我们需要在dump波形是加上这句话

$fsdbDumpMDA

这样就可以在verdi中展开二维数组

当一个数组范围比较大不方便分析,可以将数组进行分段,操作如下

图片

比如我要将32 bits位宽的din0信号分成8 bits位宽,可以这样设置

图片

效果如下

图片

实现了对信号的拆分

对于一些信号,在这种例化方式下拉信号的波形不是很容易(这个例子一时没想起来 >_<)

要拉出确定的波形可以这样操作

在波形界面按g,会弹出下面这个框

图片

让后需要哪个信号选中即可添加

图片

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Shell
    +关注

    关注

    1

    文章

    358

    浏览量

    22902
  • dump
    +关注

    关注

    0

    文章

    11

    浏览量

    9456
  • Verilog设计
    +关注

    关注

    0

    文章

    20

    浏览量

    6474
收藏 人收藏

    评论

    相关推荐

    两种采样方式

    两种采样方式.....................................
    发表于 08-08 15:04

    两种verilog语言写法的实现问题!求解答~

    在看verilog代码时,看到这样两种表示方法:一种是:“ wirea;assigna=b;”一种是:“wirea=b;”请教各位大神这两种
    发表于 01-29 14:33

    请问IC设计中读写电路的设计中如何实现读写和连续读写两种方式

    请问在IC设计中,有的ic支持读写和连续读写两种方式,比如写的时候,输入个地址,写入数据,重复进行;也可以输入个起始地址,数据依次输入,
    发表于 07-18 15:00

    请问C6748两种DSP开发方式有什么区别

    各位开发者: 大家好。我使用的DSP开发板为TMDXLCDK6748,看了TI公司提供的资料,在开发板上开发程序主要有两种方式一种是裸机开发,需要安装StarterWare,另一种
    发表于 01-14 14:12

    请问小车转向两种方式有什么优缺点?

    我知道的小车转向常见的有两种方式一种是通过舵机控制转向,另一种是通过控制个轮子的转速,通过转速差实现转向,这
    发表于 05-21 02:37

    SQL语句的两种嵌套方式

    般情况,SQL语句是嵌套在宿主语言(如C语言)中的。有两种嵌套方式:1.调用层接口(CLI):提供些库,库中的函数和方法实现SQL的调
    发表于 05-23 08:51

    linux配置mysql的两种方式

    两种方式:a、$ find / -name mysql–print 查看是否有mysql文件夹b、$ netstat -a –n 查看是否打开3306端口
    发表于 07-26 07:46

    开发板与ubuntu之间的两种网络连接方式分享!

    般笔记本都会有个网卡:无线网卡和有线网卡。这样通过网络连接开发板就有两种方式:笔记本无线连路由,开发板有线连路由;笔记本和开发板之间通过网线直联(注意此时要关闭笔记本的无线联接)。
    发表于 09-17 01:22

    编译环境的两种搭建方式

    编译环境的两种搭建方式putty工具的使用winscp工具的使用
    发表于 12-22 08:00

    串口通信的两种方式

    串口通信由两种方式,第一种就是用微机原理课上学过的TX和RX个接口进行通信。不过根据去年的经验,这个板子直接用TX和RX个接口进行通信容
    发表于 08-24 06:59

    掌握原理图输入以及Verilog两种设计方法

    过1位全加器的详细设计,掌握原理图输入以及Verilog两种设计方法。
    发表于 11-08 07:57

    SQL语言的两种使用方式

    SQL语言的两种使用方式在终端交互方式使用,称为交互式SQL嵌入在高级语言的程序中使用,称为嵌入式SQL―高级语言如C、Java等,称为宿主语言嵌入式SQL的实现
    发表于 12-20 06:51

    vnc和xrdp两种远程连接的方式

    [zju嵌入式]树莓派之远程桌面 之前篇介绍了通过串口和ssh登陆到树莓派的方法,这两种方式的有点在于连接方面,响应速度快,但是也有不够直观的缺点,没办法看到图形界面.在这篇博文中,笔者将介绍vnc和xrdp
    发表于 12-24 07:54

    电流检测两种方式

    电流检测两种方式高端检测既然会使得放大器承受较高的共模电压,那“都采取高侧检测”这句话岂不是自相矛盾怎么理解负载脚底不稳?低端检测会影响到GND电平的稳定性吗?帮忙讲这四个电路、高端检测2,低端检测2具体的工作原理,或输出公式
    发表于 03-06 18:43

    请问一下无线局域网的两种网络结构是什么?

    请问一下无线局域网的两种网络结构是什么?
    发表于 05-09 16:22