第一篇:給大學(xué)生學(xué)習(xí)ARM和FPGA的一些建議
首先不管是學(xué)什么,要有最初的興趣!
學(xué)習(xí)ARM的,對(duì)于初學(xué)者來說,要學(xué)的知識(shí)點(diǎn)很多,到底從哪里下手,人們常常感到非常迷茫。大一學(xué)生先從C語言開始入門,在大一階段由于對(duì)計(jì)算機(jī)還非常陌生,因此不可能寫出一個(gè)具有完整圖形界面的軟件,重點(diǎn)以“與硬件無關(guān)的計(jì)算方法、數(shù)據(jù)結(jié)構(gòu)”為基礎(chǔ)學(xué)習(xí)C語言,至少練習(xí)編寫一萬行C代碼,否則不會(huì)找到編程的感覺,也體會(huì)不到編程樂趣。
有了一萬行編程的經(jīng)驗(yàn)后,大二接著開始學(xué)習(xí)數(shù)字電路和模擬電路了,這是你的機(jī)會(huì)!將來的開發(fā)工作有幾種選擇,但這兩門都很重要,學(xué)好了你有可能成為頂尖的高手、專家和系統(tǒng)級(jí)水平的人才,即便學(xué)得不太好,你也有可能成為一個(gè)優(yōu)秀的工程師。
學(xué)FPGA,作為初學(xué)者,在學(xué)習(xí)《電子技術(shù)基礎(chǔ)(數(shù)字部分)》時(shí)同步學(xué)習(xí)FPGA與Verilog技術(shù)的重點(diǎn)是快速入門和打下一定的基礎(chǔ)。最好在大一開始學(xué)習(xí)單片機(jī)。有了大一、二階段強(qiáng)化訓(xùn)練,后續(xù)的很多課程度可以理論與實(shí)踐并重地學(xué)習(xí),進(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士水平還要高的論文。
亞嵌教育培訓(xùn)中心
第二篇:周立功博客――給大學(xué)生學(xué)習(xí)ARM和FPGA的建議.
周立功博客 —— 給大學(xué)生學(xué)習(xí)ARM 和 FPGA 的建議
對(duì)于初學(xué)者來說,要學(xué)的知識(shí)點(diǎn)很多,到底從哪里下手,人們常常感到 非常迷茫。大一學(xué)生先從 C 語言開始入門,在大一階段由于對(duì)計(jì)算機(jī)還 非常陌生,因此不可能寫出一個(gè)具有完整圖形界面的軟件,重點(diǎn)以 “ 與 硬件無關(guān)的計(jì)算方法、數(shù)據(jù)結(jié)構(gòu) ” 為基礎(chǔ)學(xué)習(xí)C 語言,至少練習(xí)編寫一 萬行 C 代碼,否則不會(huì)找到編程的感覺,也體會(huì)不到編程樂趣,很多人 就是因?yàn)槿狈σ欢康挠?xùn)練, 所以對(duì)編程沒有興趣,以至于未到畢業(yè)時(shí) 就全部忘記了,程序設(shè)計(jì)是一項(xiàng)實(shí)踐性很強(qiáng)的實(shí)踐活動(dòng),沒有大量的實(shí) 踐作為基礎(chǔ)是很難入門的, 因此我認(rèn)為編寫一萬行代碼是判定是否入門 的依據(jù)。請(qǐng)初學(xué)者記住:當(dāng)你編寫了一萬行代碼時(shí),這是你能夠從事專 業(yè)的開始,否則你不要期望在這個(gè)領(lǐng)域混下去。與此同時(shí), C 語言也是 學(xué)習(xí)和使用 Verilog 的重要基礎(chǔ), 所以千萬不可小視 C 語言。更重要的 是, 如果你的 C 語言不好的話,你將來就業(yè)選擇的路子就會(huì)受到很大的 限制,要么只能做硬件工程師、銷售工程師或者轉(zhuǎn)行,別無選擇!有了一萬行編程的經(jīng)驗(yàn)后,大二接著開始學(xué)習(xí)數(shù)字電路和模擬電路了, 這是你的機(jī)會(huì)!將來的開發(fā)工作有幾種選擇,但這兩門都很重要,學(xué)好 了你有可能成為頂尖的高手、專家和系統(tǒng)級(jí)水平的人才,即便學(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ā)工程師,但絕對(duì)不可能成為 系統(tǒng)級(jí)的開發(fā)工程師,因?yàn)槟愕闹R(shí)結(jié)構(gòu)不行。
最好在學(xué)習(xí)數(shù)字電路時(shí)購(gòu)買一個(gè) 99元的 EasyFPGA030開發(fā)學(xué)習(xí)板,這 個(gè)板子是我們開發(fā)的,但這個(gè)價(jià)格是沒有利潤(rùn)的, 不要認(rèn)為我是在做推 銷, 我們推出這個(gè)產(chǎn)品完全是針對(duì)大二學(xué)生的,希望有更多的大二學(xué)生 提早醒悟, 能夠在學(xué)習(xí)數(shù)字電路時(shí)同步學(xué)習(xí)FPGA 和 Verilog , 強(qiáng)化課程 之間的關(guān)聯(lián)。筆者雖然是一個(gè)企業(yè)家,但也有
一份愛心和社會(huì)責(zé)任感, 為社會(huì)做出自己的貢獻(xiàn)同樣也是企業(yè)家的 “ 銷售業(yè)績(jī) ” ,我們?yōu)檫@個(gè)開發(fā) 板撰寫了 30萬字的配套資料和適合各種水平的范例,也投入了大量的 精力錄制 Verilog 語言視頻講座, 這些都是超值和免費(fèi)的。與此同時(shí)從 2009年開始著手針對(duì)大二和大三學(xué)生舉辦 FPGA 大賽,以提高在校大學(xué) 生的興趣,讓那些覺悟者進(jìn)一步提高自信心,找到自己未來的坐標(biāo)。學(xué) 好數(shù)字電路和模擬電路以及 FPGA 應(yīng)用技術(shù),除了成為電子產(chǎn)品開發(fā)工 程師之外(高附加值的嵌入式系統(tǒng)產(chǎn)品幾乎離不開 FPGA , 還有一個(gè)就 業(yè)方向就是號(hào)稱 “ 金飯碗 ” 的集成電路設(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è)難、人才荒 ” 的解決 方案!(4。因?yàn)榇笠徊粚W(xué)習(xí)單片機(jī),后面的課程都沒有辦法學(xué)好。對(duì)于大一學(xué)習(xí)單片機(jī),很多老師不去用心研究學(xué)習(xí)方法和教學(xué)規(guī)律,反 而搬出一大堆理由來 “ 嚇唬 ” 人。筆者當(dāng)年僅僅是一個(gè)技校生,在完全沒 有指導(dǎo)老師的情況下,也找不到可以參考的技術(shù)資料, 只是憑著偶爾看 到一篇報(bào)道羅伯特設(shè)計(jì)的 Altair 8800計(jì)算機(jī)就做出了一臺(tái)不需要工作 軟件的計(jì)算機(jī)(改進(jìn)型的 Altair-80C31電路詳見《新編電類專業(yè)計(jì)算 機(jī)基礎(chǔ)》教材。要相信現(xiàn)在公開的信息、資訊條件、人們的聰明智慧 與教師的力量, 因此大學(xué)本科生在大一階段學(xué)會(huì)單片機(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ī)原理了。針對(duì)數(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)控制理論》幾乎都是空對(duì)空地教學(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é)勢(shì)必由老師個(gè)人在課堂上演 “ 獨(dú)角戲 ” 的場(chǎng)面轉(zhuǎn)變?yōu)檠杏憰?huì),學(xué)生也一定會(huì)竭盡全力由被動(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)槭裁床缓?好學(xué)習(xí)?我們應(yīng)該怎樣才能讓他們好好地學(xué)?作為老師, 第一不能給學(xué) 生劃定考試范圍, 第二學(xué)生缺課要堅(jiān)決扣分, 如果做到這兩點(diǎn)基本的要 求,學(xué)生不好好學(xué)就制度處理,我想效果會(huì)有很大的改變。當(dāng)然就業(yè)難 的責(zé)任也不能完全推給老師, 但老師們應(yīng)該做到自己該做到的,因?yàn)榧?長(zhǎng)都希望老師們對(duì)他們的子女嚴(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ì),并能夠 寫出一篇比碩士水平還要高的論文。
第三篇:周立功博客——給大學(xué)生學(xué)習(xí)ARM和FPGA的建議
0 周立功博客——給大學(xué)生學(xué)習(xí)ARM和FPGA的建議
對(duì)于初學(xué)者來說,要學(xué)的知識(shí)點(diǎn)很多,到底從哪里下手,人們常常感到非常迷茫。大一學(xué)生先從C語言開始入門,在大一階段由于對(duì)計(jì)算機(jī)還非常陌生,因此不可能寫出一個(gè)具有完整圖形界面的軟件,重點(diǎn)以“與硬件無關(guān)的計(jì)算方法、數(shù)據(jù)結(jié)構(gòu)”為基礎(chǔ)學(xué)習(xí)C語言,至少練習(xí)編寫一萬行C代碼,否則不會(huì)找到編程的感覺,也體會(huì)不到編程樂趣,很多人就是因?yàn)槿狈σ欢康挠?xùn)練,所以對(duì)編程沒有興趣,以至于未到畢業(yè)時(shí)就全部忘記了,程序設(shè)計(jì)是一項(xiàng)實(shí)踐性很強(qiáng)的實(shí)踐活動(dòng),沒有大量的實(shí)踐作為基礎(chǔ)是很難入門的,因此我認(rèn)為編寫一萬行代碼是判定是否入門的依據(jù)。請(qǐng)初學(xué)者記住:當(dāng)你編寫了一萬行代碼時(shí),這是你能夠從事專業(yè)的開始,否則你不要期望在這個(gè)領(lǐng)域混下去。與此同時(shí),C語言也是學(xué)習(xí)和使用Verilog的重要基礎(chǔ),所以千萬不可小視C語言。更重要的是,如果你的C語言不好的話,你將來就業(yè)選擇的路子就會(huì)受到很大的限制,要么只能做硬件工程師、銷售工程師或者轉(zhuǎn)行,別無選擇!有了一萬行編程的經(jīng)驗(yàn)后,大二接著開始學(xué)習(xí)數(shù)字電路和模擬電路了,這是你的機(jī)會(huì)!將來的開發(fā)工作有幾種選擇,但這兩門都很重要,學(xué)好了你有可能成為頂尖的高手、專家和系統(tǒng)級(jí)水平的人才,即便學(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ā)工程師,但絕對(duì)不可能成為系統(tǒng)級(jí)的開發(fā)工程師,因?yàn)槟愕闹R(shí)結(jié)構(gòu)不行。
最好在學(xué)習(xí)數(shù)字電路時(shí)購(gòu)買一個(gè)99元的EasyFPGA030開發(fā)學(xué)習(xí)板,這個(gè)板子是我們開發(fā)的,但這個(gè)價(jià)格是沒有利潤(rùn)的,不要認(rèn)為我是在做推銷,我們推出這個(gè)產(chǎn)品完全是針對(duì)大二學(xué)生的,希望有更多的大二學(xué)生提早醒悟,能夠在學(xué)習(xí)數(shù)字電路時(shí)同步學(xué)習(xí)FPGA和Verilog,強(qiáng)化課程之間的關(guān)聯(lián)。筆者雖然是一個(gè)企業(yè)家,但也有一份愛心和社會(huì)責(zé)任感,為社會(huì)做出自己的貢獻(xiàn)同樣也是企業(yè)家的“銷售業(yè)績(jī)”,我們?yōu)檫@個(gè)開發(fā)板撰寫了30萬字的配套資料和適合各種水平的范例,也投入了大量的精力錄制Verilog語言視頻講座,這些都是超值和免費(fèi)的。與此同時(shí)從2009年開始著手針對(duì)大二和大三學(xué)生舉辦FPGA大賽,以提高在校大學(xué)生的興趣,讓那些覺悟者進(jìn)一步提高自信心,找到自己未來的坐標(biāo)。學(xué)好數(shù)字電路和模擬電路以及FPGA應(yīng)用技術(shù),除了成為電子產(chǎn)品開發(fā)工程師之外(高附加值的嵌入式系統(tǒng)產(chǎn)品幾乎離不開FPGA),還有一個(gè)就業(yè)方向就是號(hào)稱“金飯碗”的集成電路設(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é)好。對(duì)于大一學(xué)習(xí)單片機(jī),很多老師不去用心研究學(xué)習(xí)方法和教學(xué)規(guī)律,反而搬出一大堆理由來“嚇?!比?。筆者當(dāng)年僅僅是一個(gè)技校生,在完全沒有指導(dǎo)老師的情況下,也找不到可以參考的技術(shù)資料,只是憑著偶爾看到一篇報(bào)道羅伯特設(shè)計(jì)的Altair 8800計(jì)算機(jī)就做出了一臺(tái)不需要工作軟件的計(jì)算機(jī)(改進(jìn)型的Altair-80C31電路詳見《新編電類專業(yè)計(jì)算機(jī)基礎(chǔ)》教材)。要相信現(xiàn)在公開的信息、資訊條件、人們的聰明智慧與教師的力量,因此大學(xué)本科生在大一階段學(xué)會(huì)單片機(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ī)原理了。針對(duì)數(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)控制理論》幾乎都是空對(duì)空地教學(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é)勢(shì)必由老師個(gè)人在課堂上演“獨(dú)角戲”的場(chǎng)面轉(zhuǎn)變?yōu)檠杏憰?huì),學(xué)生也一定會(huì)竭盡全力由被動(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é)就制度處理,我想效果會(huì)有很大的改變。當(dāng)然就業(yè)難的責(zé)任也不能完全推給老師,但老師們應(yīng)該做到自己該做到的,因?yàn)榧议L(zhǎng)都希望老師們對(duì)他們的子女嚴(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士水平還要高的論文。
FPGA在目前應(yīng)用領(lǐng)域非常,在目前的單板設(shè)計(jì)里面,幾乎都可以看到它的身影。從簡(jiǎn)單的邏輯組合,到高端的圖像、通信協(xié)議處理,從單片邏輯到復(fù)雜的ASIC原型驗(yàn)證,從小家電到航天器,都可以看到FPGA應(yīng)用,它的優(yōu)點(diǎn)在這里無庸贅述。從個(gè)人實(shí)用角度看,對(duì)于學(xué)生,掌握FPGA可以找到一份很好的工作,對(duì)于有經(jīng)驗(yàn)的工作人員,使用fgpa可以讓設(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ì)的地方,歡迎大家討論和指正。
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)算什么?
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ò)資源完成。
3、設(shè)計(jì)一個(gè)小代碼,下載到目標(biāo)板看看結(jié)果
此時(shí)可以設(shè)計(jì)一個(gè)最簡(jiǎn)答的程序,譬如點(diǎn)燈。如果燈在閃爍了,表示基本入門了。如果此時(shí)能夠下載到fpga外掛的flash,fpga程序能夠從flash啟動(dòng),表明fpga的最簡(jiǎn)單設(shè)計(jì)你已經(jīng)成功,可以到下一步。
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)入下一步。
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ì)餓了
6、設(shè)計(jì)高速接口,譬如ddr2或者高速串行接口
這要對(duì)fpga的物理特性非常了解,而且要懂得是時(shí)序約束等設(shè)計(jì)方法,要看大量的原廠文檔,這部分成功了,那就對(duì)fpga的物理接口掌握很深,你就是設(shè)計(jì)高手了
7、設(shè)計(jì)一個(gè)復(fù)雜的協(xié)議
譬如USB、PCIexpress、圖像編解碼等,鍛煉對(duì)系統(tǒng)的整體把握和邏輯劃分。完成這些,你就是一個(gè)一流的高手、8、學(xué)習(xí)再學(xué)習(xí)
學(xué)習(xí)什么,我也不知道,我只知道“學(xué)無止境,山外有山”。
第四篇:如何學(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模塊??删幊痰倪壿媶卧鞘裁??其基本結(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è)置。總歸一句話,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ā)揮出來,而我也有意做一些這些方面的研究。不過國(guó)內(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ì)如何在棋盤上落子很容易,成為一位高手卻是難上加難。