verilog模块中各个变量的类型怎么确定

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog模块中各个变量的类型怎么确定相关的知识,希望对你有一定的参考价值。

输入端口:
从模块内部来讲,输入端口必须为线网型;从模块外部来看,输入端口可以连接到线网或reg型的变量。

输出端口:
从模块内部来讲,输出端口可以是线网或reg型;从模块外部来看,输出端口必须连接到线网型的变量。
参考技术A   简单点说吧,
  always @ (posedge clk )
  a <= a+1;
  always @ (a)
  b = a+1;
  assign c=b+1;
  第一种声明为reg a;
  第二种声明为reg b;
  第三种声明为wire c;
  如果是用于例化了某个模块,那么这个例化模块的输出,都是wire,常用的就这么几种
参考技术B 在过程语句进行赋值的为reg类型,之外的为wire类型,模块的类型physiky1104说得对

模块和端口

学习目标

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。

 

以上是关于verilog模块中各个变量的类型怎么确定的主要内容,如果未能解决你的问题,请参考以下文章

verilog模块中需要调用memory型变量该怎么弄???急...

verilog 中顶层模块实例引用多个模块时端口怎么连接

verilog 中顶层模块实例引用多个模块时端口怎么连接

求高手指教verilog中reg型和wire型在模块引用中的用法?

Verilog学习笔记基本语法篇········ 生成块

verilog语言中任务和函数的区别