大家好!又到了每日學(xué)習(xí)的時間了,今天我們聊一聊FPGA做開發(fā)的時候,有哪些設(shè)計規(guī)范,從文檔到工程建立等,聊一聊也許你會學(xué)到很多東西,少走很多彎路哦!
在團(tuán)隊項目開發(fā)中,為了使開發(fā)的高效性、一致性、正確性,團(tuán)隊?wèi)?yīng)當(dāng)要有一個規(guī)范的設(shè)計流程。按照規(guī)范來完成項目的設(shè)計開發(fā)工作,歸類清晰明了的工程文件夾級別;項目應(yīng)擁有良好風(fēng)格和完整的文檔,如設(shè)計思路與調(diào)試記錄及器件選型等;代碼書寫高效,即統(tǒng)一的書寫規(guī)范,文件頭包含的信息完整,無論自己還是團(tuán)隊他人閱讀便一目了然。
一、文檔命名:
清晰的文檔命名能夠讓我們思路非常的清晰,所以FPGA工程文件夾的目錄要求層次鮮明,歸類清晰。一個工程必須要有一個嚴(yán)整的框架結(jié)構(gòu),用來存放相關(guān)的文檔、設(shè)計,不僅方便自己查看,也提高了項目的團(tuán)隊工作效率。
下面我們來舉例說明:
一級文件夾為工程名
二級文件夾多個:
用以存放源文件
用以存放Testbench文件
用來存放設(shè)計思路相關(guān)類的文件
用來存放IP 核的文件
等等…
二、設(shè)計文檔化:
將自己對設(shè)計的思路和調(diào)試記錄在文檔中,有利于以后對模塊功能的添加和維護(hù),并且在項目聯(lián)調(diào)時方便項目組其他人員讀代碼。也方便不同廠家的FPGA之間移植,以及FPGA到ASIC的移植。如下圖就是設(shè)計文檔化的舉例說明,文檔介紹清晰,功能分析明確,有利于以后對模塊功能的添加和維護(hù)。

設(shè)計思路:按照項目的要求,自頂向下的分成若干模塊,分別編寫功能。頂層盡量只做行為描述,邏輯描述在底層編寫。模塊的編寫要有硬件電路思維方式,每一個模塊的設(shè)計都應(yīng)考慮是否存在該硬件電路,盡量采用同步設(shè)計。
三、編程風(fēng)格:
每個module應(yīng)存在于單獨(dú)的源文件中,源文件名應(yīng)與其所包含的模塊名相同。每個設(shè)計都應(yīng)該有一個完善的文件頭,包含公司名稱、設(shè)計者、設(shè)計時間、文件名、所屬項目、模塊名稱及功能、修改記錄及版本信息等內(nèi)容。代碼中的標(biāo)識符采用傳統(tǒng)C語言的命名方法,在單詞之間用下劃線分開,采用有意義,能反應(yīng)對象特征、作用和性質(zhì)的單詞命名標(biāo)識符,以此來增強(qiáng)程序的可讀性。為避免標(biāo)識符過于冗長,較長的單詞可以適當(dāng)?shù)目s寫。
四、代碼規(guī)范:
低電平有效的信號,后綴名要用“_n”,比如低電平有效的復(fù)位信號“rst_n”
模塊名和信號名統(tǒng)一小寫
變量名要小寫,如wire、reg、input、output等定義的
變量命名應(yīng)按照變量的功能用英文簡潔表示出來“xxx_xxx_xxx”,避免過長
采用大寫字母定義常量參數(shù),參數(shù)名小于20個字母,如parameter TIME=20
時鐘信號應(yīng)前綴“clk”,復(fù)位信號應(yīng)前綴“rst”
對于頂層模塊的輸出信號盡量被寄存
三態(tài)邏輯避免在子模塊使用,可以在頂層模塊使用
到其它模塊的接口信號按:輸入、(雙向)、輸出的順序定義端口
一個模塊至少要有一個輸入、輸出,避免書寫空模塊
時鐘事件的表達(dá)式用“posedge”或“negedge”的形式
If語句嵌套不能太多
建議不要使用include語句
建議每個模塊添加timescale
代碼中給出必要的注釋
每個文件有個一頭文件
每個文件只包含一個模塊
模塊名和文件名保持一致
異步復(fù)位,用if(xxx==1’b1) 或 if(xxx==1’b0)
同步時序邏輯的always block中有且只有一個時鐘信號,并且在同一個沿動作
采用同步設(shè)計,避免使用異步邏輯
一般不要將時鐘信號作為數(shù)據(jù)信號的輸入
不要在時鐘路徑上添加任何buffer
在頂層模塊中,時鐘信號必須可見
不要采用向量定義的方式定義一組時鐘信號
不要在模塊內(nèi)部生成時鐘信號,使用pll產(chǎn)生
盡量不使用任務(wù)
不使用事件變量
不使用系統(tǒng)函數(shù)
不使用disable語句
盡量不使用forever、repeat、while等循環(huán)語句
不使用不可綜合的運(yùn)算符
在一個always語句中有且只能有一個事件列表
移位變量必須是一個常數(shù)
時序邏輯語塊中統(tǒng)一使用非阻塞型賦值
組合邏輯語塊中使用阻塞型賦值
-
FPGA
+關(guān)注
關(guān)注
1664文章
22511瀏覽量
639613
發(fā)布評論請先 登錄
簡談FPGA的上電復(fù)位
簡談FPGA研發(fā)設(shè)計相關(guān)規(guī)范(很實(shí)用)
簡談FPGA研發(fā)設(shè)計相關(guān)規(guī)范(很實(shí)用)
國內(nèi)知名企業(yè)招聘FPGA研發(fā)工程師
FPGA至簡設(shè)計法為什么這么簡單
FPGA 研發(fā)設(shè)計相關(guān) 規(guī)范(企業(yè)中很實(shí)用)
明德?lián)P獨(dú)創(chuàng)“至簡設(shè)計法”介紹
簡談FPGA研發(fā)設(shè)計相關(guān)規(guī)范(企業(yè)中初入職場很實(shí)用)
明德?lián)P至簡設(shè)計原理資料包(官方原版)
簡談FPGA研發(fā)設(shè)計相關(guān)規(guī)范(企業(yè)中初入職場很實(shí)用)
簡談基于FPGA的千兆以太網(wǎng)設(shè)計
簡談FPGA的設(shè)計規(guī)范
FPGA和USB3.0通信-FX3硬件設(shè)計簡談
簡談FPGA研發(fā)設(shè)計相關(guān)規(guī)范(企業(yè)中很實(shí)用)
評論