欢迎光临散文网 会员登陆 & 注册

【Minecraft】强模ADC简析(下)

2023-07-31 23:07 作者:卵夫子version2  | 我要投稿

书接上文,建议浅看一遍上期。

本文简要介绍几类逐次逼近型强模模数转换器的实现方法,以及该类转换器的0t不可行性证明。

最近升级了游戏版本,所以本文可能涉及到的游戏代码为来自1.20.1 MCP-Reborn. 但另一方面,考虑到过去几个版本好像没有修改相关内容,且机器原型均在1.16.5设计,至少可以做到向下兼容至1.16.5(我怀疑向下兼容不限于1.13,但不下暴论)。

 

根据上期专栏中的原理,我们可以在不使用红石粉的前提下,实现将模拟信号从高位到低位依次转换为数字信号,这也为超过15强度的强模信号处理打下基础。

拿回上期原型机最后的一张图。


原型机

这是转换器原型机中一级的结构。原型机不支持强模信号,仅做原理演示。

每一级都有其固有权重,权重大小为2^k(k=0,1,…,n;n取决于实际使用场景,且在生存模式中使用堆叠附魔书时不大于9),从高到低排列。

当上级输入信号小于本级权重时,本级不输出信号,上级输入信号可沿着左路一路直接传递到下级;

当上级输入信号大于等于本级权重时,本级输出信号亮起,阻断左路的直接传递,将中路的上级信号减去本级权重再传递到下级。

如此一来,每一级的信号处理相对独立,下级只需处理上级输出的信号即可,无需在级与级之间做过多信息交互。



第一期视频中的两台转换器直接沿用思路,只是将阻断信号的中继器换成了活塞+实体方块,使信号可以在比较器中传输,实现强模信号判断与信号传递。


一号机器:

 


 


二号机器:

 


 


 


这两台机器可以实现在生存模式中实现对最高强度897强模信号的转换,但都有输出信号波动的问题,这是因为信号处理路走过的路程太长,还未处理完判断运算,主路便已经将上一级信号传递至下一级了,这将导致输出信号在运算过程中有变化。


在第二期视频中的机器着眼于解决了这些问题,更改了减法方向,并优化了结构,使得主路的信号传递与旁路的信号计算速度匹配,并加快了计算速度。三款机器中第二款设计有问题且不好改,这里只放第一款和第三款。

第一款:

 


(我真的很喜欢这款,不算地板甚至只有4*4*1)


第三款:

 


 


关于瞬时强转的不可行性:

在多次压缩时序后,我曾进行过进一步压缩运算时间的测试。然而一方面,在越来越紧凑的时序下,不使用外部时钟或信号,甚至两级之间不进行信号交互的情况进行运算是及其困难的;另一方面,这种先判断再减的架构从原理上就无法实现瞬时运算,这是动手做之前没有可能考虑到的。

在这种架构中,必然存在两种优先级(TickPriority)的比较器,即优先级0(普通比较器)和-1(指向比较器的比较器)两种,这意味着任意一级的运算都不能在同一个游戏刻内的一个计划刻阶段完成,因为游戏不能处理低优先级后再回头去处理高优先级的计划刻,即上级运算完成的输出要至少等到下一个游戏刻才会被下一级正确处理。

但是这样说起来,不能在同一个游戏刻运算两级不代表不能做什么别的东西,1gt每级的该类强模转换是可行的,起码在时序上看没有问题,不过那样需要大量外部电路提前激活比较器,我对无延时电路欠缺深入理解,便不再做进一步尝试。虽然最近没有见到其它相关作品,我还是比较期待2gt或1gt的样机出现,因为1gt样机意味着可以在8gt内处理0-255的模拟信号,相信对强模仓储等领域都会有所帮助。


【Minecraft】强模ADC简析(下)的评论 (共 条)

分享到微博请遵守国家法律