1、不熟悉FPGA的內(nèi)部結(jié)構(gòu),不了解可編程邏輯器件的基本原理。
FPGA為什么是可以編程的?恐怕很多菜鳥不知道,他們也不想知道。因為他們覺得這是無關(guān)緊要的。他們潛意識的認為可編程嘛,肯定就是像寫軟件一樣啦。軟件編程的思想根深蒂固,看到Verilog或者VHDL就像看到C語言或者其它軟件編程語言一樣。一條條的讀,一條條的分析。如果這些菜鳥們始終拒絕去了解為什么 FPGA是可以編程的,不去了解FPGA的內(nèi)部結(jié)構(gòu),要想學(xué)會FPGA恐怕是天方夜譚。雖然現(xiàn)在EDA軟件已經(jīng)非常先進,像寫軟件那樣照貓畫虎 也能綜合出點東西,但也許只有天知道EDA軟件最后綜合出來的到底是什么。也許點個燈,跑個馬還行。這樣就是為什么很多菜鳥學(xué)了N久以后依然是一個菜鳥的原因。
那么FPGA為什么是可以“編程”的呢?
首先來了解一下什么叫 “程”。其實“程”只不過是一堆具有一定含義的01編碼而已。編程,其實就是編寫這些01編碼。只不過我們現(xiàn)在有了很多開發(fā)工具,通常都不是直接編寫這些 01編碼,而是以高級語言的形式來編寫,最后由開發(fā)工具轉(zhuǎn)換為這種01編碼而已。對于軟件編程而言,處理器會有一個專門的譯碼電路逐條把這些01編碼翻譯為各種控制信號,然后控制其內(nèi)部的電路完成一個個的運算或者是其它操作。所以軟件是一條一條的讀,因為軟件的操作是一步一步完成的。而FPGA的可編程,本質(zhì)也是依靠這些01編碼實現(xiàn)其功能的改變,但不同的是FPGA之所以可以完成不同的功能,不是依靠像軟件那樣將01編碼翻譯出來再去控制一個運算電路,F(xiàn)PGA里面沒有這些東西。
FPGA內(nèi)部主要三塊:可編程的邏輯單元、可編程的連線和可編程的IO模塊。