关注 望森FPGA 查看更多FPGA资讯
这是望森的第 11 期分享
作者 | 望森
来源 | 望森FPGA
目录
[1 3 变量](#1 3 变量)
[2 4 变量](#2 4 变量)
[3 4 变量](#3 4 变量)
[4 4 变量](#4 4 变量)
[5 最小 SOP 和 POS](#5 最小 SOP 和 POS)
[6 卡诺图](#6 卡诺图)
[7 卡诺图](#7 卡诺图)
[8 使用多路复用器实现的卡诺图](#8 使用多路复用器实现的卡诺图)
本文中的代码都能够正常运行,请放心食用😋~
练习的官方网站是:https://hdlbits.01xz.net/
注:作者将每个练习的知识点都放在了题目和答案之后
1 3 变量
题目:
实现下面的卡诺图所描述的电路。
在编码之前尝试简化 k-map。尝试乘积和形式和乘积和形式。我们无法检查您是否对 k-map 进行了最佳简化。但我们可以检查您的简化是否等效,并且可以检查您是否可以将 k-map 转换为电路。
答案:
1.卡诺图化简
2.逻辑表达式
out = a + b + c;
3.代码
我的答案:
module top_module(
input a,
input b,
input c,
output out );
always@(*)begin
out = a | b | c;
end
endmodule
参考答案:
module top_module(
input a,
input b,
input c,
output out
);
// SOP form: Three prime implicants (1 term each), summed.
// POS form: One prime implicant (of 3 terms)
// In this particular case, the result is the same for both SOP and POS.
assign out = (a | b | c);
endmodule
2 4 变量
题目:
实现下面的卡诺图所描述的电路。
在编码之前尝试简化 k-map。尝试乘积和形式和乘积和形式。我们无法检查您是否对 k-map 进行了最佳简化。但我们可以检查您的简化是否等效,并且可以检查您是否可以将 k-map 转换为电路。
答案:
1.卡诺图化简
2.逻辑表达式
out = b'c'+ a'd' + bcd + acd;
3.代码
我的答案:
module top_module(
input a,
input b,
input c,
input d,
output out );
always@(*)begin
out = (~b & ~c) | (~a & ~d) | (b & c & d) | (a & c & d);
end
endmodule
3 4 变量
题目:
实现下面的卡诺图所描述的电路。
在编码之前尝试简化 k-map。尝试乘积和形式和乘积和形式。我们无法检查您是否对 k-map 进行了最佳简化。但我们可以检查您的简化是否等效,并且可以检查您是否可以将 k-map 转换为电路。
答案:
1.卡诺图化简
2.逻辑表达式
out = b'c + a;
3.代码
module top_module(
input a,
input b,
input c,
input d,
output out );
always@(*)begin
out = a | (~b & c);
end
endmodule
知识点:
d为无关项,在卡诺图中既可以当作1也可以当作0;
4 4 变量
题目:
实现下面的卡诺图所描述的电路。
在编码之前尝试简化 k-map。尝试乘积和形式和乘积和形式。我们无法检查您是否对 k-map 进行了最佳简化。但我们可以检查您的简化是否等效,并且可以检查您是否可以将 k-map 转换为电路。
答案:
1.卡诺图化简
无法化简
2.逻辑表达式
找规律(同或、异或)
out = ~(a ^ b) & (c ^ d) | (a ^ b) & ~(c ^ d);
3.代码
module top_module(
input a,
input b,
input c,
input d,
output out );
always@(*)begin
out = ~(a ^ b) & (c ^ d) | (a ^ b) & ~(c ^ d);
end
endmodule
5 最小 SOP 和 POS
题目:
具有四个输入(a、b、c、d)的单输出数字系统在输入出现 2、7 或 15 时生成逻辑 1,在出现 0、1、4、5、6、9、10、13 或 14 时生成逻辑 0。数字 3、8、11 和 12 的输入条件在此系统中永远不会发生。例如,7 分别对应于 a、b、c、d 设置为 0、1、1、1。
确定最小 SOP 形式的输出 out_sop 和最小 POS 形式的输出 out_pos。
答案:
1.卡诺图绘制
注:x为无关项
2.卡诺图化简
(1)最小项之和
(2)最大项之和
3.逻辑表达式
(1)最小项之和
out_sop = cd | ~a~bc;
(2)最大项之和
out_pos = ~(~c | b~d | a~d) = c ~(b~d) ~(a~d) = c (~b | d) (~a | d);
4.代码
module top_module (
input a,
input b,
input c,
input d,
output out_sop,
output out_pos
);
always@(*)begin
out_sop = (c & d) | (~a & ~b & c);
out_pos = c & (~b | d) & (~a | d);
end
endmodule
知识点:
-
SOP形式指找出所有输出为1(最小项)的输入组合
-
POS形式指找出所有输出为0(最大项)的输入组合,画圈之后的正负是反着写的
6 卡诺图
题目:
考虑下面的卡诺图所示的函数 f。
实现这个函数。d 是无关的,这意味着您可以选择输出任何方便的值。
答案:
1.卡诺图化简
2.逻辑表达式
f = (~x1 & x3) | (x2 & x4);
3.代码
module top_module (
input [4:1] x,
output f );
always@(*)begin
f = (~x[1] & x[3]) | (x[2] & x[4]);
end
endmodule
7 卡诺图
题目:
考虑下面卡诺图中所示的函数 f。实现此函数。
答案:
1.卡诺图化简
2.逻辑表达式
f = (~x2 & ~x4) | (~x1 & x3) | (x2 & x3 & x4);
3.代码
module top_module (
input [4:1] x,
output f
);
always@(*)begin
f = (~x[2] & ~x[4]) | (~x[1] & x[3]) | (x[2] & x[3] & x[4]);
end
endmodule
8 使用多路复用器实现的卡诺图
题目:
对于以下卡诺图,给出使用一个 4 对 1 多路复用器和尽可能多的 2 对 1 多路复用器(但尽可能少)的电路实现。您不得使用任何其他逻辑门,并且必须使用 a 和 b 作为多路复用器选择器输入,如下面的 4 对 1 多路复用器所示。
您只实现标记为 top_module 的部分,这样整个电路(包括 4 对 1 多路复用器)就实现了卡诺图。
1.卡诺图化简
2.逻辑表达式
mux_in = (abcd) | (~a~bd) | (~bc~d) | (a~b~d);
根据题目要求,整理分离ab与cd:
mux_in = (~a~b) & (c | d) | (a~b) & (cd) | (ab) & (~d);
mux_in[0] = c | d; //ab = 00时
mux_in[1] = 0; //ab = 01时
mux_in[2] = ~d; //ab = 10时
mux_in[3] = cd; //ab = 11时
3.代码
module top_module (
input c,
input d,
output [3:0] mux_in
);
always@(*)begin
mux_in[0] = c | d;
mux_in[1] = 1'b0;
mux_in[2] = ~d;
mux_in[3] = c & d;
end
endmodule
- END -
公z号/CSDN搜索【望森FPGA】,查看更多FPGA资讯~
相关推荐文章,点击跳转: