新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 我學習FPGA的總結

        我學習FPGA的總結

        作者: 時間:2011-02-28 來源:網絡 收藏
        閱讀本文的人群:熟悉數字電路基本知識(如加法器、計數器、RAM等),熟悉基本的同步電路設計方法,熟悉HDL語言,對的結構有所了解,對設計流程比較了解。

        一.序 言

        1.的好處

        設計工程師不在需要畫繁瑣的原理圖PCB連線,從而將工作重心轉移到功能實現上,極大地提高了工作效;隨著HDL(Hardware Description Language)硬件描述語言語言綜合工具及其它相關工具的推廣已經加大的FPGA的應用普及。

        2.工程師們在使用FPGA時的一些壞習慣

        任何事務都是一分為二的,有利就有弊。

        我們發現現在越來越多的工程師不關心自己的電路實現形式,以為“我只要將功能描述正確,其它事情交給工具就行了”。

        在這種思想影響下,工程師在用HDL語言描述電路時,腦袋里沒有任何電路概念,或者非常模糊;也不清楚自己寫的代碼綜合出來之后是什么樣子,映射到芯片中又會是什么樣子,有沒有充分利用到FPGA的一些特殊資源。遇到問題,首先想到的是換速度更快、容量更大的FPGA器件,導致物料成本上升;更為要命的是,由于不了解器件結構,更不了解與器件結構緊密相關的設計技巧,過分依賴綜合等工具,工具不行,自己也就束手無策,導致問題遲遲不能解決,從而嚴重影響開發周期,導致開發成本急劇上升。

        3.學好FPGA應該要具備的知識

        目前,我們的設計規模越來越龐大,動輒上百萬門、幾百萬門的電路屢見不鮮。同時我們所采用的器件工藝越來越先進,已經步入深亞微米時代。而在對待深亞微米的器件上,我們的設計方法將不可避免地發生變化,要更多地關注以前很少關注的線延時(我相信,ASIC設計以后也會如此)。

        如果我們不在設計方法、設計技巧上有所提高,是無法面對這些龐大的基于深亞微米技術的電路設計。而且,現在的競爭越來越激勵,從節約公司成本角度出發,也要求我們盡可能在比較小的器件里完成比較多的功能。

        二.談談FPGA的工具幾個關鍵問題

        4.關于我們對FPGA工具過分依賴的問題認識

        硬件描述語言和綜合工具的產生,極大地提高了工程師的工作效率。然而,隨著它們的普及與推廣,一種不好的現象也在逐步蔓延;在設計過程中,只關注功能是否實現,而不考慮或很少考慮電路到底是如何實現的;過分依賴綜合等工具來提高設計性能(如速度、面積等),而不是從設計本身來考慮自己的電路是否最佳。

        如果將設計看成是一個化學變化,那么工具只是起到催化劑的作用,我們所掌握的背景知識、電路設計方法及有關技巧,才是參加化學反應的分子,是起決定作用的因素。

        因此,設計遇到困難時,不能完全指望工具,更不能怪罪工具。只有我們才是決定設計成敗的關鍵。

        5.不管使用何種綜合工具,都包括兩個過程

        過程1:是把行為級的描述通過一定的算法轉化為門級的描述,該過程與設計的工藝庫無關、與用戶約束無關。

        過程2:是把已經轉化的門級描述在用戶的約束下,通過算法映射到相應的工藝庫中的器件上。對ASIC,是映射到廠商的Gate庫中,對FPGA,是映射到FPGA器件的單元結構中。

        從上兩個步驟可知,當設計代碼的的風格不一樣時,則在綜合第一步就已大部分決定了設計的性能(對ASIC來說,因為是轉成Gate, 器件庫一般也是Gate, 相對影響較少)因此,我們不難理解代碼風格對FPGA設計的重要性。

        6.說說具體的綜合工具性能

        不同綜合工具的針對目標不一致和各綜合工具的不同性能,導致了綜合出來的結果也不同。

        目前,綜合工具主要有DC(Design Compiler)、FC2(FPGA Compiler II)、Synplify、Leonardo、Galileo 等綜合工具:
        1)DC:主要是用于ASIC的綜合工具
        2)FC2:是DC在FPGA綜合方面的增強版
        3)Leonardo:是做FPGA綜合工具的先驅
        4)Synplify:是目前成長最快的綜合工具(由Synplicity公司出品)

        無論哪家綜合工具,對FPGA的綜合,都必須緊密結合各FPGA廠家的FPGA結構,否則無法更好利用FPGA提供的優點;從目前來看,優選Synplify或Leonardo綜合工具;DA的FPGA綜合性能差但事宜ASIC綜合。
        到目前為止第三方的綜合工具都未能很好利用FPGA器件,因為代碼風格沒有跟上,導致無法得到很好的性能。


        7.邏輯代碼風格的重要性
        因為綜合工具無法最大使用到器件所提供的優越性能,導致最終的產品性能變差;若想得到更好的性能,這要求在FPGA設計上,最好對一些設計采用一些Core(但這種基于FPGA器件(特有工藝)的代碼設計,將降低設計代碼的重用性能、以及FPGA設計與ASIC設計的兼容性)。

        8.舉例:以Xilinx為例,我們怎樣采取恰當的代碼風格,以提高電路性能:
        1) 資源共享的應用限制在同一個module里。這樣,綜合工具才能最大限度地發揮其資源共享綜合作用。
        2) 盡可能將Critical path上所有相關邏輯放在同一個module里。這樣,綜合工具能夠發揮其最佳綜合效果。
        3) Critical path所在的module與其它module分別綜合,對critial path采用速度優先的綜合策略,對其它module采用面積優先的綜合策略。
        4) 盡可能Register所有的Output。做到這一點,對加約束比較方便;同時一條路徑上的組合邏輯不可能分散在各個module里,這對綜合非常有利。可以比較方便地達到面,積速度雙贏的目的。
        5) 一個module的size不能太大。具體大小,由各綜合工具而定。
        6) 一個module盡量只有一個時鐘,或者整個設計只有一個時鐘。



        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 呼图壁县| 噶尔县| 钟祥市| 工布江达县| 运城市| 乌鲁木齐县| 屏东市| 来宾市| 青龙| 多伦县| 莱州市| 汉川市| 汕头市| 桃江县| 徐闻县| 慈利县| 安仁县| 涡阳县| 兴和县| 久治县| 华坪县| 内黄县| 浑源县| 沙湾县| 甘肃省| 胶州市| 丰原市| 渝中区| 黔江区| 海宁市| 同德县| 利津县| 萨迦县| 安图县| 荣昌县| 女性| 乌拉特前旗| 合川市| 大宁县| 龙江县| 商城县|