verilog | 模块与端口

原文连接:https://blog.csdn.net/JifengZ9/article/details/106878914

  • verilog模块组成:
    请添加图片描述

  • 端口:模块与外界环境交互的接口。所有端口隐含地声明为wire类型。若希望输出端口保存数值,则需要显式的声明为reg类型;输入与双向端口不能被声明为reg类型。

三种端口类型如下:

input:输入;

output:输出;

inout:输入/输出双向端口;

在声明端口数据类型时可以在模块端口列中声明(将端口声明嵌入到端口列表):

module fulladd4 (
    output reg [3:0] sum,
	output reg c_out,
    input [3:0] a,b, //默认类型为wire,
    input c_in
);
    ……
    <模块的内容>
    ……
endmodule

在模块中定义的所有过程块(initial、always等、连续赋值语句、实例引用都是并行的。

wire类型不能直接取反赋值(例如,wire a; assign a = ~a;)。

reg类型不能连续赋值语句赋值。

  • 端口连接规则:

模块之间通过端口互联时需要遵从以下规则:

1、
请添加图片描述

2、位宽匹配:允许内外两个部分具有不同位宽。

3、允许模块实例的端口保持未连接状态,例如作为测试端口

fulladd4 fa0(SUM ,  , A, B, C_IN);//输出端口c_out没有连接
  • 端口连接方式:

1、顺序端口连接:需要连接到模块实例的信号必须与模块声明时目标端口在端口列表中的位置保持一致。

2、命名端口连接:端口和相应的外部信号按照其名字进行连接,其中括号内部的是该模块的端口,括号外部的是原模块的端口(即下面的fulladd4的端口)。

fulladd4 fa_byname(.cout(C_OUT), .sum(SUM), .b(B), .c_in(C_IN), .a(A));

若某端口悬空,则忽略即可

fulladd4 fa_byname(.sum(SUM), .b(B), .c_in(C_IN), .a(A));
  • 层次命名:顶层模块不能被其他模块调用,以顶层模块作为根,通过“ .”连接对其他模块命名,即层次路径名。每个标识符都具有唯一的层次名。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值