一生一芯F3

分析门电路

题目

尝试分析一下门电路的行为和功能.
[分析门电路.png]

A B P1 P2 N1 N2 Y
0 0 导通 导通 截止 截止 1
0 1 导通 截止 截止 导通 0
1 0 截止 导通 导通 截止 0
1 1 截止 截止 导通 导通 0

根据上表分析,该电路实现了一个2输入或非门.

或门的晶体管结构

题目

以下是或门的逻辑符号, 尝试画出或门的晶体管结构.
或门.png

或门可以在上题或非门后串联一个非门电路构成,如下图所示:
或门的晶体管结构.png

对比两种实现的晶体管所需要的数量

不同的三输入与非门实现.png
左图的使用一个与门和一个与非门实现,与门需要6个晶体管,与非门则需要4个晶体管,故共需要10个晶体管.
右图则仅需6个晶体管.

用其他门电路搭建异或门

题目

尝试在 Logisim 中用上文提到的门电路搭建一个异或门. 搭建后, 通过仿真检查你的方案是否正确.

实现正确后, 计算你的方案使用了多少个晶体管.
用其他门电路搭建异或门.png
如图所示,使用了两个非门,三个与非门,共需16个晶体管

设计同或门

题目

还有另一种操作是"同或"操作, 当输入A和B相同时, 结果为1, 否则为0. 同或操作可以认为是异或操作结果的取反.
尝试在Logisim中用上文提到的门电路搭建一个同或门. 搭建后, 通过仿真检查你的方案是否正确.

同或门.png

搭建2-4译码器

题目

尝试在 Logisim 中用门电路搭建一个2-4译码器, 它有2位输入, 4位输出. 搭建后, 通过仿真检查你的方案是否正确.

如下图所示:
2-4译码器.png

Logisim中的子电路功能

题目

译码器在后续的数字电路设计中会经常用到, 为了避免用户重复设计相同的电路, Logisim 提供了子电路功能, 相应电路只需要设计一次, 后续即可反复实例化. 具体操作方式请阅读官方手册中的Subcircuits(子电路)部分.

子电路如图所示:
2-4译码器子电路.png

译码器的拓展

题目

3-8译码器有3位输入, 8位输出. 尝试实例化若干个2-4译码器(具体数量交给你的思考), 并添加少量门电路, 从而实现3-8译码器的功能. 搭建后, 通过仿真检查你的方案是否正确.
使用2个2-4译码器组成3-8译码器,如图所示:
3-8译码器.png

搭建七段数码管译码器

题目

尝试在Logisim中通过门电路搭建一个七段数码管译码器, 它有4位输入和8位输出, 分别与拨码开关和七段数码管相连. 七段数码管译码器支持十进制数字的显示, 即当输入对应0-9时, 七段数码管显示对应的数字; 对于其他输入, 七段数码管只显示小数点. 搭建后, 通过仿真检查你的实现是否正确.

   a
  ---
f| g |b
  ---
e|   |c
  ---   .h
   d

对于4位输入,共有16种状态,我们可以使用8个4-16译码器分别对应8个数码管,然后在4-16数码管后面接上一个n位或门,将某个数码管对应的译码器的“亮”的状态所对应的输出连接到或门上。比如对于a数码管(假设是数码管排列如上图所示),会在02356789共8种状态中点亮,则将4-16译码器对应的输出连接到8位或门,然后将或门的输出连接到a输出端口。七段数码管译码器如下图所示:
七段数码管译码器.png
将七段数码管译码器连接数码管:
七段数码管.png

搭建七段数码管译码器(2)

题目

尝试在Logisim中通过门电路搭建一个支持十六进制数字的七段数码管译码器. 和上述的十进制数字相比, 当输入对应10-15时, 七段数码管分别显示A, b, C, d, E, F. 搭建后, 通过仿真检查你的实现是否正确.

这里只需要在上一题的基础上为各个输出添加10-15状态的连线。(这里没有删除小数点的输出)
七段数码管译码器2.png
七段数码管2.png

搭建编码器

题目

尝试在Logisim中通过门电路搭建一个16-4编码器, 它有16位输入和4位输出, 分别与拨码开关和七段数码管译码器相连, 使得编码器的输出结果通过十六进制数字显示在七段数码管中. 搭建后, 通过仿真检查你的实现是否正确.

16-4编码器门电路如下:
4-16译码器.png

通过七段数码管译码器与七段数码管相连:
16-4DecoderTest.png

搭建4-2优先编码器

题目

根据上述真值表, 尝试列出每一位输出的逻辑表达式. 然后尝试在Logisim中通过门电路搭建一个4-2优先编码器. 搭建后, 通过仿真检查你的方案是否正确.
实现后, 对比4-2编码器和4-2优先编码器所需的门电路数量.

4-2优先编码器如下图所示,其中使用2个或门、一个与门、一个非门。相对应的4-2编码器进去2个或门。

4-2PriorityEncoder.png

搭建1位2选1选择器

题目

尝试在Logisim中通过门电路搭建一个1位2选1选择器. 搭建后, 通过仿真检查你的方案是否正确.

1位2选1选择器.png

搭建3位4选1选择器

题目

尝试画出3位4选1选择器的电路结构图, 然后在Logisim中通过门电路搭建一个3位4选1选择器. 搭建后, 通过仿真检查你的方案是否正确.

所谓3位4选1选择器,就是对四个位数为3的数据进行选择输出的组合电路。在此我们复用之前构造的2-4译码器组件。
3位4选1选择器电路结构如下所示:
3位4选1选择器.png

搭建可切换进位计数制的七段数码管

题目

通过5个拨码开关和1个七段数码管, 实现如下功能: 其中4个拨码开关当作数据输入, 剩下1个拨码开关作为进位计数制的选择, 当选择信号为0时, 七段数码管以十进制方式显示数据; 当选择信号为1时, 七段数码管以十六进制方式显示数据. 在输入数据为10-15时, 两种显示方式有所不同.

在此我们复用之前构造的两个七段数码管译码器模块,然后使用一个8位2选1选择器来实现进制切换的功能,这里直接使用Logisim提供的多路选择器来进行构造。
其中显示逻辑与之前的一致,10进制的情况下当输入非0~9时,只点亮小数点。如下图所示:
可切换进位计数制的七段数码管.png

搭建比较器

题目

尝试在Logisim中通过门电路搭建一个4位比较器, 然后通过两组拨码开关对比两组数据是否相等, 若相等, 则点亮一个LED灯. 搭建后, 通过仿真检查你的方案是否正确.

4位比较器.png

搭建1位全加器

题目

尝试列出1位全加器的真值表, 并在Logisim中通过门电路搭建一个1位全加器. 搭建后, 通过仿真检查你的方案是否正确.

1位全加器真值表如下:

Cin A B S Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

电路图如下:
1位全加器.png

搭建4位加法器

题目

尝试在Logisim中通过门电路搭建一个4位加法器, 用七段数码管按十六进制显示加法器的两个输入和结果, 并用一个LED灯指示加法结果是否产生进位. 搭建后, 通过仿真检查你的方案是否正确.

电路如下所示:
4位全加器.png

搭建4位减法器

题目

根据4位加法器的设计思路, 尝试在Logisim中通过门电路搭建一个4位减法器, 用七段数码管按十六进制显示减法器的两个输入和结果, 并用一个LED灯指示减法结果是否产生借位. 搭建后, 通过仿真检查你的方案是否正确.

按照加法器的思路,我们首先搭建1位全减器(Full Subtractor),全减器的真值表如下,其中Cin表示来自低位的借位,Cout表示向高位结尾,A为被减数,B为减数:

A B Cin S Cout
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 0 1
1 0 0 1 0
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1

全减器的电路如下:
全减器.png

然后通过1位全减器搭建4位减法器,如下图所示:
4位减法器.png