初次接觸FPGA,到如今也有四年多了,當時讀大二,暑假在學校準備光電設計競賽,指導老師讓用單片機作,前期向咱們推薦FPGA,但願咱們有時間去學學FPGA,記得當時買了塊黑金核心板,下載了特權同窗的《深刻淺出玩轉FPGA》視頻教程,買了特權同窗寫的《深刻淺出玩轉FPGA》和夏宇聞老師編寫的《Verilog數字系統設計教程》。那時把大部分時間都花在了單片機上,對於FPGA,只是作了幾個基本的實驗,像計數器,二分頻等。步入大三,專業課比較多,當時也是比較懶,身邊也沒有人作FPGA,始終仍是沒有堅持下來,下學期出去實現了3個月,大四,步入考研大軍……ios
14年秋季上研究生,研究方向是FPGA圖像處理,這時纔算是真正開始作FPGA,這期間作了一些工程項目,也讀了很多書,掌握了FPGA硬件電路設計、Verilog程序編寫(包括一些圖像處理算法的硬件實現)、簡單的上位機控制界面的製做(使用C#)。這時才以爲,作工程,最重要的莫過於堅持下去。算法
如下幾本書,我以爲寫的比較好,跟你們推薦推薦(大牛勿噴),書單以下:編程
1. 深刻淺出玩轉FPGAwindows
-
ISBN:9787512411616緩存
2012年買了一本,後來本科畢業時弄丟了,前段時間又買了一本,畢竟,大神寫的書嘛。書中講了FPGA的基本概念、Verilog語法、重要的設計思想、時序約束以及一些簡單的項目應用。異步
我一直認爲FPGA設計思想很是重要,我在作圖像處理時,常用乒乓操做,好比我以前寫直方圖均衡算法時,就是開闢兩塊存儲區域A、B,區域A統計時區域B映射,區域A清零時區域B累加,佔用的存儲空間也很少(對於24bit RGB圖像,分辨率爲640×480時,佔用256*19=4864bit),而且算法執行效率高。函數
時序約束的重要性就不用多說了,以前聽別人說過一個工程項目,同一個程序,每次編譯後現象都不太同樣(體如今圖像噪聲上),估計是時序約束的問題,我如今在時序約束方面算是小白,只會對工程作一些簡單的時鐘約束,在編寫算法時,我也只是儘可能減少判斷語句嵌套。工具
書中包括了一些項目應用,經過這些應用,相信有開發板的初學者應該能掌握PLL的配置、FIFO的使用、移位寄存器的使用、雙口RAM的使用包括片外存儲器SDRAM及Flash的使用,這些算是FPGA開發的基本功吧,進行快速操做時,通常使用片上RAM完成;跨時鐘域處理時,通常使用雙口RAM或者異步fifo;中值濾波時,要用到移位寄存器生成3×3或者5×5矩陣;VGA輸出圖像時,要用到外部存儲器緩存圖像;Flash可用來存儲配置程序。把這些掌握了,基本上就能夠着手作工程咯。性能
2. 基於Nios II的嵌入式SoPC系統設計與Verilog開發實例學習
-
ISBN:9787121257735
-
做者pong p.chu的我的網頁:http://academic.csuohio.edu/chu_p/
在作FPGA實時圖像處理時,有時須要計算一些參數,好比Gamma值、校訂矩陣等,這些參數在邏輯中計算會很是複雜,而且因爲這些參數不須要一直計算,所以徹底沒有必要在邏輯中實現。
32位的NIOS II系列軟核處理器是Altera公司研製的第二代嵌入式處理器,它具備很高的性能、方便的軟件開發工具和很大的靈活性,而且佔用很小的FPGA資源,它能夠與各類各樣的外設、定製的硬件加速單元組合,構成一個定製的片上可編程系統。若是使用Nios II,那麼事情就將會變得很是簡單。邏輯正常處理數據的同時,Nios II經過訪問存儲器,讀取圖像進行分析,使用Nios能夠像C語言編程同樣進行操做,獲得參數值,再經過寄存器映射的方式映射到邏輯中的某些寄存器。
這本書有點貴,80多塊錢,隔壁實驗室有個同窗買了本,以前我藉着看過一段時間,書寫的很nice,對Nios講的還不錯,而且還有一些例程,學習sopc系統設計的朋友能夠參考。
3. 數字圖像處理
-
ISBN:9787121110085
作圖像處理的人,我想應該都接觸過這本書吧,書中主題不少,從理論到實踐,講的很透徹,這是我在圖像處理方面見過的最好的書,沒有之一。我學的時候大部分時候是要用到哪一個知識點,纔去看相關部分。
我如今寫過的一些圖像處理算法(中值濾波、直方圖均衡、高斯濾波、雙邊濾波、線性變換)也基本上都是基於此書,好比空間域圖像加強、頻率域圖像加強、彩色圖像處理、圖像檢測等。圖像加強對視覺衝擊比較大,使用中值濾波可下降隨機噪聲,頻率濾波可用來下降圖像中的週期噪聲,後面有空再學學圖像存儲、分割、配準、合成。
4. 數字圖像處理matlab版
-
ISBN:9787121201974
這本書講的主要是相關圖像處理算法的matlab實現,圖像圖像處理偏向於理論解釋,而這本書主要講工程實現。本書一樣適用於matlab初學者,即便以前沒有學過matlab,直接上手這本書也沒有關係,書中第一章講了matlab的使用,全書按部就班,由淺入深,對圖像處理工程師來講,這兩本書不容錯過。
5. C#入門經典
-
ISBN:9787302343394
學C#,主要是工程須要,當時寫了一個串口控制界面的上位機程序,上位機經過uart與FPGA通訊,實現對硬件系統的控制。
當時也是主要看了看一些基本的語法和windows窗體編程,不得不說,界面編程真方便,所見即所得,將一些控制擺上去,再編寫一些響應函數便可。閒暇之餘寫了個界面,有時驗證一些算法適用性時,使用下面的小軟件將會顯得很是方便。
這本書講的大都是些基礎性的知識,若是有時間和精力,能夠學學《C#高級編程》,這本書我也沒讀過,因此就很少說咯。
6. 於博士cadence視頻教程
前面推薦的都是紙質教程,最後推薦一份電子教程,總共60集。須要的直接百度哈。我當時畫PCB也是看的這個教程,講的很不錯,比較詳細,基本上看完就能夠設計FPGA處理板了。
在電子設計領域,要走的路還很長,後期準備深刻學習Nios、圖像處理算法的硬件化實現、基於C#的軟件開發,有空了瞭解瞭解FPGA異構計算。