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

这篇具有很好参考价值的文章主要介绍了记录一下verilog重复例化的两种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0 前言

这段时间例化了挺多mem,过程中也了解到了一些新的东西,在这里记录一下

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

来看看例化后的效果

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

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

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

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

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

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

此时可以清晰的看到,这个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[3:0] (
    			//output
        		.dout(dout0),
        		//input
        		.din(din0)
    			);
    
    sub u_sub_1[3:0] (
    			//output
        		.dout(dout1),
        		//input
        		.din(din1)
    			);
endmodule

来看看这次的例化效果

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

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

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

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

同样有清晰的辨识效果

4 一些其他的技巧

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

$fsdbDumpMDA;

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

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

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

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

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

效果如下

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

实现了对信号的拆分

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

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

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

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

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

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

记录一下verilog重复例化的两种方式文章来源地址https://www.toymoban.com/news/detail-507273.html


到了这里,关于记录一下verilog重复例化的两种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTML5中form表单防止重复提交的两种方法

    form表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题 (1)点击提交按钮两次。 (2)点击刷新按钮。 (3)使用浏览器后退按钮重复之前的操作 导致重复提交表单。 (4)浏览器重复的HTTP请求。 (5)用户提交表单时可能因为网

    2024年01月22日
    浏览(44)
  • Verilog基础:寄存器输出的两种风格

    相关文章 Verilog基础 https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482         Verilog中的寄存器操作一般指的是那些对时钟沿敏感而且使用非阻塞赋值的操作。例如状态机中的状态转移,实际上就是一种寄存器操作,因为这相当于将下一状态的组合逻辑连接至

    2024年02月04日
    浏览(40)
  • Containerd的两种安装方式

    1. 轻量级容器管理工具 Containerd 2. Containerd的两种安装方式 3. Containerd容器镜像管理 4. Containerd数据持久化和网络管理 操作系统环境为centos7u6 1.1 获取YUM源 1.2 使用yum命令安装 1.3 验证安装及启动服务 1.4 验证可用性 Containerd有两种安装包: 第一种是 containerd-xxx ,这种包用于单机测

    2024年02月14日
    浏览(39)
  • ssh的两种登录方式

    1. 密码登录 这是默认的一种登录方式,如图: 输入密码以后成功登录shell: 以后每次登录都得输入密码,比较麻烦。 2. 公钥登录 为了方便,ssh还提供了使用公钥的登录方式,原理为在client生成一对公私钥,client保留私钥,把公钥写入server。具体方式如下: 一、 在client: 生

    2024年02月16日
    浏览(46)
  • 封装axios的两种方式

    作为前端工程师,经常需要对axios进行封装以满足复用的目的。在不同的前端项目中使用相同的axios封装有利于保持一致性,有利于数据之间的传递和处理。本文提供两种对axios进行封装的思路。 首先导入了 axios, AxiosInstance和AxiosResponse模块 ,用于创建一个http请求的实例和处理

    2024年02月08日
    浏览(44)
  • sqlmap的两种挂代理方式

    文章目录 前言 一、第一种方式直接挂代理 二、第二种方式间接挂代理 为什么要挂代理呢: sqlmap原理和暴力破解类似如果速度过快则会很容易被封ip,所以挂代理是避免这种情况的发生,即使发生也可以切换其他ip。 一、第一种方式直接挂代理  可在-u之后直接输入--proxy 

    2024年02月12日
    浏览(47)
  • 快速获取cookie的两种方式

    在需要获取Cookie的谷歌浏览器界面,按Ctrl+Shift+j打开js控制台。 输入 console.log(document.cookie) 回车打印Cookies 新建书签,书签名称随意,书签的网址是以下网址: 在需要获取Cookie的页面,点击这个小书签,就直接复制好了Cookie了。 以上两种方式是自用实测比较方便高效的,在此

    2024年02月11日
    浏览(54)
  • QT打包的两种方式

    QT打包的两种方式: 一个是QT5自带的windeployqt(不需要下载安装),它可以找到程序(exe)用到的所有库文件,并且都拷贝到exe程序的当前文件。此时打包的exe较小,需要和拷贝进来的文件放一起运行,也可以将这些文件再次打包成一个大的exe文件,此时用的第二种打包方式

    2024年02月16日
    浏览(50)
  • MySQL中的两种特殊插入方式

    代码案例 PointMapper.java PointMapper.xml 代码案例 PointMapper.java PointMapper.xml on duplicate key update 和 replace into 是两种处理重复键冲突的方法,但它们具有一些区别 功能不同 on duplicate key update 在插入数据时,如果遇到重复键冲突,会更新已存在的行的值 replace into在插入数据时,如果遇

    2024年02月12日
    浏览(60)
  • 手机上玩.NET的两种方式

    少见!手机上玩 .NET_哔哩哔哩_bilibili 小米平板敲代码,termux安装dotnet和vscode_哔哩哔哩_bilibili 都是先容器加载linux rootfs,然后安装 linux-arm64 版本的 dotnet 命令行方式运行 dotnet,代码编辑到是可以安装使用 vscode。 推荐 虚拟电脑app

    2024年02月05日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包