verilog最最基本的知识 reg wire

1.输出寄存器reg类型

module  QQ(a,b,c,clk);
input  a,b,clk;
output reg c;
always@(posedge clk) c=a+b;
endmodule 

在这里插入图片描述
可以看到输出c有一个寄存器驱动
2.输出寄存器类型,但没有触发条件时,软件会自动将触发器综合掉

module  QQ(a,b,c,clk);
input  a,b,clk;
output reg c;
always@* c=a+b;
endmodule 

在这里插入图片描述
3输出线型wire
(1)在always块中赋值给wire类型是不允许的

module  QQ(a,b,c,clk);
input  a,b,clk;
output wire c;
always@* c=a+b;
endmodule 

会报错Error (10137): Verilog HDL Procedural Assignment error at QQ.v(4): object “c” on left-hand side of assignment must have a variable data type
assignment:赋值
(2)输入定义为reg类型是不允许的

module  QQ(a,b,c,clk);
input reg a,b,clk;
output  c;
assign c=a+b;
endmodule  

报错Error (10279): Verilog HDL Port Declaration error at QQ.v(2): input port(s) cannot be declared with type “reg”
寄存器类型一般需要信号触发的,已经是输入了还怎么触发?这里quartus直接报错,不会综合掉
(3)正确写法

module  QQ(a,b,c,clk);
input a,b,clk;
output  c;
assign c=a+b;
endmodule 

在这里插入图片描述

总结:

1.reg类型只能在always块中赋值,wire在assign中赋值
2.输入只能wire型,输出可wire可reg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值