verilog基础语法,wire,reg,input,output,inout

概述:

输入输出是模块的端口,寄存器是数据存储介质,线用于把各个电路关联起来,形成一个数据流通通道,进行形成具有具体功能的电路模块。线是信息关联与传递的介质,也是可以称为信息流通的管道。在FPGA中的基本定义为wire,reg,input,output,inout。只有正确的认识到这些基本概念,才能进行正确的开发。

内容

1. 线与寄存器 wire与reg

2. 输入 intput

3. 输出 output

4. 输入输出 inout

1. 线与寄存器 wire与reg

wire与reg简介
    wire 线:金属线,FPGA内部各个端口之间的连接线。它是实物器件,与它相关联的电属性是电位,电流,以及延时时间,线越长,延时时间越长。
    作用:
    通过assign语句构造组合逻辑电路,赋值语句等。
    总线wire, 总线wire可以看成式一维向量,可以把分离的存储数据,或者线按一定顺序排列起来形成总线。
    reg 寄存器,FPGA使用触发器或者锁存器来实现,用于存储数据,相当于变量。它的数据可以修改,但是构成寄存器的电路不可以修改,也就相当于地址是固定的。
    reg A; 用于存储1一个二进制。
    reg [3:0] A1; 一维向量reg用于存储一个多位二进制数
    reg [3:0] A2 [15:0]; 二维阵列位,相当于一维整数数组。
    注意wire只能在assin语句中赋值;reg只能在awalys语句赋值。
代码

module regtest(
	input clk , // system clock 50Mhz on board
	input rst_n, // system rst, low active 
	input a,b
    );

wire c;
assign c = a&b;

reg A;	
reg [3:0] A1;
reg [3:0] A2 [15:0];

always @(posedge clk ) begin 
	A<=1'b1;
	A1<=4'b0100;
	A2[0] <= 4'hf;
	A2[15] <= 4'ha;
end

endmodule

2. 输入 intput

简介

    输入一般分为时钟输入,复位输入以及数据输入;数据输入又分为1位输入和向量总线输入;
    其中时钟输入是模块工作的心脏,模块如果仅仅只是组合逻辑,可以没有时钟。
    复位主要是为了同步一下初始状态,使得整个模块从一个预期的初始点开始工作。
    数据输入,分为1位输入和总线输入,是输入流入模块的端口。

代码

module regtest(
	input clk , // system clock 50Mhz on board
	input rst_n, // system rst, low active 
	input a,
	input [3:0] b
    );


endmodule

3. 输出 output

简介

    一个模块对数据进行加工处理后,通过输出通知或者传递信息给外界。工作状态输出,通讯中的信息传递输出,计算中的结果输出等。
    输出分类
        推挽输出
        三态输出

代码

module regtest(
	input a,
	input en,
	output b,
	output [1:0] b1,
	output c,
	output d
    );

assign b = ~a;
assign b1 = {~a,a};
assign c  = en?a:1'bz;  // 三态输出

endmodule

4. 输入输出 inout

总结

1. wire和reg是基础

2. input和output是最常用的端口

inout、inputoutput是在Verilog代码中用来定义模块端口的关键词。 inout端口可以同时用作输入和输出。当一个模块的inout端口作为输出时,另一个模块的inout端口必须作为输入;反之,当一个模块的inout端口用作输入时,另一个模块的inout端口一定是输出口。因此,两个inout端口的控制信号实际上是由一对信号控制的。\[2\] input端口是用于输入数据的端口,它只能接收数据,不能输出数据。output端口是用于输出数据的端口,它只能输出数据,不能接收数据。\[3\] 所以,inout、inputoutput是用来定义模块端口的关键词,它们分别表示双向连接、输入和输出。 #### 引用[.reference_title] - *1* *2* [通俗易懂的带你解读inout双向端口【Verilog高级教程】](https://blog.csdn.net/weixin_43698385/article/details/125016073)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Verilog与SystemVerilog中几种不同的端口:wire、reg、logic、inputoutput、inout、(const)ref](https://blog.csdn.net/weixin_45159924/article/details/125284799)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值