1bit半加器adder设计实例
module adder(cout,sum,a,b);
output cout;
output sum;
input a,b;
wire cout,sum;
assign {cout,sum}=a+b;
endmodule
解释说明
(1)assign {cout,sum}=a+b 是连续性赋值
对于线网wire进行赋值,必须以assign或者deassign开始
assign [delay] wire_net = expression
assign 语句逻辑结构就是右边驱动左边。某个值被指派给线网变量,右边操作数可以是标量或者向量的wire或reg;也可以是 function函数,无论何时,右边表达式都重新计算,在指定的延时时间后赋值;
(2){cout,sum}是为拼接操作符,例如两个3bit的a,b拼接在一起后,{a,b}就相当于6bit数
同步4bit全加器adder4
module adder4(cout,sum,ina,inb,cin,clk);
output reg [3:0]sum;
output reg cout;
input [3:0]ina,inb;
input cin,clk;
reg [3:0] tempa,tempb;
reg tempc;
always@(posedge clk)
begintempa=ina;tempb=inb;tempc=cin;
endalways@(posedge clk)
begin
{cout,sum}=tempa+tempb+tempc;
endendmodule