【Verilog HDL】第四章 模块的端口连接规则——污水处理模型
先放上连接规则的简图,再详细解释
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 三种模式——端口与外部信号的连接模式
- 进去之后全部出去(与门)
- 进去后部分出去,部分回来(T触发器)
- 多门路互相影响(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】第四章 模块的端口连接规则——污水处理模型相关推荐
- 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--串口模块(十一)
声明:本文为原创作品,版权归akuei2及黑金动力社区(http://www.heijin.org)共同所有,如需转载,请注明出处http://www.cnblogs.com/kingst/ 3.4 ...
- Python之旅.第四章.模块与包
包: 包就是一个包含有__init__.py文件的文件夹,所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来 需要强调的是: 1. 在python3中,即使包下没有__init__.py文件 ...
- 第四章:ssh远程连接服务器
目录 远程连接服务器简介ssh 连接加密技术简介 非对称加密的一对密钥位置路径 SSH工作流程: 一.版本协商阶段 二.密钥和算法协商阶段 会话密钥的生成: 三.认证阶段 SSH提供两种认证方法: s ...
- 第四章 SQL查询 之连接{自然连接,内连接,外连接(左外连接,右外连接,完全连接)}
4.4 连接 自然连接 自然连接实际指定了搜寻条件.这里包括两部分的内容:首先,自然连接列必须同名,另外,所有同名列都将作为搜索条件. 自然连接所使用的关键字为natural join .其连接原则为 ...
- 【Verilog HDL】从逻辑电路图到门级建模——人工翻译的方法论
从左到右,从上到下 先搞定缓冲/非门,再写与/或门 1. 实例解读 先以四选一数据选择器进行说明 对于数字逻辑的部分不再说明,直接进行逻辑电路图到Verilog门级建模的人工翻译过程的描述. 1.1 ...
- 三、4【Verilog HDL】基础知识之模块和端口
参考书籍:<Verilog HDL 数字设计与综合>第二版,本文档为第四章的学习笔记. 目录 学习目标 4.1 模块 4.2 端口 4.2.1 端口列表 4.2.2 端口声明 4.2.3 ...
- 爆肝4万字❤️零基础掌握Verilog HDL
文章目录 0.前言 1.Verilog HDL简介 1.1 什么是Verilog HDL 1.2 verilog发展历史ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ 1.3 为什么要使用verilog ...
- 《Verilog HDL那些事儿》PDF 3.0版本发布
<Verilog HDL那些事儿>1.0版本发布四章内容,后续将后面的两章内容加入,最近比较忙,希望大家体谅! 目录: 书语 9 第一章 前言 ...
- Verilog HDL可综合描述(高质量Verilog书写)
参考视频:中国大学MOOC 芯动力--硬件加速设计方法 (2.1节) 本篇所有内容来源于<芯动力--硬件加速设计方法>此课程的教学视频 .ppt等相关资料. 一.VerilogHDL可综 ...
最新文章
- 北邮计算机科学技术是学硕吗,【计算机考研】2020北京邮电大学计算机科学与技术考研初试科目、参考书目、复试详情汇总...
- 数组-在Shell脚本中的基本使用介绍
- ZOJ 2588 Burning Bridges 割边
- AI学习笔记--人机对话的四种形态
- 美国只有两样东西要比中国 贵,一个是智慧财产权,一个是人工
- leetcode 75
- python 运算符与流程控制
- android studio重置
- paip.关于动画特效原理 html js 框架总结
- 常用开关稳压电源(LM2596、MC3406)
- 十大项目管理知识-进度管理
- C语言的switch语句
- python打印大写字母_Python: 打印出大写字符C
- 上海亚商投顾:沪指失守3300点 传媒、游戏板块逆市大涨
- 实战技法 - 短线操盘 (10)
- 1/6黄金最新走势分析美原油全面操作建议
- 使用Unity实现VR中在黑板上写字(升级篇)(一)-----解决画笔穿透画板的问题
- 市场调研—全球与中国实验室压片机市场现状及未来发展趋势
- 图片与Base64数据转换存储
- Jenkins+Docker持续集成(CI/CD)实战
热门文章
- win2003 IIS6配置PHP 5.3.3(fastCGI方式+eAccelerator)+ASP.NET 4.0(MVC3)
- 版本控制工具SVN+Apache整合
- innodb和my查询速度_吃透MySQL:MyISAM和InnoDB存储引擎详细介绍
- dbgrideh指定某单元格变色_一招搞定按指定名称批量新建文件夹
- linux vfs open函数,Linux VFS中open系统调用实现原理
- c语言编码风格,讲嵌入式C语言编码风格.ppt
- 登录id 黑苹果_黑苹果MacOSCatalina无法登录AppStore修复
- python安装界面翻译_python环境搭建
- Java 字符,整型,字符串三者转换
- linux在指定目录多个文件中搜索关键字