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ù)性,這里只介紹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ì)大家有所幫助。
作者:baidianfeng365本文地址:http://lkxg.cn/bdf/42008.html發(fā)布于 2024-05-09
文章轉(zhuǎn)載或復(fù)制請(qǐng)以超鏈接形式并注明出處白癜風(fēng)知識(shí)網(wǎng)