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

先放上連接規則的簡圖,再詳細解釋
接口連接規則

1. 構建模型——污水處理之流水模型

我們先將上述結構構件一個簡單模型,以幫助我們理解。
污水處理模型

  • 污水:輸入數據
  • 凈水:輸出數據
  • 雙向數據暫不討論,取輸入和輸出的交集即可
  • 污水處理廠:模塊(設計塊/激勵塊)

2. 結構——放大模型,展現細節

這里只對input和output進行展現,先暫時不管inout。

在展現之前,先來明確對于幾個重要概念的理解

2.0 深入理解規則才能打破規則!

問題1:net類型和reg類型究竟有什么區別?
問題2:為什么這幾個接口的類型要這樣限定?

2.1 net與reg的區別——水管閥門模型

我們將數據比喻為,數據的處理過程就像水在水管中流動一樣

  • net類型:無閥門的水管,只能讓水流動,不能儲存。
    無閥門水管

  • reg類型:雙閥門的水管,即可以讓水流動,也能存儲水。
    在這里插入圖片描述

    • reg類型需要接收數據,則打開閥門A,水滿之后關閉閥門A,就實現了存儲數據
    • 需要使用數據的時候,則可以打開閥門B
    • 需要讓數據流入后直接流出,則可以同時打開A和B,這時候就和net類型的功能一樣
  • 需要強調的是:reg和net是一類數據類型的總稱,將這個類型分別類比為兩種水管;這是粗略的模型,具體細分的數據類型再進一步展開即可。

2.2 構建結構——污水處理模型細節化

結構
下面我們來逐一分析一下:

  • ①輸入端口的外部:
    可以是reg或者net,因為外部的污水可以是從別處直接流過來的,也可以是之前被保存起來,然后再開閘流過來的
  • ②輸入端口的外部:
    來者不拒!外面流過來污水,就必須接收!
  • ③輸出端口的內部:
    • 凈水可以直接留到外面去
    • 凈水也可以被保留起來,它可能會被回環用于污水處理過程,這是由其實際需求而被規定的,如果有需求就用,沒有就不用。
  • ④輸出端口的外部:
    輸出的凈水不能被封閉起來,一定要被排出去,否則就堵死了!

接下來,我們繼續優化這個模型,增加結構的細節!
結構優化
好的我想你是能夠理解這個圖形的,對于輸出端口,內部可能回環再利用,外部可能直接輸出,也可能返回來在進入輸入,這些都可能發生的,具體怎么設定,看實際需求。

另外,對于①和③,也可以是無閥門的管道,這點我再強調一遍。

2.3 三種模式——端口與外部信號的連接模式

  1. 進去之后全部出去(與門)
    進去后全部出去
  2. 進去后部分出去,部分回來(T觸發器)
    進去部分出,部分回
  3. 多門路互相影響(SR鎖存器)
    雙門路影響

2.4 reg與net 的使用原則

  • 對于內部接口的設置
    • 不寫就默認wire
    • 特殊需求:輸出顯式使用reg
  • 對于外部接口的設置
    看實際需求和使用習慣!

這一部分簡單看看就可以,不用深入了解,這些原則的使用方法,應該由大量實踐得出。

3. 回歸Verilog——結構的實現

我想,你通過污水處理結構,已經能夠對Verilog端口連接規則有了理解,并且,事實上你非常輕松地理解了它!

下面讓我們上升一個抽象層次,看一看具體在Verilog中是如何使用端口連接規則的。

以下采用

  • EDA工具:Vivado 2017.4
  • 代碼風格:ANSI C風格
  • 端口連接:命名端口連接

3.1 內部模塊的端口設計

module show(input a,input [3:0] b,output c,output reg d);
……<模塊內容>
……
endmodule

注:也可以使用 input a,b 的形式,對于代碼風格,也需要參考EDA工具的支持情況,不同工具的使用規則可能不一樣。

3.2 模塊與外部信號的連接

對于外部信號而言,不是reg就是net類型,怎么著都應該能夠輸入進如其他的模塊實例,因此,也就能夠進一步理解,為什么輸入端口的外部允許reg和net類型的數據了

這里只講解命名端口連接規則,先給出實例,模塊show為底層模塊,而模塊show_up為其上一級模塊。

module show_up(input aa,input [3:0] bb,output cc,output reg dd;);show s1(	//調用模塊實例并且進行端口連接.a(aa),.b(bb),.c(cc),// .d(dd) 非法連接!reg類型的外部信號,不能連到輸出端口上// 可以選擇不連接,或者修改為net類型);
……
<模塊內容>
……
endmodule

需要注意的幾個問題:

  • 警惕輸出端口非法連接
    外部信號與模塊端口連接的時候,reg類型的輸出信號不能與輸出信號連接,可以有以下修改方式(由需求決定):
    • 將reg類型變為net類型
    • 增加一個wire類型的輸出與之相連,reg類型的輸出不進行端口連接
  • 模塊實例的端口可以不連接
  • 模塊內外兩部分的位寬要匹配,否則可能出現問題

4. 實戰經驗

對于一整個設計模型而言,如果子模塊的輸出端口均與它的上級模塊連接,那么,整個設計系統中,只有葉單元的(內部)輸出端口可以是reg類型,其余是上層單元只能是net類型

這個不做過多解釋,我相信你能夠想明白,只需要你在設計模塊端口的時候注意這個問題!

一般情況下,輸出端口默認wire即可,除非特殊情況采用reg!

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

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

相關文章

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

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

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

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

【Verilog HDL】命名的規則研究

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

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

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

三級嵌入式填空整理

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

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

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

三級嵌入式 匯編指令匯總

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

【Verilog HDL】語句的并發執行

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

linux下 最常用基本命令

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

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

1. 端口設計的方法 1.1 數據選擇器 以四選一數據選擇器為例&#xff0c;需要的不同接口類型為 輸入端口 數據輸入端口地址輸入端口使能端&#xff08;控制與拓展&#xff09; 輸出端口 數據輸出端口 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語言 討論的范圍是&#xff1a; 數據存儲而不是討論邏輯 1 線網類型 1.1 wire類型 這個暫時沒什么好說的&#xff0c;一般常用的就是wire類型&#xff0c;需要注意的是&#xff1a; 默認是標量&…

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

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

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

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

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

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

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