一個(gè)合格的FPGA工程師需要掌握哪些知識?這里根據(jù)自己的一些心得總結(jié)一下,其他朋友可以補(bǔ)充啊。
1.Verilog語言及其于硬件電路之間的關(guān)系。
2.器件結(jié)構(gòu)(最好熟練掌握Spartan3,Vertix4系列的器件結(jié)構(gòu),及其資源于Verilog行為描述方法的關(guān)系。)。
3.開發(fā)工具(熟練掌握Synplify,Quartus,ISE,Modelsim)。
4.數(shù)字電路(組合電路,觸發(fā)器,特別是D觸發(fā)器構(gòu)成分頻器,奇數(shù)倍分頻占空比為50%,時(shí)序電路,并且能用Verilog語言描敘。)。
5.熟悉FPGA設(shè)計(jì)流程(仿真,綜合,布局布線,時(shí)序分析)。
6.熟練掌握資源估算(特別是slice,lut,ram等資源的估算)。
7.同步設(shè)計(jì)原理。
8.熟練掌握基本概念(如建立時(shí)間,保持時(shí)間,流量(即所做FPGA設(shè)計(jì)的波特率)計(jì)算,延遲時(shí)間計(jì)算(所做FPGA設(shè)計(jì)),競爭冒險(xiǎn),消除毛刺的方法等等)。
9.具備具體設(shè)計(jì)經(jīng)驗(yàn)(對應(yīng)屆生而言如畢業(yè)設(shè)計(jì))。
10.良好的設(shè)計(jì)思路(流水線設(shè)計(jì)即熟稱打拍子,在速率資源功耗之間的折中考慮)。
一個(gè)合格的FPGA工程師至少在以下三個(gè)方面的一個(gè)非常熟悉:
1.嵌入式應(yīng)用
2.DSP應(yīng)用
3.高速收發(fā)器應(yīng)用
將自己的走過的彎路和總結(jié)的經(jīng)驗(yàn)與大家分享一下,希望對您有一點(diǎn)點(diǎn)的參考價(jià)值。
首先從先從如何成為一個(gè)合格的設(shè)計(jì)者說起吧!初學(xué)者覺得一切都是挑戰(zhàn),一切都新鮮,不知從何處下手。我總結(jié)了學(xué)習(xí)EDA邏輯設(shè)計(jì)的4個(gè)步驟,請拍磚!
1。 首先,應(yīng)該好好學(xué)習(xí)一下FPGA/CPLD的設(shè)計(jì)設(shè)計(jì)流程。
不要簡單的以為就是設(shè)計(jì)輸入-》仿真-》綜合-》實(shí)現(xiàn)那么一回事,要摳細(xì),要學(xué)精,要多問每個(gè)步驟的注意事項(xiàng),區(qū)分相關(guān)步驟的聯(lián)系和區(qū)別。比如要搞清楚功能仿真、綜合后仿真、Translate后仿真、Map后的仿真、布局布線后仿真的作用都是什么,什么時(shí)候應(yīng)該做,什么時(shí)候可以不做這些仿真!學(xué)習(xí)清楚了設(shè)計(jì)流程最大的好處就是有利于培養(yǎng)良好的EDA設(shè)計(jì)習(xí)慣,日后會(huì)受益非淺!
2。 關(guān)于設(shè)計(jì)輸入和Coding Style。
設(shè)計(jì)輸入最好學(xué)習(xí)HDL語言,Verilog、VHDL都可以,可以把狀態(tài)機(jī)輸入和原理圖輸入作為補(bǔ)充內(nèi)容,但不是重點(diǎn)。我在前面的帖子已經(jīng)反復(fù)強(qiáng)調(diào)了 Coding Style的重要性。因?yàn)樗沁壿嬙O(shè)計(jì)人員的一個(gè)基本業(yè)務(wù)素質(zhì)。而且Coding Style不是看幾篇文章,學(xué)幾條原則就能夠成為高手的,他需要您在工作中不斷的體會(huì)和積累,在學(xué)習(xí)的最初,有Coding Style的意識,設(shè)計(jì)者就會(huì)有意的積累,對日后發(fā)展很有好處。反之則后患無窮。
3。 培養(yǎng)硬件的意識,培養(yǎng)系統(tǒng)的觀念。
我也在交流和授課的時(shí)候很強(qiáng)調(diào)硬件意識,如果從形式上看,邏輯設(shè)計(jì)隨著智能化和優(yōu)化手段的不斷發(fā)展最后會(huì)越來越靈活,越來越簡單。比如我們現(xiàn)在在使用大型 FPGA時(shí)就很少談如何用Floorplanner優(yōu)化,手動(dòng)布線,如果用手動(dòng)方式,其工作量太大了啊!一個(gè)設(shè)計(jì)的優(yōu)劣,關(guān)鍵看其設(shè)計(jì)者的硬件意識,和系統(tǒng)意識。硬件意識就是要求先做到對設(shè)計(jì)的硬件胸有成竹,HDL代碼僅僅是一個(gè)表述心中硬件的工具。系統(tǒng)意識要求設(shè)計(jì)者有宏觀的觀念,對設(shè)計(jì)的全局有個(gè)合適的安排,比如時(shí)鐘域,模塊復(fù)用,約束,面積,速度等問題。要知道在系統(tǒng)上復(fù)用模塊節(jié)省的面積遠(yuǎn)比在代碼上小打小鬧來的實(shí)惠得多。
4。 最后才是工具軟件的使用。
現(xiàn)在EDA軟件都越來越友好,越來越“傻瓜化”,如果您費(fèi)了1年還沒有基本摸清軟件的使用,我敢說,那是一個(gè)比較爛的軟件(起碼在用戶接口上),因?yàn)檫@是和EDA這種方式的理念背道而馳的。但是作為設(shè)計(jì)者,軟件是工具,應(yīng)該熟練掌握各個(gè)步驟不同方面的軟件,這樣才能最大程度地發(fā)揮您的聰明才智,才能使您如虎添翼!
需要對相關(guān)器件的要有一定的了解,對和這些器件之間的控制、數(shù)據(jù)交換等通信要清晰,對性能和功能清楚。而且作為基本的素質(zhì)要求要能看懂原理圖,和PCB要不沒法調(diào)試,呵呵。
另外比較重要的一點(diǎn)是對FPGA設(shè)計(jì)的一些基本原則要有一個(gè)清晰的認(rèn)識,比如:
“面積和速度的互換”,“流水線設(shè)計(jì)方式”,“乒乓操作”。
對最基本和最常用的模塊要非常熟悉,比如單口/雙口RAM,同步/異步FIFO等等。
除了問題要多想想自己的設(shè)計(jì)。雖然綜合,布線工具的性能有差異,但是一個(gè)設(shè)計(jì)的優(yōu)劣根本還是設(shè)計(jì)者的思路是否巧妙。當(dāng)我們的設(shè)計(jì)達(dá)不到要求或者性能太差的時(shí)候,請不要埋怨綜合工具太濫,布線結(jié)果太差,因?yàn)楣ぞ卟粫?huì)想人那么聰明。這時(shí)候,我們應(yīng)該靜下心,想一下自己的設(shè)計(jì)是不是有什么問題,結(jié)構(gòu)是否合理,代碼的風(fēng)格是否符合工具的要求。系統(tǒng)結(jié)構(gòu)的改進(jìn)帶來的優(yōu)化遠(yuǎn)遠(yuǎn)超過最好的優(yōu)化工具所能達(dá)到的結(jié)果