Verilog学习--端口

本文详细介绍了Verilog中模块端口的声明、类型和连接规则。端口是模块间通信的桥梁,分为输入、输出和双向端口。reg类型用于保存数据,而input端口仅反映外部信号变化。端口连接有按位置和按名称两种方式,确保模块间数据的正确传递。理解这些概念对于Verilog设计至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

端口

端口是模块与外界交互的接口,对外部环境而言,模块内部是不可见的,对模块的调用只能通过端口连接进行

端口基本语法约定

  • 端口必须被声明
  • 端口声明不可重复
  • 端口声明既可在端口列表内也可在列表外

模块间的数据只能通过端口进行

端口声明

根据端口的方向,端口类型有3种:输入(input)、输出(output)和双向端口(inout)

  • input 和 inout 只能是wire
  • output 既可以是 wire 也可以是 reg
    • 需要保存数值时,用reg
    • 不需要保存数值时,用wire

reg类型是用于保存数值的,而输入端只能反映与其相连的外部信号的变化,并不能保存这些信号的值

端口连接规则

方向内部外部
inputwirewire 或 reg
outputwire 或 regwire
inoutwirewire

对于inputoutput我是这样理解的,内部是reg外部就应该是wire

就比如input这一端,外部是reg,内部是wire,在这个一端,已经有一个reg类型可以用来保存数据,不需要用到两个reg来保存数值

端口连接方式

端口连接的方式有两种:按位置连接按名称连接

  1. 按位置连接

    调用模块的端口名必须与被调用模块端口列表中的位置保持一致

    //调用模块
    module name(……);
        //端口定义
        //端口描述
        
        
        /*a, b, c, d分别对用调用模块
           中的in1, in2, sel, dout*/
        mux u1(a, b, c, d);
        
    endmodule
    
    
    //调用模块
    module mux (in1, in2, sel, dout);
        //端口定义
        //端口描述
        //逻辑描述
    endmodule
    
  2. 按名称连接

    格式为:

    模块名 模块实例化名 (.被调用模块端口名(调用模块端口名));

    其中,模块实例化名 是自己随意定的一个名字,方便记忆就好

    //调用模块
    module name(……);
        //端口定义
        //端口描述
            
        //模块调用,也叫实例化
        //对应方式和上一个相同
        mux u1(.in1(a), .in2(b), .sel(c), .dout(d));
    endmodule
    
    //被调用模块
    module mux(in1, in2, sel, dout);
        //端口定义
        //端口描述
        //逻辑描述
    endmodule
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值