无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【深圳 IO 攻略】第 6 關:調(diào)諧最優(yōu)化引擎

2022-06-01 08:22 作者:ココアお姉ちゃん  | 我要投稿

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

關卡展示

這一關我們需要參考一下數(shù)據(jù)手冊來決定該如何編寫我們的代碼:

這一頁的核心就一句話:AUDIO_OUT = (AUDIO_IN - 50) × 4 + 50。

然后我們觀察時序圖,發(fā)現(xiàn)當【最優(yōu)化】端口信號為 0 時,我們將聲音信號原樣輸出;而當【最優(yōu)化】端口信號為 100 時,我們需要將聲音信號按照上面的公式進行最優(yōu)化處理后輸出。

首先我們遇到了第一個難題,就是這一關有三個簡單 IO 信號,但是我們的芯片只有兩個 p 口可以使用。這時候,我們發(fā)現(xiàn)【最優(yōu)化】這個端口只有 0 和 100 兩種信號,因此可以用之前提到的 DX-300 轉(zhuǎn)換成 x 口信號,這樣同一塊芯片就能接收 3 個簡單 IO 口的信號了。如圖所示:

因為最優(yōu)化接在 DX-300 的 p2 接口上,DX-300 里的三位數(shù)只有百位會受影響,所以原始的 0/100 信號都會原樣輸出到 MC4000 的 x0 口上。

然后,有了以往的經(jīng)驗后,我們很容易寫出這樣的代碼:

首先使用 tcp 測試指令讓 x0 和 50 比大?。╰cp x0 50)。比 50 小說明最優(yōu)化信號為 0,直接將 p0 的信號原樣輸出給 p1(- mov p0 p1)。比 50 大說明最優(yōu)化信號為 100,需要將 p0 的信號處理后再發(fā)送給 p1。此時,我們將 p0 的值存入 acc(+ mov p0 acc),然后依次進行 -50(+ sub 50),×4(+ mul 4)和 +50(+ add 50)的運算后,將運算后的結(jié)果發(fā)送給 p1(+ mov acc p1)。以上指令執(zhí)行完畢后,休眠一個周期(slp 1),準備進入下一個周期。

一個很容易想到的優(yōu)化方案

有沒有覺得以上算術(shù)過程過于繁瑣?其實數(shù)據(jù)手冊里給我們的公式并沒有化簡到最簡形式。這個公式其實小學生都會化簡:

AUDIO_OUT

= (AUDIO_IN - 50)?×?4 + 50

= AUDIO_IN × 4 - 200 + 50

= AUDIO_IN × 4 - 150

最優(yōu)化的過程只需要乘和減兩步運算就行了,不需要三步運算。因此以上代碼中的

可以縮減為以下兩行:

最終的設計方案如下:

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


【深圳 IO 攻略】第 6 關:調(diào)諧最優(yōu)化引擎的評論 (共 條)

分享到微博請遵守國家法律
武平县| 巫山县| 承德市| 会昌县| 松江区| 神农架林区| 西峡县| 宁安市| 华宁县| 游戏| 襄垣县| 大竹县| 广昌县| 西平县| 龙井市| 郯城县| 即墨市| 永清县| 织金县| 舒城县| 龙江县| 电白县| 连云港市| 任丘市| 永靖县| 洱源县| 班玛县| 利川市| 辛集市| 新田县| 报价| 南昌县| 澄城县| 湖南省| 荔浦县| 通道| 砀山县| 通江县| 蕉岭县| 长武县| 柏乡县|