Answers:
显而易见的方法是使用处理器并通过固件完成所有这些操作。
但是,如果由于某些原因我真的需要用石头刀和熊皮来做这件事,那么我会在每个方块上使用一个触发器。每个方块的触发器将通过按下其按钮或四个相邻按钮中的任意一个来切换。当然,这些按钮的按下需要取消。同样,这在固件中会更容易。
硬件解决方案并不会那么复杂,但是所有内容都将被复制25次,从而使其庞大且难以构建。
显然,上面的描述不够清楚。这是每个单元格中的图表:
NAND门的其他4个输入由周围的4个按钮的去抖动信号驱动,这4个按钮也应该触发该正方形的状态。同样,来自此按钮的去抖动信号也到达四个周围单元中每个单元的“与非”门输入之一。
如果要使用离散逻辑构建尺寸高达7x7的此类游戏,则最实际的设计可能是使用循环移位寄存器来保持电路板的状态,并使用一个六位计数器来跟踪移位数据在寄存器中的位置。通过移位器将数据以8位为一组进行移位,以驱动多路复用显示器并扫描多路复用键盘。有一个七位的“翻转灯”计数器,该计数器将在后六位不为零时或在高位的状态与当前解码的按钮的状态匹配时运行。只要满足以下所有条件,请翻转当前指示灯的状态:
6-bit counter isn't xxx111
6-bit counter isn't 111xxx
7-bit counter isn't xxxxx00
7-bit counter isn't xx00xxx
7-bit counter is 00xx0xx
请注意,虽然解码这些计数器状态需要大量的逻辑,但与单独实现每盏灯所需的芯片数量相比,这是微不足道的。