【Verilog HDL】命名的規則研究

Verilog命名規范參考資料

1. 什么可以被命名?

  • 模塊的名稱
  • 模塊實例的名稱
  • 各種數據類型的名稱

這些名稱我們稱之為標識符,標識符的命名規則不再強調,與C語言類似,字母、數字、下劃線(_)和美元符號($),開頭只能是字母或者下劃線。

2. 命名的方式是怎樣的?

  • 模塊的名稱
    • 見名知義
    • 符合命名規范
  • 模塊實例的名稱
    通常情況下,可能會多次使用模塊的實例,命名的時候通常類似于:
    ff0,ff1,ff2,ff3,ff4……
  • 各種數據類型的名稱
    沒什么好說的,見名知義,符合命名規范即可

3. 標識符的范圍

就目前的知識結構來說,我對于范圍的理解是這樣的

  • 模塊與模塊實例的名稱是全局的,全局的名稱都不能重復
  • 數據類型的名稱是局部的,不同的模塊內可以重復,并且對于同一個信號源,不同子模塊內建議使用一樣的命名
  • 一個模塊內,所有標識符的名字,都不允許相同

4. 層次命名

先舉一個例子,對于如下層次結構

根層 sti
m1 模塊SR_latch的實例
變量q,qbar,set,reset
n1 模塊nand的實例
n2 模塊nand的實例
信號 Q,Qbar,S,R

標識符的層次名為:

  • sti
    • sti.q
    • sti.qbar
    • sti.set
    • sti.reset
    • sti.m1
      • sti.m1. Q
      • sti.m1.Qbar
      • sti.m1.S
      • sti.m1.R
    • sti.n1
    • sti.n2

其實就最后兩個看起來比較特別,并且是令人費解的,按理說不應該是

  • sti.m1.n1
  • sti.m1.n2

不應該是這樣才對嘛?為什么沒有m1?

先不要慌,我們先來解釋一下,為什么要使用層次命名,意義何在?

  1. 層次命名是為了在訪問設計中的某個標識符的時候,能夠唯一地識別這個標識符
  2. 對于具備全局屬性的標識符——模塊和模塊實例的名稱來說,顯然不是使用層次名的原因。
  3. 對于具備局部屬性,可以在不同子模塊中重復命名的標識符——變量或者信號的名稱來說,在全局設計中,它不具備唯一性,因此訪問的時候可能會出現問題,所以引入了層次名的概念,以便于能夠在全局設計的任意位置中,能夠唯一地訪問這些標識符

所以

  • sti.n1
  • sti.n2

這兩個層次名的原因也就得到了解釋,因為n1,n2在全局中是唯一的

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/384792.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/384792.shtml
英文地址,請注明出處:http://en.pswp.cn/news/384792.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Verilog HDL】深入理解部分語法規則的本質

1. 門級描述 統一規則: 門類型 (輸出,輸入); 細化規則: 與/或門: 多入一出 門 (輸出,輸入1,輸入2,……);緩沖門/非門:一入多出 門 (輸出1,輸出2,……輸出n,輸入); 門…

三級嵌入式填空整理

實時 可預測性是實時系統的重要性能標準 按照響應時間 實時操作系統可分為 1.普通實時操作系統 響應時間一般是秒級 2.強實時操作系統 響應時間為毫秒和微秒級 3.弱實時操作系統 響應時間為數十秒 RTOS 響應中斷請求并完成相應中斷服務子程序的時間非常快 這個時間具有一致性…

【Verilog HDL】從邏輯電路圖到門級建模——人工翻譯的方法論

從左到右,從上到下 先搞定緩沖/非門,再寫與/或門 1. 實例解讀 先以四選一數據選擇器進行說明 對于數字邏輯的部分不再說明,直接進行邏輯電路圖到Verilog門級建模的人工翻譯過程的描述。 1.1 端口和線網分析 確定輸入/輸出端口 輸入端口 …

三級嵌入式 匯編指令匯總

ARM條件碼 EQ 相等 NE 不相等 CS/HS 無符號大于等于 CC/LO 無符號小于 HI 無符號大于 LS 無符號小于等于 GE 帶符號大于等于 L…

【Verilog HDL】語句的并發執行

1. 實踐得到的啟發 先從一個簡單的現象得出結論,Verilog語句是并發執行的! 同時,這也是**$monitor系統任務為全局有效**的一個重要支持因素,如果沒有并發,它是完不成這項功能的實現的。 眾所周知,高級語…

linux下 最常用基本命令

常用命令 基本命令 pwd 打印絕對路徑 ls 路徑 列舉文件名 ls 列舉文件的權限 屬于哪個用戶 容量大小 修改…

【數字邏輯】第四章 組合邏輯電路:端口設計 端口拓展的方法

1. 端口設計的方法 1.1 數據選擇器 以四選一數據選擇器為例,需要的不同接口類型為 輸入端口 數據輸入端口地址輸入端口使能端(控制與拓展) 輸出端口 數據輸出端口 2. 端口拓展的方法——層次建模思想 2.0 兩個拓展方向 2.0.1 “數組型…

GCC及Makefile基本使用教程

GCC .c c原始程序 .C/.cc/.cxx c原始程序 .m objective-C原始程序 .i 已經預處理過的c原始程序 .ii 已經預處理過的c原始程序 .s/.S 匯編原始程序 .h 預處理頭文件 .o 目標文件 .a/.so 編譯后的庫文件 -E 生成預處理文件 -S 生成編譯過的匯編文件 -c 目標文件 .o -o…

【Verilog HDL】第三章 reg和net及其一組類型的區別——充分運用實驗思維

0 確定問題的討論層級與范圍 本文討論的層次是 數字邏輯與Verilog HDL語言 討論的范圍是: 數據存儲而不是討論邏輯 1 線網類型 1.1 wire類型 這個暫時沒什么好說的,一般常用的就是wire類型,需要注意的是: 默認是標量&…

linux中標準I/O 文件I/O 及庫

標準 I / O fopen() 函數打開文件的方式 r / rb 只讀 文件必須存在 r / rb 讀寫 文件必須存在 w / wb 只寫 文件存在則長度清零 不存在則創建 w / wb 讀寫 其他 同w a / ab 同w 且寫入的數據會被追加到文件末尾 a / ab 讀寫 數據在文件末尾追加 其…

【C/C++ 匯編語言 Verilog】越界截斷——數據越界問題的多角度分析

0 前言 0.1 討論層級和范圍 討論層級 計算機底層:硬件層次與匯編指令層次信息與二進制位 討論范圍 信息的存儲與運算在匯編語言與Verilog HDL中的聯系與區別事實上,數據越界截斷問題,在計算機體系的任何層次,都可能發生&#xf…

進程常用指令 (從創建到回收 包含守護)

進程 常用命令及基本介紹 ps -ef 查看所有進程信息 (一般需要配合管道使用) ps aux 查看進程信息 且顯示進程狀態 狀態: R 運行態 正在運行或可運行 D 等待態 不可中斷 S 等待態 可中斷 T 停止態 Z 僵尸態 可追加: 前臺運…

【VS C++ 2010】查看內存的方法詳解

1 示例代碼 對于以下代碼&#xff1a; int main() {int a 100010001000;int b 100;cout << "a " << a << " " << &a << endl;cout << "b " << b << " " << &b…

二級C選擇知識點(部分)

二級C 循環隊列是隊列的順式存儲結構 雙向鏈表是鏈表的順式存儲結構 普通鏈表是鏈式存儲結構 非線性結構可采用順式也可采用鏈式 線性結構是只有一個根結點 每個節點最多有一個 帶鏈隊列可以不連續 且隊頭指針可大于也可小于隊尾指針 在鏈表中 雙向鏈表和循環鏈表都有兩個…

【匯編語言】上機實驗 win7/8/10 64位系統 進入32位DOS模式 實現dubug/edit/masm/link功能

1 軟件下載和安裝 下載并安裝DOSBox軟件&#xff0c;注意&#xff0c;不要裝在C盤上&#xff0c;裝在其他盤上 【備注】軟件直接百度搜索即可下載Debug.exe文件 【備注】百度搜索“Debug 64位 下載” 對于下載后得到的debug.exe文件 將這個文件拷貝到磁盤根目錄下&#xff0c…

ntohs(), ntohl() , htons(), htonl(), inet_ntoa(), inet_pton(), atoi()匯總

在C/C寫網絡程序的時候&#xff0c;往往會遇到字節的網絡順序和主機順序的問題。這是就可能用到htons(), ntohl(), ntohs()&#xff0c;htons()這4個函數。 網絡字節順序與本地字節順序之間的轉換函數&#xff1a; htonl()--"Host to Network Long" ntohl()--"N…

【數字邏輯 Verilog】全面剖析數據選擇器——從基礎到拓展,從理論到設計的實現,從表面到本質

0 前言 0.1 使用環境 EDA工具&#xff1a;Vivado 2017.4硬件描述語言&#xff1a;Verilog HDL 0.2 涉及知識 數字邏輯Verilog 1 基礎模塊&#xff1a;一位四選一數據選擇器 1.1 設計部分&#xff1a;層次建模 1.1.1 需求分析 設計一個一位的四選一數據選擇器&#xff0…

exec函數族(部分 最常用的)

進程調用exec函數族執行某個程序 進程當前程序被執行程序替換 讓父子進程執行不同的程序 父進程創建子進程 子進程調用exec函數族 父進程不受影響 #include<unistd.h> int execl(const char *path, const char *arg, ...) int execlp(const char *file, const cha…

【計算機網絡】手動配置hosts文件解決使用GitHub和Coursera網站加載慢/卡的問題

目錄0 前言1 打開hosts1.1 以管理員身份運行記事本1.2 打開hosts2 找到實際地址2.1 打開cmd2.2 找到網址3 替換地址3.1 修改hosts文件3.2 刷新4 后續內容的完善0 前言 本文是針對純小白讀者&#xff0c;沒有涉及到任何的專業知識&#xff0c;你只需要按照步驟操作即可。 同時…

【匯編語言】鏡像遷移能力之一通百通——由代碼段和CS:IP的原理,掌握一類寄存器的使用

0 前言 你應該知道8086CPU的物理地址形成方式及其原理&#xff0c;才能完成本文的學習。 1 內存的分段 對于內存&#xff0c;人們人為地將其劃分為一段一段的&#xff0c;比如代碼段和數據段等&#xff0c;特別注意&#xff0c;這是人為劃分的結果&#xff0c;方面人類使用&…