




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、代碼書(shū)寫(xiě)規(guī)范3.1 命名規(guī)范3.1.1 HDL代碼命名總則 具有意義的命名比注釋要好得多。在寫(xiě)代碼時(shí),命名應(yīng)給予充分的重視,任何命名都應(yīng)遵循簡(jiǎn)潔、明了、準(zhǔn)確的原則,切忌模棱兩可。 文件名應(yīng)由字母、數(shù)字及下劃線組成命名只能由26個(gè)英文字母(a-z,A-Z)、數(shù)字(0-9)或者下劃線( _ )組成。不允許使用破折號(hào)和連續(xù)的下劃線。 文件名的首字符必須是字母第一個(gè)字符只能使用字母,不能使用下劃線,避免與一些工具的沖突。 用下劃線分開(kāi)多個(gè)單詞由多個(gè)字組成的文件名,每個(gè)字要用下劃線分開(kāi)。在保證一致性的情況下,提高了在修改、驗(yàn)證和調(diào)試中的可讀性。舉例:R_ram_
2、addr。 IO信號(hào)與信號(hào)名的區(qū)分為了增加可讀性,便于閱讀代碼的人理解,輸入輸出口與內(nèi)部的寄存器、變量名要區(qū)分開(kāi),采用加前綴的方法,且統(tǒng)一用大寫(xiě)字母。如:I_sigan1 , / 表示是輸入信號(hào)I_signal2, / 表示是輸入信號(hào)O_signal3, / 表示是輸出信號(hào)reg 31:0 R_signal4; / 表示是本模塊內(nèi)部寄存器信號(hào)wire 7:0 W_signal5; / 表示是本模塊內(nèi)部連線信號(hào) Verilog文件名與相應(yīng)的文檔名一致說(shuō)明文檔中所參考的Verilog RTL的信號(hào)及模塊名必須與FPGA設(shè)計(jì)說(shuō)明中命名相一致,代碼和模塊名字的注釋也要保持一
3、致,易于文檔和代碼之間的交叉參考。 常量用大寫(xiě)字母表示常量必須大寫(xiě),包括參量名、文本宏名也要大寫(xiě),以易于變量識(shí)別。 net、variable、construct及instance以小寫(xiě)命名(前綴大寫(xiě))與建模電路密切相關(guān)的硬件結(jié)構(gòu),在命名時(shí)所有字母必須小寫(xiě),避免混淆及錯(cuò)誤的發(fā)生。 .net .variable .construct:如 function、task、named block、module .instance: 如 gate、module 命名要唯一construct、net、variable的命名要唯一,不能用大小寫(xiě)來(lái)區(qū)分命名,盡量用小寫(xiě)完整
4、單詞命名,禁用C語(yǔ)言編程中常用的大小寫(xiě)互用且縮寫(xiě)的單詞命名方式。原因:有些工具是不區(qū)分大小寫(xiě)的。 命名要望文生義標(biāo)識(shí)符的命名必須描述其目的、應(yīng)當(dāng)有意義,可以達(dá)到望文生義。標(biāo)識(shí)符的命名應(yīng)該描述“對(duì)象做什么”而不是“過(guò)程怎么做”,要根據(jù)每個(gè)標(biāo)識(shí)符做什么來(lái)命名,而不要以其如何實(shí)現(xiàn)來(lái)命名,這些標(biāo)識(shí)符包括:net、variable、parameter、instance名、construct 名( 如 function、module、task)。標(biāo)識(shí)符必須使用英文命名。如果標(biāo)識(shí)符需要多個(gè)意義獨(dú)立的字符串命名,字符串之間要用下劃線“_”隔開(kāi)。舉例: W_set_priority對(duì)net或var
5、iable W_SBUS_DATA_BITS對(duì)parameter R_ram_addr_p3任意的 pipeline stage 指示 0 低電平有效的信號(hào)的后綴為_(kāi)n 當(dāng)一個(gè)信號(hào)低電平有效時(shí),它必須用后綴_n命名,_n的含義為negative;只是低電平有效的信號(hào)才能用_n結(jié)尾。舉例: I_reset_n1 時(shí)鐘信號(hào)名含_clk或_clock時(shí)鐘信號(hào)的命名必須含_clk或_clock,并要求在信號(hào)名中再加入該信號(hào)速度的指示,非時(shí)鐘信號(hào)的命名不能含有clock或clk。舉例:I_system_clk_32M,I_ram_clk_8k或I_system_32M_clk
6、, I_ram_8K_clk2 測(cè)試信號(hào)的后綴為_(kāi)test舉例:R_parallel_clk_test3 寄存器按照功能進(jìn)行命名,注釋需寫(xiě)明寄存器地址采用功能命名時(shí)需要進(jìn)行寄存器說(shuō)明,指出其寄存器地址。例:R_protocol_reg; /register address is 0x513.2 注釋對(duì)HDL代碼的功能進(jìn)行注釋是必要的,注釋語(yǔ)句是對(duì)上下文信息的補(bǔ)充說(shuō)明。3.2.1 其它注釋為描述HDL代碼及其功能,注釋說(shuō)明是必要的,這有助于其它設(shè)計(jì)者理解和維護(hù)程序代碼。功能塊注釋對(duì)代碼的每個(gè)功能塊必須加以注釋說(shuō)明,說(shuō)明其目的及功能,便于代碼理解。3.2.
7、2.2 對(duì)不常用或不易理解的關(guān)鍵代碼行進(jìn)行注釋說(shuō)明對(duì)不常用或不容易理解的代碼及其使用限制要進(jìn)行注釋,說(shuō)明其功能、作用和其它特征信息,提高代碼的可讀性。 使用單行注釋代碼行使用單行注釋“/”,不使用多行“/*.*/”注釋。代碼行注釋跟在注釋代碼之后,處于同一行。代碼行注釋?xiě)?yīng)簡(jiǎn)明扼要,控制注釋長(zhǎng)度避免使單行內(nèi)容過(guò)長(zhǎng)。如注釋過(guò)長(zhǎng)且難以簡(jiǎn)略,可以分行注釋。注意放在下一行的注釋?xiě)?yīng)從前行注釋左側(cè)對(duì)齊,注意分行的注釋內(nèi)容要獨(dú)占一行,該行不能有其它的代碼。若代碼本身較長(zhǎng),難以在同一行加以注釋,可以在代碼的前一行放置注釋內(nèi)容。注意這行注釋要獨(dú)占一行。 端口信號(hào)定義要進(jìn)行注釋每個(gè)端口聲
8、明必須有注釋說(shuō)明,和端口聲明處在同一行。輸入端口注釋出來(lái)自哪個(gè)模塊,輸出端口注釋出輸出給到哪個(gè)模塊。頂層模塊中的端口注釋中,必須加上該信號(hào)在原理圖上對(duì)應(yīng)的管腳號(hào)和名稱,以便查找,對(duì)較復(fù)雜的邏輯,引腳信號(hào)太多,或總線寬度較大不便描述時(shí),應(yīng)加一句注釋:引腳參見(jiàn) XXX約束文件(*.ucf/*.lpf/*.qsf)。module top(/inputI_Clk_25m ,/J12EPLD_25M25MHz主時(shí)鐘I_Clk_50m ,/H12EPLD_50M 50MHz主時(shí)鐘I_CM_19m,/J5 CM_EPLD_19M8530出的19MHz時(shí)鐘,做主備時(shí)使用/outputO_EPLD_38m,/H
9、5O_EPLD_38M需要2分頻后送出O_RST2BOOTCPLDn ,/R7RST_INMPreset和MSreset的輸出結(jié)果);0 注釋?xiě)?yīng)簡(jiǎn)明扼要、重點(diǎn)突出注釋?xiě)?yīng)邏輯清晰、用語(yǔ)準(zhǔn)確,應(yīng)完整體現(xiàn)設(shè)計(jì)的目的、關(guān)鍵代碼塊的功能和重要信號(hào)的特征。1 END語(yǔ)句說(shuō)明對(duì)于有嵌套結(jié)構(gòu)復(fù)雜和帶有case語(yǔ)句中的END語(yǔ)句要加以注釋,說(shuō)明模塊結(jié)束,改進(jìn)代碼的可讀性,易于識(shí)別模塊邊界。舉例:always ()begin:<block name>end /<block name>或case () /<case function>endcase /
10、<case function>3.3 編程風(fēng)格3.3.1編寫(xiě)代碼格式要整齊代碼縮排的格式要一致(即相同類型的代碼語(yǔ)句要對(duì)準(zhǔn),一般縮進(jìn)為3到4個(gè)空格為好),增加代碼的可讀性。在編寫(xiě)一個(gè)代碼塊時(shí)(如begin、case、if語(yǔ)句等),首先要定好框架,并符合3種編碼風(fēng)格中的一種。第一種代碼書(shū)寫(xiě)格式:always (posedge I_clk or negedge I_reset_n) begin if (I_reset_n) begin R_a <=1'b0; R_b <=1'b0; R_c <=1'b0; end else begin R_a
11、<=I_a; R_b <=I_b; R_c <=I_a; end end第二種代碼書(shū)寫(xiě)格式:always (posedge I_clk or negedge I_reset_n) begin if (I_reset_n) begin R_a <=1'b0; R_b <=1'b0; R_c <=1'b0; end else begin R_a <=I_a; R_b <=I_b; R_c <=I_a; endend第三種代碼書(shū)寫(xiě)格式:always (posedge I_clk or negedge I_reset_n)
12、begin if (I_reset_n) begin R_a <=1'b0; R_b <=1'b0; R_c <=1'b0; end else begin R_a <=I_a; R_b <=I_b; R_c <=I_a; endend3.3.2 一行一條Verilog語(yǔ)句每行只寫(xiě)一條語(yǔ)句,增加程序的可讀性,便于用設(shè)計(jì)工具進(jìn)行代碼的語(yǔ)法分析。舉例:使用: W_upper_en = (W_p5type && W_xadr10) ; W_lower_en = (W_p5type && ! W_xadr10);
13、禁止: W_upper_en = (W_p5type && W_xadr10); W_lower_en = (W_p5type && ! W_xadr10);例外:允許注釋和Verilog語(yǔ)句在同一行上時(shí)。3.3.3 一行一個(gè)端口聲明端口定義應(yīng)該是獨(dú)立的,每行只寫(xiě)一個(gè)端口聲明語(yǔ)句,增加代碼的可讀性,便于代碼理解,便于用腳本文件分析代碼語(yǔ)法。舉例:使用:input a; /port a descriptioninput b; /port b description 禁止:input a, b;input a, b;3.3.4 在定義端口時(shí),按照端口類型或端口功能定
14、義端口順序?qū)⒍丝谶M(jìn)行分類進(jìn)行定義,便于理解和調(diào)用。注:可以按照信號(hào)的方向按輸入、輸出、雙向來(lái)定義。也可以按照端口功能來(lái)定義端口順序。建議按照端口功能來(lái)定義,同功能組的信號(hào)再按照輸入、輸出、雙向來(lái)定義。比如LocalBus總線信號(hào),一般定義順序?yàn)椋ㄍ扑]使用):input wire 15:0I_localbus_addr;input wire I_localbus_cs;input wire I_localbus_wr;input wire I_localbus_rd;inout wire 15:0IO_localbus_data;3.3.5 保持端口順序一致端口聲明順序應(yīng)與模塊聲明中端口的順序一致。3.3.6 聲明內(nèi)部net所有內(nèi)部net必須聲明,不能隱含。Verilog可隱含定義內(nèi)部net,但內(nèi)部net必須聲明,以避免混淆。3.3.7 在一個(gè)段內(nèi)聲明所有內(nèi)部net內(nèi)部net的聲明要跟在模塊的I/O端口聲明之后。例外:自動(dòng)生成的代碼。3.3.8 對(duì)于數(shù)字位寬的表述要完整對(duì)數(shù)字的表述一定要完整,寫(xiě)全所有非0的位,避免將16'hffff寫(xiě)成16'hf之類的低級(jí)錯(cuò)誤。3.3.9 總線位順序按高到低保持一致當(dāng)描述多bit總線時(shí),必須保持bit順序的一致性,增強(qiáng)可讀性,減少總線之間無(wú)意的順序交換。例如:R_reg7:0,R
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 河道保潔長(zhǎng)效管理辦法
- 河南綠化養(yǎng)護(hù)管理辦法
- 行業(yè)行為管理與運(yùn)營(yíng)優(yōu)化
- 來(lái)華工作經(jīng)費(fèi)管理辦法
- 水文自動(dòng)測(cè)報(bào)系統(tǒng)的運(yùn)行機(jī)制與質(zhì)量評(píng)價(jià)標(biāo)準(zhǔn)研究
- 杭州法院薪酬管理辦法
- 前臺(tái)考勤考核管理辦法
- 保健按摩養(yǎng)生管理辦法
- 水土保持生態(tài)產(chǎn)品價(jià)值轉(zhuǎn)化機(jī)制研究
- 企業(yè)安全生產(chǎn)費(fèi)用計(jì)提標(biāo)準(zhǔn)
- 大學(xué)招生宣傳工作規(guī)范制度?
- 輿情監(jiān)控處置管理制度
- 低空經(jīng)濟(jì)現(xiàn)代化產(chǎn)業(yè)體系構(gòu)建與戰(zhàn)略路徑
- 藥品生產(chǎn)偏差管理制度
- 貴州省2025年中考第三次模擬考試化學(xué)試卷(含答案)
- 2025-2030年中國(guó)西餐廳行業(yè)市場(chǎng)發(fā)展分析及前景預(yù)測(cè)與戰(zhàn)略規(guī)劃研究報(bào)告
- 2025年上海市中考物理試卷真題(含答案)
- 2025-2030飛機(jī)零部件產(chǎn)業(yè)規(guī)劃研究報(bào)告
- T/CSBME 072-2023車載醫(yī)用X射線計(jì)算機(jī)體層攝影設(shè)備臨床質(zhì)量控制要求
- 動(dòng)火切割安全協(xié)議書(shū)
- 免疫藥物的處方審核思路與用藥指導(dǎo)
評(píng)論
0/150
提交評(píng)論