《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 從算法到RTL實(shí)現(xiàn),,F(xiàn)PGA工程師該怎么做,?

從算法到RTL實(shí)現(xiàn),F(xiàn)PGA工程師該怎么做?

2022-07-13
作者:Duoqiang Liu
來源:FPGA算法工程師
關(guān)鍵詞: FPGA RTL 算法

  FPGA工程師怎么把算法RTL實(shí)現(xiàn)?FPGA工程師實(shí)現(xiàn)算法的時(shí)候科學(xué)步驟是什么?FPGA的開發(fā)設(shè)計(jì)怎樣進(jìn)行仿真驗(yàn)證,?


        群友們提到一個(gè)很多人都會遇到的現(xiàn)實(shí)問題:

  “把一個(gè)算法用RTL實(shí)現(xiàn),有哪些比較科學(xué)的步驟,?第一步干什么,?第二步干什么?第三步干什么……,?”

  微信圖片_20220713164341.png

  這個(gè)問題,,對于FPGA、ASIC等邏輯電路設(shè)計(jì)人員來講,,是非常重要的問題,。

  通常來講,我們做算法實(shí)現(xiàn),,需要有對標(biāo)的算法模型,,作為驗(yàn)證硬件邏輯設(shè)計(jì)是否正確的參考依據(jù)。

  我們首先要根據(jù)實(shí)際需求,,針對某方面的信號處理問題,,做一個(gè)鏈路級或模塊級快速仿真驗(yàn)證設(shè)計(jì),。最常見的比如通過MATLAB/C/C++等軟件環(huán)境進(jìn)行設(shè)計(jì)和驗(yàn)證。

  微信圖片_20220713164901.png

  軟件環(huán)境可以快速搭建仿真模型,,并且進(jìn)行驗(yàn)證,,為硬件RTL實(shí)現(xiàn)提供參考依據(jù)。在具體算法設(shè)計(jì)時(shí),,必須考慮數(shù)據(jù)流的處理過程:數(shù)據(jù)從哪里來,,數(shù)據(jù)需要經(jīng)過哪些步驟處理,處理之后送到哪里,。

  接下來,,我們需要將MATLAB、C++等算法模型由浮點(diǎn)轉(zhuǎn)為定點(diǎn),,這個(gè)工作可以做好之后再去做邏輯設(shè)計(jì),,也可以省略,但一定要清楚是如何定點(diǎn)的,。

  做好算法設(shè)計(jì)后,,需要進(jìn)行性能評估,看是否符合預(yù)期要求,,不符合則進(jìn)一步優(yōu)化,,或者換一種設(shè)計(jì)方法。

  在做邏輯實(shí)現(xiàn)之前,,還有一個(gè)重要工作,,就是對算法處理步驟進(jìn)行一步一步分解,解決如何從a到b再到c的過程,,落實(shí)到加減乘除。

  當(dāng)算法實(shí)際滿足要求后,,則考慮邏輯實(shí)現(xiàn)的問題,。

  首先,建議采用自頂向下的設(shè)計(jì)思想,,進(jìn)行系統(tǒng)架構(gòu)設(shè)計(jì),,明確整個(gè)處理過程,需要執(zhí)行哪些功能,,涉及哪些接口,。

  微信圖片_20220713164914.png

  接下來,選芯片器件,,評估資源占用情況,,評估需要用多少乘法器,除法器,,DSP,,BRAM,,GT等。

  其次,,評估處理時(shí)間要求,,是否需要實(shí)時(shí)性處理,給予多少時(shí)間來處理,,進(jìn)而評估所需時(shí)鐘頻率,,以及是否需要存在多個(gè)時(shí)鐘域處理。

  微信圖片_20220713165042.png

  對于信號處理系統(tǒng),,有的需要實(shí)時(shí)處理,,有的則不需要實(shí)時(shí)處理。最具挑戰(zhàn)的無疑是實(shí)時(shí)性要求高的通信,、雷達(dá)和圖像等領(lǐng)域的信號處理問題,。

  首先解決信號處理中的算法問題,為實(shí)現(xiàn)某一處理過程,,需要分哪些步驟,,最終得到什么樣的結(jié)果。

  為了實(shí)現(xiàn)實(shí)時(shí)處理,,邏輯電路該怎么去設(shè)計(jì),?

  微信圖片_20220713165058.png

  于是,算法問題既要研究如何處理數(shù)據(jù)流的問題,,也要研究如何快速處理的問題,。

  電路實(shí)現(xiàn)時(shí),則需要考慮資源消耗,、并行處理結(jié)構(gòu),,流水處理和控制邏輯。

  微信圖片_20220713165115.png

  如果有處理速率要求,,則需考慮并行+流水的處理方式,,并考慮單時(shí)鐘下的數(shù)據(jù)位寬。

  同時(shí),,務(wù)必明確數(shù)據(jù)流向,,前后級接口,功能模塊內(nèi)部RTL邏輯處理,,細(xì)化到每個(gè)時(shí)鐘應(yīng)該怎么處理,,step by step。

  微信圖片_20220713165133.png

  以上都比較明確后,,可以著手進(jìn)行RTL設(shè)計(jì),。RTL設(shè)計(jì)的核心,便是寄存器、RAM和FSM的靈活使用,。其中,,F(xiàn)SM占據(jù)了大部分功能。通常情況下,,我們不只是操作純數(shù)據(jù)流,,而是在各種控制信號和參數(shù)下進(jìn)行設(shè)計(jì),此時(shí)涉及各種FSM和選擇器設(shè)計(jì),,并注意是否需要進(jìn)行流控,。

  微信圖片_20220713165148.png

  RTL代碼設(shè)計(jì)完成之后,進(jìn)行TestBench平臺搭建和仿真驗(yàn)證是必要的,,特別是對于復(fù)雜功能模塊或系統(tǒng)設(shè)計(jì)而言,。經(jīng)驗(yàn)再豐富的工程師,也不敢保證,,不經(jīng)過仿真驗(yàn)證直接上板一定沒問題,。

  驗(yàn)證也是一門重要的技術(shù),這也是為什么存在IC驗(yàn)證崗位,,目的就是為芯片成功流片嚴(yán)格把關(guān),,一旦流片失敗,損失重大,,影響深遠(yuǎn),。

  FPGA的開發(fā)設(shè)計(jì),同樣需要進(jìn)行仿真驗(yàn)證,。通常,,我們可以通過算法鏈路產(chǎn)生所需激勵(lì)源,通過TestBench對功能模塊進(jìn)行驗(yàn)證,,并進(jìn)行結(jié)果對比分析,。重點(diǎn)解決兩個(gè)問題:

  一是驗(yàn)證邏輯時(shí)序是否存在問題,比如信號是否對齊,,有無接口處理不當(dāng)導(dǎo)致數(shù)據(jù)丟失等,。

  二是信號處理過程是否得當(dāng),數(shù)據(jù)位寬,、精度等是否符合算法要求。

  解決功能性問題后,,就需要考慮性能問題,。定點(diǎn)是否合適,與浮點(diǎn)算法性能的差異有多大,,或者軟件中的定點(diǎn)處理與邏輯電路定點(diǎn)處理,,誤差有多大。在不斷驗(yàn)證過程中,,優(yōu)化算法設(shè)計(jì)和邏輯電路設(shè)計(jì),。

  剩下的邏輯綜合,、實(shí)現(xiàn)、比特流生成和調(diào)試等環(huán)節(jié),,屬于常規(guī)操作,,但對于邏輯綜合、實(shí)現(xiàn)中的時(shí)序約束和相關(guān)策略設(shè)置,,也是十分重要的,。

  微信圖片_20220713165726.png

  最后,用一張圖總結(jié)如何從算法到RTL實(shí)現(xiàn),。

  微信圖片_20220713165826.png

  本文只是粗略地分析了算法到RTL代碼實(shí)現(xiàn)之間的邏輯關(guān)系,,以及從實(shí)現(xiàn)角度,我們應(yīng)該怎么去著手,。

  具體到某個(gè)信號處理算法實(shí)現(xiàn)時(shí),,必須清楚整個(gè)信號處理過程,對算法一步一步分解,,再對信號流,、定點(diǎn)和接口進(jìn)行設(shè)計(jì)。

  做任何事情之前,,先謀劃布局,,磨刀不誤砍柴工,扎扎實(shí)實(shí)做好每一步,,功到自然成,。


  更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。