【深圳 IO 攻略】第 4 關(guān):動(dòng)畫 ESPORTS 標(biāo)志

本文首發(fā)于 B 站《深圳 IO》文集(https://www.bilibili.com/read/readlist/rl569860)。原創(chuàng)不易,轉(zhuǎn)載請(qǐng)注明出處。
關(guān)卡展示

這一關(guān)的要求就是按照時(shí)序圖給五個(gè)簡(jiǎn)單 I/O 輸出對(duì)應(yīng)的波形。首先,左側(cè)的點(diǎn)擊 0 和點(diǎn)擊 1 非常簡(jiǎn)單。點(diǎn)擊 0 直接一條 gen 指令就能完成,與此同時(shí)點(diǎn)擊 1 的信號(hào)正好與點(diǎn)擊 0 相反,所以同樣的信號(hào)復(fù)制一份,然后用非門處理一下傳到點(diǎn)擊 1 處就好了。

而對(duì)于喝 0、喝 1 和喝 2 這三個(gè)信號(hào),我們通過(guò)觀察時(shí)序圖,不難發(fā)現(xiàn)這幾點(diǎn)規(guī)律:
喝 0 和喝 2 不會(huì)同時(shí)為 100;
喝 0 開(kāi)啟 6 秒關(guān)閉 1 秒后,喝 2 開(kāi)啟 2 秒關(guān)閉 1 秒,如此循環(huán);
喝 1 僅當(dāng)喝 0 和喝 2 同時(shí)為 0 時(shí)才為 100。
首先我們根據(jù)前兩點(diǎn),用兩條 gen 指令生成喝 0 和喝 2 的時(shí)序圖,很明顯是這樣的:

然后我們發(fā)現(xiàn),喝 1 的邏輯值與喝 0、喝 2 形成了【或非】關(guān)系,即喝 0、喝 2 中任何一個(gè)是 100,喝 1 就是 0;僅當(dāng)喝 0、喝 2 均為 0 時(shí),喝 1 才是 100。
我們?cè)谠姘逯姓业健綥C70G32】這個(gè)【或門】原件,然后將 p0 和 p1 口發(fā)出的信號(hào)復(fù)制一份接到這個(gè)或門的左邊兩個(gè)接口上。右邊的兩個(gè)接口,上面的輸出的是左邊兩個(gè)邏輯值做【或】運(yùn)算的結(jié)果,下面的輸出的是做【或非】運(yùn)算的結(jié)果。我們選擇將右下角的接口和喝 1 端口相連接。最終的電路圖的樣子如下所示:

點(diǎn)擊左下角的【模擬】,稍等片刻,便會(huì)彈出結(jié)算界面:
