将游戏“ Snake”放在实验板上。第2部分:“向量”显示

第一部分中,我们将一台具有游戏逻辑的机器组装在一起。更确切地说,不是整个游戏,而是蛇本身的运动。在最后一部分中,我们将弄清楚如何连接屏幕并完成整个电路。高分辨率-单击以单击




画一条尾巴


我们已经有一个头在8×8的区域上单独运行,现在我们需要画一条尾巴。这不是一点,而是很多,我们根本无法将坐标(X,Y)传递给解码器。

通常在这样的基质如我们的,一个“ 动态指示 ”被使用,并且该线由行版本:在将每个行的内容作为一个整体被显示时。在我们的条件下,为此,我们要么必须存储所有64位,要么以某种复杂的方式来计算每行的值。但是还有另一种指示方式,从并非所有点都同时亮起的意义上来说,它也是动态的。我们可以使用类似“ 矢量显示»-依次显示每个点,并将其坐标显示在屏幕上。在每个特定时刻,只有一个像素会燃烧,我们将其驱动到整个屏幕上。

由于与我们的得分点可以不同(取决于尾巴的长度),因此最终图像的亮度也会随着游戏过程和蛇本身的生长而变化。为避免这种情况的发生,我们将保留固定数量的帧(头部为10 = 1帧,苹果为1帧,尾部为8帧),并关闭屏幕以显示不必要的点。A-苹果,H-头,T#-尾巴。在wavedrom绘制




要显示,我们还需要一个自动机。这台机器将由几个部分组成:其中一个是帧计数器,它将简单地绕行10个状态。为此,让我们采用IE18和一些逻辑。



最简单的方法就是抬起头来,在这个框架中,我们只需要打开屏幕,然后将自动机器给我们的值传送到x / y总线上即可。为此,请使用AP6缓冲区(您可以使用AP5,但它没有这样方便的引脚排列)。
接下来,我们需要画一条尾巴。为此,我们将记住我们刚刚绘制的状态。添加尾部生长方向(使用方案并显示)。要知道我们需要输出尾部,我们只需使用4位比较器SP1(U13)比较帧号和尾部长度即可。我们将先前的坐标存储在8位寄存器IR37(或IR27,它们刚结束...)中,对于新坐标,我们使用EEPROM(已在第一部分中为其生成的表)。通过将帧号应用于地址输入,可以从使用KP15多路复用器的游戏机上获得所需的尾巴部分的方向。而且,我们不要忘记我们保持头部的方向,该方向与尾巴的生长方向相反,这意味着必须反转其中一个分量。幸运的是,由于KP15具有反向输出,因此您无需安装单独的逆变器。总:


机器看上去有些混乱,但是,其操作原理与其他所有人相同。

苹果


这是我们计划中最“肮脏”的部分。首先,因为它需要苹果的随机位置,并且我们的机器没有随机性下降。其次,我们需要将吃苹果的信号从一台机器扔到另一台机器上,而这些机器的时钟信号却不同。以一种智能的方式,这称为时钟域穿越,但我们将做一个简单的拐杖。

在哪里获得随机?您可以提出一个伪随机生成器,但这将需要大量的逻辑。另一个选择是采用不同频率的时钟,最好不是非常稳定,但是我们的NE555在稳定性上并没有不同。在多谐振荡器电路中,您可以添加一些嘈杂或非线性的元素(我与JFET电阻串联在一起,并在空中悬挂了快门)。我们将收到一个随机坐标,并将其存储在6位计数器中。由于没有现成的6位芯片,因此让我们连接两个IE10机箱:



在同一节点中,我们将放置一个缓冲区,以通过启用信号在屏幕上显示苹果。还有一个比较器,以便了解屏幕上现在显示的内容与苹果(两个SP1)一致。我们不仅将苹果与自身进行比较,为此,我们将使用比较器的第4位,并在一侧给它一个许可信号,在另一侧给它一个许可信号。

在这里,一个肮脏的骇客在等待着我们:根据微电路的串联,分辨率信号的延迟,面包板的寄生电容和月相,比较器的开启时间可能比U23驱动器关闭的时间更早。更清楚地说明正在发生什么:



由于选择了同步方案(稍后介绍),这样的故障将干扰我们。借助延迟,例如从多个逆变器抑制它,甚至将包含和比较扩展到不同的相位,将是正确的。但是我已经很累了,只是用一个C5电容器将其压碎,因为这是电路的肮脏部分:)

计时和采摘新苹果


U7主生成器为帧计时,我们有10个帧,然后使用另一个IE10计数器(U19)将这个频率除以16,并用它为步数计时。头部与苹果重合的信号仅出现在十分之一的帧中,并且直到脉冲切换到该帧的前部才持续。这里我们需要一个同步电路。我决定采用最简单的选择:将信号注入到触发器的异步输入中,并将其重置为接收机的每个新步骤。



在触发器的输出端,我们得到一个信号,以添加另一个尾单元(U6),并启动存储头部坐标(U21,U22)的计数器,这将生成一个新的,可能是随机的苹果。

整个电路



很棒的点击计划。以及它在面包板上的外观-在本文开头

零件和组件


面包板


您可以从Ali那里获得中国开发板,但是接触不良的问题要比直接组装电路花费更多的时间。Ben Eater推荐好的板,这些板是BB830(白色)或WBU-202(黄色)。最好用一套电线来接Wisher(WJW-60B),任何中文套,甚至最便宜的一套,都将用作软线。

微电路


我尝试组装最流行的国内系列KP1533。在西方,这是74ALS系列,但在那里根本不受欢迎。在此方案中,没有时序或负载容量的关键参数,因此您可以安全地使用一系列K555(74LS)甚至K155(SN74)。在进口的芯片中,您可以采用74HC(但为了兼容级别,您必须采用该系列的几乎所有芯片)或74HCT,它与TTL和CMOS系列完全兼容。

寻找家用微电路被证明是一项艰巨的任务:没有人在流行的在线商店中需要它们,很久以前就卖光了所有残余物。我在当地的离线商店收集了一些芯片,其他芯片则必须在互联网上订购,但是许多供应商对修补小订单并不感兴趣,所以它仍然很有趣...

生成的BOM如下所示(通过斜杠表示可能的替换):

──────────────────────────────────────────────────────
          │ 1× *1 74*04
                │ 1× *3 74*00
                │ 1× *1 74*20
         │ 1× *2 74*74
          │ 2× *6 74*245 / *5 74*244 ( )
     │ 3× *1 74*85
  │ 2× *15 74*251 / *7 *151
        │ 1× *18 *163
                │ 4× *18 *163 / *10 *161
        │ 3× *27 74*377 / *37 74*574 ( )
                │ 1× *37 74*574 / *27 74*377 ( )
EEPROM          │ 3× AT28C16 / CAT28C16
     │ 1× *7 74*138 / 4 74*155 ( )
                │ 1× 5611 CD4028 ( ) /  AT28C16
       | 2× 10061 NE555
──────────────────────────────────────────────────────


希望您喜欢这个方案,也许有人会举起手来重复它,或者做一些更有趣的事情))您

可以在YouTube上观看视频:

在上一部分的评论中,他们建议对LED矩阵进行滤波,这是非常好的事情,但是在昏暗的灯光下,您可以不用它进行

滤波可以在此处下载 EEPROM电路和转储文件



二手材料


1. 哈里斯与哈里斯的永不推荐尤里潘楚尔-一般指导。

2. 参考Biryukova S.A.-搜索特定微电路的引脚排列。

这两本书都可以用PDF格式找到,但纸质版本更好

。3. Ben Eater网站及其YouTube频道都为您提供灵感。)

4. Wavedrom用于绘制图表


All Articles