欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      FPGA學(xué)習(xí)心得體會(huì)(小編整理)

      時(shí)間:2019-05-11 23:23:53下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫小編為你整理了多篇相關(guān)的《FPGA學(xué)習(xí)心得體會(huì)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《FPGA學(xué)習(xí)心得體會(huì)》。

      第一篇:FPGA學(xué)習(xí)心得體會(huì)

      篇一:fpga學(xué)習(xí)心得大報(bào)告

      《fpga技術(shù)基礎(chǔ)》學(xué)習(xí)報(bào)告--課程內(nèi)容學(xué)習(xí)心得

      姓 名:

      學(xué) 號(hào): 年級(jí)專業(yè): 指導(dǎo)教師:

      瞿麟 201010401128 自動(dòng)化101薛小軍摘要從開始學(xué)fpga到現(xiàn)在粗略算來的話,已經(jīng)有3個(gè)多月了,就目前而言,我并不確定自己算不算高手們所說的入門了,fpga學(xué)習(xí)總結(jié)。但是不管現(xiàn)在的水平如何,現(xiàn)在就總結(jié)一下自己學(xué)習(xí)它的感受或一些認(rèn)識(shí)吧。

      關(guān)鍵詞

      fpga de2板 quartusii軟件 verilog語言

      引言

      fpga是什么?fpga現(xiàn)狀?怎樣學(xué)習(xí)fpga?

      fpga是現(xiàn)場(chǎng)可編程門陣列的簡(jiǎn)稱,fpga的應(yīng)用領(lǐng)域最初為通信領(lǐng)域,但目前,隨著信息產(chǎn)業(yè)和微電子技術(shù)的發(fā)展,可編程邏輯嵌入式系統(tǒng)設(shè)計(jì)技術(shù)已經(jīng)成為信息產(chǎn)業(yè)最熱門的技術(shù)之一,應(yīng)用范圍遍及航空航天、醫(yī)療、通訊、網(wǎng)絡(luò)通訊、安防、廣播、汽車電子、工業(yè)、消費(fèi)類市場(chǎng)、測(cè)量測(cè)試等多個(gè)熱門領(lǐng)域。并隨著工藝的進(jìn)步和技術(shù)的發(fā)展,向更多、更廣泛的應(yīng)用領(lǐng)域擴(kuò)展。越來越多的設(shè)計(jì)也開始以asic轉(zhuǎn)向fpga,fpga正以各種電子產(chǎn)品的形式進(jìn)入了我們?nèi)粘I畹母鱾€(gè)角落。

      正文

      (1)掌握fpga的編程語言

      在學(xué)習(xí)一門技術(shù)之前我們往往從它的編程語言開始,如同學(xué)習(xí)單片機(jī)一樣,我們從c語言開始入門,當(dāng)掌握了c語言之后,開發(fā)單片機(jī)應(yīng)用程序也就不是什么難事了。學(xué)習(xí)fpga也是如此,fpga的編程語言有兩種:vhdl和verilog,這兩種語言都適合用于fpga的編程。(2)fpga實(shí)驗(yàn)尤為重要 除了學(xué)習(xí)編程語言以外,更重要的是實(shí)踐,將自己設(shè)計(jì)的程序能夠在真正的fpga里運(yùn)行起來,這時(shí)我們需要選一塊板子進(jìn)行實(shí)驗(yàn),我們選擇使用de2板才進(jìn)行試驗(yàn)。初識(shí)de2開發(fā)板

      de2的資源de2的資源非常豐富,包括

      1.核心的fpga芯片-cyclone ii 2c35 f672c6,從名稱可以看出,它包含有35千個(gè)le,在altera的芯片系列中,不算最多,但也絕對(duì)夠用。altera下載控制芯片-epcs16以及usb-blaste對(duì)jtag的支持。

      2.存儲(chǔ)用的芯片有: 512-kb sram,8-mbyte sdram,4-mbyte flash memory 3.經(jīng)典io配置:擁有4個(gè)按鈕,18個(gè)撥動(dòng)開關(guān),18個(gè)紅色發(fā)光二極管,9個(gè)綠色發(fā)光二極管,8個(gè)七段數(shù)碼管,16*2字符液晶顯示屏,4.超強(qiáng)多媒體:24位cd音質(zhì)音頻芯片wm8731(mic輸入+linein+ 標(biāo)準(zhǔn)音頻輸出),視頻解碼芯片(支持ntsc/pal制式),帶有高速dac視屏輸出vga模塊。5.更多標(biāo)準(zhǔn)接口:通用串行總線usb控制模塊以及a、b型接口,sd card接口,irda紅外模塊,10/100m自適應(yīng)以太網(wǎng)絡(luò)適配器,rs-232標(biāo)準(zhǔn)串口,ps/2鍵盤接口 6.其他:50m,27m晶振各一個(gè),支持外部時(shí)鐘,80針帶保護(hù)電路的外接io 7.此外還有:配套的光盤資料,qutuarsii軟件,niosii 6.0ide,例程與說明文檔。

      關(guān)于管腳分配

      當(dāng)我們創(chuàng)建一個(gè)fpga用戶系統(tǒng)的時(shí)候,到最后要做的工作就是下載,在下載之前必須根據(jù)芯片的型號(hào)分配管腳,這樣才能將程序中特定功能的管腳與實(shí)際中的fpga片外硬件電路一一對(duì)應(yīng)。

      fpga簡(jiǎn)單的說,就是現(xiàn)場(chǎng)可編程邏輯陣列。它的內(nèi)部是邏輯單元,它們之間可以用線連接,至于以怎樣的形式相連,則可以根據(jù)應(yīng)用者寫入的邏輯決定。每次布線都會(huì)重新組合邏輯單元,從而可以任意的編寫不同的邏輯。當(dāng)然,前提是定義的邏輯塊不超出它可讀寫的最大值??偨Y(jié)在學(xué)習(xí)fpga時(shí),遇到的問題有許多,譬如,寫代碼時(shí)的警告,特別是一些不能忽視的警告,每次遇到時(shí),總是還要檢查一會(huì)兒才能改過來,或者有的警告已經(jīng)出現(xiàn)了幾次,但是就是解決不掉。每次在學(xué)一個(gè)模塊時(shí),只要是看懂了,它的一些重點(diǎn)就沒有及時(shí)的記錄在本子上,只有個(gè)別的想起來時(shí),才會(huì)做筆記。每做完一個(gè)模塊,沒有及時(shí)記錄下自己從這個(gè)模塊中學(xué)到了什么。上面的不足,都是在寫模塊的過程中,自己逐漸暴露出來的。我很慶幸自己的一些問題能及時(shí)的被發(fā)現(xiàn),避免類似的事情再次發(fā)生。像遇到警告時(shí),都要記錄下來,通過改正后,要注釋,寫下警告的原因,定期看一下。每次寫模塊的時(shí)候,都要記下重點(diǎn)知識(shí),即使是自己懂得的,好記性都是比不過爛筆頭的。

      關(guān)于以上的總結(jié),我相信在以后的學(xué)習(xí)中一定會(huì)對(duì)自己有莫大的幫助,它會(huì)時(shí)刻警醒自己,在以前的學(xué)習(xí)中,自己有哪些不足,以后千萬不能再去犯同樣的錯(cuò)誤,不斷地糾正,不斷地進(jìn)步,相信自己一定會(huì)學(xué)好fpga的。篇二:fpga學(xué)習(xí)心得

      回想起自己學(xué)fpga,已經(jīng)有一段時(shí)間了,從開始的茫然,到后來的瘋狂看書,設(shè)計(jì)開發(fā)板,調(diào)電路,練習(xí)各種fpga實(shí)例,到最后能獨(dú)立完成項(xiàng)目,一路走來,感受頗多,拿出來和大家分享,順便介紹下自己的一點(diǎn)經(jīng)驗(yàn)所得,希望對(duì)初學(xué)者有所幫助。廢話不說了,下面進(jìn)入正題,學(xué)習(xí)fpga我主要經(jīng)歷了這么幾個(gè)階段:

      ①、verilog語言的學(xué)習(xí),熟悉verilog語言的各種語法。

      ②、fpga的學(xué)習(xí),熟悉quartusii軟件的各種功能,各種邏輯算法設(shè)計(jì),接口模塊(rs232,lcd,vga,spi,i2c等)的設(shè)計(jì),時(shí)序分析,硬件優(yōu)化等,自己開始設(shè)計(jì)簡(jiǎn)單的fpga板子。③、niosii的學(xué)習(xí),熟悉niosii的開發(fā)流程,熟悉開發(fā)軟件(sopc,niosii ide),了解niosii的基本結(jié)構(gòu),設(shè)計(jì)niosii開發(fā)板,編寫niosii c語言程序,調(diào)試板子各模塊功能。先來說說第一個(gè)階段,現(xiàn)在主要的硬件描述語言有vhdl,verilog兩種,在本科時(shí)老師一般教vhdl,不過現(xiàn)在

      verilog用的人越來越多,其更容易上手(與c語言語法比較類似),也更靈活,現(xiàn)在的ic設(shè)計(jì)基本都用verilog。像systemc,systemverilog之類的應(yīng)該還在萌芽階段,以后可能會(huì)有較大發(fā)展。鑒于以上原因我選擇了verilog作為我學(xué)習(xí)的硬件描述語言。

      其實(shí)有c語言的基礎(chǔ),學(xué)起verilog的語言很簡(jiǎn)單,關(guān)鍵要有并行的概念,所有的module,assign,always都是并行的,這一點(diǎn)與軟件語言有明顯不同。這里推薦幾本評(píng)價(jià)比較好的學(xué)習(xí)verilog的書籍: ①、《verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程》,這本書對(duì)于入門是一本很好的書,通俗易懂,讓人很快上手,它里面的例子也不錯(cuò)。但本書對(duì)于資源優(yōu)化方面的編程沒有多少涉及到。②、《設(shè)計(jì)與驗(yàn)證verilog hdl》,這本書雖然比較薄,但是相當(dāng)精辟,講解的也很深入,很多概念看了這本書有種豁然開朗的感覺,呵呵。

      學(xué)習(xí)verilog其實(shí)不用看很多書,基本的語法部分大家都一樣,關(guān)鍵是要自己會(huì)靈活應(yīng)用,多做練習(xí)。

      verilog語言學(xué)了一段時(shí)間,感覺自己可以編點(diǎn)東西,希望自己編的程序在板子上運(yùn)行看看結(jié)果,下面就介紹我學(xué)習(xí)的第二個(gè)階段。

      剛開始我拿了實(shí)驗(yàn)室一塊cpld的開發(fā)板做練習(xí),熟悉quartusii的各種功能,比如ip的調(diào)用,各種約束設(shè)置,時(shí)序分析,logiclock設(shè)計(jì)方法等,不過做到后面發(fā)現(xiàn)cpld的資源不太夠(沒有內(nèi)嵌的ram、不能用signaltapii,le太少等),而實(shí)驗(yàn)室沒有fpga開發(fā)板,所以就萌生了自己做fpga開發(fā)板的意圖,剛好cadence我也學(xué)的差不多了,就花了幾天時(shí)間主要研究了fpga配置電路的設(shè)計(jì),在板子上做了jtag和as下載口,在做了幾個(gè)用戶按鍵和led,其他的口全部引出作為io口,電路比較簡(jiǎn)單,板子焊好后一調(diào)就通了(心里那個(gè)爽啊...)。我選的fpga是cycloneii系列的ep2c5,資源比以前的fpga多了好幾倍,還有pll,內(nèi)嵌的ram,可以試試signaltapii,用內(nèi)嵌的邏輯分析儀測(cè)試引腳波形,對(duì)于fpga的調(diào)試,邏輯分析儀是至關(guān)重要的。利用這塊板子我完成了項(xiàng)目中的幾個(gè)主要功能:rs232通信,指令譯碼,配置dds,ad數(shù)據(jù)高速緩存,電子開關(guān)狀態(tài)設(shè)置等,在實(shí)踐中學(xué)習(xí)起來真的比平時(shí)快很多,用到什么學(xué)什么動(dòng)力更大。這個(gè)時(shí)候我主要看的數(shù)據(jù)有這幾本感覺比較好: ①、《altera fpga/cpld 設(shè)計(jì)(基礎(chǔ)篇)》:講解一些基本的fpga設(shè)計(jì)技術(shù),以及quartusii中各個(gè)工具的用法(ip,rtl,signalprobe,signaltapii,timing closure floorplan,chip editor等),對(duì)于入門非常好。②、《altera fpga/cpld 設(shè)計(jì)(高級(jí)篇)》:講解了一些高級(jí)工具的應(yīng)用,logiclock,時(shí)序約束很分析,設(shè)計(jì)優(yōu)化,也講述了一些硬件編程的思想,作為提高用。③、《fpga設(shè)計(jì)指南--器件,工具和流程》:這本書看了他的目錄忍不住就買了,這本書講述了fpga設(shè)計(jì)的各個(gè)方面,雖然每個(gè)方面都是點(diǎn)到為止,但能讓你有個(gè)整體的概念,了解fpga的所有設(shè)計(jì)功能,了解fpga開發(fā)的整個(gè)流程。

      ④、在這里也推薦幾個(gè)學(xué)習(xí)fpga比較好的論壇,不過很多人一看到英語就不想看,其實(shí)上面的英文很簡(jiǎn)單,很多時(shí)候不敢看是因?yàn)閷?duì)自己沒信心或心靜不下來看。不過官方網(wǎng)站上資料很多,剛開始可能會(huì)覺得資料安排的有點(diǎn)亂,不方便查找,以后有時(shí)間我列個(gè)資料的鏈接目錄,整理一下,方便大家查找。

      到這里,自己最fpga的學(xué)習(xí)有一段時(shí)間了,練習(xí)了很多實(shí)例,自己也編寫了不少程序,也有了一些項(xiàng)目經(jīng)驗(yàn),算是對(duì)fpga有些了解了。在不斷的學(xué)習(xí)中發(fā)現(xiàn)fpga不僅可以做邏輯設(shè)計(jì),算法設(shè)計(jì)等,還能做嵌入式開發(fā),altera先后開發(fā)了nios,niosii兩款fpga的嵌入式軟核,并有配套的軟件,剛開始看到這些我真是心中突然豁然開朗,學(xué)習(xí)真的是無止境,又一個(gè)全新的領(lǐng)域擺在我面前,我決定學(xué)習(xí)niosii,要學(xué)就要學(xué)最好。

      剛開始入門是很痛苦的,嵌入式設(shè)計(jì)需要從硬件到驅(qū)動(dòng)到軟件全部熟悉,硬件系統(tǒng)問題還不是很大(以前做過單片機(jī),dsp等mcu),處理器的架構(gòu)心里還有點(diǎn)數(shù),對(duì)于驅(qū)動(dòng)和軟件工程,剛開始學(xué)習(xí)真的很頭痛。niosii應(yīng)該還算比較新的內(nèi)容(應(yīng)該是2004年出的),國內(nèi)的書籍不算很多,網(wǎng)上這方面的資料也比較零碎,所以我就開始將altera網(wǎng)站上這方面的資料系統(tǒng)的看一邊,這里推薦幾本網(wǎng)站上的handbook: ①、embedded design handbook ②、nios ii processor reference handbook ③、nios ii software developers handbook ④、quartus ii handbook, volume 4: sopc builder ⑤、quartus ii handbook, volume 5: embedded peripherals 看完這些handbook,總算基本明白整個(gè)架構(gòu),軟硬件設(shè)計(jì)方法,驅(qū)動(dòng)的編寫等,感覺自己可以編一些嵌入式的程序了,不過雖然前面做的那塊ep2c5的板子支持niosii系統(tǒng),不過對(duì)于嵌入式設(shè)計(jì)來說還是顯得單薄了一點(diǎn),沒有sdram,flash這兩個(gè)比較基本的模塊,ep2c5內(nèi)嵌的ram太小,程序?qū)懖淮螅颐看慰傄g盡腦汁優(yōu)化程序代碼大小,很多時(shí)候優(yōu)化了后函數(shù)功能會(huì)受到限制,不利于初學(xué)者,也不利于調(diào)試。所以到這里我有產(chǎn)生了自己做一塊nios開發(fā)板的想法(直接買比較貴,自己做便宜,而且還能鍛煉自己,一舉兩得),通過借鑒其他開發(fā)板,選擇自己開發(fā)板上需要包含什么模塊,確定各個(gè)模塊使用什么芯片,閱讀各個(gè)芯片的datasheet,畫出原理圖并做出pcb圖,這塊板子我選的是ep2c8q208,比上一塊資源又將近多了一倍,板子上還有以下模塊:sdram,flash,epcs4,rs232,usb,vga,ps2,ad,da,lcd等,滿足了一般開發(fā)板的配置要求。板子回來以后調(diào)試了四五天,(flash工作了,lcd顯示了,rs232通了,usb通了,ad,da工作了,sdram正常了...),真是每天都有驚喜,每個(gè)模塊都編寫了niosii軟件測(cè)試程序,調(diào)試硬件的時(shí)候?qū)浖倪\(yùn)行也更熟悉了。在這次調(diào)試的過程中真的學(xué)到了很多,為此專門寫了好幾頁調(diào)試筆記,下次拿出來和大家一起分享?,F(xiàn)在硬件平臺(tái)有了,niosii也了解的差不多了,終于可以自己編寫一些規(guī)模大一點(diǎn)的程序了。學(xué)fpga的一點(diǎn)心得

      從去年開始學(xué)fpga,以前一直做dsp,但因?yàn)轫?xiàng)目的需要,在一個(gè)應(yīng)用中只有fpga才能解決問題,所以硬著頭皮上fpga,又因?yàn)榻Y(jié)項(xiàng)目的時(shí)間比較緊,所以主要以解決問題為目的,說真的,項(xiàng)目做下來寫了四千多行的代碼,達(dá)到了設(shè)計(jì)目標(biāo),但對(duì)fpga學(xué)習(xí)還不夠系統(tǒng),也正進(jìn)一步的學(xué)習(xí)中.因?yàn)槲沂菃胃?沒有團(tuán)隊(duì),遇到問題只能在網(wǎng)上找資料,其難度可想而知,幸好以前用過cpld,有一點(diǎn)基礎(chǔ),用的編程語言是ahdl,感覺ahdl寫一點(diǎn)小程序還可以,但做復(fù)雜程序就有點(diǎn)費(fèi)力了(應(yīng)該是我的ahdl沒學(xué)好),所以在做fpga程序時(shí)我選擇了比較簡(jiǎn)單的 verilog語言。

      由于沒人指導(dǎo),所以買了一個(gè)簡(jiǎn)單的fpga開發(fā)板,是cyclone的,開發(fā)板就是好,送了較多學(xué)習(xí)資料,用了一個(gè)星期的時(shí)間,學(xué)習(xí)了niosii的基本應(yīng)用,當(dāng)然,我的需要就是知道如何在nios里控制一個(gè)信號(hào)的高低電平變化就夠了,其它全是c語言的東西,主要是熟悉了quartus的開發(fā)平臺(tái),并用nios程序把要實(shí)現(xiàn)的主要代碼用c寫了一遍,通過了,但速 度上不去。有這些知識(shí)做鋪墊后,就開始了項(xiàng)目的設(shè)計(jì)。項(xiàng)目要求將外部高速數(shù)據(jù)(40mb/s)進(jìn)行存盤,并可以將存盤的數(shù)據(jù)在適當(dāng)?shù)臅r(shí)候原路返回(速度不變)。所以在硬件的設(shè)計(jì)上fpga選擇了ep2c35f484c8n,外部有128m的sdram做為數(shù)據(jù)的緩沖。所以fpga的主要程序集中在atahost控制器(實(shí)現(xiàn)udma讀寫)、sdram控制器(大容量循環(huán)緩沖)上,當(dāng)然還包括一些其它的控制,如實(shí)時(shí)時(shí)鐘,usb2.0芯片控制,rs232的通信及相應(yīng)的通信協(xié)議。

      硬件完成后,大部分的時(shí)間都在寫程序,感覺verilog跟c差不多,就將原來寫成的c代碼翻譯了一下,每寫一段代碼就測(cè)試一下。起初并不知道在quartus里還有邏輯分析儀的功能,所以程序出了問題只能使勁的分析代碼,猜想問題可能出在哪里,萬不得已時(shí)才做一下仿真(后來看很多有做程序都先做仿真,仿真通過后再下載到目標(biāo)板里運(yùn)行測(cè)試,但到現(xiàn)在我的仿真關(guān)還沒過),所以做得很累。我感到這樣做下去到時(shí)間結(jié)點(diǎn)肯定結(jié)了不了項(xiàng)目,就找fpga的qq群向高手們請(qǐng)教經(jīng)驗(yàn),知道了可以quartus的邏輯分析儀來觀察信號(hào),哈哈,爽了(感謝感謝)。后面的程序找問題就容易多了,按照ata協(xié)議、sdram手冊(cè)、及各外圍芯片手冊(cè)一步步寫下去,當(dāng)然其中也遇到了各種各樣的問題,但很快得到解決。一直到 項(xiàng)目結(jié)束,都是用邏輯分析儀來找問題,沒做過仿真(所以現(xiàn)在仿真關(guān)還沒過)。今年又用fpga做了一些項(xiàng)目。簡(jiǎn)單說一下體會(huì)吧,歸結(jié)起來就三個(gè)字:做、想、問。書讀千遍,不如做一遍;看別人做百次,不如自己做一次;就是要實(shí)踐。實(shí)踐的動(dòng)力一方面來自興趣,別一方面來自己壓力,我個(gè)人覺得后者更重要。有需求會(huì)容易形成壓力,也就是說最好能在實(shí)際的項(xiàng)目開發(fā)中鍛煉,而不是為了學(xué)習(xí)而學(xué)習(xí)。在做的過程中要多想,多想想問題出現(xiàn)的原因,問題解決后要多問幾個(gè)為什么,這也是經(jīng)驗(yàn)積累的過程,最好要寫項(xiàng)目日志,把問題及原因、解決的辦法都寫進(jìn)去。還要多問,遇到問題經(jīng)歷了痛苦的思索后還得不到解決就要問了,問搜索引擎,問網(wǎng)友,問同學(xué)同行,一篇文章、朋友們的點(diǎn)撥都可能幫助 自己快速解決問題。

      fpga入門心得及系列資料

      不知道為什么自己每次接受一個(gè)新事物,總要花上那么長(zhǎng)的一段時(shí)間。每個(gè)東西,總要經(jīng)過從一點(diǎn)都不了解,到有點(diǎn)了知道,到最后才想知道要來學(xué)學(xué),但每次學(xué)習(xí)時(shí)也總是走馬觀花??赡苷娴氖苤袊慕逃枷胧`的太嚴(yán)重了吧。以前的人讀書,好像也沒有什么目標(biāo),只是知道上課要認(rèn)真聽,考試要考好。這樣就可以了。也從來沒想過,我學(xué)這個(gè)到底有什么用呢。但是上了大學(xué)后,一切都改變了。我們的學(xué)習(xí)也不再是為了考試而考試了。尤其是像我們學(xué)電子,假如僅僅是為考試的話,那你的大學(xué)完全可以過得很輕松,整天睡覺,游戲,照樣可以考高分。那樣畢業(yè)了,你說你的大學(xué)學(xué)習(xí)是不是等于0。到頭來還是什么也不是。所以當(dāng)你進(jìn)入大學(xué),當(dāng)你選擇了電子,就決定了你從此要為之付出。不管將來怎樣,只要你朝著自己的方向走,一定會(huì)成功的。

      現(xiàn)在說說fpga的學(xué)習(xí)吧,或許,很多人剛接觸fpga時(shí),可能還在為到底什么是cpld,什么時(shí)fpga,我到底要學(xué)習(xí)哪門語言而苦惱,不知大家是不是這樣,但是我曾經(jīng)就是這樣,也到網(wǎng)上去找過,最后也終于找到了答案。因?yàn)槟菚r(shí)身邊的人都還沒學(xué)過。其實(shí)cpld,fpga最大的區(qū)別也就是fpga的程序必須由配置芯片經(jīng)過上電后,將程序?qū)懭胄酒?,也就是fpga的內(nèi)部存儲(chǔ)器是相當(dāng)于內(nèi)存一樣,一掉電就沒了。而cpld是像單片機(jī)一樣,程序是存儲(chǔ)存在內(nèi)部中的,一上電就可以跑了。二者的功能差不多,但是fpga的資源比cpld更加豐富。在cpld上可以實(shí)現(xiàn)的功能,在fpga上基本都可以實(shí)現(xiàn)的。所以也不必去想太多什么是fpga,cpld了,只要弄懂了二者的內(nèi)部結(jié)構(gòu)就可以了。

      至于學(xué)什么語言嗎,首先要看你們?cè)谛@蠋熒险n是用什么語言,就先那個(gè)語言吧,我們學(xué)校老師是用vhdl語言的,所以一開始我也是先學(xué)vhdl語言,而且學(xué)習(xí)資料比較多,但是在網(wǎng)上看到,好像公司里面用的比較多的是verilog hdl語言,為了能看懂一些資料,現(xiàn)在也在學(xué)verilog hdl語言,學(xué)習(xí)中發(fā)現(xiàn),要是學(xué)過c語言的人,會(huì)發(fā)現(xiàn)verilog hdl好像更加好理解。

      一旦你開始了學(xué)習(xí)fpga,那就要堅(jiān)持下去,因?yàn)檎Z言這東西,要是不一下子把它強(qiáng)記住,過不了兩天就又忘了,書本的東西,一定要越快消化越好,這樣你看別人的程序時(shí)就不會(huì)有什么語言障礙了。之后就是編寫程序,模仿別人的模塊,仿真實(shí)驗(yàn),這步很重要,要不你就不會(huì)發(fā)現(xiàn)fpga功能的強(qiáng)大,你也不知道到底仿真的結(jié)果和實(shí)際是不是有差別。當(dāng)你成功時(shí),你一定會(huì)感到成功的喜悅。

      當(dāng)你基本的程序都看得懂時(shí),有完整地編個(gè)程序,而且在硬件上實(shí)驗(yàn)過時(shí),那么祝賀你入門了,之后的道路就是不斷的實(shí)踐,跟學(xué)習(xí)單片機(jī)一樣,只有不斷的學(xué)習(xí),不斷的做東西,你的編程能力才會(huì)提高。

      以上僅僅為作者本人的一點(diǎn)觀點(diǎn),本人現(xiàn)在還是一個(gè)電子白菜,只是苦于自己學(xué)習(xí)電子找不到捷徑,不想還有更多的人跟我一樣,在電子的道路中不斷摸索,不斷徘徊。

      看過一個(gè)高手對(duì)fpga的認(rèn)識(shí),自己對(duì)fpga未來的發(fā)展更是看好,鑒定了學(xué)好的決心,fpga在電子開發(fā)工作中已經(jīng)上升到數(shù)字系統(tǒng)核心處理器,盡快掌握fpga開發(fā)技術(shù)顯得非常迫切??偨Y(jié)了一下: 傳統(tǒng)的開發(fā)方式:一半固定,硬件cpu是不可編程的,另一半靈活是可編程的軟件

      fpga新開發(fā)形式:兩個(gè)部分都是可編程了,fpga,它代表的就是硬件的編程。這兩部分都可編程的一個(gè)結(jié)合點(diǎn)就是fpga上的軟核。另外可以根據(jù)需要通過外部單片機(jī)把合適的應(yīng)用bit流寫入到fpga內(nèi),從而完成根據(jù)功能需要變更硬件。硬件可重構(gòu)!

      使計(jì)算機(jī)的能力越來越強(qiáng),方法一:通過提高工藝來提高工作頻率;方法二:通過優(yōu)化系統(tǒng)體系,并行!

      新學(xué)習(xí)思想: fpga設(shè)計(jì)有點(diǎn)象圍棋:易學(xué)難精 帶著問題學(xué)習(xí)是最有效率的

      時(shí)序性能的調(diào)整提高是fpga開發(fā)能力的標(biāo)志

      多看書,但要注意,書當(dāng)做字典,不是所有地方都去看。

      目前,在fpga上有三種類型開發(fā)方法和應(yīng)用方向:a、邏輯類應(yīng)用 b、軟核類應(yīng)用 c、dsp類應(yīng)用。邏輯類應(yīng)用我們接觸的最早,也是fpga最初的應(yīng)用領(lǐng)域,大的應(yīng)用上,一些數(shù)字ic設(shè)計(jì)可以在fpga做前期的功能驗(yàn)證,在通信領(lǐng)域,fpga做信號(hào)的編解碼等等,小的應(yīng)用上我們做的最多的實(shí)際是cpld,完成信號(hào)的變換控制等等。軟核應(yīng)用是前幾年才興起,現(xiàn)在熱門的開發(fā)應(yīng)用方法,在原本需要fpga結(jié)合cpu的地方有成本和靈活性優(yōu)勢(shì)。

      fpga的dsp應(yīng)用是非常有潛力的,性能優(yōu)勢(shì)非常明顯。開發(fā)方法是用matlab的simulink中嵌入廠商的開發(fā)工具包,算法驗(yàn)證在matlab simulink工具下完成,在開發(fā)工具包的支持下生成hdl模塊或者直接生成fpga下載配置文件,這個(gè)方向是fpga應(yīng)用最有挑戰(zhàn)能力領(lǐng)域。mathworks公司不久前也推出了獨(dú)立于fpga廠商的simulink hdl coder工具,使的matlab在數(shù)字系統(tǒng)設(shè)計(jì)領(lǐng)域邁出了堅(jiān)實(shí)的一步,把simulink 模型和stateflow框圖生成位真(bit-ture)、周期精確(cycle-accurate)、可綜合的verilog和vhdl代碼,為matlab simulink用戶提供了通往fpga設(shè)計(jì)實(shí)現(xiàn)的直接通道。篇三:fpga經(jīng)驗(yàn)總結(jié)(精華)fpga/cpld數(shù)字電路設(shè)計(jì)經(jīng)驗(yàn)分享

      關(guān)鍵詞:fpga 數(shù)字電路 時(shí)序 時(shí)延路徑 建立時(shí)間 保持時(shí)間 1 數(shù)字電路設(shè)計(jì)中的幾個(gè)基本概念: 1.1 建立時(shí)間和保持時(shí)間:

      建立時(shí)間(setup time)是指在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來以前,數(shù)據(jù)穩(wěn)定不變的時(shí) 間,如果建立時(shí)間不夠,數(shù)據(jù)將不能在這個(gè)時(shí)鐘上升沿被打入觸發(fā)器;保持時(shí)間(hold time)是指在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來以后,數(shù)據(jù)穩(wěn)定不變的時(shí)間,如果保持時(shí)間不夠,數(shù)據(jù)同樣不能被打入觸發(fā)器。如圖1。數(shù)據(jù)穩(wěn)定傳輸必須滿足建立和保持時(shí)間的要求,當(dāng)然在一些情況下,建立時(shí)間和保持時(shí)間的值可以為零。pld/fpga開發(fā)軟件可以自動(dòng)計(jì)算兩個(gè)相關(guān)輸入的建立和保持時(shí)間(如圖2)圖1 建立時(shí)間和保持時(shí)間關(guān)系圖 注:

      ? 在考慮建立保持時(shí)間時(shí),應(yīng)該考慮時(shí)鐘樹向后偏斜的情況,在考慮建立時(shí)間時(shí)應(yīng)該 考慮時(shí)鐘樹向前偏斜的情況。在進(jìn)行后仿真時(shí),最大延遲用來檢查建立時(shí)間,最小 ? 延時(shí)用來檢查保持時(shí)間。建立時(shí)間的約束和時(shí)鐘周期有關(guān),當(dāng)系統(tǒng)在高頻時(shí)鐘下無法工作時(shí),降低時(shí)鐘頻率

      就可以使系統(tǒng)完成工作。保持時(shí)間是一個(gè)和時(shí)鐘周期無關(guān)的參數(shù),如果設(shè)計(jì)不合理,使得布局布線工具無法布出高質(zhì)量的時(shí)鐘樹,那么無論如何調(diào)整時(shí)鐘頻率也無法達(dá) 到要求,只有對(duì)所設(shè)計(jì)系統(tǒng)作較大改動(dòng)才有可能正常工作,導(dǎo)致設(shè)計(jì)效率大大降低。因此合理的設(shè)計(jì)系統(tǒng)的時(shí)序是提高設(shè)計(jì)質(zhì)量的關(guān)鍵。在可編程器件中,時(shí)鐘樹的偏 斜幾乎可以不考慮,因此保持時(shí)間通常都是滿足的。1.2 fpga中的競(jìng)爭(zhēng)和冒險(xiǎn)現(xiàn)象

      信號(hào)在fpga器件內(nèi)部通過連線和邏輯單元時(shí),都有一定的延時(shí)。延時(shí)的大小與連線的 長(zhǎng)短和邏輯單元的數(shù)目有關(guān),同時(shí)還受器件的制造工藝、工作電壓、溫度等條件的影響。信號(hào)的高低電平轉(zhuǎn)換也需要一定的過渡時(shí)間。由于存在這兩方面因素,多路信號(hào)的電平值發(fā)生變化時(shí),在信號(hào)變化的瞬間,組合邏輯的輸出有先后順序,并不是同時(shí)變化,往往會(huì)出現(xiàn)一些不正確的尖峰信號(hào),這些尖峰信號(hào)稱為毛刺。如果一個(gè)組合邏輯電路中有毛刺出現(xiàn),就說明該電路存在冒險(xiǎn)。(與分立元件不同,由于pld內(nèi)部不存在寄生電容電感,這些毛刺將被完整的保留并向下一級(jí)傳遞,因此毛刺現(xiàn)象在pld、fpga設(shè)計(jì)中尤為突出)圖2是一個(gè)邏輯冒險(xiǎn)的例子,從圖3的仿真波形可以看出,a、b、c、d四個(gè)輸入信號(hào)經(jīng)過布線延時(shí)以后,高低電平變換不是同時(shí)發(fā)生的,這導(dǎo)致輸出信號(hào)out出現(xiàn)了毛刺。(我們無法保證所有連線的長(zhǎng)度一致,所以即使四個(gè)輸入信號(hào)在輸入端同時(shí)變化,但經(jīng)過pld內(nèi)部的走線,到達(dá)或門的時(shí)間也是不一樣的,毛刺必然產(chǎn)生)??梢愿爬ǖ闹v,只要輸入信號(hào)同時(shí)變化,(經(jīng)過內(nèi)部走線)組合邏輯必將產(chǎn)生毛刺。將它們的輸出直接連接到時(shí)鐘輸入端、清零或置位端口的設(shè)計(jì)方法是錯(cuò)誤的,這可能會(huì)導(dǎo)致嚴(yán)重的后果。所以我們必須檢查設(shè)計(jì)中所有時(shí)鐘、清零和置位等對(duì)毛刺敏感的輸入端口,確保輸入不會(huì)含有任何毛刺 圖2 存在邏輯冒險(xiǎn)的電路示例 圖3 圖2所示電路的仿真波形

      冒險(xiǎn)往往會(huì)影響到邏輯電路的穩(wěn)定性。時(shí)鐘端口、清零和置位端口對(duì)毛刺信號(hào)十分敏

      感,任何一點(diǎn)毛刺都可能會(huì)使系統(tǒng)出錯(cuò),因此判斷邏輯電路中是否存在冒險(xiǎn)以及如何避免冒險(xiǎn)是設(shè)計(jì)人員必須要考慮的問題。如何處理毛刺

      我們可以通過改變?cè)O(shè)計(jì),破壞毛刺產(chǎn)生的條件,來減少毛刺的發(fā)生。例如,在數(shù)字電

      路設(shè)計(jì)中,常常采用格雷碼計(jì)數(shù)器取代普通的二進(jìn)制計(jì)數(shù)器,這是因?yàn)楦窭状a計(jì)數(shù)器的輸出每次只有一位跳變,消除了競(jìng)爭(zhēng)冒險(xiǎn)的發(fā)生條件,避免了毛刺的產(chǎn)生。

      毛刺并不是對(duì)所有的輸入都有危害,例如d觸發(fā)器的d輸入端,只要毛刺不出現(xiàn)在時(shí) 鐘的上升沿并且滿足數(shù)據(jù)的建立和保持時(shí)間,就不會(huì)對(duì)系統(tǒng)造成危害,我們可以說d觸發(fā) 器的d輸入端對(duì)毛刺不敏感。根據(jù)這個(gè)特性,我們應(yīng)當(dāng)在系統(tǒng)中盡可能采用同步電路,這是因?yàn)橥诫娐沸盘?hào)的變化都發(fā)生在時(shí)鐘沿,只要毛刺不出現(xiàn)在時(shí)鐘的沿口并且不滿足數(shù)據(jù)的建立和保持時(shí)間,就不會(huì)對(duì)系統(tǒng)造成危害。(由于毛刺很短,多為幾納秒,基本上都不可能滿足數(shù)據(jù)的建立和保持時(shí)間)

      去除毛刺的一種常見的方法是利用d觸發(fā)器的d輸入端對(duì)毛刺信號(hào)不敏感的特點(diǎn),在輸出信號(hào)的保持時(shí)間內(nèi),用觸發(fā)器讀取組合邏輯的輸出信號(hào),這種方法類似于將異步電路轉(zhuǎn)化為同步電路。圖4給出了這種方法的示范電路,圖5是仿真波形。圖4 消除毛刺信號(hào)方法之二 圖5 圖4所示電路的仿真波形

      如前所述,優(yōu)秀的設(shè)計(jì)方案,如采用格雷碼計(jì)數(shù)器,同步電路等,可以大大減少毛刺,但它并不能完全消除毛刺。毛刺并不是對(duì)所有輸入都有危害,例如d觸發(fā)器的d輸入端,只要毛刺不出現(xiàn)在時(shí)鐘的上升沿并且滿足數(shù)據(jù)的建立和保持時(shí)間,就不會(huì)對(duì)系統(tǒng)造成危害。因此我們可以說d觸發(fā)器的d輸入端對(duì)毛刺不敏感。但對(duì)于d觸發(fā)器的時(shí)鐘端,置位端,清零端,則都是對(duì)毛刺敏感的輸入端,任何一點(diǎn)毛刺就會(huì)使系統(tǒng)出錯(cuò),但只要認(rèn)真處理,我們可以把危害降到最低直至消除。下面我們就對(duì)幾種具體的信號(hào)進(jìn)行探討。1.3 清除和置位信號(hào)

      在fpga的設(shè)計(jì)中,全局的清零和置位信號(hào)必須經(jīng)過全局的清零和置位管腳輸入,因?yàn)?他們也屬于全局的資源,其扇出能力大,而且在fpga內(nèi)部是直接連接到所有的觸發(fā)器的置位和清零端的,這樣的做法會(huì)使芯片的工作可靠、性能穩(wěn)定,而使用普通的io腳則不能保證該性能。在fpga的設(shè)計(jì)中,除了從外部管腳引入的全局清除和置位信號(hào)外在fpga內(nèi)部邏輯的 處理中也經(jīng)常需要產(chǎn)生一些內(nèi)部的清除或置位信號(hào)。清除和置位信號(hào)要求象對(duì)待時(shí)鐘那樣小心地考慮它們,因?yàn)檫@些信號(hào)對(duì)毛刺也是非常敏感的。

      在同步電路設(shè)計(jì)中,有時(shí)候可以用同步置位的辦法來替代異步清0。在用硬件描述語言 的設(shè)計(jì)中可以用如下的方式來描述: 異步清0的描述方法: process(rst,clk)begin if rst=’1’ then count<=(others=>’0’);elsif clk’event and clk=’1’ then count<=count+1;end if;end process;同步清0的描述方法: process beginwait until clk’event and clk=’1’;if rst=’1’ then count<=(others=>’0’);else count<=count+1;end if;end process;圖6 異步清0、置位邏輯圖

      圖7 同步清0、置位關(guān)系圖1.4 觸發(fā)器和鎖存器:

      我們知道,觸發(fā)器是在時(shí)鐘的沿進(jìn)行數(shù)據(jù)的鎖存的,而鎖存器是用電平使能來鎖存數(shù) 據(jù)的。所以觸發(fā)器的q輸出端在每一個(gè)時(shí)鐘沿都會(huì)被更新,而鎖存器只能在使能電平有效 器件才會(huì)被更新。在fpga設(shè)計(jì)中建議如果不是必須那么應(yīng)該盡量使用觸發(fā)器而不是鎖存器。那么在使用硬件描述語言進(jìn)行電路設(shè)計(jì)的時(shí)候如何區(qū)分觸發(fā)器和鎖存器的描述方法

      哪?其實(shí)有不少人在使用的過程中可能并沒有特意區(qū)分過,所以也忽略了二者在描述方法上的區(qū)別。下面是用vhdl語言描述的觸發(fā)器和鎖存器以及綜合器產(chǎn)生的電路邏輯圖。觸發(fā)器的語言描述: process begin wait until clk’event and clk=’1’;q<=d;end process;圖 觸發(fā)器

      鎖存器的語言描述:

      process(en,d)beginif en=’1’ then q<=d;end if;end process;

      第二篇:fpga學(xué)習(xí)心得體會(huì)

      fpga學(xué)習(xí)心得體會(huì)

      1、該課程實(shí)現(xiàn)了通過usb 接口將代碼與實(shí)驗(yàn)設(shè)備相結(jié)合的功能,并且使我對(duì)EL-S0PC4000 實(shí)驗(yàn)箱有了接觸,了解并掌握了其所具備的一些功能,在實(shí)驗(yàn)中不僅使我學(xué)到了很多知識(shí),并且其過程還充滿了樂趣。

      2、QuartusII 軟件及FPGA 的設(shè)計(jì)與應(yīng)用所采用的語言與我所學(xué)過的一些語言有所不同,該種語法與C 語言有一些相似之處,但在細(xì)枝末節(jié)上有該語言自己的習(xí)慣,這是學(xué)習(xí)這門語言的要點(diǎn)。學(xué)習(xí)一門語言并不是一周兩周就能速成的,想要掌握這門語言還是需要日后自己不斷地練習(xí)不斷地積累經(jīng)驗(yàn),在完成一項(xiàng)工程后所帶來的成就感也是使我持續(xù)學(xué)習(xí)的動(dòng)力。

      3、此外,該門課程與我之前學(xué)習(xí)的數(shù)電這門課程息息相關(guān),他也是仿真了許多數(shù)電的一些電路,使我對(duì)數(shù)電的理解更加的深刻,既鍛煉了我的動(dòng)手能力,同時(shí)也鍛煉了我的邏輯思維能力。在這幾次的數(shù)電實(shí)驗(yàn)中,我收獲頗多,我們經(jīng)過老師的教導(dǎo),學(xué)會(huì)了FPGA,Verilog編程,我們也學(xué)會(huì)了使用Quartus軟件,并用電路板進(jìn)行了多次FGPA實(shí)驗(yàn),了解了Verilog的設(shè)計(jì);實(shí)驗(yàn)中我學(xué)會(huì)了用Quartus軟件繪圖、編碼以及與電路板的連接;實(shí)驗(yàn)中,我遇到了很多問題,但是經(jīng)過老師和同學(xué)們的幫助,我都逐一的解決了這些問題并完成了實(shí)驗(yàn)。實(shí)驗(yàn)中我們收獲最多重要的是,結(jié)合電路板進(jìn)行代碼的編譯、調(diào)試,希望以后我們會(huì)有更多的機(jī)會(huì)學(xué)習(xí)了解verilog編程

      第三篇:FPGA,學(xué)習(xí)心得體會(huì)

      篇一:fpga學(xué)習(xí)心得大報(bào)告

      《fpga技術(shù)基礎(chǔ)》學(xué)習(xí)報(bào)告--課程內(nèi)容學(xué)習(xí)心得

      姓 名:

      學(xué) 號(hào): 年級(jí)專業(yè): 指導(dǎo)教師:

      瞿麟 201010401128 自動(dòng)化101薛小軍摘要從開始學(xué)fpga到現(xiàn)在粗略算來的話,已經(jīng)有3個(gè)多月了,就目前而言,我并不確定自己算不算高手們所說的入門了,fpga學(xué)習(xí)總結(jié)。但是不管現(xiàn)在的水平如何,現(xiàn)在就總結(jié)一下自己學(xué)習(xí)它的感受或一些認(rèn)識(shí)吧。

      關(guān)鍵詞

      fpga de2板 quartusii軟件 verilog語言

      引言

      fpga是什么?fpga現(xiàn)狀?怎樣學(xué)習(xí)fpga?

      fpga是現(xiàn)場(chǎng)可編程門陣列的簡(jiǎn)稱,fpga的應(yīng)用領(lǐng)域最初為通信領(lǐng)域,但目前,隨著信息產(chǎn)業(yè)和微電子技術(shù)的發(fā)展,可編程邏輯嵌入式系統(tǒng)設(shè)計(jì)技術(shù)已經(jīng)成為信息產(chǎn)業(yè)最熱門的技術(shù)之一,應(yīng)用范圍遍及航空航天、醫(yī)療、通訊、網(wǎng)絡(luò)通訊、安防、廣播、汽車電子、工業(yè)、消費(fèi)類市場(chǎng)、測(cè)量測(cè)試等多個(gè)熱門領(lǐng)域。并隨著工藝的進(jìn)步和技術(shù)的發(fā)展,向更多、更廣泛的應(yīng)用領(lǐng)域擴(kuò)展。越來越多的設(shè)計(jì)也開始以asic轉(zhuǎn)向fpga,fpga正以各種電子產(chǎn)品的形式進(jìn)入了我們?nèi)粘I畹母鱾€(gè)角落。

      正文

      (1)掌握fpga的編程語言

      在學(xué)習(xí)一門技術(shù)之前我們往往從它的編程語言開始,如同學(xué)習(xí)單片機(jī)一樣,我們從c語言開始入門,當(dāng)掌握了c語言之后,開發(fā)單片機(jī)應(yīng)用程序也就不是什么難事了。學(xué)習(xí)fpga也是如此,fpga的編程語言有兩種:vhdl和verilog,這兩種語言都適合用于fpga的編程。(2)fpga實(shí)驗(yàn)尤為重要 除了學(xué)習(xí)編程語言以外,更重要的是實(shí)踐,將自己設(shè)計(jì)的程序能夠在真正的fpga里運(yùn)行起來,這時(shí)我們需要選一塊板子進(jìn)行實(shí)驗(yàn),我們選擇使用de2板才進(jìn)行試驗(yàn)。初識(shí)de2開發(fā)板

      de2的資源de2的資源非常豐富,包括

      1.核心的fpga芯片-cyclone ii 2c35 f672c6,從名稱可以看出,它包含有35千個(gè)le,在altera的芯片系列中,不算最多,但也絕對(duì)夠用。altera下載控制芯片-epcs16以及usb-blaste對(duì)jtag的支持。

      2.存儲(chǔ)用的芯片有: 512-kb sram,8-mbyte sdram,4-mbyte flash memory 3.經(jīng)典io配置:擁有4個(gè)按鈕,18個(gè)撥動(dòng)開關(guān),18個(gè)紅色發(fā)光二極管,9個(gè)綠色發(fā)光二極管,8個(gè)七段數(shù)碼管,16*2字符液晶顯示屏,4.超強(qiáng)多媒體:24位cd音質(zhì)音頻芯片wm8731(mic輸入+linein+ 標(biāo)準(zhǔn)音頻輸出),視頻解碼芯片(支持ntsc/pal制式),帶有高速dac視屏輸出vga模塊。5.更多標(biāo)準(zhǔn)接口:通用串行總線usb控制模塊以及a、b型接口,sd card接口,irda紅外模塊,10/100m自適應(yīng)以太網(wǎng)絡(luò)適配器,rs-232標(biāo)準(zhǔn)串口,ps/2鍵盤接口 6.其他:50m,27m晶振各一個(gè),支持外部時(shí)鐘,80針帶保護(hù)電路的外接io 7.此外還有:配套的光盤資料,qutuarsii軟件,niosii 6.0ide,例程與說明文檔。

      關(guān)于管腳分配

      當(dāng)我們創(chuàng)建一個(gè)fpga用戶系統(tǒng)的時(shí)候,到最后要做的工作就是下載,在下載之前必須根據(jù)芯片的型號(hào)分配管腳,這樣才能將程序中特定功能的管腳與實(shí)際中的fpga片外硬件電路一一對(duì)應(yīng)。

      fpga簡(jiǎn)單的說,就是現(xiàn)場(chǎng)可編程邏輯陣列。它的內(nèi)部是邏輯單元,它們之間可以用線連接,至于以怎樣的形式相連,則可以根據(jù)應(yīng)用者寫入的邏輯決定。每次布線都會(huì)重新組合邏輯單元,從而可以任意的編寫不同的邏輯。當(dāng)然,前提是定義的邏輯塊不超出它可讀寫的最大值??偨Y(jié)在學(xué)習(xí)fpga時(shí),遇到的問題有許多,譬如,寫代碼時(shí)的警告,特別是一些不能忽視的警告,每次遇到時(shí),總是還要檢查一會(huì)兒才能改過來,或者有的警告已經(jīng)出現(xiàn)了幾次,但是就是解決不掉。每次在學(xué)一個(gè)模塊時(shí),只要是看懂了,它的一些重點(diǎn)就沒有及時(shí)的記錄在本子上,只有個(gè)別的想起來時(shí),才會(huì)做筆記。每做完一個(gè)模塊,沒有及時(shí)記錄下自己從這個(gè)模塊中學(xué)到了什么。上面的不足,都是在寫模塊的過程中,自己逐漸暴露出來的。我很慶幸自己的一些問題能及時(shí)的被發(fā)現(xiàn),避免類似的事情再次發(fā)生。像遇到警告時(shí),都要記錄下來,通過改正后,要注釋,寫下警告的原因,定期看一下。每次寫模塊的時(shí)候,都要記下重點(diǎn)知識(shí),即使是自己懂得的,好記性都是比不過爛筆頭的。

      關(guān)于以上的總結(jié),我相信在以后的學(xué)習(xí)中一定會(huì)對(duì)自己有莫大的幫助,它會(huì)時(shí)刻警醒自己,在以前的學(xué)習(xí)中,自己有哪些不足,以后千萬不能再去犯同樣的錯(cuò)誤,不斷地糾正,不斷地進(jìn)步,相信自己一定會(huì)學(xué)好fpga的。篇二:fpga學(xué)習(xí)心得

      回想起自己學(xué)fpga,已經(jīng)有一段時(shí)間了,從開始的茫然,到后來的瘋狂看書,設(shè)計(jì)開發(fā)板,調(diào)電路,練習(xí)各種fpga實(shí)例,到最后能獨(dú)立完成項(xiàng)目,一路走來,感受頗多,拿出來和大家分享,順便介紹下自己的一點(diǎn)經(jīng)驗(yàn)所得,希望對(duì)初學(xué)者有所幫助。廢話不說了,下面進(jìn)入正題,學(xué)習(xí)fpga我主要經(jīng)歷了這么幾個(gè)階段:

      ①、verilog語言的學(xué)習(xí),熟悉verilog語言的各種語法。

      ②、fpga的學(xué)習(xí),熟悉quartusii軟件的各種功能,各種邏輯算法設(shè)計(jì),接口模塊(rs232,lcd,vga,spi,i2c等)的設(shè)計(jì),時(shí)序分析,硬件優(yōu)化等,自己開始設(shè)計(jì)簡(jiǎn)單的fpga板子。③、niosii的學(xué)習(xí),熟悉niosii的開發(fā)流程,熟悉開發(fā)軟件(sopc,niosii ide),了解niosii的基本結(jié)構(gòu),設(shè)計(jì)niosii開發(fā)板,編寫niosii c語言程序,調(diào)試板子各模塊功能。先來說說第一個(gè)階段,現(xiàn)在主要的硬件描述語言有vhdl,verilog兩種,在本科時(shí)老師一般教vhdl,不過現(xiàn)在

      verilog用的人越來越多,其更容易上手(與c語言語法比較類似),也更靈活,現(xiàn)在的ic設(shè)計(jì)基本都用verilog。像systemc,systemverilog之類的應(yīng)該還在萌芽階段,以后可能會(huì)有較大發(fā)展。鑒于以上原因我選擇了verilog作為我學(xué)習(xí)的硬件描述語言。

      其實(shí)有c語言的基礎(chǔ),學(xué)起verilog的語言很簡(jiǎn)單,關(guān)鍵要有并行的概念,所有的module,assign,always都是并行的,這一點(diǎn)與軟件語言有明顯不同。這里推薦幾本評(píng)價(jià)比較好的學(xué)習(xí)verilog的書籍: ①、《verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程》,這本書對(duì)于入門是一本很好的書,通俗易懂,讓人很快上手,它里面的例子也不錯(cuò)。但本書對(duì)于資源優(yōu)化方面的編程沒有多少涉及到。②、《設(shè)計(jì)與驗(yàn)證verilog hdl》,這本書雖然比較薄,但是相當(dāng)精辟,講解的也很深入,很多概念看了這本書有種豁然開朗的感覺,呵呵。

      學(xué)習(xí)verilog其實(shí)不用看很多書,基本的語法部分大家都一樣,關(guān)鍵是要自己會(huì)靈活應(yīng)用,多做練習(xí)。

      verilog語言學(xué)了一段時(shí)間,感覺自己可以編點(diǎn)東西,希望自己編的程序在板子上運(yùn)行看看結(jié)果,下面就介紹我學(xué)習(xí)的第二個(gè)階段。

      剛開始我拿了實(shí)驗(yàn)室一塊cpld的開發(fā)板做練習(xí),熟悉quartusii的各種功能,比如ip的調(diào)用,各種約束設(shè)置,時(shí)序分析,logiclock設(shè)計(jì)方法等,不過做到后面發(fā)現(xiàn)cpld的資源不太夠(沒有內(nèi)嵌的ram、不能用signaltapii,le太少等),而實(shí)驗(yàn)室沒有fpga開發(fā)板,所以就萌生了自己做fpga開發(fā)板的意圖,剛好cadence我也學(xué)的差不多了,就花了幾天時(shí)間主要研究了fpga配置電路的設(shè)計(jì),在板子上做了jtag和as下載口,在做了幾個(gè)用戶按鍵和led,其他的口全部引出作為io口,電路比較簡(jiǎn)單,板子焊好后一調(diào)就通了(心里那個(gè)爽啊...)。我選的fpga是cycloneii系列的ep2c5,資源比以前的fpga多了好幾倍,還有pll,內(nèi)嵌的ram,可以試試signaltapii,用內(nèi)嵌的邏輯分析儀測(cè)試引腳波形,對(duì)于fpga的調(diào)試,邏輯分析儀是至關(guān)重要的。利用這塊板子我完成了項(xiàng)目中的幾個(gè)主要功能:rs232通信,指令譯碼,配置dds,ad數(shù)據(jù)高速緩存,電子開關(guān)狀態(tài)設(shè)置等,在實(shí)踐中學(xué)習(xí)起來真的比平時(shí)快很多,用到什么學(xué)什么動(dòng)力更大。這個(gè)時(shí)候我主要看的數(shù)據(jù)有這幾本感覺比較好: ①、《altera fpga/cpld 設(shè)計(jì)(基礎(chǔ)篇)》:講解一些基本的fpga設(shè)計(jì)技術(shù),以及quartusii中各個(gè)工具的用法(ip,rtl,signalprobe,signaltapii,timing closure floorplan,chip editor等),對(duì)于入門非常好。②、《altera fpga/cpld 設(shè)計(jì)(高級(jí)篇)》:講解了一些高級(jí)工具的應(yīng)用,logiclock,時(shí)序約束很分析,設(shè)計(jì)優(yōu)化,也講述了一些硬件編程的思想,作為提高用。③、《fpga設(shè)計(jì)指南--器件,工具和流程》:這本書看了他的目錄忍不住就買了,這本書講述了fpga設(shè)計(jì)的各個(gè)方面,雖然每個(gè)方面都是點(diǎn)到為止,但能讓你有個(gè)整體的概念,了解fpga的所有設(shè)計(jì)功能,了解fpga開發(fā)的整個(gè)流程。

      ④、在這里也推薦幾個(gè)學(xué)習(xí)fpga比較好的論壇,不過很多人一看到英語就不想看,其實(shí)上面的英文很簡(jiǎn)單,很多時(shí)候不敢看是因?yàn)閷?duì)自己沒信心或心靜不下來看。不過官方網(wǎng)站上資料很多,剛開始可能會(huì)覺得資料安排的有點(diǎn)亂,不方便查找,以后有時(shí)間我列個(gè)資料的鏈接目錄,整理一下,方便大家查找。

      到這里,自己最fpga的學(xué)習(xí)有一段時(shí)間了,練習(xí)了很多實(shí)例,自己也編寫了不少程序,也有了一些項(xiàng)目經(jīng)驗(yàn),算是對(duì)fpga有些了解了。在不斷的學(xué)習(xí)中發(fā)現(xiàn)fpga不僅可以做邏輯設(shè)計(jì),算法設(shè)計(jì)等,還能做嵌入式開發(fā),altera先后開發(fā)了nios,niosii兩款fpga的嵌入式軟核,并有配套的軟件,剛開始看到這些我真是心中突然豁然開朗,學(xué)習(xí)真的是無止境,又一個(gè)全新的領(lǐng)域擺在我面前,我決定學(xué)習(xí)niosii,要學(xué)就要學(xué)最好。

      剛開始入門是很痛苦的,嵌入式設(shè)計(jì)需要從硬件到驅(qū)動(dòng)到軟件全部熟悉,硬件系統(tǒng)問題還不是很大(以前做過單片機(jī),dsp等mcu),處理器的架構(gòu)心里還有點(diǎn)數(shù),對(duì)于驅(qū)動(dòng)和軟件工程,剛開始學(xué)習(xí)真的很頭痛。niosii應(yīng)該還算比較新的內(nèi)容(應(yīng)該是2004年出的),國內(nèi)的書籍不算很多,網(wǎng)上這方面的資料也比較零碎,所以我就開始將altera網(wǎng)站上這方面的資料系統(tǒng)的看一邊,這里推薦幾本網(wǎng)站上的handbook: ①、embedded design handbook ②、nios ii processor reference handbook ③、nios ii software developers handbook ④、quartus ii handbook, volume 4: sopc builder ⑤、quartus ii handbook, volume 5: embedded peripherals 看完這些handbook,總算基本明白整個(gè)架構(gòu),軟硬件設(shè)計(jì)方法,驅(qū)動(dòng)的編寫等,感覺自己可以編一些嵌入式的程序了,不過雖然前面做的那塊ep2c5的板子支持niosii系統(tǒng),不過對(duì)于嵌入式設(shè)計(jì)來說還是顯得單薄了一點(diǎn),沒有sdram,flash這兩個(gè)比較基本的模塊,ep2c5內(nèi)嵌的ram太小,程序?qū)懖淮?,而且每次總要絞盡腦汁優(yōu)化程序代碼大小,很多時(shí)候優(yōu)化了后函數(shù)功能會(huì)受到限制,不利于初學(xué)者,也不利于調(diào)試。所以到這里我有產(chǎn)生了自己做一塊nios開發(fā)板的想法(直接買比較貴,自己做便宜,而且還能鍛煉自己,一舉兩得),通過借鑒其他開發(fā)板,選擇自己開發(fā)板上需要包含什么模塊,確定各個(gè)模塊使用什么芯片,閱讀各個(gè)芯片的datasheet,畫出原理圖并做出pcb圖,這塊板子我選的是ep2c8q208,比上一塊資源又將近多了一倍,板子上還有以下模塊:sdram,flash,epcs4,rs232,usb,vga,ps2,ad,da,lcd等,滿足了一般開發(fā)板的配置要求。板子回來以后調(diào)試了四五天,(flash工作了,lcd顯示了,rs232通了,usb通了,ad,da工作了,sdram正常了...),真是每天都有驚喜,每個(gè)模塊都編寫了niosii軟件測(cè)試程序,調(diào)試硬件的時(shí)候?qū)浖倪\(yùn)行也更熟悉了。在這次調(diào)試的過程中真的學(xué)到了很多,為此專門寫了好幾頁調(diào)試筆記,下次拿出來和大家一起分享。現(xiàn)在硬件平臺(tái)有了,niosii也了解的差不多了,終于可以自己編寫一些規(guī)模大一點(diǎn)的程序了。學(xué)fpga的一點(diǎn)心得

      從去年開始學(xué)fpga,以前一直做dsp,但因?yàn)轫?xiàng)目的需要,在一個(gè)應(yīng)用中只有fpga才能解決問題,所以硬著頭皮上fpga,又因?yàn)榻Y(jié)項(xiàng)目的時(shí)間比較緊,所以主要以解決問題為目的,說真的,項(xiàng)目做下來寫了四千多行的代碼,達(dá)到了設(shè)計(jì)目標(biāo),但對(duì)fpga學(xué)習(xí)還不夠系統(tǒng),也正進(jìn)一步的學(xué)習(xí)中.因?yàn)槲沂菃胃?沒有團(tuán)隊(duì),遇到問題只能在網(wǎng)上找資料,其難度可想而知,幸好以前用過cpld,有一點(diǎn)基礎(chǔ),用的編程語言是ahdl,感覺ahdl寫一點(diǎn)小程序還可以,但做復(fù)雜程序就有點(diǎn)費(fèi)力了(應(yīng)該是我的ahdl沒學(xué)好),所以在做fpga程序時(shí)我選擇了比較簡(jiǎn)單的 verilog語言。

      由于沒人指導(dǎo),所以買了一個(gè)簡(jiǎn)單的fpga開發(fā)板,是cyclone的,開發(fā)板就是好,送了較多學(xué)習(xí)資料,用了一個(gè)星期的時(shí)間,學(xué)習(xí)了niosii的基本應(yīng)用,當(dāng)然,我的需要就是知道如何在nios里控制一個(gè)信號(hào)的高低電平變化就夠了,其它全是c語言的東西,主要是熟悉了quartus的開發(fā)平臺(tái),并用nios程序把要實(shí)現(xiàn)的主要代碼用c寫了一遍,通過了,但速 度上不去。有這些知識(shí)做鋪墊后,就開始了項(xiàng)目的設(shè)計(jì)。項(xiàng)目要求將外部高速數(shù)據(jù)(40mb/s)進(jìn)行存盤,并可以將存盤的數(shù)據(jù)在適當(dāng)?shù)臅r(shí)候原路返回(速度不變)。所以在硬件的設(shè)計(jì)上fpga選擇了ep2c35f484c8n,外部有128m的sdram做為數(shù)據(jù)的緩沖。所以fpga的主要程序集中在atahost控制器(實(shí)現(xiàn)udma讀寫)、sdram控制器(大容量循環(huán)緩沖)上,當(dāng)然還包括一些其它的控制,如實(shí)時(shí)時(shí)鐘,usb2.0芯片控制,rs232的通信及相應(yīng)的通信協(xié)議。

      硬件完成后,大部分的時(shí)間都在寫程序,感覺verilog跟c差不多,就將原來寫成的c代碼翻譯了一下,每寫一段代碼就測(cè)試一下。起初并不知道在quartus里還有邏輯分析儀的功能,所以程序出了問題只能使勁的分析代碼,猜想問題可能出在哪里,萬不得已時(shí)才做一下仿真(后來看很多有做程序都先做仿真,仿真通過后再下載到目標(biāo)板里運(yùn)行測(cè)試,但到現(xiàn)在我的仿真關(guān)還沒過),所以做得很累。我感到這樣做下去到時(shí)間結(jié)點(diǎn)肯定結(jié)了不了項(xiàng)目,就找fpga的qq群向高手們請(qǐng)教經(jīng)驗(yàn),知道了可以quartus的邏輯分析儀來觀察信號(hào),哈哈,爽了(感謝感謝)。后面的程序找問題就容易多了,按照ata協(xié)議、sdram手冊(cè)、及各外圍芯片手冊(cè)一步步寫下去,當(dāng)然其中也遇到了各種各樣的問題,但很快得到解決。一直到 項(xiàng)目結(jié)束,都是用邏輯分析儀來找問題,沒做過仿真(所以現(xiàn)在仿真關(guān)還沒過)。今年又用fpga做了一些項(xiàng)目。簡(jiǎn)單說一下體會(huì)吧,歸結(jié)起來就三個(gè)字:做、想、問。書讀千遍,不如做一遍;看別人做百次,不如自己做一次;就是要實(shí)踐。實(shí)踐的動(dòng)力一方面來自興趣,別一方面來自己壓力,我個(gè)人覺得后者更重要。有需求會(huì)容易形成壓力,也就是說最好能在實(shí)際的項(xiàng)目開發(fā)中鍛煉,而不是為了學(xué)習(xí)而學(xué)習(xí)。在做的過程中要多想,多想想問題出現(xiàn)的原因,問題解決后要多問幾個(gè)為什么,這也是經(jīng)驗(yàn)積累的過程,最好要寫項(xiàng)目日志,把問題及原因、解決的辦法都寫進(jìn)去。還要多問,遇到問題經(jīng)歷了痛苦的思索后還得不到解決就要問了,問搜索引擎,問網(wǎng)友,問同學(xué)同行,一篇文章、朋友們的點(diǎn)撥都可能幫助 自己快速解決問題。

      fpga入門心得及系列資料

      不知道為什么自己每次接受一個(gè)新事物,總要花上那么長(zhǎng)的一段時(shí)間。每個(gè)東西,總要經(jīng)過從一點(diǎn)都不了解,到有點(diǎn)了知道,到最后才想知道要來學(xué)學(xué),但每次學(xué)習(xí)時(shí)也總是走馬觀花??赡苷娴氖苤袊慕逃枷胧`的太嚴(yán)重了吧。以前的人讀書,好像也沒有什么目標(biāo),只是知道上課要認(rèn)真聽,考試要考好。這樣就可以了。也從來沒想過,我學(xué)這個(gè)到底有什么用呢。但是上了大學(xué)后,一切都改變了。我們的學(xué)習(xí)也不再是為了考試而考試了。尤其是像我們學(xué)電子,假如僅僅是為考試的話,那你的大學(xué)完全可以過得很輕松,整天睡覺,游戲,照樣可以考高分。那樣畢業(yè)了,你說你的大學(xué)學(xué)習(xí)是不是等于0。到頭來還是什么也不是。所以當(dāng)你進(jìn)入大學(xué),當(dāng)你選擇了電子,就決定了你從此要為之付出。不管將來怎樣,只要你朝著自己的方向走,一定會(huì)成功的。

      現(xiàn)在說說fpga的學(xué)習(xí)吧,或許,很多人剛接觸fpga時(shí),可能還在為到底什么是cpld,什么時(shí)fpga,我到底要學(xué)習(xí)哪門語言而苦惱,不知大家是不是這樣,但是我曾經(jīng)就是這樣,也到網(wǎng)上去找過,最后也終于找到了答案。因?yàn)槟菚r(shí)身邊的人都還沒學(xué)過。其實(shí)cpld,fpga最大的區(qū)別也就是fpga的程序必須由配置芯片經(jīng)過上電后,將程序?qū)懭胄酒?,也就是fpga的內(nèi)部存儲(chǔ)器是相當(dāng)于內(nèi)存一樣,一掉電就沒了。而cpld是像單片機(jī)一樣,程序是存儲(chǔ)存在內(nèi)部中的,一上電就可以跑了。二者的功能差不多,但是fpga的資源比cpld更加豐富。在cpld上可以實(shí)現(xiàn)的功能,在fpga上基本都可以實(shí)現(xiàn)的。所以也不必去想太多什么是fpga,cpld了,只要弄懂了二者的內(nèi)部結(jié)構(gòu)就可以了。

      至于學(xué)什么語言嗎,首先要看你們?cè)谛@蠋熒险n是用什么語言,就先那個(gè)語言吧,我們學(xué)校老師是用vhdl語言的,所以一開始我也是先學(xué)vhdl語言,而且學(xué)習(xí)資料比較多,但是在網(wǎng)上看到,好像公司里面用的比較多的是verilog hdl語言,為了能看懂一些資料,現(xiàn)在也在學(xué)verilog hdl語言,學(xué)習(xí)中發(fā)現(xiàn),要是學(xué)過c語言的人,會(huì)發(fā)現(xiàn)verilog hdl好像更加好理解。

      一旦你開始了學(xué)習(xí)fpga,那就要堅(jiān)持下去,因?yàn)檎Z言這東西,要是不一下子把它強(qiáng)記住,過不了兩天就又忘了,書本的東西,一定要越快消化越好,這樣你看別人的程序時(shí)就不會(huì)有什么語言障礙了。之后就是編寫程序,模仿別人的模塊,仿真實(shí)驗(yàn),這步很重要,要不你就不會(huì)發(fā)現(xiàn)fpga功能的強(qiáng)大,你也不知道到底仿真的結(jié)果和實(shí)際是不是有差別。當(dāng)你成功時(shí),你一定會(huì)感到成功的喜悅。

      當(dāng)你基本的程序都看得懂時(shí),有完整地編個(gè)程序,而且在硬件上實(shí)驗(yàn)過時(shí),那么祝賀你入門了,之后的道路就是不斷的實(shí)踐,跟學(xué)習(xí)單片機(jī)一樣,只有不斷的學(xué)習(xí),不斷的做東西,你的編程能力才會(huì)提高。

      以上僅僅為作者本人的一點(diǎn)觀點(diǎn),本人現(xiàn)在還是一個(gè)電子白菜,只是苦于自己學(xué)習(xí)電子找不到捷徑,不想還有更多的人跟我一樣,在電子的道路中不斷摸索,不斷徘徊。

      看過一個(gè)高手對(duì)fpga的認(rèn)識(shí),自己對(duì)fpga未來的發(fā)展更是看好,鑒定了學(xué)好的決心,fpga在電子開發(fā)工作中已經(jīng)上升到數(shù)字系統(tǒng)核心處理器,盡快掌握fpga開發(fā)技術(shù)顯得非常迫切??偨Y(jié)了一下: 傳統(tǒng)的開發(fā)方式:一半固定,硬件cpu是不可編程的,另一半靈活是可編程的軟件

      fpga新開發(fā)形式:兩個(gè)部分都是可編程了,fpga,它代表的就是硬件的編程。這兩部分都可編程的一個(gè)結(jié)合點(diǎn)就是fpga上的軟核。另外可以根據(jù)需要通過外部單片機(jī)把合適的應(yīng)用bit流寫入到fpga內(nèi),從而完成根據(jù)功能需要變更硬件。硬件可重構(gòu)!

      使計(jì)算機(jī)的能力越來越強(qiáng),方法一:通過提高工藝來提高工作頻率;方法二:通過優(yōu)化系統(tǒng)體系,并行!

      新學(xué)習(xí)思想: fpga設(shè)計(jì)有點(diǎn)象圍棋:易學(xué)難精 帶著問題學(xué)習(xí)是最有效率的

      時(shí)序性能的調(diào)整提高是fpga開發(fā)能力的標(biāo)志

      多看書,但要注意,書當(dāng)做字典,不是所有地方都去看。

      目前,在fpga上有三種類型開發(fā)方法和應(yīng)用方向:a、邏輯類應(yīng)用 b、軟核類應(yīng)用 c、dsp類應(yīng)用。邏輯類應(yīng)用我們接觸的最早,也是fpga最初的應(yīng)用領(lǐng)域,大的應(yīng)用上,一些數(shù)字ic設(shè)計(jì)可以在fpga做前期的功能驗(yàn)證,在通信領(lǐng)域,fpga做信號(hào)的編解碼等等,小的應(yīng)用上我們做的最多的實(shí)際是cpld,完成信號(hào)的變換控制等等。軟核應(yīng)用是前幾年才興起,現(xiàn)在熱門的開發(fā)應(yīng)用方法,在原本需要fpga結(jié)合cpu的地方有成本和靈活性優(yōu)勢(shì)。

      fpga的dsp應(yīng)用是非常有潛力的,性能優(yōu)勢(shì)非常明顯。開發(fā)方法是用matlab的simulink中嵌入廠商的開發(fā)工具包,算法驗(yàn)證在matlab simulink工具下完成,在開發(fā)工具包的支持下生成hdl模塊或者直接生成fpga下載配置文件,這個(gè)方向是fpga應(yīng)用最有挑戰(zhàn)能力領(lǐng)域。mathworks公司不久前也推出了獨(dú)立于fpga廠商的simulink hdl coder工具,使的matlab在數(shù)字系統(tǒng)設(shè)計(jì)領(lǐng)域邁出了堅(jiān)實(shí)的一步,把simulink 模型和stateflow框圖生成位真(bit-ture)、周期精確(cycle-accurate)、可綜合的verilog和vhdl代碼,為matlab simulink用戶提供了通往fpga設(shè)計(jì)實(shí)現(xiàn)的直接通道。篇三:fpga學(xué)習(xí)心得大報(bào)告

      《fpga技術(shù)基礎(chǔ)》學(xué)習(xí)報(bào)告--課程內(nèi)容學(xué)習(xí)心得

      姓 名:

      學(xué) 號(hào): 年級(jí)專業(yè): 指導(dǎo)教師:

      李紹華 201110401132 自動(dòng)化111薛曉軍摘要從開始學(xué)fpga到現(xiàn)在粗略算來的話,已經(jīng)有3個(gè)多月了,就目前而言,我并不確定自己算不算高手們所說的入門了,fpga學(xué)習(xí)總結(jié)。但是不管現(xiàn)在的水平如何,現(xiàn)在就總結(jié)一下自己學(xué)習(xí)它的感受或一些認(rèn)識(shí)吧。

      關(guān)鍵詞; fpga de2板 quartusii軟件 verilog語言

      引言

      fpga是什么?fpga現(xiàn)狀?怎樣學(xué)習(xí)fpga?

      fpga是現(xiàn)場(chǎng)可編程門陣列的簡(jiǎn)稱,fpga的應(yīng)用領(lǐng)域最初為通信領(lǐng)域,但目前,隨著信息產(chǎn)業(yè)和微電子技術(shù)的發(fā)展,可編程邏輯嵌入式系統(tǒng)設(shè)計(jì)技術(shù)已經(jīng)成為信息產(chǎn)業(yè)最熱門的技術(shù)之一,應(yīng)用范圍遍及航空航天、醫(yī)療、通訊、網(wǎng)絡(luò)通訊、安防、廣播、汽車電子、工業(yè)、消費(fèi)類市場(chǎng)、測(cè)量測(cè)試等多個(gè)熱門領(lǐng)域。并隨著工藝的進(jìn)步和技術(shù)的發(fā)展,向更多、更廣泛的應(yīng)用領(lǐng)域擴(kuò)展。越來越多的設(shè)計(jì)也開始以asic轉(zhuǎn)向fpga,fpga正以各種電子產(chǎn)品的形式進(jìn)入了我們?nèi)粘I畹母鱾€(gè)角落。

      正文

      (1)掌握fpga的編程語言

      在學(xué)習(xí)一門技術(shù)之前我們往往從它的編程語言開始,如同學(xué)習(xí)單片機(jī)一樣,我們從c語言開始入門,當(dāng)掌握了c語言之后,開發(fā)單片機(jī)應(yīng)用程序也就不是什么難事了。學(xué)習(xí)fpga也是如此,fpga的編程語言有兩種:vhdl和verilog,這兩種語言都適合用于fpga的編程。(2)fpga實(shí)驗(yàn)尤為重要 除了學(xué)習(xí)編程語言以外,更重要的是實(shí)踐,將自己設(shè)計(jì)的程序能夠在真正的fpga里運(yùn)行起來,這時(shí)我們需要選一塊板子進(jìn)行實(shí)驗(yàn),我們選擇使用de2板才進(jìn)行試驗(yàn)。初識(shí)de2開發(fā)板

      de2的資源de2的資源非常豐富,包括

      1.核心的fpga芯片-cyclone ii 2c35 f672c6,從名稱可以看出,它包含有35千個(gè)le,在altera的芯片系列中,不算最多,但也絕對(duì)夠用。altera下載控制芯片-epcs16以及usb-blaste對(duì)jtag的支持。

      2.存儲(chǔ)用的芯片有: 512-kb sram,8-mbyte sdram,4-mbyte flash memory 3.經(jīng)典io配置:擁有4個(gè)按鈕,18個(gè)撥動(dòng)開關(guān),18個(gè)紅色發(fā)光二極管,9個(gè)綠色發(fā)光二極管,8個(gè)七段數(shù)碼管,16*2字符液晶顯示屏,4.超強(qiáng)多媒體:24位cd音質(zhì)音頻芯片wm8731(mic輸入+linein+ 標(biāo)準(zhǔn)音頻輸出),視頻解碼芯片(支持ntsc/pal制式),帶有高速dac視屏輸出vga模塊。5.更多標(biāo)準(zhǔn)接口:通用串行總線usb控制模塊以及a、b型接口,sd card接口,irda紅外模塊,10/100m自適應(yīng)以太網(wǎng)絡(luò)適配器,rs-232標(biāo)準(zhǔn)串口,ps/2鍵盤接口 6.其他:50m,27m晶振各一個(gè),支持外部時(shí)鐘,80針帶保護(hù)電路的外接io 7.此外還有:配套的光盤資料,qutuarsii軟件,niosii 6.0ide,例程與說明文檔。

      關(guān)于管腳分配

      當(dāng)我們創(chuàng)建一個(gè)fpga用戶系統(tǒng)的時(shí)候,到最后要做的工作就是下載,在下載之前必須根據(jù)芯片的型號(hào)分配管腳,這樣才能將程序中特定功能的管腳與實(shí)際中的fpga片外硬件電路一一對(duì)應(yīng)。

      fpga簡(jiǎn)單的說,就是現(xiàn)場(chǎng)可編程邏輯陣列。它的內(nèi)部是邏輯單元,它們之間可以用線連接,至于以怎樣的形式相連,則可以根據(jù)應(yīng)用者寫入的邏輯決定。每次布線都會(huì)重新組合邏輯單元,從而可以任意的編寫不同的邏輯。當(dāng)然,前提是定義的邏輯塊不超出它可讀寫的最大值??偨Y(jié)在學(xué)習(xí)fpga時(shí),遇到的問題有許多,譬如,寫代碼時(shí)的警告,特別是一些不能忽視的警告,每次遇到時(shí),總是還要檢查一會(huì)兒才能改過來,或者有的警告已經(jīng)出現(xiàn)了幾次,但是就是解決不掉。每次在學(xué)一個(gè)模塊時(shí),只要是看懂了,它的一些重點(diǎn)就沒有及時(shí)的記錄在本子上,只有個(gè)別的想起來時(shí),才會(huì)做筆記。每做完一個(gè)模塊,沒有及時(shí)記錄下自己從這個(gè)模塊中學(xué)到了什么。上面的不足,都是在寫模塊的過程中,自己逐漸暴露出來的。我很慶幸自己的一些問題能及時(shí)的被發(fā)現(xiàn),避免類似的事情再次發(fā)生。像遇到警告時(shí),都要記錄下來,通過改正后,要注釋,寫下警告的原因,定期看一下。每次寫模塊的時(shí)候,都要記下重點(diǎn)知識(shí),即使是自己懂得的,好記性都是比不過爛筆頭的。

      關(guān)于以上的總結(jié),我相信在以后的學(xué)習(xí)中一定會(huì)對(duì)自己有莫大的幫助,它會(huì)時(shí)刻警醒自己,在以前的學(xué)習(xí)中,自己有哪些不足,以后千萬不能再去犯同樣的錯(cuò)誤,不斷地糾正,不斷地進(jìn)步,相信自己一定會(huì)學(xué)好fpga的。

      第四篇:如何學(xué)習(xí)fpga

      如何學(xué)習(xí)FPGA

      關(guān)鍵詞:工作人員, 硬件, 設(shè)計(jì), FPGA

      掌握FPGA可以找到一份很好的工作,對(duì)于有經(jīng)驗(yàn)的工作人員,使用FPGA可以讓設(shè)計(jì)變得非常有靈活性。掌握了FPGA設(shè)計(jì),單板硬件設(shè)計(jì)就非常容易(不是系統(tǒng)設(shè)計(jì)),特別是上大學(xué)時(shí)如同天書的邏輯時(shí)序圖,看起來就非常親切。但FPGA入門卻有一定難度,因?yàn)樗幌褴浖O(shè)計(jì),只要有一臺(tái)計(jì)算機(jī),幾乎就可以完成所有的設(shè)計(jì)。FPGA設(shè)計(jì)與硬件直接相關(guān),需要實(shí)實(shí)在在的調(diào)試儀器,譬如示波器等。這些硬件設(shè)備一般比較昂貴,這就造成一定的入門門檻,新人在入門時(shí)遇到一點(diǎn)問題或者困難,由于沒有調(diào)試設(shè)備,無法定位問題,最后可能就會(huì)放棄。其實(shí)這時(shí)如果有人稍微指點(diǎn)一下,這個(gè)門檻很容易就過去。我用FPGA做設(shè)計(jì)很多年了,遠(yuǎn)達(dá)不到精通的境界,只是熟悉使用,在這里把我對(duì)FPGA學(xué)習(xí)步驟理解寫出來,僅是作為一個(gè)參考,不對(duì)的地方,歡迎大家討論和指正。

      FPGA學(xué)習(xí)步驟

      1、工欲善其事,必先利其器。

      計(jì)算機(jī)必不可少。目前FPGA應(yīng)用較多的是Altera和xilinx這兩個(gè)公司,可以選擇安裝quartusII或者ISE軟件。這是必備的軟件環(huán)境。

      硬件環(huán)境還需要下載器、目標(biāo)板。雖然有人說沒有下載器和目標(biāo)板也可學(xué)習(xí)fpga,但那總是紙上談兵。這就像談女朋友,總是嘴上說說,通個(gè)電話,連個(gè)手都沒牽,能說人家是你朋友?雖說搭建硬件環(huán)境需要花費(fèi),但想想,硬件環(huán)境至多幾百元錢,你要真的掌握FPGA的設(shè)計(jì),起薪比別人都不止高出這么多。這點(diǎn)花費(fèi)算什么?

      FPGA學(xué)習(xí)步驟

      2、熟悉verilog語言或者vhdl語言,熟練使用quartusII或者ISE軟件。

      VHDL和verilog各有優(yōu)點(diǎn),選擇一個(gè),建議選擇verilog。熟練使用設(shè)計(jì)軟件,知道怎樣編譯、仿真、下載等過程。

      起步階段不希望報(bào)一些培訓(xùn)班,除非你有錢,或者運(yùn)氣好,碰到一個(gè)水平高、又想把自己的經(jīng)驗(yàn)和別人共享的培訓(xùn)老師,不然的話,培訓(xùn)完后總會(huì)感覺自己是一個(gè)冤大頭。入門階段可以在利用網(wǎng)絡(luò)資源完成。

      FPGA學(xué)習(xí)步驟

      3、設(shè)計(jì)一個(gè)小代碼,下載到目標(biāo)板看看結(jié)果

      此時(shí)可以設(shè)計(jì)一個(gè)最簡(jiǎn)答的程序,譬如點(diǎn)燈。如果燈在閃爍了,表示基本入門了。如果此時(shí)能夠下載到FPGA外掛的flash,F(xiàn)PGA程序能夠從flash啟動(dòng),表明FPGA的最簡(jiǎn)單設(shè)計(jì)你已經(jīng)成功,可以到下一步。

      FPGA學(xué)習(xí)步驟

      4、設(shè)計(jì)稍微復(fù)雜的代碼,下載到目標(biāo)板看看結(jié)果。

      可以設(shè)計(jì)一個(gè)UART程序,網(wǎng)上有參考,你要懂RS232協(xié)議和FPGA內(nèi)置的邏輯分析儀。網(wǎng)上下載一個(gè)串口調(diào)試助手,調(diào)試一番,如果通信成功了,恭喜,水平有提高。進(jìn)入下一步。

      FPGA學(xué)習(xí)步驟

      5、設(shè)計(jì)復(fù)雜的代碼,下載到目標(biāo)板看看結(jié)果。

      譬如sdram的程序,網(wǎng)上也有參考,這個(gè)設(shè)計(jì)難度有點(diǎn)大??捎么趤碚{(diào)試sdram,把串口的數(shù)據(jù)存儲(chǔ)到sdram,然后讀回,如果成功,那你就比較熟悉FPGA設(shè)計(jì)了

      FPGA學(xué)習(xí)步驟

      6、設(shè)計(jì)高速接口,譬如ddr2或者高速串行接口

      這要對(duì)FPGA的物理特性非常了解,而且要懂得是時(shí)序約束等設(shè)計(jì)方法,要看大量的原廠文檔,這部分成功了,那就對(duì)FPGA的物理接口掌握很深,你就是設(shè)計(jì)高手了

      FPGA學(xué)習(xí)步驟

      7、設(shè)計(jì)一個(gè)復(fù)雜的協(xié)議

      譬如USB、PCIexpress、圖像編解碼等,鍛煉對(duì)系統(tǒng)的整體把握和邏輯劃分。完成這些,你就是一個(gè)一流的高手、FPGA學(xué)習(xí)步驟

      8、學(xué)習(xí)再學(xué)習(xí)

      學(xué)習(xí)什么,我也不知道,我只知道“學(xué)無止境,山外有山”。

      現(xiàn)在很多FPGA工程師,沒找到合適,我覺得很多人從開始的時(shí)候就誤入歧途了,對(duì)新手學(xué)習(xí)FPGA設(shè)計(jì)我也說一點(diǎn)看法吧。我認(rèn)為要從基礎(chǔ)開始做,基礎(chǔ)牢,才有成為高手的可能。

      我覺得FPGA學(xué)習(xí)有以下幾步必須要走:

      第一步:學(xué)習(xí)了解FPGA結(jié)構(gòu),F(xiàn)PGA到底是什么東西,芯片里面有什么,不要開始就拿個(gè)開發(fā)板照著別人的東西去編程。很多開發(fā)板的程序?qū)懙暮軤€,我也做過一段時(shí)間的開發(fā)板設(shè)計(jì),我覺得很大程度上,開發(fā)板在誤人子弟。不過原廠提供的正品開發(fā)板,代碼很優(yōu)秀的,可以借鑒。只有了解了FPGA內(nèi)部的結(jié)構(gòu)才能明白為什么寫Verilog和寫C整體思路是不一樣的。

      第二步:掌握FPGA設(shè)計(jì)的流程。了解每一步在做什么,為什么要那么做。很多人都是不就是那幾步嗎,有什么奇怪的?呵呵,我想至少有一半以上的人不知道synthesize和traslate的區(qū)別吧。

      了解了FPGA的結(jié)構(gòu)和設(shè)計(jì)流程才有可能知道怎么去優(yōu)化設(shè)計(jì),提高速度,減少資源,不要急躁,不要去在為選擇什么語言和選擇哪個(gè)公司的芯片上下功夫。語言只是一個(gè)表達(dá)的方式,重要的是你的思維,沒有一個(gè)好的指導(dǎo)思想,語言用得再好,不過是個(gè)懂語言的人。

      第三步:開始學(xué)習(xí)代碼了。我建議要學(xué)代碼的人都去Altera或Xilinx的網(wǎng)站上下原廠工程師的代碼學(xué)習(xí)。不要一開始就走入誤區(qū)。

      第四步:template很重要。能不能高效利用FPGA資源,一是了解fpga結(jié)構(gòu),二是了解欲實(shí)現(xiàn)的邏輯功能和基本機(jī)構(gòu),三是使用正確的模板。FPGA內(nèi)部器件種類相對(duì)較單一,用好模板,你的邏輯才能被高效的綜合成FPGA擅長(zhǎng)表達(dá)的結(jié)構(gòu):)

      做FPGA主要是要有電路的思想,作為初學(xué)者,往往對(duì)器件可能不是熟悉,那么應(yīng)該對(duì)于數(shù)字電路的知識(shí)很熟悉吧,F(xiàn)PGA中是由觸發(fā)器和查找表以及互聯(lián)線等基本結(jié)構(gòu)組成的,其實(shí)在我們?cè)诖a里面能夠看到的就是與非門以及觸發(fā)器,不要把verilog和c語言等同起來,根本就是不同的東西,沒有什么可比性,在寫一句程序的時(shí)候應(yīng)該想到出來的是一個(gè)什么樣的電路,計(jì)數(shù)

      器 選擇器 三態(tài)門等等,理解時(shí)序,邏輯是一拍一拍的東西,在設(shè)計(jì)初期想的不是很清楚的時(shí)候可以畫畫時(shí)序圖,這樣思路會(huì)更加的清晰,還有就是仿真很重要,不要寫完程序就去往FPGA中去加載,首先要仿真,尤其是對(duì)比較大型一點(diǎn)的程序,想像自己是在做asic,是沒有二次機(jī)會(huì)的,所以一定要把仿真做好,還有很多新手對(duì)于語言的學(xué)習(xí)不知道選vhdl好還是verilog好,個(gè)人偏好verilog,當(dāng)然不是說vhdl不好,反正寫出來的都是電路,那當(dāng)然就不要在語言的語法上面花太多的功夫了,verilog 言簡(jiǎn)意賅assign always case if else 掌握這些幾乎可以寫出90%的電路了,上面是我對(duì)FPGA學(xué)習(xí)的一些愚見,希望對(duì)大家有所幫助。

      第五篇:淺談FPGA學(xué)習(xí)

      為什么大量的人會(huì)覺得FPGA難學(xué)?一位高人決心開貼來詳細(xì)講一下菜鳥覺得FPGA難學(xué)的幾大原因。

      1、不熟悉FPGA的內(nèi)部結(jié)構(gòu),不了解可編程邏輯器件的基本原理。

      FPGA為什么是可以編程的?恐怕很多菜鳥不知道,他們也不想知道。因?yàn)樗麄冇X得這是無關(guān)緊要的。他們潛意識(shí)的認(rèn)為可編程嘛,肯定就是像寫軟件一樣啦。軟件編程的思想根深蒂固,看到Verilog或者VHDL就像看到C語言或者其它軟件編程語言一樣。一條條的讀,一條條的分析。如果這些菜鳥們始終拒絕去了解為什么FPGA是可以編程的,不去了解FPGA的內(nèi)部結(jié)構(gòu),要想學(xué)會(huì)FPGA恐怕是天方夜譚。雖然現(xiàn)在EDA軟件已經(jīng)非常先進(jìn),像寫軟件那樣照貓畫虎也能綜合出點(diǎn)東西,但也許只有天知道EDA軟件最后綜合出來的到底是什么。也許點(diǎn)個(gè)燈,跑個(gè)馬還行。這樣就是為什么很多菜鳥學(xué)了N久以后依然是一個(gè)菜鳥的原因。那么FPGA為什么是可以“編程”的呢?首先來了解一下什么叫“程”。啟示“程”只不過是一堆具有一定含義的01編碼而已。編程,其實(shí)就是編寫這些01編碼。只不過我們現(xiàn)在有了很多開發(fā)工具,通常都不是直接編寫這些01編碼,而是以高級(jí)語言的形式來編寫,最后由開發(fā)工具轉(zhuǎn)換為這種01編碼而已。對(duì)于軟件編程而言,處理器會(huì)有一個(gè)專門的譯碼電路逐條把這些01編碼翻譯為各種控制信號(hào),然后控制其內(nèi)部的電路完成一個(gè)個(gè)的運(yùn)算或者是其它操作。所以軟件是一條一條的讀,因?yàn)檐浖牟僮魇且徊揭徊酵瓿傻?。而FPGA的可編程,本質(zhì)也是依靠這些01編碼實(shí)現(xiàn)其功能的改變,但不同的是FPGA之所以可以完成不同的功能,不是依靠像軟件那樣將01編碼翻譯出來再去控制一個(gè)運(yùn)算電路,F(xiàn)PGA里面沒有這些東西。FPGA內(nèi)部主要有三塊:可編程的邏輯單元、可編程的連線和可編程的IO模塊??删幊痰倪壿媶卧鞘裁矗科浠窘Y(jié)構(gòu)由某種存儲(chǔ)器(SRAM、FLASH等)制成的4輸入或6輸入1輸出地“真值表”加上一個(gè)D觸發(fā)器構(gòu)成。任何一個(gè)4輸入1輸出組合邏輯電路,都有一張對(duì)應(yīng)的“真值表”,同樣的如果用這么一個(gè)存儲(chǔ)器制成的4輸入1輸出地“真值表”,只需要修改其“真值表”內(nèi)部值就可以等效出任意4輸入1輸出的組合邏輯。這些“真值表”內(nèi)部值是什么?就是那些01編碼而已。如果要實(shí)現(xiàn)時(shí)序邏輯電路怎么辦?這不又D觸發(fā)器嘛,任何的時(shí)序邏輯都可以轉(zhuǎn)換為組合邏輯+D觸發(fā)器來完成。但這畢竟只實(shí)現(xiàn)了4輸入1輸出的邏輯電路而已,通常邏輯電路的規(guī)模那是相當(dāng)?shù)拇笈?。那怎么辦呢?這個(gè)時(shí)候就需要用到可編程連線了。在這些連線上有很多用存儲(chǔ)器控制的連接點(diǎn),通過改寫對(duì)應(yīng)存儲(chǔ)器的值就可以確定哪些線是連上的而哪些線是斷開的。這就可以把很多可編程邏輯單元組合起來形成大型的邏輯電路。最后就是可編程的IO,這其實(shí)是FPGA作為芯片級(jí)使用必須要注意的。任何芯片都必然有輸入引腳和輸出引腳。有可編程的IO可以任意的定義某個(gè)非專用引腳(FPGA中有專門的非用戶可使用的測(cè)試、下載用引腳)為輸入還是輸出,還可以對(duì)IO的電平標(biāo)準(zhǔn)進(jìn)行設(shè)置??倸w一句話,F(xiàn)PGA之所以可編程是因?yàn)榭梢酝ㄟ^特殊的01代碼制作成一張張“真值表”,并將這些“真值表”組合起來以實(shí)現(xiàn)大規(guī)模的邏輯功能。不了解FPGA內(nèi)部結(jié)構(gòu),就不能明白最終代碼如何變到FPGA里面去的。也就無法深入的了解如何能夠充分運(yùn)用FPGA?,F(xiàn)在的FPGA,不單單是有前面講的那三塊,還有很多專用的硬件功能單元,如何利用好這些單元實(shí)現(xiàn)復(fù)雜的邏輯電路設(shè)計(jì),是從菜鳥邁向高手的路上必須要克服的障礙。而這一切,還是必須先從了解FPGA內(nèi)部邏輯及其工作原理起。

      2、錯(cuò)誤理解HDL語言,怎么看都看不出硬件結(jié)構(gòu)。

      HDL語言的英語全稱是:Hardware Description Language,注意這個(gè)單詞Description,而不是Design。老外為什么要用Description這個(gè)詞而不是Design呢?因?yàn)镠DL確實(shí)不是用來設(shè)計(jì)硬件的,而僅僅是用來描述硬件的。描述這個(gè)詞精確地反映了HDL語言的本質(zhì),HDL語言不過是已知硬件電路的文本表現(xiàn)形式而已,只是將以后的電路用文本的形式描述出來而已。而在編寫語言之前,硬件電路應(yīng)該已經(jīng)被設(shè)計(jì)出來了。語言只不過是將這種設(shè)計(jì)轉(zhuǎn)化為文字表達(dá)形式而已。但是很多人就不理解了,既然硬件都已經(jīng)被設(shè)計(jì)出來了,直接拿去制作

      部就完了,為什么還要轉(zhuǎn)化為文字表達(dá)形式再通過EDA工具這些麻煩的流程呢?其實(shí)這就是很多菜鳥沒有了解設(shè)計(jì)的抽象層次的問題,任何設(shè)計(jì)包括什么服裝、機(jī)械、廣告設(shè)計(jì)都有一個(gè)抽象層次的問題。就拿廣告設(shè)計(jì)來說吧,最初的設(shè)計(jì)也許就是一個(gè)概念,設(shè)計(jì)出這個(gè)概念也是就是一個(gè)點(diǎn)子而已,離最終拍成廣告還差得很遠(yuǎn)。硬件設(shè)計(jì)也是有不同的抽象層次,每一個(gè)層次都需要設(shè)計(jì)。最高的抽象層次為算法級(jí)、然后依次是體系結(jié)構(gòu)級(jí)、寄存器傳輸級(jí)、門級(jí)、物理版圖級(jí)。使用HDL的好處在于我們已經(jīng)設(shè)計(jì)好了一個(gè)寄存器傳輸級(jí)的電路,那么用HDL描述以后轉(zhuǎn)化為文本的形式,剩下的向更低層次的轉(zhuǎn)換就可以讓EDA工具去做了,這就大大的降低了工作量。這就是可綜合的概念,也就是說在對(duì)這一抽象層次上硬件單元進(jìn)行描述可以被EDA工具理解并轉(zhuǎn)化為底層的門級(jí)電路或其他結(jié)構(gòu)的電路。在FPGA設(shè)計(jì)中,就是在將這以抽象層級(jí)的意見描述成HDL語言,就可以通過FPGA開發(fā)軟件轉(zhuǎn)化為問題1中所述的FPGA內(nèi)部邏輯功能實(shí)現(xiàn)形式。HDL也可以描述更高的抽象層級(jí)如算法級(jí)或者是體系結(jié)構(gòu)級(jí),但目前受限于EDA軟件的發(fā)展,EDA軟件還無法理解這么高的抽象層次,所以HDL描述這樣抽象層級(jí)是無法被轉(zhuǎn)化為較低的抽象層級(jí)的,這也就是所謂的不可綜合。所以在閱讀或編寫HDL語言,尤其是可綜合的HDL,不應(yīng)該看到的是語言本身,而是要看到語言背后所對(duì)應(yīng)的硬件電路結(jié)構(gòu)。如果看到的HDL始終是一條條的代碼,那么這種人永遠(yuǎn)擺脫不了菜鳥的宿命。假如哪一天看到的代碼不再是一行行的代碼而是一塊一塊的硬件模塊,那么恭喜脫離了菜鳥的級(jí)別,進(jìn)入不那么菜的鳥級(jí)別。

      3、FPGA本身不算什么,一切皆在FPGA之外這一點(diǎn)恐怕也是很多學(xué)FPGA的菜鳥最難理解的地方。

      FPGA是給誰用的?很多學(xué)校解釋為給學(xué)微電子專業(yè)或者集成電路設(shè)計(jì)專業(yè)的學(xué)生用的,其實(shí)這不過是很多學(xué)校受資金限制,買不起專業(yè)的集成電路設(shè)計(jì)工具而用FPGA工具替代而已。其實(shí)FPGA是給設(shè)計(jì)電子系統(tǒng)的工程師使用的。這些工程師通常是使用已有的芯片搭配在一起完成一個(gè)電子設(shè)備,如基站、機(jī)頂盒、視頻監(jiān)控設(shè)備等。當(dāng)現(xiàn)有芯片無法滿足系統(tǒng)的需求時(shí),就需要用FPGA來快速的定義一個(gè)能用的芯片。前面說了,F(xiàn)PGA里面無法就是一些“真值表”、觸發(fā)器、各種連線以及一些硬件資源,電子系統(tǒng)工程師使用FPGA進(jìn)行設(shè)計(jì)時(shí)無非就是考慮如何將這些以后資源組合起來實(shí)現(xiàn)一定的邏輯功能而已,而不必像IC設(shè)計(jì)工程師那樣一直要關(guān)注到最后芯片是不是能夠被制造出來。本質(zhì)上和利用現(xiàn)有芯片組合成不同的電子系統(tǒng)沒有區(qū)別,只是需要關(guān)注更底層的資源而已。要想把FPGA用起來還是簡(jiǎn)單的,因?yàn)闊o非就是那些資源,在理解了前面兩點(diǎn)再搞個(gè)實(shí)驗(yàn)板,跑跑實(shí)驗(yàn),做點(diǎn)簡(jiǎn)單的東西是可以的。而真正要把FPGA用好,那光懂點(diǎn)FPGA知識(shí)就遠(yuǎn)遠(yuǎn)不夠了。因?yàn)樽罱K要讓FPGA里面的資源如何組合,實(shí)現(xiàn)何種功能才能滿足系統(tǒng)的需要,那就需要懂得更多更廣泛的知識(shí)。

      目前FPGA的應(yīng)用主要是三個(gè)方向:

      第一個(gè)方向,也是傳統(tǒng)方向主要用于通信設(shè)備的高速接口電路設(shè)計(jì),這一方向主要是用FPGA處理高速接口的協(xié)議,并完成高速的數(shù)據(jù)收發(fā)和交換。這類應(yīng)用通常要求采用具備高速收發(fā)接口的FPGA,同時(shí)要求設(shè)計(jì)者懂得高速接口電路設(shè)計(jì)和高速數(shù)字電路板級(jí)設(shè)計(jì),具備EMC/EMI設(shè)計(jì)知識(shí),以及較好的模擬電路基礎(chǔ),需要解決在高速收發(fā)過程中產(chǎn)生的信號(hào)完整性問題。FPGA最初以及到目前最廣的應(yīng)用就是在通信領(lǐng)域,一方面通信領(lǐng)域需要高速的通信協(xié)議處理方式,另一方面通信協(xié)議隨時(shí)在修改,非常不適合做成專門的芯片。因此能夠靈活改變功能的FPGA就成為首選。到目前為止FPGA的一半以上的應(yīng)用也是在通信行業(yè)。

      第二個(gè)方向,可以稱為數(shù)字信號(hào)處理方向或者數(shù)學(xué)計(jì)算方向,因?yàn)楹艽蟪潭壬线@一方向已經(jīng)大大超出了信號(hào)處理的范疇。例如早就在2006年就聽說老美將FPGA用于金融數(shù)據(jù)分析,后來又見到有將FPGA用于醫(yī)學(xué)數(shù)據(jù)分析的案例。在這一方向要求FPGA設(shè)計(jì)者有一定的數(shù)學(xué)功底,能夠理解并改進(jìn)較為復(fù)雜的數(shù)學(xué)算法,并利用FPGA內(nèi)部的各種資源使之能夠變?yōu)閷?shí)際的運(yùn)算電路。目前真正投入實(shí)用的還是在通信領(lǐng)域的無線信號(hào)處理、信道編解碼以及圖像信號(hào)處理等領(lǐng)域,其它領(lǐng)域的研究正在開展中,之所以沒有大量實(shí)用的主要原因還是因?yàn)閷W(xué)金融的、學(xué)醫(yī)學(xué)的不了解這玩意。不過最近發(fā)現(xiàn)歐美有很多電子工程、計(jì)算機(jī)類的博士轉(zhuǎn)入到金融行業(yè),開展金融信號(hào)處理,相信隨著轉(zhuǎn)入的人增加,F(xiàn)PGA在其它領(lǐng)域的數(shù)學(xué)計(jì)算功能會(huì)更好的發(fā)揮出來,而我也有意做一些這些方面的研究。不過國內(nèi)學(xué)金融的、學(xué)醫(yī)的恐怕連數(shù)學(xué)都很少用到,就不用說用FPGA來幫助他們完成數(shù)學(xué)_運(yùn)算了,這個(gè)問題只有再議了。

      第三個(gè)方向,就是所謂的SOPC方向,其實(shí)嚴(yán)格意義上來說這個(gè)已經(jīng)在FPGA設(shè)計(jì)的范疇之外,只不過是利用FPGA這個(gè)平臺(tái)搭建的一個(gè)嵌入式系統(tǒng)的底層硬件環(huán)境,然后設(shè)計(jì)者主要是在上面進(jìn)行嵌入式軟件開發(fā)而已。設(shè)計(jì)對(duì)于FPGA本身來說是相當(dāng)少的。但如果涉及到需要在FPGA做專門的算法加速,實(shí)際上需要用到第二個(gè)方向的知識(shí),而如果需要設(shè)計(jì)專用的接口電路則需要用到第一個(gè)方向的知識(shí)。

      就目前SOPC方向發(fā)展其實(shí)遠(yuǎn)不如第一和第二個(gè)方向,其主要原因是因?yàn)镾OPC以FPGA為主,或者是在FPGA內(nèi)部的資源實(shí)現(xiàn)一個(gè)“軟”的處理器,或者是在FPGA內(nèi)部嵌入一個(gè)處理器核。但大多數(shù)的嵌入式設(shè)計(jì)卻是以軟件為核心,以現(xiàn)有的硬件發(fā)展情況來看,多數(shù)情況下的接口都已經(jīng)標(biāo)準(zhǔn)化,并不需要那么大的FPGA邏輯資源去設(shè)計(jì)太過復(fù)雜的接口。而且就目前看來SOPC相關(guān)的開發(fā)工具還非常的不完善,以ARM為代表的各類嵌入式處理器開發(fā)工具早已深入人心,大多數(shù)以ARM為核心的SOC芯片提供了大多數(shù)標(biāo)準(zhǔn)的接口,大量成系列的單片機(jī)/嵌入式處理器提供了相關(guān)行業(yè)所需要的硬件加速電路,需要專門定制硬件場(chǎng)合確實(shí)很少。通常是在一些特種行業(yè)才會(huì)在這方面有非常迫切的需求。即使目前Xilinx將ARM的硬核加入到FPGA里面,相信目前的情況不會(huì)有太大改觀,不要忘了很多老掉牙的8位單片機(jī)還在嵌入式領(lǐng)域混呢,嵌入式主要不是靠硬件的差異而更多的是靠軟件的差異來體現(xiàn)價(jià)值的。我曾經(jīng)看好的是cypress的Psoc這一想法。和SOPC系列不同,Psoc的思想是在SOC芯片里面去嵌入那么一小塊FPGA,那這樣其實(shí)可以滿足嵌入式的那些微小的硬件接口差異,比如某個(gè)運(yùn)用需要4個(gè)USB,而通常的處理器不會(huì)提供那么多,就可以用這么一塊FPGA來提供多的USB接口。而另一種運(yùn)用需要6個(gè)UART,也可以用同樣的方法完成。對(duì)于嵌入式設(shè)計(jì)公司來說他們只需要備貨一種芯片,就可以滿足這些設(shè)計(jì)中各種微小的差異變化。其主要的差異化仍然是通過軟件來完成。但目前cypress過于封閉,如果其采用ARM作為處理器內(nèi)核,借助其完整的工具鏈。同時(shí)開放IP合作,讓大量的第三方為它提供IP設(shè)計(jì),其實(shí)是很有希望的。但目前cypress的日子怕不太好過,Psoc的思想也不知道何時(shí)能夠發(fā)光。

      4、數(shù)字邏輯知識(shí)是根本。

      無論是FPGA的哪個(gè)方向,都離不開數(shù)字邏輯知識(shí)的支撐。FPGA說白了是一種實(shí)現(xiàn)數(shù)

      字邏輯的方式而已。如果連最基本的數(shù)字邏輯的知識(shí)都有問題,學(xué)習(xí)FPGA的愿望只是空中樓閣而已。而這,恰恰是很多菜鳥最不愿意去面對(duì)的問題。數(shù)字邏輯是任何電子電氣類專業(yè)的專業(yè)基礎(chǔ)知識(shí),也是必須要學(xué)好的一門課。很多人無非是學(xué)習(xí)了,考個(gè)試,完了。如果不能將數(shù)字邏輯知識(shí)爛熟于心,養(yǎng)成良好的設(shè)計(jì)習(xí)慣,學(xué)FPGA到最后仍然是霧里看花水中望月,始終是一場(chǎng)空的。以上四條只是我目前總結(jié)菜鳥們?cè)趯W(xué)習(xí)FPGA時(shí)所最容易跑偏的地方,F(xiàn)PGA的學(xué)習(xí)其實(shí)就像學(xué)習(xí)圍棋一樣,學(xué)會(huì)如何在棋盤上落子很容易,成為一位高手卻是難上加難。

      下載FPGA學(xué)習(xí)心得體會(huì)(小編整理)word格式文檔
      下載FPGA學(xué)習(xí)心得體會(huì)(小編整理).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        FPGA學(xué)習(xí)經(jīng)驗(yàn)總結(jié)

        FPGA是什么?FPGA現(xiàn)狀?怎樣學(xué)習(xí)FPGA? FPGA是什么? FPGA是什么?FPGA現(xiàn)狀?怎樣學(xué)習(xí)FPGA? FPGA是什么介紹 FPGA是現(xiàn)場(chǎng)可編程門陣列的簡(jiǎn)稱,F(xiàn)PGA的應(yīng)用領(lǐng)域最初為通信領(lǐng)域,但目前,隨著信息產(chǎn)......

        FPGA學(xué)習(xí)步驟

        FPGA學(xué)習(xí)步驟,我的體會(huì) FPGA學(xué)習(xí)步驟,我的體會(huì) FPGA在目前應(yīng)用領(lǐng)域非常,在目前的單板設(shè)計(jì)里面,幾乎都可以看到它的身影。從簡(jiǎn)單的邏輯組合,到高端的圖像、通信協(xié)議處理,從單片邏輯......

        FPGA學(xué)習(xí)概述

        FPGA學(xué)習(xí) 我常年擔(dān)任多個(gè)有關(guān)FPGA學(xué)習(xí)研討的QQ群管理員,長(zhǎng)期以來很多新入群的菜鳥們總是在重復(fù)的問一些非常簡(jiǎn)單但是又讓新手困惑不解的問題。作為管理員經(jīng)常要給這些菜鳥們......

        FPGA學(xué)習(xí)步驟及其前景

        第一部分 FPGA在目前應(yīng)用領(lǐng)域非常,在目前的單板設(shè)計(jì)里面,幾乎都可以看到它的身影。從簡(jiǎn)單的邏輯組合,到高端的圖像、通信協(xié)議處理,從單片邏輯到復(fù)雜的ASIC原型驗(yàn)證,從小家電到航......

        FPGA學(xué)習(xí)的一些誤區(qū)

        FPGA本身不算什么,一切皆在FPGA之外這一點(diǎn)恐怕也是很多學(xué)FPGA的菜鳥最難理解的地方。FPGA是給誰用的?很多學(xué)校解釋為給學(xué)微電子專業(yè)或者集成電路設(shè)計(jì)專業(yè)的學(xué)生用的,其實(shí)這不過......

        學(xué)習(xí)FPGA的幾點(diǎn)心得五篇

        1、首先要明白的是軟件設(shè)計(jì)和邏輯設(shè)計(jì)的不同,并理解什么是硬件意識(shí)。 軟件代碼的執(zhí)行是一個(gè)順序的過程,編繹以后的機(jī)器碼放在存儲(chǔ)器里,等著CPU一條一條的取指并執(zhí)行;因此軟件設(shè)......

        FPGA常用術(shù)語

        標(biāo)題:FPGA常用術(shù)語 2010-05-13 11:16:29 FPGA常用術(shù)語1:LCA(Logic Cell Array):邏輯單元陣列,內(nèi)部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Ou......

        FPGA學(xué)習(xí)心得

        回想起自己學(xué)FPGA,已經(jīng)有一段時(shí)間了,從開始的茫然,到后來的瘋狂看書,設(shè)計(jì)開發(fā)板,調(diào)電路,練習(xí)各種FPGA實(shí)例,到最后能獨(dú)立完成項(xiàng)目,一路走來,感受頗多,拿出來和大家分享,順便介紹下自己的......