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