HDLBits (10) — 7458芯片
2021-09-13 00:07 作者:僚机Wingplane | 我要投稿
本题链接:
https://hdlbits.01xz.net/wiki/Wire_7458
7458 是具有四个与门和两个或门的芯片,它比 7420 稍微复杂一点。
创建一个与 7458 芯片功能相同的模块。 它有10个输入和2个输出。 您可以选择使用分配( assign )语句来驱动每条输出线网,或者您可以选择声明4条线网用作中间信号,其中每条内部线网都由一个与门的输出驱动。 如需额外练习,请同时尝试两种方法。

预期的解决方案长度:大约 2-10 行。
模块声明:
module top_module (
input p1a, p1b, p1c, p1d, p1e, p1f,
output p1y,
input p2a, p2b, p2c, p2d,
output p2y );
提示
您需要用一个值驱动两个信号(p1y 和 p2y)

题目
module top_module (
input p1a, p1b, p1c, p1d, p1e, p1f,
output p1y,
input p2a, p2b, p2c, p2d,
output p2y );
endmodule

答案
module top_module (
input p1a, p1b, p1c, p1d, p1e, p1f,
output p1y,
input p2a, p2b, p2c, p2d,
output p2y );
wire g1, g2, g3, g4;
assign g1 = p1a & p1b & p1c;
assign g2 = p1d & p1e & p1f;
assign g3 = p2a & p2b;
assign g4 = p2c & p2d;
assign p2y = g3 | g4;
assign p1y = g1 | g2;
endmodule
module top_module (
input p1a, p1b, p1c, p1d, p1e, p1f,
output p1y,
input p2a, p2b, p2c, p2d,
output p2y );
assign p2y = (p2a & p2b) | (p2c & p2d);
assign p1y = (p1a & p1b & p1c) | (p1d & p1e & p1f);
endmodule

输出波形

