赞
踩
组合逻辑
,通常与assign
关键字一起使用。它在顶层模块或过程块外部进行,用于对wire
类型的信号赋值。特点:
wire
类型信号。module blink_led(
input wire a,
output wire b
);
assign b = a;
endmodule
module combinational_logic (
input wire a,
input wire b,
output wire c
);
// c 始终等于 a 和 b 的逻辑与
assign c = a & b;
endmodule
always
或initial
块)内,适用于描述组合逻辑或时序逻辑
。过程赋值可以进一步分为两种:阻塞赋值(=
)和非阻塞赋值(<=
)。=
)always @(*)
块中使用。module blink_led( clk,reset_n,a,b,c,out ); input clk; input reset_n; input a,b,c; output reg [1:0] out; reg [1:0] d; always@(posedge clk or negedge reset_n) if(!reset_n)begin out =2'b0; d =0; end else begin out =d+c; d =a+b; end endmodule
module blink_led( clk,reset_n,a,b,c,out ); input clk; input reset_n; input a,b,c; output reg [1:0] out; reg [1:0] d; always@(posedge clk or negedge reset_n) if(!reset_n)begin out =2'b0; d =0; end else begin d =a+b; out =d+c; // 这里的 out 使用更新后的 d 值,电路图中少一一个寄存器 end endmodule
<=
)always @(posedge clk)
块中使用。module mux2( clk,reset_n,a,b,c,out ); input clk; input reset_n; input a,b,c; output reg [1:0] out; reg [1:0] d; always@(posedge clk or negedge reset_n) if(!reset_n)begin out =2'b0; d =0; end else begin d <=a+b; out <=d+c;// 这里的 out 使用更新前的 d 值 end endmodule
连续赋值 vs. 过程赋值:
wire
类型信号,描述组合逻辑。reg
或integer
等类型信号,描述组合或时序逻辑。阻塞赋值 vs. 非阻塞赋值:
always @(*)
块中。always @(posedge clk)
块中。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。