最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)化引擎的評論 (共 條)

分享到微博請遵守國家法律
济南市| 丽水市| 佛山市| 贵定县| 凤城市| 红原县| 阿瓦提县| 青阳县| 阿坝县| 西吉县| 普陀区| 汉川市| 墨脱县| 曲阳县| 新巴尔虎右旗| 娄底市| 比如县| 邛崃市| 咸阳市| 彭阳县| 瓦房店市| 无为县| 鄱阳县| 龙口市| 石台县| 河南省| 崇仁县| 贵德县| 南华县| 叙永县| 汝阳县| 闵行区| 玉田县| 万源市| 雅江县| 遂平县| 苏尼特左旗| 扎兰屯市| 精河县| 祁阳县| 黎城县|