給大學(xué)生學(xué)習(xí)ARM與FPGA的建議
對于初學(xué)者來說,要學(xué)的知識點(diǎn)很多,到底從哪里下手,人們常常感到非常迷茫。大一學(xué)生先從C語言開始入門,在大一階段由于對計(jì)算機(jī)還非常陌生,因此不可能寫出一個(gè)具有完整圖形界面的軟件,重點(diǎn)以“與硬件無關(guān)的計(jì)算方法、數(shù)據(jù)結(jié)構(gòu)”為基礎(chǔ)學(xué)習(xí)C語言,至少練習(xí)編寫一萬行C代碼,否則不會找到編程的感覺,也體會不到編程樂趣,很多人就是因?yàn)槿狈σ欢康挠?xùn)練,所以對編程沒有興趣,以至于未到畢業(yè)時(shí)就全部忘記了,程序設(shè)計(jì)是一項(xiàng)實(shí)踐性很強(qiáng)的實(shí)踐活動(dòng),沒有大量的實(shí)踐作為基礎(chǔ)是很難入門的,因此我認(rèn)為編寫一萬行代碼是判定是否入門的依據(jù)。請初學(xué)者記?。寒?dāng)你編寫了一萬行代碼時(shí),這是你能夠從事專業(yè)的開始,否則你不要期望在這個(gè)領(lǐng)域混下去。與此同時(shí),C語言也是學(xué)習(xí)和使用Verilog的重要基礎(chǔ),所以千萬不可小視C語言。更重要的是,如果你的C語言不好的話,你將來就業(yè)選擇的路子就會受到很大的限制,要么只能做硬件工程師、銷售工程師或者轉(zhuǎn)行,別無選擇!
有了一萬行編程的經(jīng)驗(yàn)后,大二接著開始學(xué)習(xí)數(shù)字電路和模擬電路了,這是你的機(jī)會!將來的開發(fā)工作有幾種選擇,但這兩門都很重要,學(xué)好了你有可能成為頂尖的高手、專家和系統(tǒng)級水平的人才,即便學(xué)得不太好,你也有可能成為一個(gè)優(yōu)秀的工程師。前一篇博文講了,如果你精通了C/C++,即便你的硬件水平一般,你也可以成為一個(gè)優(yōu)秀的開發(fā)工程師,即由硬件工程師負(fù)責(zé)邏輯電路和模擬電路的設(shè)計(jì),由你來編程——你可以編寫基于WinCE、Linux、Vxworks或者Windows等操作系統(tǒng)的程序。那么怎樣才算基本上“精通”呢?至少編寫五萬行代碼,當(dāng)你已經(jīng)編寫了10萬行代碼時(shí),可以說你已經(jīng)完全精通了,這個(gè)時(shí)候你如果有很大的造化的話,那完全取決于你當(dāng)初學(xué)習(xí)的基礎(chǔ)是否牢固了。所以我在前面提到了,精通一門可以成為優(yōu)秀的開發(fā)工程師,但絕對不可能成為系統(tǒng)級的開發(fā)工程師,因?yàn)槟愕闹R結(jié)構(gòu)不行。
最好在學(xué)習(xí)數(shù)字電路時(shí)購買一個(gè)99元的EasyFPGA030開發(fā)學(xué)習(xí)板,這個(gè)板子是我們開發(fā)的,但這個(gè)價(jià)格是沒有利潤的,不要認(rèn)為我是在做推銷,我們推出這個(gè)產(chǎn)品完全是針對大二學(xué)生的,希望有更多的大二學(xué)生提早醒悟,能夠在學(xué)習(xí)數(shù)字電路時(shí)同步學(xué)習(xí)FPGA和Verilog,強(qiáng)化課程之間的關(guān)聯(lián)。筆者雖然是一個(gè)企業(yè)家,但也有一份愛心和社會責(zé)任感,為社會做出自己的貢獻(xiàn)同樣也是企業(yè)家的“銷售業(yè)績”,我們?yōu)檫@個(gè)開發(fā)板撰寫了30萬字的配套資料和適合各種水平的范例,也投入了大量的精力錄制Verilog語言視頻講座,這些都是超值和免費(fèi)的。與此同時(shí)從2009年開始著手針對大二和大三學(xué)生舉辦FPGA大賽,以提高在校大學(xué)生的興趣,讓那些覺悟者進(jìn)一步提高自信心,找到自己未來的坐標(biāo)。學(xué)好數(shù)字電路和模擬電路以及FPGA應(yīng)用技術(shù),除了成為電子產(chǎn)品開發(fā)工程師之外(高附加值的嵌入式系統(tǒng)產(chǎn)品幾乎離不開FPGA),還有一個(gè)就業(yè)方向就是號稱“金飯碗”的集成電路設(shè)計(jì)。
作為初學(xué)者,在學(xué)習(xí)《電子技術(shù)基礎(chǔ)(數(shù)字部分)》時(shí)同步學(xué)習(xí)FPGA與Verilog技術(shù)的重點(diǎn)是快速入門和打下一定的基礎(chǔ),根據(jù)配套的教材和數(shù)字電路教材的內(nèi)容將基本的數(shù)字電路用FPGA實(shí)現(xiàn)即可,這是本階段的學(xué)習(xí)目標(biāo),不要將學(xué)習(xí)高深難度的應(yīng)用技術(shù)作為重點(diǎn)。并利用課余和暑假期間的空余時(shí)間,將一些圖書上現(xiàn)成的使用數(shù)字電路實(shí)現(xiàn)的例子用FPGA來完成設(shè)計(jì)即可,比方如何使用FPGA 實(shí)現(xiàn)一個(gè)計(jì)數(shù)器,并動(dòng)手做出來。到大三階段在做出選擇,到底是選擇成為一個(gè)專業(yè)的FPGA應(yīng)用設(shè)計(jì)工程師、還是嵌入式系統(tǒng)與FPGA混合應(yīng)用系統(tǒng)設(shè)計(jì)工程師或集成電路開發(fā)工程師,以自己的興趣和志向?yàn)榛A(chǔ)而定,所以在學(xué)習(xí)嵌入式系統(tǒng)技術(shù)的同時(shí)學(xué)習(xí)FPGA,兩者之間并不矛盾。
最好在大一開始學(xué)習(xí)單片機(jī),這就是筆者為何撰寫《新編電類專業(yè)計(jì)算機(jī)基礎(chǔ)》這本圖書的原因(詳見破解電類專業(yè)“就業(yè)難、人才荒”的解決方案?。?))。因?yàn)榇笠徊粚W(xué)習(xí)單片機(jī),后面的課程都沒有辦法學(xué)好。對于大一學(xué)習(xí)單片機(jī),很多老師不去用心研究學(xué)習(xí)方法和教學(xué)規(guī)律,反而搬出一大堆理由來“嚇?!比恕9P者當(dāng)年僅僅是一個(gè)技校生,在完全沒有指導(dǎo)老師的情況下,也找不到可以參考的技術(shù)資料,只是憑著偶爾看到一篇報(bào)道羅伯特設(shè)計(jì)的Altair 8800計(jì)算機(jī)就做出了一臺不需要工作軟件的計(jì)算機(jī)(改進(jìn)型的Altair-80C31電路詳見《新編電類專業(yè)計(jì)算機(jī)基礎(chǔ)》教材)。要相信現(xiàn)在公開的信息、資訊條件、人們的聰明智慧與教師的力量,因此大學(xué)本科生在大一階段學(xué)會單片機(jī)是非常容易的一件事情。
有了單片機(jī)基礎(chǔ)之后,在大二階段學(xué)習(xí)數(shù)字電路與模擬電路的同時(shí),結(jié)合單片機(jī)學(xué)習(xí)接口擴(kuò)展技術(shù)與模擬前向通道數(shù)據(jù)采集技術(shù),并編寫相應(yīng)的程序?qū)崿F(xiàn)一個(gè)一個(gè)的小系統(tǒng)設(shè)計(jì),大三時(shí)根本不再需要學(xué)習(xí)所謂的接口技術(shù)與微機(jī)原理了。針對數(shù)字電路與模擬電路筆者準(zhǔn)備寫作一套小系統(tǒng)設(shè)計(jì)與制作配套圖書,將前后之間的課程也同步和關(guān)聯(lián)起來,期望進(jìn)一步提高大學(xué)生的動(dòng)手能力。
有了大一、二階段強(qiáng)化訓(xùn)練,后續(xù)的很多課程度可以理論與實(shí)踐并重地學(xué)習(xí),比方目前大學(xué)開設(shè)的《自動(dòng)控制理論》幾乎都是空對空地教學(xué)與聯(lián)系,如果結(jié)合自動(dòng)控制理論的教學(xué),讓學(xué)生學(xué)習(xí)設(shè)計(jì)一個(gè)自動(dòng)穿越迷宮的電腦鼠,并舉辦相應(yīng)的大賽,則能夠很好地將嵌入式系統(tǒng)應(yīng)用技術(shù)、數(shù)字電路與模擬電路、計(jì)算方法與數(shù)據(jù)結(jié)構(gòu)、機(jī)構(gòu)設(shè)計(jì)......相關(guān)課程有機(jī)地結(jié)合起來,學(xué)生的興趣將大大地得到提高。
當(dāng)學(xué)生有了學(xué)習(xí)的興趣和動(dòng)力之后,教學(xué)勢必由老師個(gè)人在課堂上演“獨(dú)角戲”的場面轉(zhuǎn)變?yōu)檠杏憰?,學(xué)生也一定會竭盡全力由被動(dòng)學(xué)習(xí)向主動(dòng)學(xué)習(xí)轉(zhuǎn)變,這就是教育要達(dá)到的目標(biāo),所以我們不能一味地指責(zé)學(xué)生不好學(xué)。作為老師我們一定要思考和拿出行動(dòng),讓學(xué)生喜歡并愿意向您學(xué)習(xí)。事實(shí)上學(xué)生的未來完全取決于老師的引導(dǎo),現(xiàn)在教師隊(duì)伍存在的很大毛病就是將責(zé)任推向擴(kuò)招和學(xué)生不好好學(xué),擴(kuò)招有沒有問題?當(dāng)然有,但作為教師我們做得怎么樣呢?我們是否在教學(xué)上做出了巨大的努力,這需要我們捫心自問。
學(xué)生不好好學(xué),這也是事實(shí)!但也是表象,我們要思考他們?yōu)槭裁床缓煤脤W(xué)習(xí)?我們應(yīng)該怎樣才能讓他們好好地學(xué)?作為老師,第一不能給學(xué)生劃定考試范圍,第二學(xué)生缺課要堅(jiān)決扣分,如果做到這兩點(diǎn)基本的要求,學(xué)生不好好學(xué)就制度處理,我想效果會有很大的改變。當(dāng)然就業(yè)難的責(zé)任也不能完全推給老師,但老師們應(yīng)該做到自己該做到的,因?yàn)榧议L都希望老師們對他們的子女嚴(yán)格要求,更迫切的需求就是讓他們的子女學(xué)到真本事,他們肯定支持教師的行動(dòng)。
進(jìn)入大三階段則需要有選擇地重點(diǎn)學(xué)習(xí)嵌入式操作系統(tǒng)原理與編程、嵌入式系統(tǒng)與FPGA的混合系統(tǒng)設(shè)計(jì)或者全力以赴鉆研FPGA應(yīng)用技術(shù)等技術(shù)方向,大四階段就可以真刀真槍地完成一個(gè)漂亮的畢業(yè)設(shè)計(jì),并能夠?qū)懗鲆黄却T士水平還要高的論文。