逻辑设计大作业(二)
问题:
设计一个篮球机控制器同步时序逻辑电路
一家公司要求你为篮球机设计一个控制器,若球员总共得到3分,该控制器将显示他赢得了比赛。这台机器里有两个传感器,一个在篮板上,另外一个在篮筐内侧。如果球员投篮,球击中篮板并且穿过篮筐,那么将获得1分;如果篮球没有击中篮板,球只是穿过篮筐,那么获得2分;如果球员击中篮板,而球没有穿过篮筐,那么将失去1分,总分只能降到零,不能变成负数;如果球没有穿过篮筐或击中篮板,那么它将被视为没有投篮,什么都不会发生。一旦玩家得了三分,游戏结束,一盏灯将指示玩家获胜。
可以使用Moore或Mealy电路,可以使用J-K触发器或D触发器。
分析:
Ⅰ.建立原始状态图和状态表
由题设易知,该篮球机控制器同步时序逻辑电路存在四个状态,我们采用A、B、C、D来表示。A代表玩家此时的得分为0分,B代表玩家此时的得分为1分,C代表玩家此时的得分为2分,而D则代表玩家获胜,游戏结束。
在该情境下有四种不同的输入情况,即四种状态转移条件,分别如下:
- 00:获得0分
- 01:获得1分
- 10:获得2分
- 11:失去1分
接下来,我们将会采用Moore型电路来解决这个问题。
原始状态图
原始状态表
现态 | 次态 | 输出 | |||
x1x2=00 | x1x2=01 | x1x2=10 | x1x2=11 | ||
A | A | B | C | A | 0 |
B | B | C | D | A | 0 |
C | C | D | D | B | 0 |
D | d | d | d | d | 1 |
Ⅱ.状态化简
我们可以观察原始状态表,查找是否有冗余或可以合并的状态。但在这个案例中,每个状态都有独特的含义和转移,所以状态化简不适用。
Ⅲ.状态编码
y2 y1 | 0 | 1 |
0 | A | D |
1 | B | C |
根据这个状态分配方案,确定状态A的编码为00,状态B的编码为01,状态C的编码为11,状态D的编码为10。故可得如下二进制状态表:
现 态 y2 y1 | 次态y2(n+1)y1(n+1) | 输出 | |||
x1x2=00 | x1x2=01 | x1x2=10 | x1x2=11 | ||
00 | 00 | 01 | 11 | 00 | 0 |
01 | 01 | 11 | 10 | 00 | 0 |
11 | 11 | 10 | 10 | 01 | 0 |
10 | d | d | d | d | 1 |
Ⅳ.列出激励函数和输出函数表达式
若选用D触发器组成储存电路,根据二进制状态表和D触发器激励表,做出激励函数卡诺图和输出函数卡诺图,如下图所示:
经卡诺图化简,可写出激励函数和输出函数表达式:
Ⅴ.画逻辑电路图
总结:
在完成这个逻辑设计大作业的过程中,我深感理论知识与实际应用结合的重要性。从建立原始状态图和状态表,到状态化简、状态编码,再到激励函数和输出函数的确定,每一步都需要细致的考虑和精确的计算。
这次大作业让我更加明白了Mealy和Moore型电路的区别和应用场景。Mealy型电路的输出依赖于当前状态和输入,而Moore型电路的输出只取决于当前状态。在篮球机控制器的设计中,我们选择了Moore型电路,因为其输出与当前状态有关,符合篮球机控制器的需求。
此外,通过这次实验,我学会了如何使用D触发器来构建储存电路。D触发器具有简单、可靠、易于集成等优点,非常适合用于构建时序逻辑电路。
在实验过程中,我也遇到了一些困难。例如,在状态编码阶段,如何确保每个状态都有唯一的编码是一个挑战。此外,在确定激励函数和输出函数时,也需要仔细考虑各种可能的状态转移情况。
这次实验让我深刻体会到了逻辑设计的重要性。一个好的逻辑设计可以大大简化电路的结构和提高电路的效率。同时,我也意识到了团队合作的重要性。在实验过程中,我们需要互相协作、互相学习,共同解决问题。
总的来说,这次大作业让我收获颇丰。我不仅学到了很多理论知识,还提高了自己的实际操作能力。我相信这些经验将对我未来的学习和工作产生积极的影响。