rst驅(qū)動(dòng)(pe加載rst驅(qū)動(dòng))

摘要: 8月科學(xué)教育網(wǎng)小李來為大家講解下。rst驅(qū)動(dòng)(pe加載rst驅(qū)動(dòng))這個(gè)很多人還不知道,現(xiàn)在讓我們一起來看看吧!#如何提高代碼的可維護(hù)性##嵌入式##fpga#如何提高代碼的可維護(hù)性...

8月科學(xué)教育網(wǎng)小李來為大家講解下。rst驅(qū)動(dòng)(pe加載rst驅(qū)動(dòng))這個(gè)很多人還不知道,現(xiàn)在讓我們一起來看看吧!

#如何提高代碼的可維護(hù)性##嵌入式##fpga#

如何提高代碼的可維護(hù)性,這里只介紹FPGA的代碼維護(hù),代碼好不好維護(hù)取決于是否遵循一定的編碼規(guī)則,或者編碼規(guī)范,或者公司內(nèi)部統(tǒng)一的編碼要求等等。

FPGA開發(fā)過程中,提高代碼的可維護(hù)性需注意以下幾點(diǎn)

1、工程設(shè)計(jì)層次化,結(jié)構(gòu)化

要編寫可維護(hù)、可移植的工程首先要對(duì)FPGA項(xiàng)目需求進(jìn)行層次化、結(jié)構(gòu)化設(shè)計(jì)。遵循FPGA的設(shè)計(jì)流程,自頂向下,把一個(gè)任務(wù)按照功能或者類別分成若干個(gè)可獨(dú)立操作的模塊,每個(gè)模塊又可以細(xì)分下去,通過逐次分解與模塊的例化,整個(gè)工程的層次結(jié)構(gòu)就會(huì)非常清晰。

2、模塊的設(shè)計(jì)

模塊的設(shè)計(jì)要求,盡量做到功能獨(dú)立,接口簡(jiǎn)單,編寫功能介紹,及代碼注釋,在系統(tǒng)維護(hù)過程中,代碼重用性越高,維護(hù)和移植的時(shí)候修改的代碼量就越小,甚至不修改。

3、parameter參數(shù)傳遞

Verilog中可以用parameter定義一個(gè)標(biāo)識(shí)符代表一個(gè)常量,有助提高程序的可讀性,也方便對(duì)程序的可擴(kuò)展性,根據(jù)設(shè)置的不同的參數(shù),實(shí)現(xiàn)不同的功能。

4、宏定義和條件編譯

宏定義對(duì)系統(tǒng)的可維護(hù),可移植上的作用和parameter類似,都是增加了程序的可讀性。條件編譯方便于一個(gè)模塊實(shí)現(xiàn)多個(gè)功能,根據(jù)設(shè)置選擇不同的功能進(jìn)行編譯,來實(shí)現(xiàn)不同的功能,節(jié)省開發(fā)時(shí)間,相應(yīng)的語法使用就不這說明了。

5、遵循FPGA的編碼規(guī)范

增強(qiáng)代碼的可讀性,應(yīng)該遵循FPGA編碼規(guī)范,一般以公司的編碼要求為準(zhǔn)。

介紹幾點(diǎn)常見的編碼風(fēng)格要求:

1)、編寫設(shè)計(jì)文檔;

2)、對(duì)所有的信號(hào)名、變量名和端口名都用小寫,對(duì)常量名和用戶定義類型用大寫;

3)、使用有意義的信號(hào)名、端口名、函數(shù)名和參數(shù)名;

4)、信號(hào)名長(zhǎng)度不要太長(zhǎng);

5)、對(duì)于時(shí)鐘信號(hào)使用clk作為信號(hào)名,如果設(shè)計(jì)中存在多個(gè)時(shí)鐘,使用clk作為時(shí)鐘信號(hào)的前綴;

6)、對(duì)于來自同一驅(qū)動(dòng)源的信號(hào)在不同的子模塊中采用相同的名字,這要求在芯片總體設(shè)計(jì)時(shí)就定義好頂層子模塊間連接線的名字,端口和連接線端口的信號(hào)盡可能采用相同的名字;

7)、對(duì)于低電平有效的信號(hào),應(yīng)該以一個(gè)下劃線跟一個(gè)小寫字母n表示;

8)、對(duì)于復(fù)位信號(hào)使用rst作為信號(hào)名,如果復(fù)位信號(hào)是低電平有效,建議使用rst_n;

9)、當(dāng)描述多比特總線時(shí),使用一致的定義順序,對(duì)于verilog建議采用bus_signal[x:0]的表示;

10)、盡量遵循業(yè)界已經(jīng)習(xí)慣的一些約定;

11)、源文件頭一般包含的內(nèi)容有:文件名,作者,模塊的實(shí)現(xiàn)功能概述和關(guān)鍵特征描述,文件創(chuàng)建和修改的記錄,包括修改時(shí)間、修改的內(nèi)容等;

12)、使用適當(dāng)?shù)腶lways進(jìn)程、函數(shù)、端口定義、信號(hào)含義、變量含義或信號(hào)組、變量組的意義等;

13)、每一行語句獨(dú)立成行;

14)、建議采用縮進(jìn)提高續(xù)行和嵌套語句的可讀性,縮進(jìn)一般采用兩個(gè)空格;

15)、在RTL源碼的設(shè)計(jì)中命名都不能取Verilog和VHDl語言的關(guān)鍵字;

16)、在進(jìn)行模塊的端口聲明時(shí),每行只聲明一個(gè)端口;

17)、在例化模塊時(shí),使用名字相關(guān)的顯式映射而不要采用位置相關(guān)的映射;

18)、對(duì)一些重要的always語句塊定義一個(gè)有意義的標(biāo)號(hào),注意括號(hào)名不要與信號(hào)名、變量名重復(fù);

19)、代碼編寫時(shí)的數(shù)據(jù)類型只是用IEEE定義的標(biāo)準(zhǔn)類型;

20)、在設(shè)計(jì)中不要直接使用數(shù)字;

21)、避免冗長(zhǎng)的邏輯和子表達(dá)式;

22)、避免采用內(nèi)部三態(tài)電路,建議多路選擇電路代替內(nèi)部三態(tài)電路;

23)、注釋應(yīng)該放在它所注釋的代碼附近,要求簡(jiǎn)明扼要,只要足夠說明設(shè)計(jì)意圖即可,避免過于復(fù)雜。

最后,給大家分享一下華為設(shè)計(jì)規(guī)范,掃碼下載即可(限時(shí)7天),多點(diǎn)點(diǎn)關(guān)注。

#Verilog#

本文rst驅(qū)動(dòng)(pe加載rst驅(qū)動(dòng))到此分享完畢,希望對(duì)大家有所幫助。