如何學習FPGA?FPGA學習必備的基礎知識

2022-07-30 23:09:15 字數 1997 閱讀 6668

關鍵字:fpga

基礎知識

fpga已成為現今的技術熱點之一,無論學生還是工程師都希望跨進fpga的大門。網路上各種開發板、培訓班更是多如牛毛,彷彿在告訴你不懂fpga你就out啦。那麼我們要玩轉fpga必須具備哪些基礎知識呢?下面我們慢慢道來。

(一) 要了解什麼是fpga

既然要玩轉fpga,那我們首先最重要的當然是要了解什麼fpga。fpga(field-programmable gate array),即現場可程式設計門陣列。看到程式設計兩個字碼農就笑了,不就是程式設計嘛,那可是我們的強項。且慢,此程式設計非彼程式設計。一定要把fpga的程式設計和軟體程式設計區分開來。軟體的程式設計,處理器會逐條的把語言翻譯成各種控制訊號,去控制內部電路完成乙個個運算或操作。那麼fpga的程式設計是怎麼實現的呢?無論altera家還是xlinix家的fpga,叫法有什麼差異,基本單元都相似,都是由真值表和d觸發器構成。改變真值表的值就改變了邏輯功能,再通過和d觸發器組合來實現任何時序邏輯。所以我們對fpga的程式設計,實際上就是去修改這些真值表和連線關係,使他們組成一張專門的真值表,去實現特定的功能。這和軟體程式設計一步步執行程式有本質的區別。要想玩轉fpga,就必須理解fpga內部的工作原理,學習如何利用這些單元實現複雜的邏輯設計。

(二) 正確理解hdl語言

hdl(hardware description language),硬體描述語言。通過名稱我們能看出來,hdl語言是一種「描述」語言,這一點和c語言是有本質區別的。正確理解描述的含義,對學好hdl語言很有幫助。hdl語言只是用文字的方式把硬體電路描述出來。我們在閱讀hdl程式的時候,在腦子裡應該能反映出乙個完整的硬體電路結構。從另一方面說,我們在編寫hdl語言之前,就已經對要實現的電路有清晰的概念。所以hdl語言只是乙個描述我們頭腦中具體電路的工具,玩轉fpga的根本不是語言而是邏輯電路設計。不要再糾結於我應該學習vhdl還是verilog,那種語言更好學這些問題。如果把學習fpga的重點放在學習語言上,死記硬背一些語法,那自然是抓錯了重點。語言在日常使用中會越用越熟練,不需要花很長的專門時間去學習。當然一本好的參考資料可以隨時方便查詢會是很有幫助的。

(三) 數位電路基礎

說到底,fpga就是一堆數字邏輯組合在一起實現特定功能而已。所以數位電路基礎知識是根本。如果你連觸發器,組合電路,時序電路,競爭,毛刺等等基本概念還莫能兩可不清不楚的話,那玩轉fpga只能是痴人說夢的幻想了。我們必須要好好的學好數位電路基礎這門課,基本的數位電路爛熟於心。把這些基礎打牢固,再往更深的方向發展。什麼時候能夠從抽象的演算法中提煉演算法的結構,再分解成具體的模組並通過硬體電路實現出來,這時候就算從菜鳥級別步入老鳥級別了。

(四) 硬體設計思想

這一點應該說是重中之重。學習fpga,一定要有硬體設計思想。在軟體程式設計的時候,比如1秒鐘能實現5次乘法運算,那系統要求1秒鐘實現50次乘法運算怎麼辦,我們會盡可能的優化**,讓**更簡潔更高效,或者提高系統主頻,讓系統跑的更快。但是在fpga裡面我們不是這種思維方式。在fpga裡實現乙個乘法器不夠用,那我就實現兩個實現三個去滿足系統要求;我可以進行流水線設計;序列執行方式不夠快了,我可以先串並轉換,再並行的做處理……只要fpga的資源夠用,我可以充分利用資源去滿足系統要求。因為在我手裡的就是一堆硬體資源,我要做的是把他們組合成乙個好用的電路。評價硬體描述語言寫的好壞的標準和其他軟體程式語言的標準是完全不同的。因此一定要摒棄軟體程式設計的一些固有思路,學會用硬體的方式去解決問題。時刻提醒自己正在設計的是乙個電路,而不是一行行空洞的**。這是很多做軟體程式設計的人很難跨過的坎。fpga學了很久還在糾結到底是用if_else語句好呢還是用case語句好?而不能透過這些語句表面看到他們所具體代表的電路。只有建立了硬體設計思想,才有更深入學習fpga的可能。

fpga入門簡單精通難。要想入門,買一塊開發板跟著例程走一遍,很多人都能在很短的時間內熟悉開發軟體的操作方法並且點亮開發板上的led或者再實現個跑馬燈什麼的。但是再往後進步往往就進展很慢。上面提到的這四條是玩轉fpga的基礎,只有打好了堅實的基礎後面才能一馬平川。希望每個學習fpga的人最後都能成為大牛,設計出自己的完美電路。

FPGA FPGA學習筆記

d觸發器是上公升沿前面的低電平將訊號載入到d端,上公升沿時q端輸出d端的訊號 連線到inst例項上的訊號應該是wire,而不能用reg的 task可以對testbench中所有的reg變數賦值 mealy狀態機 輸出和輸入及當前狀態有關 moore狀態機和輸入無關,只和當前狀態有關 獨熱碼用的暫存器...

機器學習必知必會 如何理解機器學習中的正則化

機器學習中經常會在損失函式 目的 防止模型過擬合 原理 在損失函式上加上某些規則 限制 縮小解空間,從而減少求出過擬合解的可能性 例子 以最簡單的線性模型為例 最小二乘估計 嶺回歸 在數學上我們可以證明嶺估計的引數模要嚴格小於最小二乘估計的引數模,換句話說,我們可以認為加入l2正則項後,估計引數長度...

mysql必知必 SQL必知必會學習筆記 一

資料庫基礎 資料庫 資料庫軟體 確切的說,資料庫軟體應稱為資料庫管理系統 dbms 資料庫是通過dbms建立和操作的容器 資料庫相當於檔案櫃 容器 表相當於檔案 同乙個資料庫不能存在相同的表名,不同的資料庫可以存在相同的表名 主鍵應滿足的條件 唯一性非空性 not null 主鍵列中的值不允許修改或...