FPGA【轉載】

cydst1發表於2019-02-12

原創: 劉勇材  玩兒轉FPGA 微信公總號

1

選好一本比較全,排版比較合理的verilog書
       verilog作為現在最流行的FPGA開發語言,當然是入門基礎,在這裡小編給大家推薦一本多年來珍藏的兩本書,一本是verilog2001的國際標準,還有一本是某高手寫的非常全面的語法講解書,下面是百度網盤連結,全免費的:
連結:https://pan.baidu.com/s/1tstjmKqFcDEkoH1hd43IXA 密碼:b17x     
        
請大家切記:不要先看完語法書再動手學FPGA!
        強烈建議:把以上兩本書作為工具書,也就是看到不明白的地方直接去查閱。每次查閱都會加深印象,對常見的語法也記得牢靠,不常見的語法也就不用浪費時間去記。        
2
從最簡單的程式碼學起
        找到工具書後,找到最簡單的基礎例項(帶模擬例程)開始看起,看不懂查閱工具書。看完之後用ISE或者Vivado綜合,然後看RTL圖,你就能看到這些程式碼最終翻譯成了什麼樣的數位電路。
        緊接著就是模擬或者上板實測:用模擬的訊號輸入到你寫的模組裡面,你才能清晰的知道最終電路輸出是什麼結果,是否和你想的一致。如果不一致,找到不一致的原因。對於簡單設計,模擬和實際上板是看不出差別的。
        另外:明白你寫的程式碼是什麼電路是整個FPGA設計永遠的核心!如果你發現你有一天對自己寫的程式碼非常清楚他出來是什麼樣子,那麼恭喜你入門了!換句話說,就是要學會用機器的思維去看你的程式碼,只有多綜合你才能懂xilinx的編譯器是什麼綜合規律(以後公眾號裡也會詳細講),用機器去理解機器才是最好的理解!
        下面我分享一些適合初學者的案例,順序由易到難:
        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核的使用

        在這裡小編也附上一些自己學習時候的程式碼,以及ISE視訊教程下面是百度網盤鏈         接:
        超多例項原始碼連結:https://pan.baidu.com/s/1tt1W9dlFMI_CqlXd_ksa6A 密碼:zkmq
       ISE視訊教程連結:https://pan.baidu.com/s/1KfhLXPAYaLq5IFSxemFxvg 密碼:g97e
3
進階教程
        總的來說,進階要掌握以下幾點:
        1.時序約束的原因和使用方法,能熟練正確的應用最基本的時鐘週期約束,時序例外約束,非同步時鐘域約束,同步復位的約束,高扇出約束
        2.清楚xilinx晶片內部時鐘資源分佈,能夠知道自己的程式碼和約束能否讓編譯器用比較優化的走線佈局佈線。
        3.清楚內部嵌入式硬核的分佈和合理使用
        4.懂得常見的非同步時鐘域正確傳輸的常見方法:握手訊號,非同步FIFO,同步器
        5.能看懂時序報告裡面基本的一些引數
4
高階教程
        高階教程是無止境的,但是如果你學會以下幾點你已經步入高手行列:
        1.對FPGA所有常用時序約束和時序例外約束,包括邏輯鎖定的方法都能正確使用
        2.能夠跟據時序報告做出合理的改進時序的方案
        3.清楚各種時序優化方案的大概極限
        5.能夠在FPGA平臺上實現一些複雜演算法:比如PID調節,FFT變化,FIR濾波器,神經網路等等
        6.對大規模,大吞吐量的邏輯設計能夠在需求輸入的時候有一個大概的總體方案,大致要能夠一下想到時鐘方案,復位方案,高速介面方案這些該怎麼做,或者能不能做到
        總之,高階教程會讓人離FPGA更遠,把FPGA最為一個底層平臺去實現一些抽象高深的理論。其實不管是CPU還是FPGA都是工具,工具裡面的演算法實現才是最重要的。

 

[1] FPGA從零開始到大神怎麼學
http://www.51openchip.com/forum.php?mod=viewthread&tid=38946&fromuid=2
(出處: openchip--中國開源晶片社群)

相關文章