一次8位定點乘法,要拆成16次移位累加才能算出結果。一個三階矩陣運算,放到後世晶片裡只是一個時鐘週期的事,在這臺機器上要跑上百個指令週期。
這就好比拿一把算盤去解偏微分方程——不是算盤沒用,是這道題從根上就不該用算盤來解。
硬往上套,就會像現在這樣,暫存器溢位,記憶體佔用直線飆升,因為每次浮點乘法都要吃掉幾十個指令週期,一個矩陣運算下來,模擬機直接趴窩。
“行吧。”
“你狠!”
“不就是做減法嘛,好說!”
江夏看著面前的草稿紙,沒有立刻重新動筆,而是先閉眼回想了一遍剛才的推演過程。
思路本身沒錯,衰減補償的核心邏輯也通。真正的問題出在:他為了遷就幾千電晶體的硬體預算,圖省事把本該由即時反饋閉環完成的動態校正,強行壓縮成了一張靜態分段查詢表
靜態表在理想環境、小入射角下跑得通,可一旦接入真實的天線鏈路,訊號本身的微小擾動、蒙皮介質在大角度下的非線性損耗,都會被查詢表的離散取樣步長逐級放大。誤差疊著誤差,最終在高頻段形成正反饋諧振,直接把整條補償曲線推到了失控邊緣。
說到底,這小子腦子裡裝的是後世的演算法庫,那些演算法是為整合度達到數十億電晶體的晶片設計的,浮點運算隨便跑,矩陣運算隨便堆。但現在他手裡的家底,整合度僅僅是幾千個電晶體,沒有浮點運算單元,沒有硬體乘法器,連除法都得用移位和加減法來模擬。
這就好比開慣了跑車的人突然被塞了一輛牛車,路線是熟的,但每一步都得按牛車的腳程重新規劃。
“靜態表不行……那就給它留個活的尾巴。”江夏重新拿起鉛筆,在草稿紙背面畫了一個極簡的閉環反饋迴路。
“主體還是靠定點迭代算主補償量,再加一路峰值檢測做微調,閘電路佔比壓到百分之十以內,不佔多少資源。讓演算法自己跟自己較勁去。”
核心思路定了,剩下的就是水磨功夫。
他推倒了原先的矩陣運算框架,把所有浮點計算全部轉換成定點縮放運算,設計了動態縮放因子防止溢位。
將整塊補償演算法拆解為逐次逼近的迭代結構,每算一步就用當前近似值回代校驗,反覆迭代直到誤差收斂到可接受範圍。
這是標準的“用時間換空間,用迭代換精度”!
後世幾行程式碼就能搞定的事,現在要拆成幾十步彙編級的運算步驟,每一步都要反覆權衡:暫存器容量夠不夠,運算精度能不能達標,電晶體預算超沒超。多一級運算就多一分延遲,少一步迭代就差一截精度,全程都在走鋼絲。
草稿紙一張接一張地寫滿。
從蒙皮介質的衰減係數模型,到定點數的位寬分配;從迭代收斂的步數控制,到反饋迴路的增益引數;從溢位保護的截斷邏輯,到閘電路的資源預算……
江夏埋著頭寫寫畫畫,鉛筆在紙上擦了又改、改了又畫,指尖都蹭上了淡淡的鉛灰。
就算有著虛擬空間內排除故障的大黃幫忙,他中間還是卡了兩次殼。
一次是反饋深度沒調好,深了容易引發二次振盪,淺了校正量不夠兜住誤差,前後試了四組引數才找到最優區間。
另一次是迭代到第六輪時精度增益已經微乎其微,卻還要吃掉近三成的運算資源,他反覆推演了半個鐘頭,最終狠下心砍到八輪收斂,用0.1dB的精度損失換來了資源餘量。
這種帶著鐐銬跳舞的滋味說不上多憋屈,卻無比真切地讓人感受到工業底子的差距。
等終於把整套適配方案捋順、連電晶體總預算都核算完畢時,窗外的天色已經濛濛泛了魚肚白。
江夏扔下鉛筆,抬手揉了揉發酸的後頸,看著桌上厚厚一疊寫滿公式與框圖的草稿紙,又好氣又好笑。本以為倆小時就能搞定的活,硬生生熬了大半宿。
好在終歸是落地了——方案笨是笨了點,全定點運算、八輪迭代收斂、外加一路極簡閉環微調,電晶體總預算控制在三千二百以內,全形度補償誤差不超過0.5dB,完全滿足工程要求。就憑現在的積體電路工藝,也能實打實做出來。
”。痠手得是就,了拿是拿……“
。聲字打了沒就早裡屋現發才頭回,句一了咕嘀地嘲自他
。了飯早活忙王老大幫房廚去是該應,靜的下樓聽,房書在不也人,了完寫早帖備報的書秘劉小
。邊金的淡淡層一了上鍍都,圖框與式公的曲曲彎彎些那把,上紙稿草的開攤在落,來進漫欞窗著順晨
。貓橘大的袋腦著晃搖直一,片片紙著頂上袋腦隻有還,著帶順
”!!喵!Ψ) ̄? ̄(Ψ“








