先放上连接规则的简图,再详细解释

1. 构建模型——污水处理之流水模型

我们先将上述结构构件一个简单模型,以帮助我们理解。

  • 污水:输入数据
  • 净水:输出数据
  • 双向数据暂不讨论,取输入和输出的交集即可
  • 污水处理厂:模块(设计块/激励块)

2. 结构——放大模型,展现细节

这里只对input和output进行展现,先暂时不管inout。

在展现之前,先来明确对于几个重要概念的理解

2.0 深入理解规则才能打破规则!

问题1:net类型和reg类型究竟有什么区别?
问题2:为什么这几个接口的类型要这样限定?

2.1 net与reg的区别——水管阀门模型

我们将数据比喻为,数据的处理过程就像水在水管中流动一样

  • net类型:无阀门的水管,只能让水流动,不能储存。

  • reg类型:双阀门的水管,即可以让水流动,也能存储水。

    • reg类型需要接收数据,则打开阀门A,水满之后关闭阀门A,就实现了存储数据
    • 需要使用数据的时候,则可以打开阀门B
    • 需要让数据流入后直接流出,则可以同时打开A和B,这时候就和net类型的功能一样
  • 需要强调的是:reg和net是一类数据类型的总称,将这个类型分别类比为两种水管;这是粗略的模型,具体细分的数据类型再进一步展开即可。

2.2 构建结构——污水处理模型细节化


下面我们来逐一分析一下:

  • ①输入端口的外部:
    可以是reg或者net,因为外部的污水可以是从别处直接流过来的,也可以是之前被保存起来,然后再开闸流过来的
  • ②输入端口的外部:
    来者不拒!外面流过来污水,就必须接收!
  • ③输出端口的内部:
    • 净水可以直接留到外面去
    • 净水也可以被保留起来,它可能会被回环用于污水处理过程,这是由其实际需求而被规定的,如果有需求就用,没有就不用。
  • ④输出端口的外部:
    输出的净水不能被封闭起来,一定要被排出去,否则就堵死了!

接下来,我们继续优化这个模型,增加结构的细节!

好的我想你是能够理解这个图形的,对于输出端口,内部可能回环再利用,外部可能直接输出,也可能返回来在进入输入,这些都可能发生的,具体怎么设定,看实际需求。

另外,对于①和③,也可以是无阀门的管道,这点我再强调一遍。

2.3 三种模式——端口与外部信号的连接模式

  1. 进去之后全部出去(与门)
  2. 进去后部分出去,部分回来(T触发器)
  3. 多门路互相影响(SR锁存器)

2.4 reg与net 的使用原则

  • 对于内部接口的设置

    • 不写就默认wire
    • 特殊需求:输出显式使用reg
  • 对于外部接口的设置
    看实际需求和使用习惯!

这一部分简单看看就可以,不用深入了解,这些原则的使用方法,应该由大量实践得出。

3. 回归Verilog——结构的实现

我想,你通过污水处理结构,已经能够对Verilog端口连接规则有了理解,并且,事实上你非常轻松地理解了它!

下面让我们上升一个抽象层次,看一看具体在Verilog中是如何使用端口连接规则的。

以下采用

  • EDA工具:Vivado 2017.4
  • 代码风格:ANSI C风格
  • 端口连接:命名端口连接

3.1 内部模块的端口设计

module show(input a,input [3:0] b,output c,output reg d);
……<模块内容>
……
endmodule

注:也可以使用 input a,b 的形式,对于代码风格,也需要参考EDA工具的支持情况,不同工具的使用规则可能不一样。

3.2 模块与外部信号的连接

对于外部信号而言,不是reg就是net类型,怎么着都应该能够输入进如其他的模块实例,因此,也就能够进一步理解,为什么输入端口的外部允许reg和net类型的数据了

这里只讲解命名端口连接规则,先给出实例,模块show为底层模块,而模块show_up为其上一级模块。

module show_up(input aa,input [3:0] bb,output cc,output reg dd;);show s1(    //调用模块实例并且进行端口连接.a(aa),.b(bb),.c(cc),// .d(dd) 非法连接!reg类型的外部信号,不能连到输出端口上// 可以选择不连接,或者修改为net类型);
……
<模块内容>
……
endmodule

需要注意的几个问题:

  • 警惕输出端口非法连接
    外部信号与模块端口连接的时候,reg类型的输出信号不能与输出信号连接,可以有以下修改方式(由需求决定):

    • 将reg类型变为net类型
    • 增加一个wire类型的输出与之相连,reg类型的输出不进行端口连接
  • 模块实例的端口可以不连接
  • 模块内外两部分的位宽要匹配,否则可能出现问题

4. 实战经验

对于一整个设计模型而言,如果子模块的输出端口均与它的上级模块连接,那么,整个设计系统中,只有叶单元的(内部)输出端口可以是reg类型,其余是上层单元只能是net类型

这个不做过多解释,我相信你能够想明白,只需要你在设计模块端口的时候注意这个问题!

一般情况下,输出端口默认wire即可,除非特殊情况采用reg!

【Verilog HDL】第四章 模块的端口连接规则——污水处理模型相关推荐

  1. 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--串口模块(十一)

    声明:本文为原创作品,版权归akuei2及黑金动力社区(http://www.heijin.org)共同所有,如需转载,请注明出处http://www.cnblogs.com/kingst/ 3.4 ...

  2. Python之旅.第四章.模块与包

    包: 包就是一个包含有__init__.py文件的文件夹,所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来 需要强调的是: 1. 在python3中,即使包下没有__init__.py文件 ...

  3. 第四章:ssh远程连接服务器

    目录 远程连接服务器简介ssh 连接加密技术简介 非对称加密的一对密钥位置路径 SSH工作流程: 一.版本协商阶段 二.密钥和算法协商阶段 会话密钥的生成: 三.认证阶段 SSH提供两种认证方法: s ...

  4. 第四章 SQL查询 之连接{自然连接,内连接,外连接(左外连接,右外连接,完全连接)}

    4.4 连接 自然连接 自然连接实际指定了搜寻条件.这里包括两部分的内容:首先,自然连接列必须同名,另外,所有同名列都将作为搜索条件. 自然连接所使用的关键字为natural join .其连接原则为 ...

  5. 【Verilog HDL】从逻辑电路图到门级建模——人工翻译的方法论

    从左到右,从上到下 先搞定缓冲/非门,再写与/或门 1. 实例解读 先以四选一数据选择器进行说明 对于数字逻辑的部分不再说明,直接进行逻辑电路图到Verilog门级建模的人工翻译过程的描述. 1.1 ...

  6. 三、4【Verilog HDL】基础知识之模块和端口

    参考书籍:<Verilog HDL 数字设计与综合>第二版,本文档为第四章的学习笔记. 目录 学习目标 4.1 模块 4.2 端口 4.2.1 端口列表 4.2.2 端口声明 4.2.3 ...

  7. 爆肝4万字❤️零基础掌握Verilog HDL

    文章目录 0.前言 1.Verilog HDL简介 1.1 什么是Verilog HDL 1.2 verilog发展历史ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ 1.3 为什么要使用verilog ...

  8. 《Verilog HDL那些事儿》PDF 3.0版本发布

      <Verilog HDL那些事儿>1.0版本发布四章内容,后续将后面的两章内容加入,最近比较忙,希望大家体谅! 目录: 书语        9 第一章        前言        ...

  9. Verilog HDL可综合描述(高质量Verilog书写)

    参考视频:中国大学MOOC 芯动力--硬件加速设计方法  (2.1节) 本篇所有内容来源于<芯动力--硬件加速设计方法>此课程的教学视频 .ppt等相关资料. 一.VerilogHDL可综 ...

最新文章

  1. 北邮计算机科学技术是学硕吗,【计算机考研】2020北京邮电大学计算机科学与技术考研初试科目、参考书目、复试详情汇总...
  2. 数组-在Shell脚本中的基本使用介绍
  3. ZOJ 2588 Burning Bridges 割边
  4. AI学习笔记--人机对话的四种形态
  5. 美国只有两样东西要比中国 贵,一个是智慧财产权,一个是人工
  6. leetcode 75
  7. python 运算符与流程控制
  8. android studio重置
  9. paip.关于动画特效原理 html js 框架总结
  10. 常用开关稳压电源(LM2596、MC3406)
  11. 十大项目管理知识-进度管理
  12. C语言的switch语句
  13. python打印大写字母_Python: 打印出大写字符C
  14. 上海亚商投顾:沪指失守3300点 传媒、游戏板块逆市大涨
  15. 实战技法 - 短线操盘 (10)
  16. 1/6黄金最新走势分析美原油全面操作建议
  17. 使用Unity实现VR中在黑板上写字(升级篇)(一)-----解决画笔穿透画板的问题
  18. 市场调研—全球与中国实验室压片机市场现状及未来发展趋势
  19. 图片与Base64数据转换存储
  20. Jenkins+Docker持续集成(CI/CD)实战

热门文章

  1. win2003 IIS6配置PHP 5.3.3(fastCGI方式+eAccelerator)+ASP.NET 4.0(MVC3)
  2. 版本控制工具SVN+Apache整合
  3. innodb和my查询速度_吃透MySQL:MyISAM和InnoDB存储引擎详细介绍
  4. dbgrideh指定某单元格变色_一招搞定按指定名称批量新建文件夹
  5. linux vfs open函数,Linux VFS中open系统调用实现原理
  6. c语言编码风格,讲嵌入式C语言编码风格.ppt
  7. 登录id 黑苹果_黑苹果MacOSCatalina无法登录AppStore修复
  8. python安装界面翻译_python环境搭建
  9. Java 字符,整型,字符串三者转换
  10. linux在指定目录多个文件中搜索关键字