99在线精品免费视频九九视-99在线精品视频-99在线精品视频免费观里-99在线精品视频在线观看-99在线免费播放



官方論壇
官方淘寶
官方博客
微信公眾號
點擊聯系吳工 點擊聯系周老師
您的當前位置:主頁 > FPGA原創 >

FPGA圖像工程師的六脈神劍——“選掃掌仿習練”

發布時間:2020-12-22   作者:admin 瀏覽量:

導讀——不是每個人都能成為一代宗師,因為在一個時代宗師只有少數人,成不了宗師,可以選擇成為門派高手,立足武林的六合一之路無外乎秘密武器、江湖規矩、內功心法、武術動作、內功修煉及實戰經驗。修煉六脈神劍,成為高手,行走江湖,行俠仗義,斬奸除惡,開啟江湖人生!


0.引言——高手沒有天賦,只有初心、選擇、努力和毅力

FPGA圖像工程師的六脈神劍——“選掃掌仿習練”

圖1 工業視覺處理(圖片來源:自電子元件技術)


圖像處理是通過對圖像進行增強、復原、重建、分析及特征識別等處理以得到目標結果,在工業、消費電子、安防等領域具有廣泛的應用。FPAG支持實時流水線運算(跟工廠流水線作業一樣、不同的工序可以同時開展),具有高實時性特點(通過并行作業、可以在極短的時間內完成任務),是圖像處理應用的主要平臺,在一些高并發性、實時性要求較高的應用領域,只能通過FPGA實現。

FPGA圖像工程師的薪資水平普遍較高,但綜合能力要求極高,又是算法、又是編程,又是硬件,不是迫不得已或者興趣,很多人一開始就選擇放棄,實際入門真的是這樣子嗎?跟很多技術一樣,難不在技術本身,在學習的初心、態度、流程及方法,下面是本人基于多年的經驗整理FPGA圖像工程師晉級之路。

1.選武器——倚天QUARTUS、屠龍VIVADO,掌控優先

FPGA開發的工具平臺包括綜合編譯工具、仿真工具、代碼編寫工具及入門開發板,選好用好工具平臺不僅可以降低入門難度,還利于快速提升設計開發能力。工具平臺選擇以易于入門,便于熟練掌控,利于升級為基本原則,下面是有關工具平臺選擇、使用方法及相關資料的分享:


(1)選開發工具

①綜合編譯工具——優選QUARTUS,升級VIVADO

主流的FPGA廠商主要有:國際Intel、Xinlinx、Lattice等,國內的紫光同創、京微齊力、高云半導體等,每家廠商都有自己的開發工具,解決新建工程、仿真綜合,配置管腳、下載和在線調試等問題,功能大同小異,差異主要存在于操作習慣、性能及操作方法等方面。主流的開發工具主要有來自Intel的QUARTUS和Xilinx的ISE、VIVADO,其中ISE是XILINX較早開發的版本,適用中低端芯片的開發,VIVADO是XILINX近期推出的開發平臺,適用于XILINX的中高端芯片的開發(不支持低端芯片的開發)。

表1 QUARTUS與VIVADO比較

FPGA圖像工程師的六脈神劍——“選掃掌仿習練”

相比而言,QUARTUS無論是對資源的要求,還是使用簡單性都要優于VIVADO,但功能的齊全性低于VIVADO,綜合市面上Intel的FPGA開發板相對比較便宜,建議初學者先選擇QUARTUS入門學習,掌握熟悉之后,根據個人情況及開展具體項目的要求,再學習使用VIVADO

備注——綜合編譯工具下載地址:

1) QUARTUS軟件安裝包,建議安裝18.1精簡版本的,不需要破解。

下載地址:

http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=429&extra=page%3D1

2) VIVADO軟件安裝包,建議安裝2018.2版本的,在XILINX官網可注冊LICENSE。

下載地址:

http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=435&highlight=vivado


②仿真工具——業界主流MODELSIM

QUARTUS與VIVADO都自帶仿真器,但是不好使用,目前業界基本都是使用MODELSIM作為FPGA仿真工具,基本是標配。

備注——仿真工具下載地址:

下載及安裝教程地址:

http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=430&extra=page%3D1


③代碼編寫工具——優選GVIM,可選NOTEPAD++

QUARTUS、VIVADO、MODELSIM都自帶有代碼編寫器,但交互性不好,強烈建議選用GVIM、NOTEPAD++等代碼編寫工具。

在Windows系統環境下,可以采用NOTEPAD++,特別是從軟件轉行過來,已經習慣NOTEPAD++使用的開發者。但如果想在IC設計、IC驗證或者FPGA上走得更遠,強烈建議選擇GVIM,一方面IC行業基本都在使用GVIM,另一方面來自于工具本身功能足夠強大,不僅支持常規的編輯、復制、刪除、查找、替換等功能,而且支持“命令行”輸入。


備注——Windows版本GVIM工具下載地址:

下載及安裝教程地址

http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=431&extra=page%3D1


(2)開發工具使用

①VIVADO和QUARTUS使用方法

VIVADO和QUARTUS的功能,最常用的功能包括:新建工程、選好芯片型號、配置好管腳、綜合編譯和上板調試等功能。各個工具都是大同小異,但要注意學習FPGA不是學工具,而是學習如何設計、學習如何定位問題和解決問題。

備注——VIVADO和QUARTUS使用資料推薦

VIVADO使用教程鏈接

http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=1023&extra=page%3D1


QUARTUS使用教程鏈接

https://pan.baidu.com/s/1Zf-bjXF4v72tXx2NnEfCsw

提取碼:yknc


②Modelsim使用方法

掌握Modelsim工具的基本使用,主要包括:新建工程,添加文件,編譯,VSIM仿真及查看仿真波形等。


(3)選開發平臺

學習FPGA編程,開發板是標配平臺,市面上FPGA的開發板非常多:100~200元的入門級產品,500~1000元的進階產品,數千上萬元的高級產品。對于初學者可以選擇點撥FPGA之入門開發板、MP801、新起點FPGA開發板、AC620 FPGA開發板等。

2.掃規矩——Verilog江湖明規矩講武德,走馬觀花留印象

選好工具、開發板,接下來就是學習FPGA的編程語言——Verilog和VHDL,其中VHDL在教學科研中較為常見,實際的應用中基本都是以Verilog為主,風格與C語言類似,強烈建議學習Verilog。傳統的學習模式都是選一兩本教材反復研讀理解每一個語法的細節,翻了一遍沒感覺,再翻一遍,也沒記住多少,一兩個月下來還是不知道如何編寫。其實對于大多數初學者而言,這樣的學習模式是無效率的,因為短期內無法理清語法規則,如何使用。因此,強烈建議找一兩本經典教材,花兩三天時間走馬觀花過一遍,不需要追求掌握細節,有印象大概明白即可,使用的時候再回過頭來查,使用多了自然就會明白,這跟小孩走路一樣,一開始總是別扭,找到感覺了自然就靈活了。重點理解:

表2 重點理解Verilog知識點

FPGA圖像工程師的六脈神劍——“選掃掌仿習練”

推薦的書:

1) 夏老師的《verilog HDL數字系統設計教程》,這是一本經典的verilog書籍,已出版十幾年,一直很受歡迎;

2) 《FPGA至簡原理與應用》,該書還沒有出版,只有電子版,配套視頻講解幫助學習

3.掌心法——FPGA軟硬心法核心在至簡,避免走火入魔

FPGA的設計

(1)FPGA軟硬件設計思維風格

FPGA需要編程實現,但實際是硬件設計,這與軟件設計有本質的區別:

① 軟件設計思維風格

FPGA圖像工程師的六脈神劍——“選掃掌仿習練”

圖2 軟件思維設計風格


軟件設計思維即指熟悉的C、C++、Java等軟件編程的思維,可以邊寫代碼,邊看處理看結果,風格如圖2所示。圖3是基于軟件設計思維實現Y=a+b*c+d/e計算的過程。


FPGA圖像工程師的六脈神劍——“選掃掌仿習練”

圖3 a+b*c+d/e的軟件設計思維實現過程

② 硬件設計思維風格

硬件設計思維與軟件設計思維有較大的區別,軟件設計思維只需要考慮邏輯,基本不用考慮時序的問題,但是硬件設計思維處理模塊功能,還需要考慮模塊之間的耦合時序問題,具體設計風格如圖4所示。圖5是基于硬件設計思維實現Y=a+b*c+d/e計算的過程。

FPGA圖像工程師的六脈神劍——“選掃掌仿習練”

圖4 硬件設計思維風格

FPGA圖像工程師的六脈神劍——“選掃掌仿習練”

圖5 a+b*c+d/e的硬件設計思維實現過程


相比成熟的軟件設計思維風格,硬件設計的思維風格被提及得不多,很多初學者尤其是有一定軟件基礎的碼農朋友,一時半會無法轉過彎,因此感覺到很難,那難在哪里?特別是在定位查找問題的時候

FPGA圖像工程師的六脈神劍——“選掃掌仿習練”

圖7 軟硬件設計思維查找問題的區別

就像圖7所示一樣,軟件是按順序執行,哪里有錯很容易找出出錯的地方;而FPGA只有在結果不對的時候,再回去找出問題的點,但那么多模塊,到底是哪個出錯了,是比較難定位的,這就是FPGA的難點之一。

(2)設計思維風格選擇——4大建議2個推薦

軟件設計思維和硬件設計的思維風格區別明顯,在選擇之前先通過表3了解兩種風格的優缺點。

表3 軟硬件設計思維風格優缺點

FPGA圖像工程師的六脈神劍——“選掃掌仿習練”

如何選擇合適的設計思維風格?建議兩種風格都學習,結合起來用,在學的過程中先易后難,對于硬件設計思維,碰到困難問題,先放下,重效果實現暫時忽略細節,等知識經驗積累豐富了,很多問題就會迎刃而解。具體6個建議如下:

1) 軟件入門,硬件進階采用軟件設計思維入門,同時注意硬件設計思維的存在,當設計水平遇到瓶頸時,學習硬件設計思維;

2) 軟件硬件同步學習兩種設計思維相互補充,互相促進;

3) 小項目軟件思維入門,大項目硬件升級入門以后,隨著大項目工作或者學習的開展,強烈建議采用硬件設計思維,這是一個優秀FPGA工程師必須具備的基本素質,很多企業也會有類似的要求,比如華為要求“一個always只能設計一個信號”,其根本上就是要求工程師要用硬件的思維來設計。

4) 硬件設計思維避免牛角尖學習硬件設計思維,一定要避免鉆牛角尖,切記不要以為是一定要想明白才去寫代碼、才去仿真驗證,想不明白或者不能通過查資料,討論等途徑解決,就無法開展工作。FPGA設計思維尤其是硬件設計思維只是一個過程,正常的學習動作是寫一點代碼仿真一下,在設計過程中理解,在理解中改動設計,這才是正途。

推薦學習資源:

1) 專業的、標準的硬件設計思維學習資源選擇——《FPGA高手修煉》,該學習資源可以很好訓練FPGA代碼設計;

2) FPGA的模塊設計技巧,可參考《FPGA架構設計》

(3)編譯出錯定位

使用開發工具過程經常會碰到很多問題,出來根據提示信息查找定位問題之外,也可以通過網絡尋找同類問題解決方案。

備注——QUARTUS問題【匯總貼】推薦

常見QUARTUS問題匯總網址

http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=901

(4)學會習仿真調試

仿真測試是FPGA工程師必須掌握的技能,FPGA工程師的基本工作狀態是一個循環,即設計——仿真——調試——設計,因此,需要掌握相關的仿真調試方法,邊設計邊仿真調試,不斷修正錯誤,直至完成設計目標。具體的要掌握的技能如下:

①測試文件的寫法

1) 熟悉測試文件的格式明確一個測試文件的基本組成要素,如模塊名、信號定義、例化和產生測試激勵等。

2) 掌握時鐘和復位信號的產生方法了解時鐘、復位等信號的產生;

3) 掌握信號激勵的產生方法激勵怎么產生,就是用那個initial語句,延時xx時間,給就一個1,再延時xx時鐘,就給一個0。掌握這種基本的語法邏輯,在實際中基本夠用了,具體參考如圖8所示。

FPGA圖像工程師的六脈神劍——“選掃掌仿習練”

圖8 信號激勵產生示例

掌握以上測試文件的編寫方法,在實際中基本已經夠用了,相比而言更重要的是看仿真波形。

②MODELSIM編譯錯誤的處理方法

在MODELSIM編譯過程中,如果代碼有錯誤時,軟件會提示報錯,并且會提示哪一行出錯,例如圖3所示。

FPGA圖像工程師的六脈神劍——“選掃掌仿習練”

圖9 編譯報錯示意圖

圖9提示:在pkt_check_tb.v這個文件,第34行,信號“din”有錯誤,可以去34行查看問題,關于問題查看與定位梳理以下6點建議:

1) 務必查看錯誤提示,不管愿不愿意看英文,這是必須要掌握的基本技能;

2) 強烈建議少用翻譯軟件理解錯誤提示,依賴翻譯信息容易失去重點,在查找問題時,很多時候不需要全部理解,抓住關鍵詞即可。如圖3所示,文件名叫pkt_check_tb.v,是第34行,是信號din有錯,這些信息已經足夠了,然后根據提示打開pkt_check_tb.v文件,去34行,找到din信號,去看這代碼跟標準的代碼比,有哪些不同,就可以把問題查找出來;

3) 錯誤位置上下文也要看,在處理編譯錯誤時,不要只看提示錯誤的行,上下的行業好看。有時候上行的錯,會在下行中提示;

4) 不要害怕出現錯誤,在FPGA開發過程中,遇到錯誤時正常現象,而且很多時候,錯誤并沒有那么多,常見的錯誤基本都是:信號定義錯誤,例如reg信號定義成wire,wire信號定義成reg;信號位寬有錯,信號沒定義等等;

5) 可以借助網絡尋找解決問題的辦法:在學習、開發過程,經常會遇到很多問題,可以通過網絡尋找同類問題的解決辦法,比如MODELSIM/仿真問題帖子:www.fpgabbs.cn/forum.php?mod=viewthread&tid=951;

④錯誤問題的定位方法

與軟件開發一樣,調試是FPGA開發最為耗時的一個環節,需要根據代碼和波形,找出邏輯的錯誤。但與時序軟件設計項目,FPGA的調試難度較大,不像軟件那樣支持但步調試,FPGA是一個并行硬件,所有模塊是一起工作。在實際的工作中,更考驗心態及心細程度,一般采用二分法樹藤摸瓜解決問題,比如一個工程分為ABCDE5部分,現在E的結果有問題,具體定位過程如下:

1) 先看C是否正確,如果正確,說明錯誤由DE導致,如果錯誤,說明錯誤由AB引起;

2) C正確:檢查D的結果,如果D正確,則錯誤由E產生,反之由D產生;

3) 如果C錯誤:檢查A的輸出,如果A正確,則錯誤由B產生,反之由A產生;

4) 就這樣一級一級排查,最終總會定位到問題所在點。

更多的FPGA問題定位技巧可參考:

http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=268

(5)在線調試

經過綜合編譯,下一步就是上板測試看效果。仿真通過不代表就是正確的,仿真只是模擬的仿真,僅說明“邏輯”正確,實際中還會有很多因素影響結果,比如管腳配置錯誤、硬件故障、信號干擾等問題。不同的開發工具都對應不同的在線調試工具,QUARTUS自帶的SIGNALTAP、ISE自帶的CHIPSCOPE,VIVADO本身的調試工具。在線調試工具與仿真工具類似,區別在于仿真通過電腦模擬,在線調試工具是抓取實際信號呈現結果。

備注1:在線工具具有局限性,只能看一小部分的信號以及有限的數據量,這意味著在線調試工具只能定位未知的小BUG,邏輯設計還是要靠仿真來保證。

備注2——SIGNALTAP的使用方法資源推薦:

Signaltap使用教程鏈接

https://pan.baidu.com/s/1o6ti4Zr31mRw2qKYrMQQQg

提取碼:pj5s

4.仿動作——依葫蘆畫瓢入門案例,學基本動作要領

仿寫現成案例是最快速也是最簡單的學習方法,建議仿寫案例從簡單開始逐步過渡到,在仿寫的過程中逐步掌握Verilog語法、計數器、位寬擴展等復雜應用并熟悉工具使用。推薦的仿寫案例如下:

1) LED燈系列1位閃爍燈、4位閃爍燈、PWM呼吸燈等;

2) 數碼管系列數碼管動態掃描、秒表、數字時鐘等;

這些案例都可以通過互聯網搜索到,或者通過購買開發板獲得,具體的學習建議如下:

1) 抄寫練習混臉熟抄寫一遍,以熟悉工具流程和熟悉語法為目的,并在抄寫過程中理解常用的編程語法;

2) 盲寫練習漲經驗盲寫一遍,上板調試看結果,如有問題對比源碼定位問題,盲寫效果比抄寫效果要好,印象更加深刻;

3) 謹慎擴展練習有耐心在語法、工具還不熟悉,設計思維還沒形成的情況下,不建議擴展功能,因為容易出錯,浪費時間還打擊信心。建議先仿寫、盲寫基本案例一個周期,通過對比學習中不斷提升基礎能力;

4) 謹慎開展設計有信心很多初學者學一兩個星期就開始設計,以為已經具備FPGA設計能力,這是誤區。一般情況,FPGA和芯片設計工程師開始一兩年都是開展驗證的工作。優先的工程師都是建立在閱讀理解、仿寫及修改大量代碼的基礎上,才能逐步掌握設計能力。因此,開始設計不出來是正常的現象,沒必要灰心。

5) 結合工具積累技巧在學習過程中,結合QUARTUS、VIVADO、MODELSIM等工具和開發平臺,不斷積累并掌握掌握仿真、定位問題等技巧。

5.習基礎——萬丈高樓平地起,基礎決觸達定高度

以上是FPGA知識,要進階成為FPGA圖像工程師,除了FPGA基礎知識之外,還需要掌握圖像的概念及圖像處理的方法,與FPGA學習一樣,一開始并不需要去深度研讀圖像處理的相關原理書籍,可以通過仿寫VGA顯示顏色、VGA顯示矩陣、VGA顯示圓、VGA顯示動畫和VGA顯示圖片圖像基本實驗掌握圖像處理的基本概念:

1) 理解圖像時序理解圖像傳輸的信號時序,例如行、場同步信號等;

2) 理解圖像格式理解圖像的RGB888、RGB565、RAW12等數據格式;

3) 理解圖像顯示方法理解一幅圖像是如何將像素數據傳到VGA、LED等顯示設備進行顯示的,是如何對齊的。理解這些,有助于實現畫中畫、圖像拼接、裁減等高級功能的實現;

4) 理解圖片動畫實現方法動畫本質上是多幅圖像的滾動顯示,本質上也是圖像顯示。通過動畫的實現方法,可以實現更種游戲的實現;

5) 理解圖像存儲的處理法

6.練實戰——閉門造車、戰場上只能被KO

通過圖像基礎案例之后,可以開展一個具有代表性、完整性的FPGA圖像處理項目——FPGA圖像邊緣檢測,具體完成的內容包括:

1) 圖像采集——OV7670具體的內容包括OV7670傳感器的配置、圖像采集;(選擇OV7670是因為該傳感器資料眾多,具有代表性,在掌握圖像采集之后,可通過舉一反三掌握AD、DA的配置方法,甚至可以延伸聯系LVDS、MIMP及HDMI等圖像視頻接口);

2) 圖像處理:包括灰度轉換、圖像格式轉換、高斯濾波、SOBEL邊緣檢測算法(也可嘗試中值濾波、腐蝕等圖像處理算法);

3) 圖像存儲與嵌入式計算機不同,FPGA的存儲是一個難點,需要在硬件邏輯下考慮不同幀圖像的處理關系,需要注意時序及存儲容量的控制。

通過項目實踐,掌握圖像采集、圖像處理、圖像存儲及圖像顯示等常見圖像處理的功能,同時對圖像數據帶寬等概念有了深入的理解和認識,比如1080P、4K和8K等。

備注——FPGA圖像邊緣檢測實踐資料

http://www.fpgabbs.cn/thread-879-1-1.html

總結與后續——高手過招,每一個傷疤都是大牛的墊腳石

至此,一步一個腳印走完六步法,完成圖像邊沿檢測的項目,基本走完從小白到FPGA圖像工程師入門之路,無論是知識還是信心都有了質的飛躍。如果能在學習過程中學會舉一反三、觸類旁通,找個心儀的工作問題不會太大。

能力和經驗的提升是一個長期的過程,強烈建議基于上述知識基礎及問題解決的技巧,開展更多的項目實踐、比如圖像的放大縮小、車牌識別、手勢識別等,LVDS、MIPI、HDMI接口等高速接口,也可以開展4K、8K圖像處理掌握更高速、更復雜的FPGA圖像處理項目。在成功喜悅和失敗煎熬的錘煉下,你或許也會跟我一樣感慨,成為大牛并沒有想象中那么難!

下一篇:沒有了
  •   
  •   
  •   
  •  
  • FPGA教育領域第一品牌
  • 咨詢熱線:020-39002701
  • 技術交流Q群:544453837
主站蜘蛛池模板: 亚洲综合亚洲国产尤物 | 外国一级黄色片 | 色爱区综合激月婷婷激情五月 | 成年片美女福利视频在线 | 在线播放亚洲美女视频网站 | 亚洲欧美偷拍自拍 | 国产免费又色又爽又黄在线观看 | 99ri国产在线观看 | 精品国产品国语在线不卡丶 | 久久视频这里只精品3国产 久久视热这只是精品222 | 香蕉久久久久 | 欧美大片欧美毛片大片 | 欧美精品亚洲精品日韩 | 国产综合第一页在线视频 | 欧美亚洲综合在线观看 | 亚洲国产精品日韩一线满 | 亚洲国产成人超福利久久精品 | 久久永久免费视频 | 天堂亚洲欧美日韩一区二区 | 色婷婷在线观看视频 | 毛片免费全部完整播放 | 成人黄色片在线观看 | 精品一区二区视频 | 美女久久久久久 | 国产九九在线视频 | 五月天色丁香 | 国产精品一国产精品 | 欧美黑人白人bbw | 国产美女做爰免费视频软件 | 婷婷丁香六月 | 国产欧美一级片 | 久久亚洲美女久久久久 | 亚洲色图图 | 久草免费资源在线 | 午夜性爽快免费视频播放 | 欧美高清a | 成人18免费网 | 欧美日韩国产一区二区三区播放 | 国产伦子一区二区三区四区 | 大陆一级毛片免费视频观看i | 日本三级免费片 |