FPGA學習之路——一路走來


  既然選擇了遠方,便不顧風雨兼程,一路走下去。  —韓彬

  在看bingo的書時,看到這樣寫到。做什么事情都不容易,學習也是,所以一個詞很重要不忘初心。作為一名大二的學生,我很高興能夠將自己學習FPGA的過程記錄下來,一是方便自己以后回頭看的時候能夠有所感觸,而是想分享自己初學入門是的一些經驗給予初學者,能盡量少走彎路。

  我是大一暑假開始學習FPGA的,我是微電子專業,學校大三才開數電,大一的時候受老師推薦進了一個實驗室,但是沒有好好珍惜機會。最后便不退自出。大二學校FPGA創新實驗室納新,我非常想加入所以利用暑假的時間來學習。剛開始學習的時候沒有一上來就摸代碼,而是先從數電書開始看起,這是我第一次自學一門課,對着數電電子書看沒感覺,后來就看ppt,遇到很多第一次接觸的概念,但是沒有辦法沒人去問,只能自己硬着頭皮硬啃下來,現在回想起來真是非常感謝自己當時能靜心去學,在剛開學那么忙的時候能順利進去實驗室去學習。附上數電電子書、ppt以及Verilog基本語法鏈接鏈接:http://pan.baidu.com/s/1dFywrpZ 密碼:hh1f

  數電PPT和數電書要對應着看PPT上哪里看不懂了就看書上的詳解,實在不行就百度,如果是自己自學的話這個過程是很慢的,所以在學校有老師教,這樣的學習時間是很寶貴的,去外面學也不是不可,確實花了錢還是能學到東西的。但是我還是選擇自學,畢竟囊中羞澀。基本上數電看上倆章的內容后你就會對組合邏輯有簡單的理解,然后就可以看Verilog HDL語法了,我博客里有寫賽思靈公司的開發工具ISE14.7安裝包以及安裝教程,使用詳解。ISE使用方便適合着,主要是因為仿真激勵不用自己寫。只要有C語言編程基礎,看一些簡單的Verilog語法就可以上手操作編譯了。

  一路走來,在實驗室里做了一些小任務,碰到一些我以為不可解決的難題,最后也都慢慢化解。所以就將自己大一上學期的一些心得體會總結出來,未來的學習之路會更加坎坷曲折,願我能不忘初心。

   心得與體會

  1.FPGA設計思想。記得該開始學習FPGA的時候,總是以讀完題目就開始寫代碼,只是剛開始的工程比較小,只需要一兩個always塊,輸入輸出一寫,基本也能寫出來。但是隨着工程逐漸變大,這樣一拿到題目就直接敲代碼的方法就難免有很多弊端。比如我在編寫多功能數字表的時候想加入鬧鍾,時鍾,秒表的功能,但是一上來就敲代碼,最后寫完了時鍾的功能后發現鬧鍾秒表加進去很麻煩,最后費了很大的力氣加進去但是加了一個有十二個輸入的模塊,這樣從布線上講太繁瑣,從利用資源上講浪費資源,總的來說是沒有一個好的的設計思想。

  首先在創建工程之前應該至少畫出它的原理圖,每個模塊想要起什么作用在剛開始設計的時候就應該要考慮到,更細致的話畫出它的模塊內部連線圖,各個always塊之間的相互作用要理清楚。然后再照圖施工,中間的細節再經過后期編譯過程中的在調節修改。

  2.模塊化設計。模塊化設計在編譯的過程中可以提供很多便利。比如串口通信發送模塊和接受模塊我前面寫過,那我在編譯發送接收模塊的時候就可以直接把整個.v文件拿來用,還有時鍾消抖,led流水燈等。另一個便利就是在做比較的工程中避免一個module太大,修改查看代碼不方便等,從原理圖(RTL)上看起來也簡單明了。

我在學習過程中還發現了身邊同學有一點,他們在使用模塊化設計分過多模塊。串口通信發送工程,將分頻波特率分出來,將發送接收計數器也分了出來。我認為沒有必要分出來很多模塊,波特率分頻器可以分出來但發送接收計數器是沒必要的。模塊太多有時候例化連線時也會造成不便。所以我還戲稱說咱這不能叫模塊化設計了,應該叫always塊化設計。

  3.代碼書寫、命名規范、注釋。我覺得這一點也是是十分重要的,比如在使用模塊化設計想要將以前的代碼拿來復用,但是你的名字起得五花八門,有時候時間長了自己也不知道寫的是啥。代碼書寫也應該要有規范,比如begin end 要成對的打不會丟,多用復制粘貼可以減少書寫錯誤等。對於一些比較難理解的地方應當表明注釋,這樣自己在閱讀和修改的時候很方便,別人看的時候也會比較容易明白。隔一段時間回去看自己的代碼也不至於會忘了自己寫的意思。總結來說要打得一手漂亮的代碼。

  4.學會利用軟件小技巧,仿真,編寫激勵技巧以及觀察仿真波形圖。以前沒有仔細看仿真圖的習慣,現在工程大了之后發現看仿真圖真的可是省去好多時間。看着波形圖去推代碼滿足條件,這樣比直接下板子會節省好多時間。我在仿真串口通信接受模塊時,將發送模塊和接收塊例化一起然后仿真,這樣就避免了直接仿真接收模塊時激勵編寫的麻煩,很多人這樣做的時候會感到麻煩,我可以直接用我以前寫的模塊.v文件復制過來,很方便,這就體現了代碼書寫規范和模塊化設計復用的優點。光針對串口通信而言,巧妙的利用他里面的一些信號,會十分方便,忙信號、發送結束信號等等,合理分配資源,最后事半功倍。

  5.多討論,請教他人。自己一個人單獨編寫代碼的時候難免會碰到這樣那樣的bug,也容易會陷入思想的死循壞,所以也要多和別人討論,請教他人。但不是直接要別人的代碼,可以請教一下設計思想,想想自己有什么不足,為什么沒有想到,多總結,多思考。

  6.要有艱苦奮斗的精神。這學期以來,我為了完成任務,經常是周末一坐就是一整天。一個問題我也會幾天連續的調試。最終往往都會找到解決辦法。所以我覺得不會就去請教別人是好的,最后最好是自己能將它琢磨出來。

 

轉載請注明出處:NingHeChuan(寧河川)

個人微信訂閱號:NingHeChuan

如果你想及時收到個人撰寫的博文推送,可以掃描左邊二維碼(或者長按識別二維碼)關注個人微信訂閱號

知乎ID:NingHeChuan

微博ID:NingHeChuan

原文地址:http://www.cnblogs.com/ninghechuan/p/6238392.html 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM