0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

從算法到RTL實現(xiàn)的問題

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-04-28 09:50 ? 次閱讀

針對近日技術交流群里討論的算法與RTL實現(xiàn)問題,寫篇文章,做一次總結。

微信公眾號《FPGA算法工程師》技術交流群里,交流氣氛十分熱烈,大家針對學習和工作中遇到的難點進行交流和討論,可謂受益匪淺。

新手遇到的是新問題,對于有相關經驗的工程師而言,可能都遇到過。

作為算法、FPGA和IC等集中交流的平臺,群賢畢至,集思廣益,解決大家對相關知識和技術上的困惑,讓問題變得更簡單。

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

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

25fd8232-c68c-11ec-bce3-dac502259ad0.png

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

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

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

26274ebe-c68c-11ec-bce3-dac502259ad0.png

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

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

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

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

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

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

26520e7e-c68c-11ec-bce3-dac502259ad0.png

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

其次,評估處理時間要求,是否需要實時性處理,給予多少時間來處理,進而評估所需時鐘頻率,以及是否需要存在多個時鐘域處理。

2674f1f0-c68c-11ec-bce3-dac502259ad0.png

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

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

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

26932094-c68c-11ec-bce3-dac502259ad0.png

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

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

26a9990a-c68c-11ec-bce3-dac502259ad0.png

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

同時,務必明確數據流向,前后級接口,功能模塊內部RTL邏輯處理,細化到每個時鐘應該怎么處理,step by step。

26d59852-c68c-11ec-bce3-dac502259ad0.png

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

26ee1b66-c68c-11ec-bce3-dac502259ad0.png

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

驗證也是一門重要的技術,這也是為什么存在IC驗證崗位,目的就是為芯片成功流片嚴格把關,一旦流片失敗,損失重大,影響深遠。

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

一是驗證邏輯時序是否存在問題,比如信號是否對齊,有無接口處理不當導致數據丟失等。

二是信號處理過程是否得當,數據位寬、精度等是否符合算法要求。

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

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

26fabb28-c68c-11ec-bce3-dac502259ad0.png

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

2709a3c2-c68c-11ec-bce3-dac502259ad0.png

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

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

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

---END---

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4558

    瀏覽量

    92075
  • RTL
    RTL
    +關注

    關注

    1

    文章

    384

    瀏覽量

    59534

原文標題:從算法到RTL實現(xiàn),F(xiàn)PGA工程師該怎么做?

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    RTL8187L和802.11n

    802.11n:802.11n是IEEE制定的一種無線傳輸標準,用于實現(xiàn)高速無線網絡連接。它支持多輸入多輸出(MIMO)和40MHz頻帶寬度,可以將數據傳輸速率提高600Mbps或更高。此標準通常在
    發(fā)表于 08-24 14:23

    名單公布!【書籍評測活動NO.40】數字IC設計入門,多角度透視芯片設計

    共4項。移知課程“算法RTL實現(xiàn)”主講人。 申請時間 2024年8月8日——2024年9月8日 活動參與方式 1、在本帖下方留言回帖
    發(fā)表于 08-08 15:31

    FCom解讀熱敏晶振與溫補晶振:結構原理,差異使用條件

    解讀熱敏晶振與溫補晶振:結構原理,差異使用條件 一、結構組成 二、工作原理 三、相似點 四、區(qū)別 五、使用條件
    的頭像 發(fā)表于 05-23 12:04 ?1089次閱讀
    FCom解讀熱敏晶振與溫補晶振:<b class='flag-5'>從</b>結構<b class='flag-5'>到</b>原理,<b class='flag-5'>從</b>差異<b class='flag-5'>到</b>使用條件

    基于樹莓派5的RTL仿真體驗

    《基于樹莓派5的RTL仿真體驗》 對于FPGA或者RTL愛好者來講,樹莓派5開發(fā)板可以運行RTL仿真,仿真工具使用iverilog,波形工具使用gtkwave。為什么是這些?因為工具免費且對硬件性能
    發(fā)表于 04-30 17:35

    如何通過優(yōu)化RTL減少功耗

    對于功耗估算來說,架構階段為時過早,物理設計階段為時已晚。有一種趨勢是在項目的RTL階段分析power hot spots。與后期分析相比,基于 RTL 的功耗分析更快、更容易執(zhí)行,迭代時間更短。
    的頭像 發(fā)表于 04-05 09:15 ?1865次閱讀
    如何通過優(yōu)化<b class='flag-5'>RTL</b>減少功耗

    數月幾小時,這枚Multi-Die系統(tǒng)芯片是如何快速交付的?

    軟件已成為當今電子系統(tǒng)中不可或缺的組成部分。虛擬現(xiàn)實(VR)頭顯,高等級自動駕駛汽車,這些由軟件驅動的系統(tǒng)都依賴于精密的復雜算法,才能讓元宇宙沉浸式體驗
    的頭像 發(fā)表于 12-26 17:53 ?646次閱讀

    浮點LMS算法的FPGA實現(xiàn)

    引言 LMS(最小均方)算法因其收斂速度快及算法實現(xiàn)簡單等特點在自適應濾波器、自適應天線陣技術等領域得到了十分廣泛的應用。為了發(fā)揮算法的最佳性能,必須采用具有大動態(tài)范圍及運算精度的浮點
    的頭像 發(fā)表于 12-21 16:40 ?607次閱讀

    詳解均值濾波非局部均值濾波算法的原理及實現(xiàn)方式

    將再啰嗦一次,詳解均值濾波非局部均值濾波算法的原理及實現(xiàn)方式。 細數主要的2D降噪算法,如下圖所示,
    的頭像 發(fā)表于 12-19 16:30 ?886次閱讀
    詳解<b class='flag-5'>從</b>均值濾波<b class='flag-5'>到</b>非局部均值濾波<b class='flag-5'>算法</b>的原理及<b class='flag-5'>實現(xiàn)</b>方式

    如何用RTL原語實現(xiàn)MUX門級映射呢?

    對于前端設計人員,經常會需要一個MUX來對工作模式,數據路徑進行明確(explicit)的聲明,這個對于中后端工程師下約束也很重要。這里介紹一種巧用的RTL原語,實現(xiàn)MUX的方法。
    的頭像 發(fā)表于 12-14 16:26 ?1115次閱讀
    如何用<b class='flag-5'>RTL</b>原語<b class='flag-5'>實現(xiàn)</b>MUX門級映射呢?

    數字前端生存指南—RTL

    在數字前端領域,RTL幾乎與“設計代碼”概念相同。
    的頭像 發(fā)表于 12-04 10:14 ?7885次閱讀
    數字前端生存指南—<b class='flag-5'>RTL</b>

    一個電路板射頻設計實現(xiàn)是經過什么步驟?

    一個電路板設計實現(xiàn)是經過什么步驟?
    的頭像 發(fā)表于 11-14 10:02 ?711次閱讀
    一個電路板<b class='flag-5'>從</b>射頻設計<b class='flag-5'>到</b><b class='flag-5'>實現(xiàn)</b>是經過什么步驟?

    可綜合的RTL代碼的角度聊聊interface

    SystemVerilog引入了interface,這里我們可綜合的RTL代碼的角度聊聊interface。
    的頭像 發(fā)表于 10-12 09:06 ?1518次閱讀
    <b class='flag-5'>從</b>可綜合的<b class='flag-5'>RTL</b>代碼的角度聊聊interface

    密碼算法實現(xiàn)的SCA防護

    對于安全控制器而言,密碼算法實現(xiàn)與安全性緊密相關,密碼算法實現(xiàn)
    的頭像 發(fā)表于 10-11 09:12 ?521次閱讀

    JK觸發(fā)器與T觸發(fā)器的Verilog代碼實現(xiàn)RTL電路實現(xiàn)

    JK 觸發(fā)器的 Verilog 代碼實現(xiàn)RTL 電路實現(xiàn)
    的頭像 發(fā)表于 10-09 17:29 ?3793次閱讀
    JK觸發(fā)器與T觸發(fā)器的Verilog代碼<b class='flag-5'>實現(xiàn)</b>和<b class='flag-5'>RTL</b>電路<b class='flag-5'>實現(xiàn)</b>

    Rust如何實現(xiàn)A*算法

    效率。** A*算法 A*算法的基本流程如下: 將起點加入open列表中。 open列表中找出f值最小的節(jié)點,將其作為當前節(jié)點。 如果當前節(jié)點是終點,則搜索結束。 否則,將當前節(jié)點
    的頭像 發(fā)表于 09-30 16:53 ?763次閱讀