【Minecraft】強模ADC簡析(下)
書接上文,建議淺看一遍上期。

本文簡要介紹幾類逐次逼近型強模模數(shù)轉(zhuǎn)換器的實現(xiàn)方法,以及該類轉(zhuǎn)換器的0t不可行性證明。
最近升級了游戲版本,所以本文可能涉及到的游戲代碼為來自1.20.1 MCP-Reborn. 但另一方面,考慮到過去幾個版本好像沒有修改相關(guān)內(nèi)容,且機器原型均在1.16.5設(shè)計,至少可以做到向下兼容至1.16.5(我懷疑向下兼容不限于1.13,但不下暴論)。
?

根據(jù)上期專欄中的原理,我們可以在不使用紅石粉的前提下,實現(xiàn)將模擬信號從高位到低位依次轉(zhuǎn)換為數(shù)字信號,這也為超過15強度的強模信號處理打下基礎(chǔ)。
拿回上期原型機最后的一張圖。

這是轉(zhuǎn)換器原型機中一級的結(jié)構(gòu)。原型機不支持強模信號,僅做原理演示。
每一級都有其固有權(quán)重,權(quán)重大小為2^k(k=0,1,…,n;n取決于實際使用場景,且在生存模式中使用堆疊附魔書時不大于9),從高到低排列。
當上級輸入信號小于本級權(quán)重時,本級不輸出信號,上級輸入信號可沿著左路一路直接傳遞到下級;
當上級輸入信號大于等于本級權(quán)重時,本級輸出信號亮起,阻斷左路的直接傳遞,將中路的上級信號減去本級權(quán)重再傳遞到下級。
如此一來,每一級的信號處理相對獨立,下級只需處理上級輸出的信號即可,無需在級與級之間做過多信息交互。
第一期視頻中的兩臺轉(zhuǎn)換器直接沿用思路,只是將阻斷信號的中繼器換成了活塞+實體方塊,使信號可以在比較器中傳輸,實現(xiàn)強模信號判斷與信號傳遞。
一號機器:
?


?
二號機器:
?


?

?
這兩臺機器可以實現(xiàn)在生存模式中實現(xiàn)對最高強度897強模信號的轉(zhuǎn)換,但都有輸出信號波動的問題,這是因為信號處理路走過的路程太長,還未處理完判斷運算,主路便已經(jīng)將上一級信號傳遞至下一級了,這將導(dǎo)致輸出信號在運算過程中有變化。
在第二期視頻中的機器著眼于解決了這些問題,更改了減法方向,并優(yōu)化了結(jié)構(gòu),使得主路的信號傳遞與旁路的信號計算速度匹配,并加快了計算速度。三款機器中第二款設(shè)計有問題且不好改,這里只放第一款和第三款。
第一款:
?

(我真的很喜歡這款,不算地板甚至只有4*4*1)
第三款:
?


?
關(guān)于瞬時強轉(zhuǎn)的不可行性:
在多次壓縮時序后,我曾進行過進一步壓縮運算時間的測試。然而一方面,在越來越緊湊的時序下,不使用外部時鐘或信號,甚至兩級之間不進行信號交互的情況進行運算是及其困難的;另一方面,這種先判斷再減的架構(gòu)從原理上就無法實現(xiàn)瞬時運算,這是動手做之前沒有可能考慮到的。
在這種架構(gòu)中,必然存在兩種優(yōu)先級(TickPriority)的比較器,即優(yōu)先級0(普通比較器)和-1(指向比較器的比較器)兩種,這意味著任意一級的運算都不能在同一個游戲刻內(nèi)的一個計劃刻階段完成,因為游戲不能處理低優(yōu)先級后再回頭去處理高優(yōu)先級的計劃刻,即上級運算完成的輸出要至少等到下一個游戲刻才會被下一級正確處理。
但是這樣說起來,不能在同一個游戲刻運算兩級不代表不能做什么別的東西,1gt每級的該類強模轉(zhuǎn)換是可行的,起碼在時序上看沒有問題,不過那樣需要大量外部電路提前激活比較器,我對無延時電路欠缺深入理解,便不再做進一步嘗試。雖然最近沒有見到其它相關(guān)作品,我還是比較期待2gt或1gt的樣機出現(xiàn),因為1gt樣機意味著可以在8gt內(nèi)處理0-255的模擬信號,相信對強模倉儲等領(lǐng)域都會有所幫助。