在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FPGA設計關于Verilog編碼的12規范

454398 ? 來源:FPGA技術聯盟 ? 作者:FPGA技術聯盟 ? 2020-11-24 12:12 ? 次閱讀

1、命名規則

① 首先每個文件只包含一個module,而且module名要小寫,并且與文件名保持一致;

② 除parameter外,信號名全部小寫,名字中的兩個詞之間用下劃線連接,如receive_clk_b;

③ 由parameter定義的常量要求全部字母大寫,自己定義的參數、類型用大寫標識,推薦使用parameter來定義有實際意義的常數,包括單位延時、版本號、板類型、單板在位信息、LED亮燈狀態、電源狀態、電扇狀態等;

④ 信號名長度不超過20字符,并且避免使用Verilog和VHDL保留字命令,建議給信號名添加有意義的前綴或后綴,命名符合常用命名規范(如_clk 或clk_表示時鐘, n表示低電平有效, z表示三態信號, en表示使能控制,rst 表示復位);

⑤ 保持縮寫意義在模塊中的一致性,同一信號在不同層次應該保持一致性。

2、注釋規則

① 每個文件有一個文件頭,文件頭中注明文件名、功能描述、引用模塊、設計者、設計時間、版權信息以及修改信息等;

② 對信號、參量、引腳、模塊、函數及進程等加以說明,便于閱讀與維護,如信號的作用、頻率、占空比、高低電平寬度等。用“//”做小于1行的注釋,用“/* */”做多于1行的注釋。更新的內容要做注釋,記錄修改原因,修改日期和修改人。

3、模塊規則

① module例化名用u_xx_x標示;

② 建議給每個模塊要加timescale;

③ 不要書寫空的模塊,即:一個模塊至少要有一個輸入和一個輸出;

④ 為了保持代碼的清晰、美觀和層次感,一條語句應占用一行,每行限制在80個字符以內,如果較長(超出80個字符)則換行;

⑤ 采用基于名字(name_based)的調用而不是基于順序的(order_based)的調用;

⑥ 模塊的接口信號按輸入、雙向、輸出順序定義;

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

⑧ 管腳和信號說明部分:一個管腳和一組總線占用一行,說明要清晰;

⑨ 不要采用向量的方式定義一組時鐘信號;

⑩ 邏輯內部不對input進行驅動,在module內不存在沒有驅動源的信號,更不能在模塊端口存在沒有驅動的輸出信號,避免在elabarate和compile時產生warning;

? 在頂層模塊中,除了內部的互連和module的例化外,避免在做其他邏輯;

? 出于層次設計和同步設計的考慮,子模塊輸出信號建議用寄存器;

? 內部模塊端口避免inout,最好在最頂層模塊處理雙向總線;

? 子模塊中禁止使用三態邏輯,可以在頂層模塊使用;

? 如果能確保該信號不會被其它子模塊使用,而是直接通過頂層模塊輸出I/O口,可以在子模塊中使用三態;

? 禁止出現未連接的端口;

? 為邏輯升級保留的無用端口和信號要注釋;對于層次化設計的邏輯,在升級中采用增量編譯;建議采用層次化設計,模塊之間相對獨立。

4、線網和寄存規則

① 鎖存器和觸發器不允許在不同的always塊中賦值,造成多重驅動;

② 出于功能仿真考慮,非阻塞賦值應該增加單位延時,對于寄存器類型的變量賦值時,尤其要注意這一點;阻塞賦值不允許使用單位延時;

③ always語句實現時序邏輯采用非阻塞賦值;always語句實現的組合邏輯和assign語句塊中使用阻塞賦值;

④ 同一信號賦值不能同時使用阻塞和非阻塞兩種方式;

⑤ 不允許出現定義了parameter、wire、reg卻沒有使用的情況;

⑥ 不建議使用integer類型寄存器;

⑦ 寄存器類型的信號要初始化;

⑧ 除移位寄存器外,每個always語句只對一個變量賦值,盡量避免在一個always語句出現多個變量進行運算或賦值。

5、表達式規則

① 在表達式內使用括號表示運算的優先級,一行中不能出現多個表達式;

② 不要給信號賦“x”態,以免x值傳遞;

③ 設計中使用到的0,1,z等常數采用基數表示法書寫(即表示為1'b0,1'b1,1'bz或十六進制);

④ 端口申明、比較、賦值等操作時,數據位寬要匹配。

6、條件語句規則

① if 都有else和它對應,變量在if-else或case語句中所有變量在所有分支中都賦值;

② 如果用到case語句,記得default項;

③ 禁止使用casex,case語句item必須使用常數;

④ 不允許使用常數作為if語句的條件表達式;

⑤ 條件表達式必須是1bit value;

⑥ 如異步復位:

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

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

不要寫成:

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

⑦ 不推薦嵌套使用5級以上if…else if…結構。

7、可綜合部分規則

① 不要使用include語句;

② 不要使用disable、initial等綜合工具不支持的電路,而應采用復位方式進行初時化,但在testbench電路中可以使用;

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

④ 除仿真外,不使用fork-join語句;

⑤ 除仿真外,不使用while語句;

⑥ 除仿真外,不使用repeat語句;

⑦ 除仿真外,不使用forever語句;

⑧ 除仿真外,不使用系統任務($);

⑨ 除仿真外,不使用deassign語句;

⑩ 除仿真外,不使用force,release語句;

? 除仿真外,不使用named events語句;不在連續賦值語句中引入驅動強度和延時;

? 禁止使用trireg型線網;

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

? 不要位驅動supply0和supply1型的線網賦值;

? 設計中不使用macro_module;

? 不要在RTL代碼中實例門級單元尤,其下列單元:(CMOS/RCOMS/NMOS/PMOS/RNMOS/RPMOS/trans/rtrans/tranif0/tranif1/rtranif0/tranif1/pull_gate)。

8、可重用的部分規則

① 考慮未使用的輸入信號power_down,避免傳入不穩定態;

② 接口信號盡量少,接口時序盡量簡單;

③ 將狀態機(FSM)電路與其它電路分開,便于綜合和后端約束;

④ 將異步電路和同步電路區分開,便于綜合和后端約束,將相關的邏輯放在一個模塊內;

⑤ 合理劃分設計的功能模塊,保證模塊功能的獨立性;

⑥ 合理劃分模塊的大小,避免模塊過大;

⑦ 在設計的頂層(top)模塊,將I/O口、Boundary scan電路、以及設計邏輯(corelogic)區分開。

9、同步設計規則

① 同一個module中,要在時鐘信號的同一個沿動作;

② 如果必須使用時鐘上升沿和時鐘下降沿,則要分兩個module設計;

③ 在頂層模塊中,時鐘信號必須可見,不在模塊內部生成時鐘信號,而要使用DCM/PLL產生的時鐘信號;

④ 避免使用門控時鐘和門控復位;

⑤ 同步復位電路,建議在同一時鐘域使用單一的全局同步復位電路;
異步復位電路,建議使用單一的全局異步復位電路;

⑥ 不在時鐘路徑上添加任何buffer;

⑦ 不在復位路徑上添加任何buffer;

⑧ 避免使用latch;

⑨ 寄存器的異步復位和異步置位信號不能同時有效;

⑩ 避免使用組合反饋電路;

?always有且僅有一個的敏感事件列表,敏感事件列表要完整,否則可能會造成前后仿真的結果不一致;

? 異步復位情況下需要異步復位信號和時鐘沿做敏感量,同步復位情況下只需要時鐘沿做敏感量;

? 時鐘事件的表達式要用:

“negedge

“posedge”的形式;

? 復雜電路將組合邏輯和時序邏輯電路分成獨立的always描述。

10、循環語句規則

① 在設計中不推薦使用循環語句;

② 在非常有必要使用的循環語句時,可以使用for語句。

11、約束規則

① 對所有時鐘頻率和占空比都進行約束;

② 對全局時鐘skew進行約束;

③ 對于時序要求的路徑需要針對特殊要求進行約束,如鎖相環鑒相信號;

④ 要根據輸出管腳驅動要求進行約束,包括驅動電流和信號邊沿特性;

⑤ 要根據輸入和輸出信號的特性進行管腳上下拉約束;

⑥ 針對關鍵I/O是否約束了輸入信號和輸入時鐘的相位關系,控制輸入信號在CLK信號之后或之前多少ns到達輸入pad;

⑦ 綜合設置時,fanout建議設置為3030;

⑧ 要使用輸入輸出模塊中的寄存器,如Xinlinx公司的IOB,map properties選項pack I/O register/latches into IOBsactor需要設置成為“for input and output”,這樣可以控制管腳到內部觸發器的延時時間;

⑨ 布局布線報告中IOB、LUTs、RAM等資源利用率應小于百分之八十;

⑩ 對于邏輯芯片對外輸入接口,進行tsu/th約束;對于邏輯芯片對外輸出接口,進行約束。

12、PLL/DCM規則

① 如果使用FPGA內部DCM和PLL時,應該保證輸入時鐘的抖動小于300ps,防止DCM/PLL失鎖;如果輸入時鐘瞬斷后必須復位PLL/DCM。

② 對于所有廠家的FPGA,其片內鎖相環只能使用同頻率的時鐘信號進行鎖相,如果特殊情況下需要使用不同頻率的信號進行鎖相,需要得到廠家的認可,以避免出時鐘。

13、代碼編輯規則

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

編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Verilog
    +關注

    關注

    29

    文章

    1366

    瀏覽量

    111966
  • 鎖存器
    +關注

    關注

    8

    文章

    923

    瀏覽量

    42183
  • 觸發器
    +關注

    關注

    14

    文章

    2033

    瀏覽量

    61949
  • 編輯器
    +關注

    關注

    1

    文章

    818

    瀏覽量

    31851
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    FPGA Verilog HDL語法之編譯預處理

    Verilog HDL語言和C語言一樣也提供了編譯預處理的功能?!熬幾g預處理”是Verilog HDL編譯系統的一個組成部分。Verilog HDL語言允許在程序中使用幾種特殊的命令(它們不是一般
    的頭像 發表于 03-27 13:30 ?509次閱讀
    <b class='flag-5'>FPGA</b> <b class='flag-5'>Verilog</b> HDL語法之編譯預處理

    Verilog 與 ASIC 設計的關系 Verilog 代碼優化技巧

    Verilog與ASIC設計的關系 Verilog作為一種硬件描述語言(HDL),在ASIC設計中扮演著至關重要的角色。ASIC(Application Specific Integrated
    的頭像 發表于 12-17 09:52 ?952次閱讀

    Verilog 測試平臺設計方法 Verilog FPGA開發指南

    Verilog測試平臺設計方法是Verilog FPGA開發中的重要環節,它用于驗證Verilog設計的正確性和性能。以下是一個詳細的Verilog
    的頭像 發表于 12-17 09:50 ?1060次閱讀

    Verilog與VHDL的比較 Verilog HDL編程技巧

    Verilog 與 VHDL 比較 1. 語法和風格 VerilogVerilog 的語法更接近于 C 語言,對于有 C 語言背景的工程師來說,學習曲線較平緩。它支持結構化編程,代碼更直觀,易于
    的頭像 發表于 12-17 09:44 ?1539次閱讀

    ADS1281 PCM編碼規范應該在哪里找?

    的是,根據文檔M0是符合PCM編碼的,請問這個PCM編碼規范應該在哪里找?或者它是符合怎么樣的規范。如何解碼 解碼公式1生成的yn也是符合PCM編碼
    發表于 12-05 08:33

    能否在純fpga上通過verilog實現SPI控制器去配置adc12dj3200?

    ti工程師,您好,我最近想用adc12dj3200實現L波段信號采樣,可以問一下上圖中的FPGA可以是支持jesd204b總線的任何FPGA芯片嗎?是否可以通過verilog實現S
    發表于 11-18 07:28

    Verilog vhdl fpga

    相關專業,具有良好的專業基礎知識。 感興趣可滴滴 JYHXDX534 2.工作年限不限,有工作經驗或優秀應屆畢業生亦可。 3.對FPGA芯片架構和資源有深入的理解,精通Verilog HDL、VHDL
    發表于 11-12 16:40

    Verilog硬件描述語言參考手冊

    一. 關于 IEEE 1364 標準二. Verilog簡介三. 語法總結四. 編寫Verilog HDL源代碼的標準五. 設計流程
    發表于 11-04 10:12 ?4次下載

    FPGA編程語言的入門教程

    FPGA(現場可編程邏輯門陣列)的編程涉及特定的硬件描述語言(HDL),其中Verilog和VHDL是最常用的兩種。以下是一個FPGA編程語言(以Verilog為例)的入門教程: 一、
    的頭像 發表于 10-25 09:21 ?1070次閱讀

    Verilog 如何做到心中有電路?

    Verilog 代碼時可以遵循的規范和建議,以減輕 FPGA 布線壓力,僅供參考: 模塊劃分:將復雜的設計合理地劃分為多個功能獨立的模塊,提高代碼的可讀性和可維護性,也有助于布線工具更好地處理。 時鐘
    發表于 09-26 20:30

    怎么樣提高verilog代碼編寫水平?

    ,共同進步。 歡迎加入FPGA技術微信交流群14群! 交流問題(一) Q:怎么樣提高verilog代碼編寫水平?Cpu 從事DFT工作。目前僅限于寫一些簡單模塊。自學的話如何提高verilog編寫水平
    發表于 09-25 20:05

    FPGA Verilog HDL代碼如何debug?

    ,共同進步。 歡迎加入FPGA技術微信交流群14群! 交流問題(一) Q:Verilog代碼如何debug?最近學習fpga,寫了不少verilog,開始思考如何debug的問題!c語
    發表于 09-24 19:16

    FPGA Verilog HDL有什么奇技巧?

    今天給大俠帶來在FPAG技術交流群里平時討論的問題答疑合集(九),以后還會多推出本系列,話不多說,上貨。 交流問題(一) Q:Verilog 有什么奇技淫巧? A:在 Verilog 中,以下這些
    發表于 09-12 19:10

    【招聘】verilog vhdl FPGA

    1.熟悉FPGA架構及應用,熟悉圖像算法的FPGA實現。 2.熟悉verilog vhdl,熟悉Xilinx或Intel等開發工具。 3.有AI算法 fpga實現經驗優先。 4.本科及
    發表于 09-02 15:50

    C語言編碼規范,這才是最理想的!

    編碼規范,沒有最好,只有最合適,有但不執行不如沒有。一、編碼原則01可讀性清晰第一清晰性是易于維護程序必須具備的特征。維護期變更代碼的成本遠遠大于開發期,編寫程序應該以人為本,計算機第二。一般情況下
    的頭像 發表于 07-06 08:11 ?1520次閱讀
    C語言<b class='flag-5'>編碼</b><b class='flag-5'>規范</b>,這才是最理想的!
    主站蜘蛛池模板: 日韩欧美黄色 | 天堂在线观看中文字幕 | 日本a级三级三级三级久久 日本a级影院 | 免费人成网站在线高清 | 高清欧美色欧美综合网站 | 国产片翁熄系列乱在线视频 | 欧美一级特黄高清免费 | 亚洲一区二区中文字5566 | 青草久| 久久夜夜操妹子 | 国产精品天天看大片特色视频 | 69 hd xxxx日本| 免费黄色一级 | 国产亚洲精品线观看77 | 天天操天天爱天天干 | 国产美女在线精品免费观看 | 美女bbbb视频 | 2018天天操夜夜操 | 天天爽夜夜爽人人爽一区二区 | 爱爱视频天天干 | 亚洲视频色 | 一级毛片aaa片免费观看 | 国产在线成人一区二区 | 米奇精品一区二区三区 | 日本特级黄色大片 | 亚洲美女啪啪 | 国产成人久视频免费 | 最近最新中文字幕在线第一页 | 国产一区二区播放 | 色婷婷六月丁香七月婷婷 | 久久国产精品免费 | 国产资源在线视频 | 黄色成人在线网站 | 国产产一区二区三区久久毛片国语 | 丁香婷婷开心激情深爱五月 | 狠狠色丁香六月色 | 色综合国产 | 野外啪啪抽搐一进一出 | 一级黄免费 | 人人做人人干 | 亚洲天堂网站在线 |