從老板讓自己看有關(guān)FPGA的書到現(xiàn)在已經(jīng)過去一個(gè)多月了,雖然中間斷斷續(xù)續(xù)有在做畢業(yè)設(shè)計(jì)什么的,但也一直在看楊老師推薦的夏雨聞老師的《Verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程》。這本書里面都是在講Verilog的基本語法和一些簡單模塊的代碼也有一些優(yōu)化過的實(shí)際工程實(shí)例,看這個(gè)書給我的感覺就是:Verilog語言跟C語言很像,我也知道它跟C語言是完全不同的思路的,但我就是不明白為什么它就可以用代碼來描述硬件呢。還有這個(gè)書上名沒有對(duì)FPGA做一個(gè)基本的介紹,所以看這個(gè)書的時(shí)候我甚至都不大了解FPGA是個(gè)什么東西。所以前面一段時(shí)間就一直對(duì)著這個(gè)書、做一些筆記、記語法,跟學(xué)習(xí)軟件沒啥區(qū)別。
最近這一周就想著自己開始搗鼓QuartusII軟件的仿真,剛開始的時(shí)候還以為這個(gè)軟件就跟C語言等語言的編譯環(huán)境一樣,把代碼輸進(jìn)去點(diǎn)擊仿真按鈕就會(huì)自己仿真然后由結(jié)果顯示出來的。經(jīng)過查找相關(guān)的資料材才知道這個(gè)是不一樣的,F(xiàn)PGA的仿真分為功能仿真(RTL級(jí)仿真)、綜合仿真和綜合后仿真。每一個(gè)仿真的操作步驟也都是不同的。還有一個(gè)之前沒有認(rèn)識(shí)到的是FPGA的仿真還要借助第三方的EDA工具進(jìn)行仿真,比如說Modelsim SE 或Modelsim-Altera等,還要自己編寫測(cè)試腳本。這幾天也通過自己找資料大概了解了QuartusII和Modelsim軟件的使用,可是在做仿真的時(shí)候就是不能得出正確的波形。而每本參考書上對(duì)這部分也只是簡單的介紹,按照他們的步驟到最后就出不來。這個(gè)讓我很困惑,昨天在找資料的時(shí)候,發(fā)現(xiàn)一位前輩寫的他讀了特權(quán)同學(xué)的《深入淺出玩轉(zhuǎn)FPGA》這本書的感受,感覺跟我的困惑差不多。而且覺得他寫得很有道理就決定去找一下這本書,不幸的書在圖書館暑假上沒有找到這本書不過找到了特權(quán)同學(xué)寫的另一本書——《FPGA/CPLD邊練邊學(xué)》。
今天下午就開始研讀這本書,看了前面幾章這本書給我的感覺是跟其他的教科書不一樣,文字描述的不那么正式,看起來比較符合舒服就好像有個(gè)人在面前跟你說一樣。因?yàn)橹熬涂催^夏老師有關(guān)Verilog的書,對(duì)Verilog已經(jīng)有所了解,所以一下子就把前三章看完了。其中有關(guān)對(duì)FPGA硬件部分的介紹,讓我對(duì)FPGA有了新的認(rèn)識(shí),LAB、LE等詞也知道什么意思了。第四章是一個(gè)完整的工程實(shí)踐案例,它講的是一個(gè)基于特權(quán)同學(xué)自己開發(fā)的一個(gè)開發(fā)板的電燈實(shí)驗(yàn)。我就跟著它上面的步驟一步一步地來,這一次終于出現(xiàn)了正確的仿真波形。
1、建立工程和頂層文件
頂層文件一般和工程名字相同,工程建立完后,新建一個(gè)空白的Verilog文件,在輸完代碼后點(diǎn)擊保存系統(tǒng)會(huì)自動(dòng)保存到之間監(jiān)理工程的目錄下文件名也會(huì)自動(dòng)設(shè)置成與工程名一樣。并且默認(rèn)為是頂層文件。
2、關(guān)于測(cè)試文件
之前每次仿真錯(cuò)誤的可能原因是發(fā)測(cè)試文件也加入到工程里面去了,而一般測(cè)試文件時(shí)不可綜合的。對(duì)于測(cè)試文件正確的做法是,在確保所所輸入的代碼沒有無法錯(cuò)誤的情況下,點(diǎn)擊菜單欄的Processing——Start——Start Test Bench Template Writer ,系統(tǒng)會(huì)在工程目錄下自動(dòng)生成一個(gè).vt 的文件。找到這個(gè)文件,根據(jù)設(shè)計(jì)的代碼修改測(cè)試監(jiān)本文件后保存。
3、對(duì)Modelsim軟件的操作
之前都是直接用Modelsim來仿真的,這次是在QuartusII來調(diào)用Modelism進(jìn)行仿真的。這里出現(xiàn)了和書上步驟不一樣的地方了。書上是調(diào)用后就會(huì)直接出現(xiàn)仿真波形,我這邊是沒有出現(xiàn)還要對(duì)測(cè)試腳本進(jìn)行編譯和點(diǎn)擊開始仿真。剛開始的時(shí)候也是沒有看到正確的仿真波形的,我實(shí)驗(yàn)了好多從都是一樣,看到的波形
雖然這是一個(gè)最簡單的功能的仿真,但是在我學(xué)習(xí)FPGA的過程中也算得上是一個(gè)小進(jìn)步啦。還是要感謝特權(quán)同學(xué)的書的指導(dǎo),讓我解開了一些對(duì)于FPGA的迷惑。也讓我感覺到選著一般好的參考書對(duì)于學(xué)習(xí)還是很重要的。還有一點(diǎn)是,在按照教程去操作的時(shí)候,自己這邊出現(xiàn)的救國并不一定會(huì)和教程中一樣,當(dāng)遇到不一樣的時(shí)候要學(xué)會(huì)自己分析是不是自己在操作上錯(cuò)誤了,然后想辦法去解決。其實(shí)我覺得出錯(cuò)是好事,這樣才能讓自己去鉆研去學(xué)習(xí)。