《工業興國,從初級工程師開始》第1325章 能做減法的,那都不叫事!(2)

作者:雞蛋番茄輪番炒·20天前

一次8位定點乘法,要拆成16次移位累加才能算出結果。一個三階矩陣運算,放到後世晶片裡只是一個時鐘週期的事,在這臺機器上要跑上百個指令週期。

這就好比拿一把算盤去解偏微分方程——不是算盤沒用,是這道題從根上就不該用算盤來解。

硬往上套,就會像現在這樣,暫存器溢位,記憶體佔用直線飆升,因為每次浮點乘法都要吃掉幾十個指令週期,一個矩陣運算下來,模擬機直接趴窩。

“行吧。”

“你狠!”

“不就是做減法嘛,好說!”

江夏看著面前的草稿紙,沒有立刻重新動筆,而是先閉眼回想了一遍剛才的推演過程。

思路本身沒錯,衰減補償的核心邏輯也通。真正的問題出在:他為了遷就幾千電晶體的硬體預算,圖省事把本該由即時反饋閉環完成的動態校正,強行壓縮成了一張靜態分段查詢表

靜態表在理想環境、小入射角下跑得通,可一旦接入真實的天線鏈路,訊號本身的微小擾動、蒙皮介質在大角度下的非線性損耗,都會被查詢表的離散取樣步長逐級放大。誤差疊著誤差,最終在高頻段形成正反饋諧振,直接把整條補償曲線推到了失控邊緣。

說到底,這小子腦子裡裝的是後世的演算法庫,那些演算法是為整合度達到數十億電晶體的晶片設計的,浮點運算隨便跑,矩陣運算隨便堆。但現在他手裡的家底,整合度僅僅是幾千個電晶體,沒有浮點運算單元,沒有硬體乘法器,連除法都得用移位和加減法來模擬。

這就好比開慣了跑車的人突然被塞了一輛牛車,路線是熟的,但每一步都得按牛車的腳程重新規劃。

“靜態表不行……那就給它留個活的尾巴。”江夏重新拿起鉛筆,在草稿紙背面畫了一個極簡的閉環反饋迴路。

“主體還是靠定點迭代算主補償量,再加一路峰值檢測做微調,閘電路佔比壓到百分之十以內,不佔多少資源。讓演算法自己跟自己較勁去。”

核心思路定了,剩下的就是水磨功夫。

他推倒了原先的矩陣運算框架,把所有浮點計算全部轉換成定點縮放運算,設計了動態縮放因子防止溢位。

將整塊補償演算法拆解為逐次逼近的迭代結構,每算一步就用當前近似值回代校驗,反覆迭代直到誤差收斂到可接受範圍。

這是標準的“用時間換空間,用迭代換精度”!

後世幾行程式碼就能搞定的事,現在要拆成幾十步彙編級的運算步驟,每一步都要反覆權衡:暫存器容量夠不夠,運算精度能不能達標,電晶體預算超沒超。多一級運算就多一分延遲,少一步迭代就差一截精度,全程都在走鋼絲。

草稿紙一張接一張地寫滿。

從蒙皮介質的衰減係數模型,到定點數的位寬分配;從迭代收斂的步數控制,到反饋迴路的增益引數;從溢位保護的截斷邏輯,到閘電路的資源預算……

江夏埋著頭寫寫畫畫,鉛筆在紙上擦了又改、改了又畫,指尖都蹭上了淡淡的鉛灰。

就算有著虛擬空間內排除故障的大黃幫忙,他中間還是卡了兩次殼。

一次是反饋深度沒調好,深了容易引發二次振盪,淺了校正量不夠兜住誤差,前後試了四組引數才找到最優區間。

另一次是迭代到第六輪時精度增益已經微乎其微,卻還要吃掉近三成的運算資源,他反覆推演了半個鐘頭,最終狠下心砍到八輪收斂,用0.1dB的精度損失換來了資源餘量。

這種帶著鐐銬跳舞的滋味說不上多憋屈,卻無比真切地讓人感受到工業底子的差距。

等終於把整套適配方案捋順、連電晶體總預算都核算完畢時,窗外的天色已經濛濛泛了魚肚白。

江夏扔下鉛筆,抬手揉了揉發酸的後頸,看著桌上厚厚一疊寫滿公式與框圖的草稿紙,又好氣又好笑。本以為倆小時就能搞定的活,硬生生熬了大半宿。

好在終歸是落地了——方案笨是笨了點,全定點運算、八輪迭代收斂、外加一路極簡閉環微調,電晶體總預算控制在三千二百以內,全形度補償誤差不超過0.5dB,完全滿足工程要求。就憑現在的積體電路工藝,也能實打實做出來。

”。痠手得是就,了拿是拿……“

。聲字打了沒就早裡屋現發才頭回,句一了咕嘀地嘲自他

。了飯早活忙王老大幫房廚去是該應,靜的下樓聽,房書在不也人,了完寫早帖備報的書秘劉小

。邊金的淡淡層一了上鍍都,圖框與式公的曲曲彎彎些那把,上紙稿草的開攤在落,來進漫欞窗著順

。貓橘大的袋腦著晃搖直一,片片紙著頂上袋腦隻有還,著帶順

”!!喵!Ψ) ̄? ̄(Ψ“

猜你喜歡

同題材或同分類的其他作品。