本系列内容来自于知乎专栏,链接如下:https://zhuanlan.zhihu.com/c_1131528588117385216 本系列文章将和读者一起巡礼数字逻辑在线学习网站 HDLBits 的教程与习题,并附上解答和一些作者个人的理解,相信无论是想 7 分钟精通 Verilog,还是对 Verilog 和数电知识查漏补缺的同学,都能从中有所收获。
Problem 45 NOR
实现如下电路:
解析:一个或非门
代码语言:javascript复制module top_module (
input in1,
input in2,
output out);
assign out = ~(in1 | in2);
endmodule
Problem 46 Another gate
实现如下电路:
解析:一个与门,但输入in2需要取反。
代码语言:javascript复制module top_module (
input in1,
input in2,
output out);
assign out = in1 & (~in2);
endmodule
Problem 47 Two gates
实现如下电路:
解析:如上图所示, 一个异或门,一个同或门,我声明一个wire型的temp来存放同或门的输出。
代码语言:javascript复制module top_module (
input in1,
input in2,
input in3,
output out);
wire temp;
assign temp = in1 ^~ in2;
assign out = temp ^ in3;
endmodule
Problem 48 More logic gates
本题希望我们用两输入的组合电路来实现如下功能,该电路共用于7个输出,具体情况如下:
- out_and: a and b
- out_or: a or b
- out_xor: a xor b
- out_nand: a nand b
- out_nor: a nor b
- out_xnor: a xnor b
- out_anotb: a and-not b
解析:
(本次练习期望仅使用七行语句)
代码语言:javascript复制//Module Declaration
module top_module(
input a, b,
output out_and,
output out_or,
output out_xor,
output out_nand,
output out_nor,
output out_xnor,
output out_anotb
);
assign out_and = a & b;
assign out_or = a | b;
assign out_xor = a ^ b;
assign out_nand = ~(a & b);
assign out_nor = ~(a | b);
assign out_xnor = ~(a ^ b);
assign out_anotb = a & (~b);
endmodule
Problem 49 : 7420 chip
在此之前,我们已经复习了Wire, GND, NOR 和 Another gate,这对我们编写7420 chip的电路已经打下了基础。
牛刀小试
7420 chip是拥有两组4输入的与非门芯片,本练习需要构造一个与7420 chip功能一样的电路,拥有8个输入与2个输出。
解析:7420 chip的电路很简单,仅有两个4输入的与非门,两条assign语句便可实现。
(本次练习期望仅使用两行语句)
代码语言:javascript复制module top_module
(
input p1a, p1b, p1c, p1d,
output p1y,
input p2a, p2b, p2c, p2d,
output p2y
);
assign p1y = ~(p1a & p1b & p1c & p1d);
assign p2y = ~(p2a & p2b & p2c & p2d);
endmodule