2.1.1 Wire
module top_module( input in, output out );
assign out = in;
endmodule
为什么assign赋值是directional wire,可能是模拟电路中电流的单向性
2.1.2 Wire4
module top_module(
input a,b,c,
output w,x,y,z );
assign w = a;
assign x = b;
assign y = b;
assign z = c;
endmodule
2.1.3 非门
module top_module( input in, output out );
assign out = !in;
endmodule
2.1.4 与门
module top_module(
input a,
input b,
output out );
assign out = a&&b;
endmodule
2.1.5 或非门
module top_module(
input a,
input b,
output out );
assign out = !(a||b);
endmodule
2.1.6 异或非门(同或门)
由于不熟悉异或非门的表达式,所以首先想到异或门的逻辑处理结果:
a | b | out |
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
通常通过结果反推出逻辑表达式:
out = !(a&&b)&&(a||b)
该题是用一行代码来表述:
module top_module(
input a,
input b,
output out );
assign out = !(!(a&&b)&&(a||b));
endmodule
2.1.7 Wire声明
default_nettype none
module top_module(
input a,
input b,
input c,
input d,
output out,
output out_n );
wire wire1,wire2;
assign wire1 = a&&b;
assign wire2 = c&&d;
assign out = wire1||wire2;
assign out_n = !(wire1||wire2);
endmodule
2.1.8 7458芯片
这一题相当于2.1.7的复杂版,没有新的知识点,因此直接做一个总结:
门 | 位运算 | 逻辑运算 |
与 | & | && |
或 | | |
|| |
非 | ~ | ! |
异或 | ^ | |
同或(异或非) |