【Verilog HDL學習之路】第二章 Verilog HDL的設計方法學——層次建模

2 Verilog HDL的設計方法學——層次建模

  • 重要的思想:
    在語文教學中,應該先掌握核心方法論,再用正確的方法論去做題目,這樣能夠逐漸加深對于方法論的理解,做題的速度和準確率也會越來越高。
  • 在Verilog HDL中,該思想同樣適用,在編程,軟件開發也一樣如此
學習正確的設計方法學
按照方法不斷訓練
掌握設計方法學
進行高效的設計

2.1 設計方法學——層次建模

2.1.1 方法理論

  • 自上而下設計方法

設計者先設計出頂層模塊,然后將其拆解,分析出其內部模塊,再進一步為更小的、已知的功能單元。用流程圖可以進行如下表示

頂層模塊
子模塊1
子模塊2
子模塊3
葉單元
葉單元
葉單元
葉單元

圖示:
在這里插入圖片描述

  • 自下而上的設計方法
    設計者使用功能確定是小的功能單元,組合成大的功能單元,然后逐漸增大,流程圖即上面的箭頭反向

2.1.2 實際應用

在實際使用設計方法學的過程中,往往采用二者結合的方式,程序員一邊設計頂層的架構,一邊將小模塊組合成大模塊,上下同時進行,然后進行對接。

實際的流程往往是這個樣子的

把他們組合起來
繼續組合
設計整體架構
拆解為小的單元
小單元中,哪些是我能寫出的?哪些是別人開發好的?哪些能查到?
設計好小單元
構成大單元
完成整體架構

這個過程中,對于小單元的實現,是自下而上的,對于整體架構的實現,是自上而下的。

當然,其實這樣的流程過于抽象,并且也不是唯一的,我們看后面的實例部分來深入理解思想即可,大可不必生搬硬套。

2.2 應用層次建模思想設計Verilog HDL程序

具體內容請參考書籍《Verilog HDL:A Guide to Design and Synthesis》(Second Edition)

先來闡述核心概念:

  • 模塊與模塊實例
  • 設計塊與激勵塊

2.2.1 模塊與模塊實例

對于模塊與模塊實例的關系,和C++中模板與模板實例的關系是類似的

在Verilog HDL中,模塊是基本功能單元,它可以是

  • 葉單元
  • 子模塊
  • 頂層模塊

在更高級的模塊中,可以調用低級模塊實例來構建,也有了一條重要的原則:

  • 下級模塊實例,被調用,來構建上級模塊

總而言之,Verilog的核心設計,是由模塊構成的,不同等級的模塊通過模塊實例進行相互調用來建立聯系

每一個模塊,都是一個有接口,有功能,但是內部細節不可見的科技黑箱

每一個模塊實例,都是模塊的副本,可以被它的上級模塊調用

2.2.2 設計塊與激勵塊

  • 設計塊就是2.2.1中構建的最上級的模塊,即頂層模塊
  • 激勵塊就是用來驗證設計塊的正確性

問題:什么是“激勵”?

先來舉一個類似的例子,在物理電路實驗中,我們連接好電路,然后給他加上電源通電,驗證電路是否連接正確。
在Verilog設計中,我們的“設計塊”就是電路,“激勵塊”就是電源,“仿真測試”就是通電。這樣的類比應該非常清晰明確了,再畫個表格對比。

Verilog HDL電路實驗
設計塊電路
激勵塊電源
仿真測試電路通電

激勵塊的作用:
給設計塊加上具備指定特征的信號,來測試設計塊的正確性和效率

激勵塊的兩種設計模式:

  1. 激勵塊中調用設計塊實例,直接接入信號驅動設計塊
  2. 生成一個新的“虛擬的”頂層模塊,調用激勵塊實例和設計塊實例,讓二者接口進行交互,通過信號傳遞間接驅動設計塊

舉個例子你就明白了

  • 方式一:手動點火來引爆炸藥
  • 方式二:使用引爆器引爆炸藥

2.2.3 使用規則

  • 模塊、模塊實例和激勵塊的命名,必須是唯一的,不能重名
  • 模塊不能嵌套定義,但是模塊內部可以進行其他模塊的聲明或調用其他模塊實例
  • 模塊由module開始,endmodule結束

2.2.4 示例

2.3 思考:層次建模在Verilog與C/C++應用的區別

層次建模的思想,一直都應該存在,但是在具體實現中,Verilog設計使用自上而下的設計是可能的,因為模塊相對簡單,接口相對確定,只需要設置好接口,知道需要的模塊和功能即可。

但是對于高級語言來說,自上而下的在紙上設計框架是可以的,具體實現并不能這樣的做,因為它的低層框架同樣是非常復雜的,并不能直接提前設計好,尤其是對于大框架嵌套小框架的情況,一定要先設計好小框架,再完成大框架,也就是自上而下地設計自下而上地實現

對于并行的中層框架來說,實現順序也需要按照執行順序來編寫。

2.4 疑問解答

對于第一章提到的問題,現在可以解答了。【Verilog HDL學習之路】第一章 Verilog HDL 數字設計總論

問題1:對于過程“RTL級描述描述–>門級網表”,門級網表等同于門級描述嗎?

問題2:行為級綜合工具的出現允許Verilog HDL進行行為級描述,那么它是可以將行為級描述轉換為RTL級描述嗎?

回答以上兩個問題,Verilog HDL的設計者可以使用四種抽象層次對模塊進行描述,最終通過綜合工具后,一般生成的是門級結構的描述

另外補充一點,RTL級描述,通常指的是能夠被邏輯綜合工具接受的行為級描述和數據流級描述的混合描述

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

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

相關文章

stm32機械臂資料含視頻

這是在網上買的機械臂的資料 含視頻及相關軟件 在這里分享給大家 不過很大 但是內容很全 鏈接:https://pan.baidu.com/s/1Fd18ww8jxLH8ChqomstZtw 提取碼:147g

【Verilog HDL】第四章 模塊的端口連接規則——污水處理模型

先放上連接規則的簡圖,再詳細解釋 1. 構建模型——污水處理之流水模型 我們先將上述結構構件一個簡單模型,以幫助我們理解。 污水:輸入數據凈水:輸出數據雙向數據暫不討論,取輸入和輸出的交集即可污水處理廠&…

藍橋杯嵌入式第七屆模擬題 代碼

鏈接:https://pan.baidu.com/s/1fdGC20A51axxPGpoyRL8-w 提取碼:by4u

三級嵌入式選擇知識點整理

SoC芯片 通用SoC是系統級芯片 既可以是單核 也可以是多核 該芯片中可以包含數字電路 模擬電路 數字模擬混合電路 及射頻電路 片上系統可使用單個芯片進行數據的采集 轉換 儲存 處理 及I/O口功能 智能手機 和平板都使用的SOC WAV是未壓縮的數字音頻 音質與CD相當 音頻視頻壓縮…

【Verilog HDL】命名的規則研究

Verilog命名規范參考資料 1. 什么可以被命名? 模塊的名稱模塊實例的名稱各種數據類型的名稱 這些名稱我們稱之為標識符,標識符的命名規則不再強調,與C語言類似,字母、數字、下劃線(_)和美元符號&#xf…

【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…