模块和端口

学习目标

1.说明Verilog模块定义中各个组成部分。

2。理解如何定义模块的端口列表以及在Verilog中如何声明

3.讲述模块实例的端口连接规则

4.理解如何通过有序列表和名字将端口与外部信号相连

5.解释对Verilog标识符的层次引用

1.模块


module模块名,

端口列表,端口声明(如果有端口)

参数声明(可选)


wire,reg和

其它类型的变量声明


数据流语句

(assign)

低层模块实例
always块和initial块,所有

行为语句全都在这些块中

任务和函数

endmodule模块语句结束

2.端口

模块与外部环境交互的接口

2.1端口列表

在模块定义中包括一个可选的端口列表,但如果模块与外部环境没有交换任何信号,则可以没有端口列表。

2.2端口声明

Verilog关键字 端口类型
input 输入端口
output 输出端口
inout 输入/输出端口

在Verilog中,所有端口隐含地声明为wire类型,因此如果希望端口具有wire数据类型,将其声明为三种类型之一即可;如果输出类型的端口需要保存数据,则必须将其

显示地声明为reg数据类型。不能将input和inout类型的端口声明为reg数据类型。

2.3端口连接规则

端口由模块外部和内部两部分相互连接构成

端口 内部数据类型 外部数据类型
输入端口 net net/reg
输出端口 reg/net net
输入/输出端口 net net

位宽匹配

允许内外不同位宽,但会有警告

未连接端口

允许模块实例的端口保持未连接状态

2.4端口与外部信号的连接

对模块调用(实例调用)的时候,有两种方法将模块定义的端口与外部环境中的信号连接起来:

1.按顺序连接

2.按名字链接

顺序端口连接

直观的方法,需要连接到模块实例的信号必须与模块声明时目标端口在端口列表中的位置保持一致。

命名端口连接

在这种方法中端口和相应的外部信号按照其名字进行连接。端口连接可以以任意顺序出现,只要保证端口和外部信号的正确匹配性

在这种方法中,需要与外部信号连接的端口必须用名字进行说明,而不需要的端口只需要简单地忽略掉即可。

命名端口连接的另一个优点是,只要端口的名字不变,即使模块端口列表中端口的顺序发生了变化,模块实例的端口也无需进行调整。

3层次命名

层次名由一连串使用“.”分隔的标识符组成,每一个标识符代表一个层次,这样设计者就可以在设计中的任何地方通过指定完整的层次名对每一个

标识符进行访问。如果需要显示层次,用户可以在系统任务$display中使用特殊字符%m。

时间: 2024-10-17 09:04:48

模块和端口的相关文章

Python 使用python-nmap模块实现端口扫描器

对线上服务器进行端口扫描是一件很有用的事,可以验证你的防火墙规则,避免暴漏不需要的服务.也可以知道你机器上开了哪些服务,不用等乌云爆出来了才知道,有人黑进内网玩了好几个月.哈哈,真事,服务器被通过zabbix黑进来,开了一个socket5的进程,自由进出.反正,这玩意很有用,本着奉献精神,把代码放出来,共同学习. 功能很简单,对服务器进行扫描,生成html格式的扫描结果,对扫描结果发邮件.格式方面做了点处理,定义端口白名单,正常端口显示绿色,异常端口显示红色.算是一种告警.对服务器进行全端口扫描

利用socket模块检查端口存活并邮件警报

可以用来监控一些端口. import socket def check_server(addr, port): s = socket.socket() try: s.connect((addr, port)) return True except socket.error: return False def alert(p): from email.mime.text import MIMEText import smtplib sender = "[email protected]"

使用metasploit自带模块进行端口扫描

搜索模块: 选择查看: 设置&扫描: 原文地址:https://www.cnblogs.com/feiyucha/p/9972094.html

4G模块ME3760_V2 端口映射

/dev/ttyUSB0      ECM        // ECM 口 /dev/ttyUSB1      /             //ECM口 /dev/ttyUSB2      AT          //AT /dev/ttyUSB3      MODEM  //modem口 /dev/ttyUSB4      log         //调试口

模块端口信号追踪总结

信号数据流向追踪(特别是涉及到PAD内外模块和PAD模块这三个模块): 1.每一个SOC的外围都有PAD,PAD的管脚好多是inout类型的. singal_pad作为输入和输出都有会OEN /IE之类的使能信号,可以观测使能信号判断inout是输入还是输出. 2.模块内部一般不允许有inout类型,而是把inout类型拆散为input +output类型. assign singal_inout= link? singal_inout_reg:z;(inout类型为输出时) 若singal_i

运维python进行(一) nmap扫描端口

介绍 python-nmap是基于系统nmap命令的一个端口扫描工具,使用简单方便. 最近为了加强服务器安全性和监管,需要每天把公司服务器开放端口扫描记录,一旦出现增加减少能发现. 之前使用shell写过一个https://github.com/bashhu/monitor-shell/blob/master/python-script/scan_port.sh 最近打算完善一下我们的运维平台,重新编写了脚本,方便平台的调用 https://github.com/bashhu/monitor-s

51单片机对无线模块nRF24L01简单的控制收发程序

它的一些物理特性如工作频段.供电电压.数据传输速率就不详细介绍了,直接上代码. 1.首先是发送端: // Define SPI pins #include <reg51.h> #define uchar unsigned char /***************************************************/ #define TX_ADR_WIDTH 5 // 5字节宽度的发送/接收地址 #define TX_PLOAD_WIDTH 4 // 数据通道有效数据宽度

常用端口

2端口:管理实用程序3端口:压缩进程5端口:远程作业登录7端口:回显9端口:丢弃11端口:在线用户13端口:时间17端口:每日引用18端口:消息发送协议19端口:字符发生器20端口:FTP文件传输协议(默认数据口)21端口:FTP文件传输协议(控制)22端口:SSH远程登录协议23端口:telnet(终端仿真协议),木马Tiny Telnet Server开放此端口24端口:预留给个人用邮件系统25端口:SMTP服务器所开放的端口,用于发送邮件27端口:NSW 用户系统 FE29端口:MSG I

verilog中defparam的用法 (verilog调用底层模块(只改变)参数的传递)

当一个模块引用另外一个模块时,高层模块可以改变低层模块用parameter定义的参数值,改变低层模块的参数值可采用以下两种方式: 1)defparam 重定义参数 语法:defparam path_name = value ; 低层模块的参数可以通过层次路径名重新定义,如下例: module top ( .....)input....;output....;defparam U1 . Para1 = 10 ;M1 U1 (..........);endmodulemodule M1(....);