資源描述:
《verilog代碼書寫規(guī)范》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Verilog代碼書寫規(guī)范2.5.1信號(hào)命名規(guī)則信號(hào)命名規(guī)則在團(tuán)隊(duì)開發(fā)中占據(jù)著重要地位,統(tǒng)一、有序的命名能大幅減少設(shè)計(jì)人員之間的冗余工作,還可便于團(tuán)隊(duì)成員代碼的查錯(cuò)和驗(yàn)證。比較著名的信號(hào)命名規(guī)則當(dāng)推Microsoft公司的“匈牙利”法,該命名規(guī)則的主要思想是“在變量和函數(shù)名中加入前綴以增進(jìn)人們對程序的理解”。例如所有的字符變量均以ch為前綴,若是常數(shù)變量則追加前綴c。信號(hào)命名的整體要求為:命名字符具有一定的意義,直白易懂,且項(xiàng)目命名規(guī)則唯一。對于HDL設(shè)計(jì),設(shè)計(jì)人員還需要注意以下命名規(guī)則。1.系統(tǒng)級信號(hào)的命名系
2、統(tǒng)級信號(hào)指復(fù)位信號(hào),置位信號(hào),時(shí)鐘信號(hào)等需要輸送到各個(gè)模塊的全局信號(hào)。系統(tǒng)信號(hào)以字符串sys或syn開頭;時(shí)鐘信號(hào)以clk開頭,并在后面添加相應(yīng)的頻率值;復(fù)位信號(hào)一般以rst或reset開頭;置位信號(hào)為st或set開頭。典型的信號(hào)命名方式如下所示:wire[7:0]sys_dout,sys_din;wireclk_32p768MHz;wirereset;wirest_counter;2.低電平有效的信號(hào)命名低電平有效的信號(hào)后一律加下劃線和字母n。如:wireSysRst_n;wireFifoFull_n;3.過
3、鎖存器鎖存后的信號(hào)經(jīng)過鎖存器鎖存后的信號(hào),后加下劃線和字母r,與鎖存前的信號(hào)區(qū)別。如:信號(hào)CpuRamRd信號(hào),經(jīng)鎖存后應(yīng)命名為CpuRamRd_r。低電平有效的信號(hào)經(jīng)過鎖存器鎖存后,其命名應(yīng)在_n后加r。如:CpuRamRd_n信號(hào),經(jīng)鎖存后應(yīng)命名為CpuRamRd_nr多級鎖存的信號(hào),可多加r以標(biāo)明。如:CpuRamRd信號(hào),經(jīng)兩級觸發(fā)器鎖存后,應(yīng)命名為CpuRamRd_rr。2.5.2模塊命名規(guī)則HDL語言的模塊類似于C語言中的函數(shù),可采用C語言函數(shù)的大多數(shù)規(guī)則。模塊的命名應(yīng)該盡量用英文表達(dá)出其完成的功能
4、。遵循動(dòng)賓結(jié)構(gòu)的命名法則,函數(shù)名中動(dòng)詞在前,并在命名前加入函數(shù)的前綴,函數(shù)名的長度一般不少于2個(gè)字母。HDL模塊的命名還需要考慮以下情況:1.模塊的命名規(guī)則在系統(tǒng)設(shè)計(jì)階段應(yīng)該為每個(gè)模塊進(jìn)行命名。命名的方法是,將模塊英文名稱的各個(gè)單詞首字母組合起來,形成3到5個(gè)字符的縮寫。若模塊的英文名只有一個(gè)單詞,可取該單詞的前3個(gè)字母。各模塊的命名以3個(gè)字母為宜。例如:ArithmaticLogicalUnit模塊,命名為ALU。DataMemoryInterface模塊,命名為DMI。Decoder模塊,命名為DEC。2.
5、模塊之間接口信號(hào)的命名所有變量命名分為兩個(gè)部分,第一部分表明數(shù)據(jù)方向,其中數(shù)據(jù)發(fā)出方在前,數(shù)據(jù)接收方在后,第二部分為數(shù)據(jù)名稱。兩部分之間用下劃線隔離開。第一部分全部大寫,第二部分所有具有明確意義的英文名全部拼寫或縮寫的第一個(gè)字母大寫,其余部分小寫。舉例:wireCPUMMU_WrReq;下劃線左邊是第一部分,代表數(shù)據(jù)方向是從CPU模塊發(fā)向存儲(chǔ)器管理單元模塊(MMU)。下劃線右邊Wr為Write的縮寫,Req是Request的縮寫。兩個(gè)縮寫的第一個(gè)字母都大寫,便于理解。整個(gè)變量連起來的意思就是CPU發(fā)送給MMU的
6、寫請求信號(hào)。模塊上下層次間信號(hào)的命名也遵循本規(guī)定。若某個(gè)信號(hào)從一個(gè)模塊傳遞到多個(gè)模塊,其命名應(yīng)視信號(hào)的主要路徑而定。3.模塊內(nèi)部信號(hào):模塊內(nèi)部的信號(hào)由幾個(gè)單詞連接而成,縮寫要求能基本表明本單詞的含義;單詞除常用的縮寫方法外(如:Clock->Clk,Write->Wr,Read->Rd等),一律取該單詞的前幾個(gè)字母(如:Frequency->Freq,Variable->Var等);每個(gè)縮寫單詞的第一個(gè)字母大寫;若遇兩個(gè)大寫字母相鄰,中間添加一個(gè)下劃線(如DivN_Cntr);舉例:SdramWrEn_n;Fl
7、ashAddrLatchEn;2.5.3代碼格式規(guī)范1.分節(jié)書寫格式各節(jié)之間加1到多行空格。如每個(gè)always,initial語句都是一節(jié)。每節(jié)基本上完成一個(gè)特定的功能,即用于描述某幾個(gè)信號(hào)的產(chǎn)生。在每節(jié)之前有幾行注釋對該節(jié)代碼加以描述,至少列出本節(jié)中所描述信號(hào)的含義。行首不要使用空格來對齊,而是用Tab鍵,Tab鍵的寬度設(shè)為4個(gè)字符寬度。行尾不要有多余的空格。2.注釋的規(guī)范使用//進(jìn)行的注釋行以分號(hào)結(jié)束;使用/**/進(jìn)行的注釋,/*和*/各占用一行,并且頂頭;例如://Edgedetectorusedtosy
8、nchronizetheinputsignal;對于函數(shù),應(yīng)該從“功能”,“參數(shù)”,“返回值”、“主要思路”、“調(diào)用方法”、“日期”六個(gè)方面用如下格式注釋://程序說明開始//================================================================////功能:完成兩個(gè)輸入數(shù)的相加。//參數(shù):strByDelete,strToDe