剛進(jìn)實(shí)驗(yàn)室的時(shí)候,我的二導(dǎo)就給了我一塊開發(fā)版,是altera 公司的nios ep1c20 cyclone 系列開發(fā)板,當(dāng)時(shí)是以大學(xué)計(jì)劃買的,5000RMB。于是就開始了我的fpga 學(xué)習(xí)之路。以前學(xué)習(xí)過verilog,當(dāng)時(shí)只是停留在純粹的理論階段,編幾個(gè)小小的程序,用quartus-ii 自帶的仿真軟件進(jìn)行一下仿真就ok 了。用仿真軟件進(jìn)行仿真,往往能夠得出你所想要的結(jié)果,但是一旦下載到芯片里邊運(yùn)行的話問題就會(huì)接踵而來。和單片機(jī)機(jī)學(xué)習(xí)一樣,萬(wàn)事開有難。我做的第一個(gè)實(shí)驗(yàn)也是點(diǎn)亮led。自己編寫程序(幾行而已),編譯,引腳分配,仿真,然后就用jtag 下載線連接開發(fā)版板和pc 機(jī),將sof 文件下載到芯片?,F(xiàn)在想起來這是多么簡(jiǎn)單的幾個(gè)步驟,但是對(duì)于當(dāng)時(shí)的我來說,是花費(fèi)了很多的時(shí)間和精力來查找資料和埋頭做實(shí)驗(yàn)的。
特別是引腳的分配,對(duì)著文檔只說需要這么做,然而為什么要這么做呢?當(dāng)時(shí)沒有過多的想法,只想讓我看到實(shí)驗(yàn)的結(jié)果,有了結(jié)果我就有了無(wú)限的成就感和對(duì)做實(shí)驗(yàn)的熱情,所以當(dāng)看到經(jīng)過我的努力,在我的第一個(gè)fpga 實(shí)驗(yàn)里led 按照我的意圖來動(dòng)作的時(shí)候,那種喜悅之情與當(dāng)初學(xué)習(xí)單片機(jī)時(shí)候?qū)崿F(xiàn)led 閃爍的情形是多么的相似。這也是我做實(shí)驗(yàn)的一個(gè)慣例和一個(gè)經(jīng)驗(yàn),那就是邊做實(shí)驗(yàn)邊看書,在實(shí)驗(yàn)中發(fā)現(xiàn)問題,遇到不懂的問題或者原理在查找相關(guān)的文檔,我習(xí)慣動(dòng)手,要是讓我坐在實(shí)驗(yàn)室看上哪怕是1 天的純理論書籍,我的腦袋也會(huì)爆炸的,赫赫,因?yàn)闆]有這么看過書,所以腦袋也一直沒有爆炸。以及后來學(xué)習(xí)ucos 嵌入式操作系統(tǒng)我也采用的這個(gè)方法,我把它叫做“階梯成就感”(在寫這篇文章的時(shí)候突然覺得這個(gè)詞語(yǔ)很符合這種情形,臨時(shí)想出來的)。
抱著這種熱情,自己后來一點(diǎn)一點(diǎn)地深入的學(xué)習(xí)fpga,一些常規(guī)邏輯電路的設(shè)計(jì),包括邏輯門電路、數(shù)據(jù)選擇器、編譯碼器、加減乘除運(yùn)算器、移位器,到后來的稍微復(fù)雜的電路設(shè)計(jì),包括FIFO、數(shù)字跑表、頻率計(jì)、狀態(tài)機(jī)、交通等的控制、卡式電話計(jì)費(fèi)系統(tǒng)以及UART 等。
以上的試驗(yàn)我都是采用的verilog 語(yǔ)言來實(shí)現(xiàn)的。當(dāng)初接觸fpga 的時(shí)候向?qū)W習(xí)VHDL,那時(shí)同學(xué)們都用verilog,以便和他們討論問題的方便,后來就改學(xué)習(xí)verilog 了,一學(xué)不要緊,發(fā)現(xiàn)自己深深地愛上了verilog,因?yàn)閷?duì)于我來說,他無(wú)疑更加適合我。這也是我的一個(gè)經(jīng)驗(yàn),那就是看看你旁邊的人用的是什么工具,他們用的工具往往不是你最喜歡的或者是不是當(dāng)前最流行的和用的最廣泛的,但是你若要和他們交流討論問題的話,那你還是遷就一下,大環(huán)境是這樣的,和你旁邊的人所用工具一樣,交流起來也會(huì)順暢方便。
來實(shí)驗(yàn)室后,因?yàn)槲覀儗?shí)驗(yàn)室的員工用的偉福的仿真器,所以軟件當(dāng)然還是用偉福提供的。偉福的軟件不怎么好,只支持匯編,比起大名鼎鼎的keil c51 那是遜了一大截。但是在前期的時(shí)候我還是選擇了偉福的軟件,因?yàn)槲也幌氲綍r(shí)候我有問題不會(huì)的時(shí)候周邊沒有人幫助我。再后來,經(jīng)過自己的摸索和向身邊的工程師們請(qǐng)教,偉福用的已經(jīng)很熟悉了,匯編也有了自己的一套,這個(gè)時(shí)候我開始在偉福里邊嵌入keil,用c 語(yǔ)言來寫程序,但是調(diào)試的時(shí)候用偉福軟件還是有缺陷,比如說不能夠單步執(zhí)行。所以再后來我下載了keil c51 軟件,從此以后我正式的在keil 的開發(fā)界面下寫程序了。
當(dāng)然仿真的時(shí)候也可以在keil 環(huán)境下用偉福仿真器,我想偉福在制造他的產(chǎn)品的時(shí)候就已經(jīng)考慮到這點(diǎn)了,他的一些產(chǎn)品肯定要兼容主流軟件keil 的。用了keil C51 后就不想用偉福編譯軟件了,同樣的用了c 寫程序后,就不想用匯編了。但是匯編是每一個(gè)硬件研發(fā)工程師們都必需的,匯編有c 不可企及之處,有時(shí)候還非用匯編不可。匯編的運(yùn)行效率高,但是寫起來很是繁瑣,繁瑣規(guī)繁瑣,當(dāng)在某些特定的時(shí)刻,匯編發(fā)揮了他不可替代的作用。比如在將usoc 移植到單片機(jī)的時(shí)候,與處理器相關(guān)的程序還真是必須用匯編來完成。
再后來,開始學(xué)習(xí)sopc。從最小系統(tǒng)硬件平臺(tái)的搭建,到簡(jiǎn)單的led 閃爍程序的編寫,到sof 文件在芯片上跑起來,看著led 的亮與滅,心中一直充滿著無(wú)限的熱清。每一次接觸新知識(shí)都有一種發(fā)自內(nèi)心的激動(dòng),每一次接觸的新東西我都是從最簡(jiǎn)單的led 閃爍開始,從單片機(jī)到fpga 到sopc 再到ucos,只有每天的一個(gè)小小的進(jìn)步才能讓我擁有對(duì)工作的熱情,只有這每天小小的看得見的“階梯成就感”,才能激發(fā)自己對(duì)更多知識(shí)的追求。本人比較欣賞altera 公司推出的可編程片上系統(tǒng)(即sopc),她解放了我們搭建硬件系統(tǒng)的繁瑣,僅僅需要按照需求在系統(tǒng)里邊加上自己的IP 核和一些必須的外設(shè)。
altera公司或者其他的第三方公司已經(jīng)為我們提供了性能和功能很完善的IP 核,我們所要做的只是將這些IP核加入到我們的系統(tǒng)里完成我們需要的功能。硬件系統(tǒng)完成后,需要在altera 公司為我們提供的nios IDE環(huán)境里邊對(duì)我們的硬件系統(tǒng)進(jìn)行軟件編程,在這里,完全用c 語(yǔ)言來完成我們所需要的功能。與前邊學(xué)習(xí)單片機(jī)、fpga 一樣,第一個(gè)實(shí)驗(yàn)還是led 閃爍,然后慢慢的轉(zhuǎn)向一些比較復(fù)雜的功能設(shè)計(jì)上去,也無(wú)非是實(shí)現(xiàn)以前用verilog 實(shí)現(xiàn)過的一些功能。兩者的區(qū)別是:一種完全用verilog 語(yǔ)言來實(shí)現(xiàn)全部功能;一種需要先用sopc builder 搭建硬件系統(tǒng),然后在nios ide 中進(jìn)行軟件的編程。這兩種方法都能夠?qū)崿F(xiàn)我們需要的功能,但是后者更方便快捷,因?yàn)樵谶@種方法里,我們使用的是“拿來主義”,IP 核已經(jīng)實(shí)現(xiàn)了我們的功能,要做的僅僅是去用它而已。
最近一段時(shí)間在學(xué)習(xí)ucos 嵌入式操作系統(tǒng),主要是運(yùn)用在FPGA 里面。nios 已經(jīng)為我們移植好了,不需要修改任何文件。在nios 用戶界面里進(jìn)行一些相應(yīng)的設(shè)置,就可以用它了。altera 公司為我們提供的模板里邊有幾個(gè)很好的例子,任務(wù)管理、信號(hào)量、郵箱傳遞、事件標(biāo)志、時(shí)間管理等都為我們提供了很好的模板,我們需要作的是認(rèn)真的閱讀它,研究它,必要的話對(duì)模板進(jìn)行一些改寫來完成自己的功能,這是模仿的更高的一個(gè)境地了,把他的一些東西進(jìn)行吸收轉(zhuǎn)化成為自己的東西,我想這是一個(gè)硬件愛好者和初學(xué)者非常樂于做的事情。
在進(jìn)行fpga 學(xué)習(xí)的時(shí)候,我遇到過事情停滯不前,沒有進(jìn)展,心情沮喪的時(shí)候。那個(gè)時(shí)候?qū)Φ讓佑布粺o(wú)所知,連對(duì)基本的原理圖也看不懂,更別說程序在開發(fā)板上是怎么運(yùn)行的了。再到后來進(jìn)行nios 開發(fā)的時(shí)候,這種沮喪感與日俱增,每天一點(diǎn)進(jìn)步也沒有,那是一個(gè)很漫長(zhǎng)的日子,現(xiàn)在想起來,依然慶幸自己沒有絕望,沒有對(duì)自己熱愛的硬件失去信心。后來事件出現(xiàn)了轉(zhuǎn)機(jī)。有一次我和我辦公室的一個(gè)工程師聊天,談到了我的空惑,他建議我先學(xué)習(xí)單片機(jī),自己搭建硬件平臺(tái)從最小系統(tǒng)做起。這個(gè)工程師熱心助人,學(xué)習(xí)方面的問題他總是很耐心的為我解答,讓我受益匪淺,我很慶幸能夠在這種環(huán)境當(dāng)中學(xué)習(xí),雖說我不在高校,但是研究所為我提供的學(xué)習(xí)環(huán)境與硬件設(shè)施我想不是每個(gè)高校學(xué)生能夠享受到的。
我想說的是,遇到問題的時(shí)候,當(dāng)我們感覺事情沒法進(jìn)展下去的時(shí)候,我們不妨換一種方式,多與周邊的人聊聊天。在我的環(huán)境里,我的導(dǎo)師是一個(gè)擁有近30 年硬件開發(fā)經(jīng)驗(yàn)的資深研究員,才開始的時(shí)候我什么都不懂(赫赫,感覺現(xiàn)在依然什么都不懂,東西越學(xué)越多,總也學(xué)不完),但是我總喜歡跑到我導(dǎo)師的辦公室和他瞎聊。他和藹可親,容易接近,和他交流的時(shí)候總是給我一些職業(yè)和人生方面的忠告,這些忠告將會(huì)伴隨著我的人生。
人生總是有很多坎坷,我們的學(xué)習(xí)也是的。在這個(gè)時(shí)候我們就要看看任正非寫給華為員工的一封信《要快樂的度過充滿困難的一生》,在那里我們可以找到好好活下去的理由;當(dāng)看中了某件事情的時(shí)候,我們就需要鼓足勇氣,滿腔熱情地去迎接它,遇到困難的時(shí)候多和別人交流,或者是去網(wǎng)上看看李嘉誠(chéng)的寫給青年的《are you ready》,在那里我們可以學(xué)到謙虛、勇氣、智慧、毅力。
最后送給我們的初學(xué)者一句話?!妒ソ?jīng)》中馬太福音里的一句話:凡有的,還要加給他叫他多余;沒有的,連他所有的也要奪過來。
-
FPGA
+關(guān)注
關(guān)注
1630文章
21759瀏覽量
604297 -
電子工程師
+關(guān)注
關(guān)注
252文章
769瀏覽量
95655
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論