0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

簡(jiǎn)談FPGA的設(shè)計(jì)規(guī)范

FPGA學(xué)習(xí)交流 ? 2019-11-14 13:54 ? 次閱讀

大家好,又到了每日學(xué)習(xí)的時(shí)間了,有一段時(shí)間沒(méi)有正經(jīng)更新了,之前有粗略地聊過(guò)FPGA的設(shè)計(jì)規(guī)范,那今天我們就詳細(xì)的聊一聊FPGA做開(kāi)發(fā)的時(shí)候,有哪些設(shè)計(jì)規(guī)范,從文檔到工程建立等,聊一聊也許你會(huì)學(xué)到很多東西,少走很多彎路哦!
在團(tuán)隊(duì)項(xiàng)目開(kāi)發(fā)中,為了使開(kāi)發(fā)的高效性、一致性、正確性,團(tuán)隊(duì)?wèi)?yīng)當(dāng)要有一個(gè)規(guī)范的設(shè)計(jì)流程。按照規(guī)范來(lái)完成項(xiàng)目的設(shè)計(jì)開(kāi)發(fā)工作,歸類(lèi)清晰明了的工程文件夾級(jí)別;項(xiàng)目應(yīng)擁有良好風(fēng)格和完整的文檔,如設(shè)計(jì)思路與調(diào)試記錄及器件選型等;代碼書(shū)寫(xiě)高效,即統(tǒng)一的書(shū)寫(xiě)規(guī)范,文件頭包含的信息完整,無(wú)論自己還是團(tuán)隊(duì)他人閱讀便一目了然。


一、文檔命名:

清晰的文檔命名能夠讓我們思路非常的清晰,所以FPGA工程文件夾的目錄要求層次鮮明,歸類(lèi)清晰。一個(gè)工程必須要有一個(gè)嚴(yán)整的框架結(jié)構(gòu),用來(lái)存放相關(guān)的文檔、設(shè)計(jì),不僅方便自己查看,也提高了項(xiàng)目的團(tuán)隊(duì)工作效率。
下面我們來(lái)舉例說(shuō)明:
一級(jí)文件夾為工程名
二級(jí)文件夾多個(gè):
用以存放源文件
用以存放Testbench文件
用來(lái)存放設(shè)計(jì)思路相關(guān)類(lèi)的文件
用來(lái)存放IP 核的文件
等等…


二、設(shè)計(jì)文檔化:
將自己對(duì)設(shè)計(jì)的思路和調(diào)試記錄在文檔中,有利于以后對(duì)模塊功能的添加和維護(hù),并且在項(xiàng)目聯(lián)調(diào)時(shí)方便項(xiàng)目組其他人員讀代碼。也方便不同廠家的FPGA之間移植,以及FPGA到ASIC的移植。如下圖就是設(shè)計(jì)文檔化的舉例說(shuō)明,文檔介紹清晰,功能分析明確,有利于以后對(duì)模塊功能的添加和維護(hù)。

image.png

設(shè)計(jì)思路:按照項(xiàng)目的要求,自頂向下的分成若干模塊,分別編寫(xiě)功能。頂層盡量只做行為描述,邏輯描述在底層編寫(xiě)。模塊的編寫(xiě)要有硬件電路思維方式,每一個(gè)模塊的設(shè)計(jì)都應(yīng)考慮是否存在該硬件電路,盡量采用同步設(shè)計(jì)。


三、編碼風(fēng)格:

每個(gè)module應(yīng)存在于單獨(dú)的源文件中,源文件名應(yīng)與其所包含的模塊名相同。每個(gè)設(shè)計(jì)都應(yīng)該有一個(gè)完善的文件頭,包含公司名稱(chēng)、設(shè)計(jì)者、設(shè)計(jì)時(shí)間、文件名、所屬項(xiàng)目、模塊名稱(chēng)及功能、修改記錄及版本信息等內(nèi)容。代碼中的標(biāo)識(shí)符采用傳統(tǒng)C語(yǔ)言的命名方法,在單詞之間用下劃線(xiàn)分開(kāi),采用有意義,能反應(yīng)對(duì)象特征、作用和性質(zhì)的單詞命名標(biāo)識(shí)符,以此來(lái)增強(qiáng)程序的可讀性。為避免標(biāo)識(shí)符過(guò)于冗長(zhǎng),較長(zhǎng)的單詞可以適當(dāng)?shù)目s寫(xiě)。


四、代碼規(guī)范:
低電平有效的信號(hào),后綴名要用“_n”,比如低電平有效的復(fù)位信號(hào)“rst_n”
模塊名和信號(hào)名統(tǒng)一小寫(xiě)
變量名要小寫(xiě),如wire、reg、input、output等定義的
變量命名應(yīng)按照變量的功能用英文簡(jiǎn)潔表示出來(lái)“xxx_xxx_xxx”,避免過(guò)長(zhǎng)
采用大寫(xiě)字母定義常量參數(shù),參數(shù)名小于20個(gè)字母,如parameter TIME=20
時(shí)鐘信號(hào)應(yīng)前綴“clk”,復(fù)位信號(hào)應(yīng)前綴“rst”
對(duì)于頂層模塊的輸出信號(hào)盡量被寄存
三態(tài)邏輯避免在子模塊使用,可以在頂層模塊使用
到其它模塊的接口信號(hào)按:輸入、(雙向)、輸出的順序定義端口
一個(gè)模塊至少要有一個(gè)輸入、輸出,避免書(shū)寫(xiě)空模塊
時(shí)鐘事件的表達(dá)式用“posedge”或“negedge”的形式
If語(yǔ)句嵌套不能太多
建議不要使用include語(yǔ)句
建議每個(gè)模塊添加timescale
代碼中給出必要的注釋
每個(gè)文件有個(gè)一頭文件
每個(gè)文件只包含一個(gè)模塊
模塊名和文件名保持一致
異步復(fù)位,用if(xxx==1’b1) 或 if(xxx==1’b0)
同步時(shí)序邏輯的always block中有且只有一個(gè)時(shí)鐘信號(hào),并且在同一個(gè)沿動(dòng)作
采用同步設(shè)計(jì),避免使用異步邏輯
一般不要將時(shí)鐘信號(hào)作為數(shù)據(jù)信號(hào)的輸入
不要在時(shí)鐘路徑上添加任何buffer
在頂層模塊中,時(shí)鐘信號(hào)必須可見(jiàn)
不要采用向量定義的方式定義一組時(shí)鐘信號(hào)
不要在模塊內(nèi)部生成時(shí)鐘信號(hào),使用pll產(chǎn)生
盡量不使用任務(wù)
不使用事件變量
不使用系統(tǒng)函數(shù)
不使用disable語(yǔ)句
盡量不使用forever、repeat、while等循環(huán)語(yǔ)句
不使用不可綜合的運(yùn)算符
在一個(gè)always語(yǔ)句中有且只能有一個(gè)事件列表
移位變量必須是一個(gè)常數(shù)
時(shí)序邏輯語(yǔ)塊中統(tǒng)一使用非阻塞型賦值
組合邏輯語(yǔ)塊中使用阻塞型賦值


五、注釋規(guī)則

  1. 每個(gè)文件有一個(gè)文件頭,文件頭中注明文件名、功能描述、引用模塊、設(shè)計(jì)者、設(shè)計(jì)時(shí)間、版權(quán)信息以及修改信息等;

  2. 對(duì)信號(hào)、參量、引腳、模塊、函數(shù)及進(jìn)程等加以說(shuō)明,便于閱讀與維護(hù),如信號(hào)的作用、頻率、占空比、高低電平寬度等。用“//”做小于1行的注釋?zhuān)谩?* */”做多于1行的注釋。更新的內(nèi)容要做注釋?zhuān)涗浶薷脑?,修改日期和修改人?/p>


六、模塊規(guī)則

  1. module例化名用u_xx_x標(biāo)示;

  2. 建議給每個(gè)模塊要加timescale;

  3. 不要書(shū)寫(xiě)空的模塊,即:一個(gè)模塊至少要有一個(gè)輸入和一個(gè)輸出;

  4. 為了保持代碼的清晰、美觀和層次感,一條語(yǔ)句應(yīng)占用一行,每行限制在80個(gè)字符以?xún)?nèi),如果較長(zhǎng)(超出80個(gè)字符)則換行;

  5. 采用基于名字(name_based)的調(diào)用而不是基于順序的(order_based)的調(diào)用;

  6. 模塊的接口信號(hào)按輸入、雙向、輸出順序定義;

  7. 使用降序定義向量有效位順序,最低位為0;

  8. 管腳和信號(hào)說(shuō)明部分:一個(gè)管腳和一組總線(xiàn)占用一行,說(shuō)明要清晰;

  9. 不要采用向量的方式定義一組時(shí)鐘信號(hào);

  10. 邏輯內(nèi)部不對(duì)input進(jìn)行驅(qū)動(dòng),在module內(nèi)不存在沒(méi)有驅(qū)動(dòng)源的信號(hào),更不能在模塊端口存在沒(méi)有驅(qū)動(dòng)的輸出信號(hào),避免在elabarate和compile時(shí)產(chǎn)生warning;

  11. 在頂層模塊中,除了內(nèi)部的互連和module的例化外,避免在做其他邏輯;

  12. 出于層次設(shè)計(jì)和同步設(shè)計(jì)的考慮,子模塊輸出信號(hào)建議用寄存器;

  13. 內(nèi)部模塊端口避免inout,最好在最頂層模塊處理雙向總線(xiàn);

  14. 子模塊中禁止使用三態(tài)邏輯,可以在頂層模塊使用;

  15. 如果能確保該信號(hào)不會(huì)被其它子模塊使用,而是直接通過(guò)頂層模塊輸出I/O口,可以在子模塊中使用三態(tài);

  16. 禁止出現(xiàn)未連接的端口;

  17. 為邏輯升級(jí)保留的無(wú)用端口和信號(hào)要注釋?zhuān)粚?duì)于層次化設(shè)計(jì)的邏輯,在升級(jí)中采用增量編譯;建議采用層次化設(shè)計(jì),模塊之間相對(duì)獨(dú)立。

七、線(xiàn)網(wǎng)和寄存器規(guī)則

  1. 鎖存器和觸發(fā)器不允許在不同的always塊中賦值,造成多重驅(qū)動(dòng);

  2. 出于功能仿真考慮,非阻塞賦值應(yīng)該增加單位延時(shí),對(duì)于寄存器類(lèi)型的變量賦值時(shí),尤其要注意這一點(diǎn);阻塞賦值不允許使用單位延時(shí);

  3. always語(yǔ)句實(shí)現(xiàn)時(shí)序邏輯采用非阻塞賦值;always語(yǔ)句實(shí)現(xiàn)的組合邏輯和assign語(yǔ)句塊中使用阻塞賦值;

  4. 同一信號(hào)賦值不能同時(shí)使用阻塞和非阻塞兩種方式;

  5. 不允許出現(xiàn)定義了parameter、wire、reg卻沒(méi)有使用的情況;

  6. 不建議使用integer類(lèi)型寄存器;

  7. 寄存器類(lèi)型的信號(hào)要初始化;

  8. 除移位寄存器外,每個(gè)always語(yǔ)句只對(duì)一個(gè)變量賦值,盡量避免在一個(gè)always語(yǔ)句出現(xiàn)多個(gè)變量進(jìn)行運(yùn)算或賦值。


八、表達(dá)式規(guī)則

  1. 在表達(dá)式內(nèi)使用括號(hào)表示運(yùn)算的優(yōu)先級(jí),一行中不能出現(xiàn)多個(gè)表達(dá)式;

  2. 不要給信號(hào)賦“x”態(tài),以免x值傳遞;

  3. 設(shè)計(jì)中使用到的0,1,z等常數(shù)采用基數(shù)表示法書(shū)寫(xiě)(即表示為1'b0,1'b1,1'bz或十六進(jìn)制);

  4. 端口申明、比較、賦值等操作時(shí),數(shù)據(jù)位寬要匹配。


九、條件語(yǔ)句規(guī)則

  1. if 都有else和它對(duì)應(yīng),變量在if-else或case語(yǔ)句中所有變量在所有分支中都賦值;

  2. 如果用到case語(yǔ)句,記得default項(xiàng);

  3. 禁止使用casex,case語(yǔ)句item必須使用常數(shù);

  4. 不允許使用常數(shù)作為if語(yǔ)句的條件表達(dá)式;

  5. 條件表達(dá)式必須是1bit value;

  6. 如異步復(fù)位:

    高電平有效使用“if(asynch_reset==1'b1)”,

    低電平“if(asynch_reset==1'b0)”,

    不要寫(xiě)成

    “if(!asynch_reset)”或者“if(asynch_reset==0)”;

  7. 推薦嵌套使用5級(jí)以上if…else if…結(jié)構(gòu)。


十、可綜合部分規(guī)則

  1. 不要使用include語(yǔ)句;

  2. 不要使用disable、initial等綜合工具不支持的電路,而應(yīng)采用復(fù)位方式進(jìn)行初時(shí)化,但在testbench電路中可以使用;

  3. 不使用specify模塊,不使用===、!==等不可綜合的操作符;

  4. 除仿真外,不使用fork-join語(yǔ)句;

  5. 除仿真外,不使用while語(yǔ)句;

  6. 除仿真外,不使用repeat語(yǔ)句;

  7. 除仿真外,不使用forever語(yǔ)句;

  8. 除仿真外,不使用系統(tǒng)任務(wù)($);

  9. 除仿真外,不使用deassign語(yǔ)句;

  10. 除仿真外,不使用force,release語(yǔ)句;

  11. 除仿真外,不使用named events語(yǔ)句;不在連續(xù)賦值語(yǔ)句中引入驅(qū)動(dòng)強(qiáng)度和延時(shí);

  12. 禁止使用trireg型線(xiàn)網(wǎng);

  13. 制止使用tri1、tri0、triand和trior型的連接;

  14. 不要位驅(qū)動(dòng)supply0和supply1型的線(xiàn)網(wǎng)賦值;

  15. 設(shè)計(jì)中不使用macro_module;

  16. 不要在RTL代碼中實(shí)例門(mén)級(jí)單元尤,其下列單元:(CMOS/RCOMS/NMOS/PMOS/RNMOS/RPMOS/trans/rtrans/tranif0/tranif1/rtranif0/tranif1/pull_gate)。


十一、可重用部分規(guī)則

  1. 考慮未使用的輸入信號(hào)power_down,避免傳入不穩(wěn)定態(tài);

  2. 接口信號(hào)盡量少,接口時(shí)序盡量簡(jiǎn)單;

  3. 將狀態(tài)機(jī)(FSM)電路與其它電路分開(kāi),便于綜合和后端約束;

  4. 將異步電路和同步電路區(qū)分開(kāi),便于綜合和后端約束,將相關(guān)的邏輯放在一個(gè)模塊內(nèi);

  5. 合理劃分設(shè)計(jì)的功能模塊,保證模塊功能的獨(dú)立性;

  6. 合理劃分模塊的大小,避免模塊過(guò)大;

  7. 在設(shè)計(jì)的頂層(top)模塊,將I/O口、Boundary scan電路、以及設(shè)計(jì)邏輯(corelogic)區(qū)分開(kāi)。


十二、同步設(shè)計(jì)規(guī)則

  1. 同一個(gè)module中,要在時(shí)鐘信號(hào)的同一個(gè)沿動(dòng)作;

  2. 如果必須使用時(shí)鐘上升沿和時(shí)鐘下降沿,則要分兩個(gè)module設(shè)計(jì);

  3. 在頂層模塊中,時(shí)鐘信號(hào)必須可見(jiàn),不在模塊內(nèi)部生成時(shí)鐘信號(hào),而要使用DCM/PLL產(chǎn)生的時(shí)鐘信號(hào);

  4. 避免使用門(mén)控時(shí)鐘和門(mén)控復(fù)位;

  5. 同步復(fù)位電路,建議在同一時(shí)鐘域使用單一的全局同步復(fù)位電路;

    異步復(fù)位電路,建議使用單一的全局異步復(fù)位電路;

  6. 不在時(shí)鐘路徑上添加任何buffer;

  7. 不在復(fù)位路徑上添加任何buffer;

  8. 避免使用latch;

  9. 寄存器的異步復(fù)位和異步置位信號(hào)不能同時(shí)有效;

  10. 避免使用組合反饋電路;

  11. always有且僅有一個(gè)的敏感事件列表,敏感事件列表要完整,否則可能會(huì)造成前后仿真的結(jié)果不一致;

  12. 異步復(fù)位情況下需要異步復(fù)位信號(hào)和時(shí)鐘沿做敏感量,同步復(fù)位情況下只需要時(shí)鐘沿做敏感量;

  13. 時(shí)鐘事件的表達(dá)式要用:

    “negedge

    “posedge”的形式;

  14. 復(fù)雜電路將組合邏輯和時(shí)序邏輯電路分成獨(dú)立的always描述。


十三、循環(huán)語(yǔ)句規(guī)則

  1. 在設(shè)計(jì)中不推薦使用循環(huán)語(yǔ)句;

  2. 在非常有必要使用的循環(huán)語(yǔ)句時(shí),可以使用for語(yǔ)句。


十四、約束規(guī)則

  1. 對(duì)所有時(shí)鐘頻率和占空比都進(jìn)行約束;

  2. 對(duì)全局時(shí)鐘skew進(jìn)行約束;

  3. 對(duì)于時(shí)序要求的路徑需要針對(duì)特殊要求進(jìn)行約束,如鎖相環(huán)鑒相信號(hào);

  4. 要根據(jù)輸出管腳驅(qū)動(dòng)要求進(jìn)行約束,包括驅(qū)動(dòng)電流和信號(hào)邊沿特性;

  5. 要根據(jù)輸入和輸出信號(hào)的特性進(jìn)行管腳上下拉約束;

  6. 針對(duì)關(guān)鍵I/O是否約束了輸入信號(hào)和輸入時(shí)鐘的相位關(guān)系,控制輸入信號(hào)在CLK信號(hào)之后或之前多少ns到達(dá)輸入pad;

  7. 綜合設(shè)置時(shí),fanout建議設(shè)置為3030;

  8. 要使用輸入輸出模塊中的寄存器,如Xinlinx公司的IOB,map properties選項(xiàng)pack I/O register/latches into IOBsactor需要設(shè)置成為“for input and output”,這樣可以控制管腳到內(nèi)部觸發(fā)器的延時(shí)時(shí)間;

  9. 布局布線(xiàn)報(bào)告中IOB、LUTs、RAM等資源利用率應(yīng)小于百分之八十;

  10. 對(duì)于邏輯芯片對(duì)外輸入接口,進(jìn)行tsu/th約束;對(duì)于邏輯芯片對(duì)外輸出接口,進(jìn)行約束。


十五、PLL/DCM

  1. 如果使用FPGA內(nèi)部DCM和PLL時(shí),應(yīng)該保證輸入時(shí)鐘的抖動(dòng)小于300ps,防止DCM/PLL失鎖;如果輸入時(shí)鐘瞬斷后必須復(fù)位PLL/DCM。

  2. 對(duì)于所有廠家的FPGA,其片內(nèi)鎖相環(huán)只能使用同頻率的時(shí)鐘信號(hào)進(jìn)行鎖相,如果特殊情況下需要使用不同頻率的信號(hào)進(jìn)行鎖相,需要得到廠家的認(rèn)可,以避免出時(shí)鐘。


十六、代碼編輯

由于不同編輯器處理不同,對(duì)齊代碼使用空格,而不是tab鍵。


***可綜合和不可綜合詳解***

(1)所有綜合工具都支持的結(jié)構(gòu):always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not, bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter。
(2)所有綜合工具都不支持的結(jié)構(gòu):time,defparam,$finish,fork,join,initial,delays,UDP,wait。
(3)有些工具支持有些工具不支持的結(jié)構(gòu):casex,casez,wand,triand,wor,trior,real,disable,forever,arrays,memories,repeat,task,while。


建立可綜合模型的原則
要保證Verilog HDL賦值語(yǔ)句的可綜合性,在建模時(shí)應(yīng)注意以下要點(diǎn):
(1)不使用initial。
(2)不使用#10。
(3)不使用循環(huán)次數(shù)不確定的循環(huán)語(yǔ)句,如forever、while等。
(4)不使用用戶(hù)自定義原語(yǔ)(UDP元件)。
(5)盡量使用同步方式設(shè)計(jì)電路。
(6)除非是關(guān)鍵路徑的設(shè)計(jì),一般不采用調(diào)用門(mén)級(jí)元件來(lái)描述設(shè)計(jì)的方法,建議采用行為語(yǔ)句來(lái)完成設(shè)計(jì)。
(7)用always過(guò)程塊描述組合邏輯,應(yīng)在敏感信號(hào)列表中列出所有的輸入信號(hào)。
(8)所有的內(nèi)部寄存器都應(yīng)該能夠被復(fù)位,在使用FPGA實(shí)現(xiàn)設(shè)計(jì)時(shí),應(yīng)盡量使用器件的全局復(fù)位端作為系統(tǒng)總的復(fù)位。
(9)對(duì)時(shí)序邏輯描述和建模,應(yīng)盡量使用非阻塞賦值方式。對(duì)組合邏輯描述和建模,既可以用阻塞賦值,也可以用非阻塞賦值。但在同一個(gè)過(guò)程塊中,最好不要同時(shí)用阻塞賦值和非阻塞賦值。
(10)不能在一個(gè)以上的always過(guò)程塊中對(duì)同一個(gè)變量賦值。而對(duì)同一個(gè)賦值對(duì)象不能既使用阻塞式賦值,又使用非阻塞式賦值。
(11)如果不打算把變量推導(dǎo)成鎖存器,那么必須在if語(yǔ)句或case語(yǔ)句的所有條件分支中都對(duì)變量明確地賦值。
(12)避免混合使用上升沿和下降沿觸發(fā)的觸發(fā)器。
(13)同一個(gè)變量的賦值不能受多個(gè)時(shí)鐘控制,也不能受兩種不同的時(shí)鐘條件(或者不同的時(shí)鐘沿)控制。
(14)避免在case語(yǔ)句的分支項(xiàng)中使用x值或z值。


1、initial
只能在test bench中使用,不能綜合。(我用ISE9.1綜合時(shí),有的簡(jiǎn)單的initial也可以綜合,不知道為什么)
2、events
event在同步test bench時(shí)更有用,不能綜合。
3、real
不支持real數(shù)據(jù)類(lèi)型的綜合。
4、time
不支持time數(shù)據(jù)類(lèi)型的綜合。
5、force 和release
不支持force和release的綜合。
6、assign 和deassign
不支持對(duì)reg 數(shù)據(jù)類(lèi)型的assign或deassign進(jìn)行綜合,支持對(duì)wire數(shù)據(jù)類(lèi)型的assign或deassign進(jìn)行綜合。
7、fork join
不可綜合,可以使用非塊語(yǔ)句達(dá)到同樣的效果。
8、primitives
支持門(mén)級(jí)原語(yǔ)的綜合,不支持非門(mén)級(jí)原語(yǔ)的綜合。
9、table
不支持UDP 和table的綜合。
10、敏感列表里同時(shí)帶有posedge和negedge
如:always @(posedge clk or negedge clk) begin...end
這個(gè)always塊不可綜合。
11、同一個(gè)reg變量被多個(gè)always塊驅(qū)動(dòng)
12、延時(shí)
以#開(kāi)頭的延時(shí)不可綜合成硬件電路延時(shí),綜合工具會(huì)忽略所有延時(shí)代碼,但不會(huì)報(bào)錯(cuò)。
如:a=#10 b;
這里的#10是用于仿真時(shí)的延時(shí),在綜合的時(shí)候綜合工具會(huì)忽略它。也就是說(shuō),在綜合的時(shí)候上式等同于a=b;
13、與X、Z的比較
可能會(huì)有人喜歡在條件表達(dá)式中把數(shù)據(jù)和X(或Z)進(jìn)行比較,殊不知這是不可綜合的,綜合工具同樣會(huì)忽略。所以要確保信號(hào)只有兩個(gè)狀態(tài):0或1。
如:
1 module synthesis_compare_xz (a,b);
2 output a;
3 input b;
4 reg a;
5
6 always @ (b)
7 begin
8 if ((b == 1'bz) || (b == 1'bx)) begin
9 a = 1;
10 end else begin
11 a = 0;
12 end
13 end
14
15 endmodule


以上是個(gè)人整理出來(lái)的一些設(shè)計(jì)規(guī)范,有些部分有重復(fù),但無(wú)傷大雅,適用于FPGA Verilog HDL設(shè)計(jì),VHDL的話(huà)設(shè)計(jì)思想是一樣,大同小異,大家可以舉一反三,今天就聊到這里,感謝并祝好。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    110kv變電站設(shè)計(jì)規(guī)范

    110kV變電站設(shè)計(jì)規(guī)范涉及多個(gè)方面,包括選址、電氣設(shè)計(jì)、設(shè)備選擇、安全保護(hù)等。以下是根據(jù)相關(guān)規(guī)范和標(biāo)準(zhǔn)整理的一些主要設(shè)計(jì)規(guī)范: 一、總則 目的與范圍 :規(guī)范適用于電壓為35~110k
    的頭像 發(fā)表于 09-26 09:32 ?2037次閱讀

    pcb設(shè)計(jì)中有哪些常用設(shè)計(jì)規(guī)范

    在PCB(Printed Circuit Board,印刷電路板)設(shè)計(jì)中,常用的設(shè)計(jì)規(guī)范涉及多個(gè)方面,以確保電路板的性能、可靠性、可制造性和可維護(hù)性。以下是一些主要的設(shè)計(jì)規(guī)范: 一、電氣設(shè)計(jì)規(guī)范
    的頭像 發(fā)表于 09-02 14:51 ?999次閱讀

    光伏儲(chǔ)能系統(tǒng)設(shè)計(jì)規(guī)范 光伏儲(chǔ)能系統(tǒng)設(shè)計(jì)的難點(diǎn)有哪些

    儲(chǔ)能系統(tǒng)的設(shè)計(jì)規(guī)范進(jìn)行詳細(xì)闡述,并分析設(shè)計(jì)過(guò)程中可能遇到的難點(diǎn)。 光伏儲(chǔ)能系統(tǒng)設(shè)計(jì)規(guī)范 2.1 系統(tǒng)容量設(shè)計(jì) 系統(tǒng)容量設(shè)計(jì)是光伏儲(chǔ)能系統(tǒng)設(shè)計(jì)的基礎(chǔ),需要根據(jù)用戶(hù)需求、地理位置、氣候條件等因素進(jìn)行綜合考慮。具體包括:
    的頭像 發(fā)表于 05-24 14:58 ?1278次閱讀

    簡(jiǎn)FPGA研發(fā)設(shè)計(jì)相關(guān)規(guī)范(很實(shí)用)

    今天和大俠聊一聊FPGA研發(fā)設(shè)計(jì)相關(guān)規(guī)范,養(yǎng)成良好的個(gè)人習(xí)慣,代碼設(shè)計(jì)風(fēng)格等,都有助于日后發(fā)展。有哪些設(shè)計(jì)規(guī)范,從文檔到工程建立等,聊一聊也許你會(huì)學(xué)到很多東西,少走很多彎路哦。話(huà)不多說(shuō),上貨。 在
    發(fā)表于 05-13 15:39

    簡(jiǎn)Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    今天給大俠帶來(lái)簡(jiǎn)Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),話(huà)不多說(shuō),上貨。 Xilinx的ZYNQ系列FPGA是二種看上去對(duì)立面的思想的融合,ARM處理器的串行執(zhí)行+FP
    發(fā)表于 05-08 16:23

    FPGA研發(fā)設(shè)計(jì)規(guī)范的簡(jiǎn)明探討

    每個(gè)module應(yīng)存在于單獨(dú)的源文件中,源文件名應(yīng)與其所包含的模塊名相同。每個(gè)設(shè)計(jì)都應(yīng)該有一個(gè)完善的文件頭,包含公司名稱(chēng)、設(shè)計(jì)者、設(shè)計(jì)時(shí)間、文件名、所屬項(xiàng)目、模塊名稱(chēng)及功能、修改記錄及版本信息等內(nèi)容。
    的頭像 發(fā)表于 04-26 11:43 ?448次閱讀
    <b class='flag-5'>FPGA</b>研發(fā)<b class='flag-5'>設(shè)計(jì)規(guī)范</b>的簡(jiǎn)明探討

    簡(jiǎn)FPGA研發(fā)設(shè)計(jì)相關(guān)規(guī)范(很實(shí)用)

    今天和大俠聊一聊FPGA研發(fā)設(shè)計(jì)相關(guān)規(guī)范,養(yǎng)成良好的個(gè)人習(xí)慣,代碼設(shè)計(jì)風(fēng)格等,都有助于日后發(fā)展。有哪些設(shè)計(jì)規(guī)范,從文檔到工程建立等,聊一聊也許你會(huì)學(xué)到很多東西,少走很多彎路哦。話(huà)不多說(shuō),上貨
    發(fā)表于 04-16 15:42

    簡(jiǎn)Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    今天給大俠帶來(lái)簡(jiǎn)Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),話(huà)不多說(shuō),上貨。 Xilinx的ZYNQ系列FPGA是二種看上去對(duì)立面的思想的融合,ARM處理器的串行執(zhí)行+FP
    發(fā)表于 04-10 16:00

    干貨!原理圖設(shè)計(jì)規(guī)范133條checklist

    原理圖設(shè)計(jì)是產(chǎn)品設(shè)計(jì)的理論基礎(chǔ),設(shè)計(jì)一份規(guī)范的原理圖對(duì)設(shè)計(jì)PCB、跟機(jī)、做客戶(hù)資料具有指導(dǎo)性意義,是做好一款產(chǎn)品的基礎(chǔ)。原理圖設(shè)計(jì)基本要求: 規(guī)范、清晰、準(zhǔn)確、易讀。因此制定《原理圖設(shè)計(jì)規(guī)范》的目的
    發(fā)表于 04-01 15:50

    中興ZTE內(nèi)部電路設(shè)計(jì)規(guī)范【硬件干貨】

    ? 編號(hào) 級(jí)別 條目?jī)?nèi)容 備注 1 規(guī)定 原理圖必須采用公司統(tǒng)一原理圖庫(kù)。 ? 2 規(guī)定 原理圖應(yīng)采用0.100柵格 ? 3 規(guī)定 原理圖正文字體設(shè)置參照原理圖設(shè)計(jì)規(guī)范,采用默認(rèn)設(shè)置。說(shuō)明文字為
    的頭像 發(fā)表于 02-25 15:09 ?846次閱讀
    中興ZTE內(nèi)部電路<b class='flag-5'>設(shè)計(jì)規(guī)范</b>【硬件干貨】

    PCB layout在布線(xiàn)上的設(shè)計(jì)規(guī)范有哪些?

    一站式PCBA智造廠家今天為大家講講pcb layout設(shè)計(jì)需要注意哪些細(xì)節(jié)?pcb layout設(shè)計(jì)規(guī)范。Printed Circuit Board (PCB)是一種電子零件,它是連接電子器件,如
    的頭像 發(fā)表于 02-23 09:19 ?871次閱讀

    解讀PCB設(shè)計(jì)規(guī)范

    規(guī)范規(guī)定了我公司 PCB 設(shè)計(jì)流程和設(shè)計(jì)原則,為 PCB 設(shè)計(jì)人員提供必須遵循的規(guī)則和約定。
    的頭像 發(fā)表于 01-12 11:06 ?2372次閱讀
    解讀PCB<b class='flag-5'>設(shè)計(jì)規(guī)范</b>

    簡(jiǎn)FPGA的片內(nèi)資源

    簡(jiǎn)FPGA的片內(nèi)資源
    發(fā)表于 01-08 22:12

    華為印制電路板(PCB)設(shè)計(jì)規(guī)范

    電子發(fā)燒友網(wǎng)站提供《華為印制電路板(PCB)設(shè)計(jì)規(guī)范.pdf》資料免費(fèi)下載
    發(fā)表于 01-02 10:44 ?43次下載

    印制電路板設(shè)計(jì)規(guī)范

    電子發(fā)燒友網(wǎng)站提供《印制電路板設(shè)計(jì)規(guī)范.pdf》資料免費(fèi)下載
    發(fā)表于 01-02 10:37 ?6次下載