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

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

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

3天內不再提示

淺談Verilog HDL代碼編寫風格

FPGA之家 ? 來源:硅農 ? 2023-11-20 10:04 ? 次閱讀

消失了好久,沒有寫文章,也沒有做筆記,因為最近再趕一個比賽,時間很緊,昨天周六終于結束了,所以趁著周末這會兒有時間,寫點東西,記錄下來。首先我學習FPGA才一年多,我知道自己沒有資格談論一些比較深層次的問題,對于這個行業來說可能我才是一直腳踩在門外面。所以這篇文章是寫給一些剛開始學習FPGA、Verilog HDL的同學,我看過一些大神寫的代碼,然后盡量模仿大神寫法,經過好幾個大神的影響和自己的習慣摸索,最終算是總結出了一套自己的代碼書寫風格,當然我的代碼風格還是一直在進化中。現在將自己的一些經驗總結出來,希望對剛開始學習FPGA的朋友有所幫助。

首先,第一我還是要強調的是編輯器的作用,工欲善其事,必先利其器。之前整理過一篇,如何高效的編寫Verilog HDL——菜鳥篇,點擊查看。其中我介紹了使用notepad++的一些小技巧,當然還有很多網友使用gvim編輯器,對gVim編輯器,我也了解了很多,雖然上手比較麻煩,但是一勞永逸,我之后也是打算學習該編輯器的使用的,目前,時間比較緊,所以就暫且先用notepad++吧。熟悉verilog的人都知道,Verilog HDL設計其實使用20%的語法就可以設計出90%以上的電路,其中最長用的便是always塊了,用軟件自帶的IDE的話編寫效率其實是很差的。所以說一個好的順手的編輯器至關重要,對于我們這些苦逼的技術工作者來說,經常看電腦屏幕一看就是一整天,然后還天天看,所以用Notepad++更換主題可以更好的為革命保護視力,

點擊設置——語言格式設置,可設置編輯器主題

0783b2a6-8745-11ee-939d-92fbcf53809c.jpg

這里我選擇的是如圖所示的主題,我比較喜歡這個比較暗的顏色,

078ec970-8745-11ee-939d-92fbcf53809c.png

最終呈現的效果便如下圖所示,是不是看起來很舒服呢!

07948dec-8745-11ee-939d-92fbcf53809c.jpg

第二、代碼的端口命名、內部寄存器的命名。下圖是我們最近做的項目,可以看出在端口眾多的情況下,端口的命名有多重要,基本上從信號的命名就可以直接聯想到該信號的作用,同理,內部使用寄存器的命名也是如此。對于使用的系統時鐘命令最好是用clk+后綴,加上時鐘的頻率。這樣不僅自己看起來方便,別人看起來也方便。因為很多情況下,不同開發板的晶振是不一樣的,但是編寫者知道,其他人就未必知道了。我還真見過always@(posedge A or negedge B)這樣寫的人的,當然他也是剛開始學習了。

復位信號也直觀只要,我習慣上寫的而是rst+后綴,高電平有效還是低電平有效,rst_n(低電平有效negedge),rst_p(高電平有效posedge),我看過一些書上的復位信號命名的是clr,其實這兩種命名的方法根本沒有區別,一般情況下,我們復位都是將寄存器置數為0,也相當于清零,但也不排除,復位是給置數的情況,所以我習慣上使用rst_n來復位,及低電平復位。

其他的信號也就類似的,總結下來上就是,給信號起一目了然的名字,盡量使用縮寫,不要信號的名字太長,信號的名字和功能作用中間用下劃線隔開,要習慣性的給信號后面編寫注釋,給你編寫的代碼塊做注釋,給你編寫的模塊做注釋,請記住你的代碼不是給你一個人寫的。

07a6fb8a-8745-11ee-939d-92fbcf53809c.jpg

第三、代碼的工整。從上圖中可以看到,我在定義端口的時候是直接定義在module內部的,很多人的寫法是先在module內部定義一遍端口,然后再module下面再寫一遍input/output定義,其實這兩種方式都可以,那么我為什么選擇直接寫在module內部呢,,,因為我懶啊。在編寫代碼的時候多用空格和TAB,把定義的信號對齊,這樣寫出代碼是很漂亮的,每一段代碼之間應該用分隔線隔開,這樣整體看起來很清晰。

07abad92-8745-11ee-939d-92fbcf53809c.jpg

模塊端口的實例化也是,這樣的代碼自己看著漂亮,別人看著也舒服,而且從頂往下看都會很明了。

07bc7604-8745-11ee-939d-92fbcf53809c.jpg

第四、在設計中多實用時序邏輯,尤其是直接需要輸出的端口。在我最近做的那個項目里,我使用了一些組合邏輯來做控制,但是后來發現這樣會有一個弊端,每次系統上電的時候會有一段不穩定時間,在這段時間里,我的那幾個控制模塊就無規則的在亂啟動,即使是在復位的情況下,這樣可能會引起一些麻煩造成系統的不穩定,如果采用是時序邏輯的話,就完全可以避免這個問題了,在系統上電的時候,復位低有效,等上電穩定后,將復位鍵變為高電平。

第五、如果一個工程里,同一個宏定義需要在多個文件里調用的話,建議使用調用文件。比如我在寫VGA驅動的時候,行掃描、場掃描和各種顏色的定義參數需要在多個模塊中使用,所以可在模塊內部直接寫如下圖所示部分,把”`define”定義放在一個單獨的文件里面,”parameter”參數定義肯定必須是在模塊內部了,檢查重復定義。

07ccef3e-8745-11ee-939d-92fbcf53809c.jpg

07d482bc-8745-11ee-939d-92fbcf53809c.jpg

第六、使用異步復位、同步置數的設計思想(可以了解一下異步復位、同步釋放),而且一個always塊里,盡量值操作一個寄存器。一個模塊的代碼不要寫的太多,使用模塊化設計,而且在頂層文件里盡量不了寫代碼,為了在檢查RTL圖的時候比較方便明了的看出各個模塊之間的連線圖。模塊內部不應該使用內部使用,同一個模塊內的時鐘應該是同一個時鐘驅動下的,如果要使用別的時鐘進行驅動的話,必須使用時鐘使能而不是時鐘觸發,保持所有always塊是同一個時鐘上升沿觸發,如果確實要使用內部時鐘門控時鐘或內部的復位信號將它們放在頂層將這些信號的產生放在頂層的一個獨立模塊這樣所有的子模塊分別使用單一的時鐘和復位信號。對于使用if——else if——else或case語句必須把所有的情況都寫上,避免生成鎖存器。最重要的第一點,寄存器類型的數據應該有復位,我不習慣使用initial語句進行初始化,一般都是用異步復位來為維持系統的穩定。還有平時寫代碼的時候盡量不要使用for循環,當然有些必要的時候也是可以用的。

第七、如果你遇到實在不好解決、苦思冥想都有邏輯錯誤的設計,那么這個時候,你就可以考慮一下狀態機了。

審核編輯:湯梓紅

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

    關注

    1639

    文章

    21887

    瀏覽量

    610851
  • Verilog
    +關注

    關注

    28

    文章

    1362

    瀏覽量

    111285
  • HDL
    HDL
    +關注

    關注

    8

    文章

    330

    瀏覽量

    47684
  • 代碼
    +關注

    關注

    30

    文章

    4871

    瀏覽量

    69906
  • 編輯器
    +關注

    關注

    1

    文章

    812

    瀏覽量

    31558

原文標題:淺談Verilog HDL代碼編寫風格

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    正弦振蕩用verilog HDL如何編寫

    正弦振蕩用verilog HDL如何編寫
    發表于 04-15 22:00

    Verilog HDL代碼書寫規范

    :① 邏輯功能正確,②可快速仿真,③ 綜合結果最優(如果是hardware model),④可讀性較好。2. 范圍本規范涉及Verilog HDL編碼風格,編碼中應注意的問題, Testbench的編碼
    發表于 12-08 14:36

    勇敢的芯伴你玩轉Altera FPGA連載35:Verilog代碼風格概述

    `勇敢的芯伴你玩轉Altera FPGA連載35:Verilog代碼風格概述特權同學,版權所有配套例程和更多資料下載鏈接:http://pan.baidu.com/s/1i5LMUUD 所謂
    發表于 12-27 10:07

    Verilog HDL代碼描述對狀態機綜合的研究

    有許多可綜合狀態機的Verilog代碼描述風格,不同代碼描述風格經綜合后得到電路的物理實現在速度和面積上有很大差別。優秀的
    發表于 12-24 00:52 ?30次下載
    <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b><b class='flag-5'>代碼</b>描述對狀態機綜合的研究

    基本組合邏輯功能雙向管腳的Verilog HDL代碼

    電子發燒友網核心提示: 本例程是Verilog HDL代碼:關于基本組合邏輯功能中雙向管腳的功能實現源代碼Verilog
    發表于 10-15 11:28 ?1686次閱讀

    Verilog HDL入門教程

    本文主要介紹了Verilog HDL 語言的一些基本知識,目的是使初學者能夠迅速掌握HDL設計方法,初步了解并掌握Verilog HDL語言
    發表于 07-15 15:27 ?0次下載

    Verilog HDL入門教程之Verilog HDL數字系統設計教程

    本文檔的主要內容詳細介紹的是Verilog HDL入門教程之Verilog HDL數字系統設計教程。
    發表于 09-20 15:51 ?83次下載
    <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>入門教程之<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>數字系統設計教程

    Verilog HDL入門教程

    本文主要介紹了Verilog HDL 語言的一些基本知識,目的是使初學者能夠迅速掌握HDL 設計方法,初步了解并掌握Verilog HDL
    發表于 02-11 08:00 ?102次下載
    <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>入門教程

    如何使用Verilog HDL描述可綜合電路?

    1、如何使用Verilog HDL描述可綜合電路 Verilog 有什么奇技淫巧?我想最重要的是理解其硬件特性。Verilog HDL語言僅
    的頭像 發表于 04-04 11:19 ?4371次閱讀
    如何使用<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>描述可綜合電路?

    Verilog HDL入門教程-Verilog HDL的基本語法

    Verilog HDL入門教程-Verilog HDL的基本語法
    發表于 01-07 09:23 ?180次下載

    什么樣的Verilog代碼風格是好的風格

    代碼是給別人和多年后的自己看的。 關于Verilog代碼設計的一些風格和方法之前也寫過一些Verilog有什么奇技淫巧?
    的頭像 發表于 10-24 15:23 ?1806次閱讀

    如何使用參數化編寫可重用的verilog代碼

    我們將介紹如何使用verilog參數和generate語句來編寫可重用的verilog 代碼。 與大多數編程語言一樣,我們應該嘗試使盡可能多的
    的頭像 發表于 05-11 15:59 ?1299次閱讀

    Vivado HDL編寫示例

    Vivado 軟件提供了HDL編寫中常用的示例,旨在幫助初學者更好地理解和掌握HDL編程,這里分享一下verilog代碼示例。
    的頭像 發表于 05-16 16:58 ?1232次閱讀

    一本Verilog HDL代碼對應電路的書,助你快速編寫可綜合模型

    建立用于RTL綜合的Verilog標準化子集。他是貝爾實驗室所開發的ArchSyn綜合系統的主要設計者之一。他曾為AT&T和Lucent的許多設計師講授Verilog HDL語言和Verilo
    的頭像 發表于 05-26 16:59 ?1596次閱讀
    一本<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b><b class='flag-5'>代碼</b>對應電路的書,助你快速<b class='flag-5'>編寫</b>可綜合模型

    Verilog編碼風格的建議

    良好的編碼風格,有助于代碼的閱讀、調試和修改。雖然 Verilog 代碼可以在保證語法正確的前提下任意編寫,但是潦草的編碼
    的頭像 發表于 06-01 16:27 ?861次閱讀
    <b class='flag-5'>Verilog</b>編碼<b class='flag-5'>風格</b>的建議
    主站蜘蛛池模板: 午夜欧美福利 | 奇米四色7777| 在线国产三级 | 韩彩英三级无删版甜性涩爱 | 在线播放12p | 成人欧美一区二区三区的电影 | 在线www天堂资源网 在线播放 你懂的 | 日本久久久 | 小说区v天堂网 | 午夜激情啪啪 | 日本成人免费观看 | 久久久免费观看 | 国产亚洲欧美视频 | 色黄污在线看黄污免费看黄污 | 亚洲狠狠操 | 五月婷婷基地 | 4438成人成人高清视频 | 日本黄色高清视频网站 | 国模私拍一区二区三区 | 久青草免费视频手机在线观看 | 999久久久免费精品国产牛牛 | 黄 色 录像成 人播放免费99网 | 日产毛片| 女bbbbxxxx毛片视频0 | 中文字幕精品一区二区三区视频 | 亚洲日本免费 | 精品久久香蕉国产线看观看亚洲 | 丁香六月婷婷激情 | 在线播放免费人成毛片乱码 | 美女和帅哥在床上玩的不可描述 | 天天摸天天做天天爽在线 | 日本亚洲成人 | 国产三级日产三级日本三级 | 亚洲成在人线影视天堂网 | 国产在线成人一区二区 | 99热国内精品 | 亚洲最大成人综合网 | 亚洲亚洲人成网站在线观看 | 老师你好大好白好紧好硬 | 女人的逼毛片 | 天天综合网站 |