一個新手的verilog學(xué)習(xí)經(jīng)驗(yàn)分享
我學(xué)verilog語言進(jìn)行FPGA設(shè)計(jì)也就半年時間,很多的東西就是在網(wǎng)上學(xué)到的,現(xiàn)在想說說自己對使用verilog進(jìn)行FPGA設(shè)計(jì)的一些體會,我水平不高,主要是為新手朋友們介紹自己的一點(diǎn)經(jīng)驗(yàn)少走點(diǎn)彎路。
1、verilog語言
學(xué)習(xí)verilog最重要的不是語法,“因?yàn)?0%的語法就能完成90%的工作”,verilog語言常用語言就是always@(),if~else,case,assign這幾個了,不用去專研繁雜的語法,有些問題等你碰到了查查書就好了。這里推薦夏雨聞老師的《verilog數(shù)字系統(tǒng)設(shè)計(jì)教程》,一本很適合新手的好書。
2、硬件原則
雖然verilog語言很象c語言,但它和c語言還是有本質(zhì)的區(qū)別的,因?yàn)関erilog進(jìn)行的是硬件設(shè)計(jì),你寫出來的東西是實(shí)實(shí)在在電路,所以要有數(shù)字電路的知識是肯定的。數(shù)字電路就是由時序電路(觸發(fā)器)和組合邏輯電路(各種邏輯門)構(gòu)成的,用verilog寫的程序在FPGA實(shí)現(xiàn)就是觸發(fā)器和邏輯門,所以最重要的就是“你對你寫的語言生成的電路心中有數(shù)”,做到這一點(diǎn)你就不會有寫出來的程序不能綜合的麻煩,電路的冗余邏輯肯定也是最少的。還要注意一點(diǎn)就是verilog程序是并行的,不是象c那樣是順序執(zhí)行的,這是因?yàn)閒pga硬件可配置,可形成不同的任務(wù)單元同時工作;而單片機(jī)這種基于通用目的,硬件結(jié)構(gòu)也固定了,它處理任務(wù)只能一件一件順序的進(jìn)行。
3、同步原則
在進(jìn)行FPGA設(shè)計(jì)的時候,同步原則應(yīng)該是最重要的原則之一了,因?yàn)楫惒诫娐返牟豢煽匦?,很可能有毛刺產(chǎn)生,而在芯片內(nèi)部的任何一點(diǎn)毛刺都會一級一級的傳遞下去,最終影響系統(tǒng)的穩(wěn)定性。同步原則用一句話來總結(jié)就是“不要試圖產(chǎn)生自己的時鐘”,最好一個設(shè)計(jì)或者一個模塊只使用同一個時鐘,這樣所有的觸發(fā)器都在同一個時鐘沿跳變,當(dāng)然最穩(wěn)定了,系統(tǒng)也能跑到很高的速度。一個小技巧就是多使用觸發(fā)器的使能端和取沿電路。
4、養(yǎng)成好的代碼習(xí)慣
很多的細(xì)節(jié),比如縮進(jìn)、命名、參數(shù)化、組合邏輯和時序邏輯分離、注釋等等,也就是大家說的代碼風(fēng)格。這個其實(shí)很重要,最好在一開始就養(yǎng)成好的習(xí)慣,這樣會為你以后的工作節(jié)省很多時間,也會大大提高工作的質(zhì)量。不注意這個將很吃很多的苦頭 ,細(xì)節(jié)決定成敗啊。
5、工具
工具永遠(yuǎn)就是工具,最重要的是學(xué)會怎么使用它,不用去研究它,用的多了自然就熟練了,遇到那個問題了自然就會去找到問題的答案,不用開始就抱著工具的手冊狂看,問問別人很簡單的。