FPGA從零開始到大神怎麼學

2021-10-01 14:56:10 字數 1398 閱讀 2776

1 選好一本比較全,排版比較合理的verilog書

強烈建議:把以上兩本書作為工具書,也就是看到不明白的地方直接去查閱。每次查閱都會加深印象,對常見的語法也記得牢靠,不常見的語法也就不用浪費時間去記。        

2 從最簡單的**學起

找到工具書後,找到最簡單的基礎例項(帶**例程)開始看起,看不懂查閱工具書。看完之後用ise或者vivado綜合,然後看rtl圖,你就能看到這些**最終翻譯成了什麼樣的數位電路。

緊接著就是**或者上板實測:用**的訊號輸入到你寫的模組裡面,你才能清晰的知道最終電路輸出是什麼結果,是否和你想的一致。如果不一致,找到不一致的原因。對於簡單設計,**和實際上板是看不出差別的。

下面我分享一些適合初學者的案例,順序由易到難:

1.n bit計數器(fpga綜合的計數器和數電書上是不一樣的哦,大家仔細去對比)

2.led控制,也就是單個訊號輸出規律控制,比如輸出1s閃一次等等

3.用狀態機控制led,比如按鍵a,按下是0.5s閃爍一次,再次按按鍵a是1s閃爍一次等等,可以自己自由編寫。

4.任意整數分頻

5.dds設計

6.模擬串列埠通訊,比如波特率9600,起始位和停止位各1位,校驗位沒有。就按這種方式跟上位機通訊看看能否正常工作。這個如果你能實現說明你已經有了乙個質的飛躍,能夠基本懂得verilog怎麼設計電路了。

7.spi通訊,也是比較簡單的一種協議,不論做主還是從都可以試一下

8.i2c通訊,難度和spi差不多

9.學會常見ip核的使用

3 高階教程

總的來說,高階要掌握以下幾點:

1.時序約束的原因和使用方法,能熟練正確的應用最基本的時鐘週期約束,時序例外約束,非同步時鐘域約束,同步復位的約束,高扇出約束

2.清楚xilinx晶元內部時鐘資源分布,能夠知道自己的**和約束能否讓編譯器用比較優化的走線布局佈線。

3.清楚內部嵌入式硬核的分布和合理使用

4.懂得常見的非同步時鐘域正確傳輸的常見方法:握手訊號,非同步fifo,同步器

5.能看懂時序報告裡面基本的一些引數

4 高階教程

高階教程是無止境的,但是如果你學會以下幾點你已經步入高手行列:

1.對fpga所有常用時序約束和時序例外約束,包括邏輯鎖定的方法都能正確使用

2.能夠跟據時序報告做出合理的改進時序的方案

3.清楚各種時序優化方案的大概極限

5.能夠在fpga平台上實現一些複雜演算法:比如pid調節,fft變化,fir濾波器,神經網路等等

6.對大規模,大吞吐量的邏輯設計能夠在需求輸入的時候有乙個大概的總體方案,大致要能夠一下想到時鐘方案,復位方案,高速介面方案這些該怎麼做,或者能不能做到

總之,高階教程會讓人離fpga更遠,把fpga最為乙個底層平台去實現一些抽象高深的理論。其實不管是cpu還是fpga都是工具,工具裡面的演算法實現才是最重要的。

零開始學python 從零開始學Python

第1章 python入門 1 1 1 什麼是python 1 1 2 python語言有什麼特點 2 1 3 python可以幹什麼 4 練一練 5 第2章 準備開發環境 6 2 1 在windows上安裝python開發環境 6 2 2 選擇和安裝開發工具 11 練一練 17 第3章 基本概念 1...

從零開始學android

相對布局管理器指的是參考某一其他控制項進行擺放,可以通過控制,將元件擺放在乙個指定參考元件的上 下 左 右等位置,這些可以直接通過各個元件提供的屬性完成。下面介紹一下各個方法的基本使用 no.屬性名稱 對應的規則常量 描述1 android layout below relativelayout.b...

從零開始學 樹

在之前做二級的題的時候,偶爾會碰見二叉樹,很自然的就想起了樹,那麼什麼是樹呢?這裡說的可不是外面的參天大樹,而是有實際概念的樹,下面就來介紹一下樹。樹是由n n 0 個結點組成的有限集合。若n 0,稱為空樹 若n 0,則 1 有乙個特定的稱為根 root 的結點。它只有直接後繼,但沒有直接前驅 2 ...