至簡設計法之學習方法一
要有明確的學習目的 學FPGA,從哪裡開始學起?先來看看需要哪些基礎知識吧。要學數位電路、VHDL或Verilog等硬體描述語言、QUARTUS/ISE/MODELSIM等軟體工具、指令碼語言,甚至還有人認為要學完C語言。Oh my god!這實在太多了!不錯,這就是大部分人認為FPGA“入門難”的原因。中國有句諺語,“世上無難事,只怕有心人”。我認為,這句話除了表達做事需要有決心恆心以外,應該還有另外一種理解。那就是:如果一件事情非常的難,或許是因為你還不夠“有心”,沒有找到正確的方法。 我曾經有一位鄰居是一位汽車工業領域的大學教授。他的一生都致力於汽車工業的研究和教學。在動力、材料、電路、製造等方面,專業知識非常深厚。然而,他本人不會駕駛汽車! 舉這個例子並非否認基礎學科研究的意義和實效,因為如果沒有這些,汽車工業不可能發展。準確的說,是根本就無法出現“汽車”這個東西。這裡想說明的是,懂得汽車製造的“知識”,與駕駛汽車的“技能”,兩者之間不盡相同。如果我們的需要是掌握技能(駕駛汽車),那麼懂得汽車原理、製造相關的知識就只屬於加分項,而不是必須項。 所以,首先要有明確的學習目的。 明確學習目的不僅僅是 “能運用IC/FPGA完成專案功能”這個整體的大目的,同時應該貫穿在整個學習過程中。我們應該非常清晰地知道每一個具體專案、架構、模組、訊號目的是什麼?我們去學的知識點,要完成哪些可以具體的、甚至可以量化的目標? 目的不清晰,就容易出現混亂。先來看下面幾個小例子: 1.語言是基礎,學語言總是沒錯的。那就從Verilog開始吧。買回一堆相關的書籍,花費了很大的時間和精力,終於懂了。進入實際設計,突然發現Verilog很多語法是不能綜合的,也沒有實際的電路與之對應,在具體的邏輯設計時也不能用,書上又沒有明確指出。然後再去買一本與之相關的擴充套件的書籍學習。最後枯燥的理論知識越來越多,混亂成一團,還是不能設計出專案; 2.按照書上的做法,以普通訊號作為always的敏感訊號列表。最後編寫出錯,而且根本不知道錯誤出在哪裡。一直到有人指點,或是工作N年之後才明白:作為理論知識體系出現的專業書籍,全面和系統是基本要求。例如Verilog語法書籍中的很多用法作為知識點是對的,在實際應用中卻存在出錯的可能; 3.買個開發板,看程式碼,下載例程看現象。唔,好像會寫流水燈程式碼了哦。接著進入一個實際專案,馬上一籌莫展; …… 上面種種現象,究其原因,都或多或少與目的不明確有關係。類似的問題必須先明確。我們完全可以把IC/FPGA設計看做一種“技能”。通過這個技能,高效高質地開發出產品。我們應該圍繞“功能”這個目標,提升自己專業技能的高度,然後在這個基礎上去擴充套件寬度。 接下來的問題就是我們需要的是“漁”還是“魚”?也就是,是掌握到FPGA這種設計方法,還是會寫某一個具體的FPGA程式?有了明確的學習目的之後,就需要有正確的學習方法。那麼正確的學習方法有哪些呢?敬請關注下一節。