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

0 確定問題的討論層級與范圍

本文討論的層次是

  • 數字邏輯與Verilog HDL語言

討論的范圍是:

  • 數據存儲而不是討論邏輯

1 線網類型

1.1 wire類型

這個暫時沒什么好說的,一般常用的就是wire類型,需要注意的是:

  • 默認是標量,相當于一個二進制位
  • 不能隨意存儲數據,只能流通數據
  • 可以使用向量和數組修飾進行拓展
wire
一個二進制位
一根導線
wire + 向量修飾
多二進制位
總線

2 寄存器類型

2.1 reg類型

2.1.1 關于無符號數的問題

先接受一個事實,聲明為reg類型的寄存器為無符號數,integer和real類型為有符號數,請先接受這個事實,不要懷疑它,接下來我將通過實驗為你驗證它的確如此!

reg a = -4‘d9;
reg b = -4'sd9;

輸出均為 7 也就是負數的補碼對應的十進制數字

2.1.2 關于越界的問題——數據存儲的通用法則

這與邏輯運算不同,不是非0即為1,遵循的規則是:

越界丟失

事實上,這條規則對于所有的需要使用數值的數據類型都適用,對于reg和net一類類型都一樣的

簡而言之,不能吃太飽,要是撐破了,多出來的部分就會歸零。

例如:

reg a = 112;
$display ("a = %b\n",a);

輸出為:

a = 0;

因為a是一位,112的二進制為111 0000,故前幾位丟失,只保留最后一位0

因此,如果a = 113那么將會被儲存為1
在這里插入圖片描述
得到輸出結果:
在這里插入圖片描述
擴展:多角度分析數值越界問題

2.1.3 關于補碼的問題

計算機只要知道這是個補碼,肯定會正確翻譯出來一個負數,但是,得用正確的數據類型才行,否則依然不能正確翻譯出來,比如對于負數,不能使用reg類型, 只能用integer或者real這種支持有符號數的數據類型

2.2 integer類型

用來表示整數,可以有正負號

最小32位,輕易不用管它,不用指定位寬,按照默認就好,說了最小32位就是32位,指定31位也會變成32位,這種規則不要挑戰,沒有用的。

2.3 real類型

用來表示實數,即可以表述帶小數點的數,可以有正負號

2.4 time類型

最小64位,與具體實現有關,用來表示時間,通常與$time配合使用

time sim_time = $time; // 存儲當前仿真時間

2.5 小結

類型使用位寬備注字符串格式
reg一般通用默認為1無符號數%b %B
integer整數最小32位有符號數%d %D
real實數最小32位有符號數%f %F
time仿真時間最小64位表示仿真時間%t %T

注意:

  • 以上4個類型中,只有reg類型能加向量修飾,以便于進行位寬的拓展integer和real類型與主機字的位數一致,與具體實現有關
  • time位數與具體實現有關
  • 字符串的顯示看具體需求,無強制要求,上述只是列舉了針對性對應的字符串

補充概念:計算機的字的位數
計算機位,字,字節,字長詳解

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

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

相關文章

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;方面人類使用&…

線程間通信————同步

同步 是指多個任務按照約定的先后次序 相互配合完成一件事情 信號量&#xff1a; 由信號量決定 線程是繼續執行 還是阻塞等待 信號量代表某種資源 其值表示系統中該資源的數量 信號量是一個受保護的量 只能通過特定的三種操作來訪問 初始化 P操作&#xff08;申請資源&…

【計算機組成原理 數字邏輯 Verilog】32位加法器的實現:支持整數的加減運算

目錄0 前言0.1 使用環境0.2 知識點0.3 注意事項1 建模&#xff1a;1位加法器1.1 構建基礎模型1.1.1 一位加法器1.1.1.1 科技黑箱&#xff1a;外部端口與功能1.1.1.2 揭秘黑箱&#xff1a;內部結構與模塊1.1.2 從頂層模塊提取低層模塊&#xff1a;取反功能選擇器1.1.2.1 科技黑箱…

線程間通信————互斥

互斥 臨界資源 一次只允許一個任務&#xff08;進程&#xff0c;線程)訪問的共享資源 臨界區 訪問臨界資源的代碼 互斥機制 mutex互斥鎖 任務訪問臨界資源前申請鎖 訪問完后釋放鎖 互斥鎖初始化 #include <pthread.h> int pthread_mutex_init(pthread_mutex_t *mute…

【Verilog HDL】門級描述 / 數據流描述 / 行為級描述——通過四選一多路選擇器,實現對于不同層級描述方式的整體性認知

目錄0 前言1 輸出端口的設計1.1 門級描述和數據流描述1.2 行為級描述2 三種描述方式的整體架構2.1 門級描述2.2 數據流描述2.3 行為級描述2.4 補充&#xff1a;獨立的語句2.5 小結3 理解三種描述方式的本質3.1 門級描述3.2 數據流描述3.3 行為級描述4 理解不同抽象層級描述方式…

線程創建-結束-回收 教程

ps aux -L 查看線程信息 且顯示進程狀態 使用進程的缺點: 進程切換 系統開銷較大 開銷大的原因 &#xff1a;切換時需要頻繁刷新 cache(類似于緩沖區) 和TLB linux不區分線程 進程 線程其實也屬于進程 只不過是特殊的進程 是一種可以共享地址空間的進程 使用線程的優點&#x…

【匯編語言】匯編實驗IDE(集成開發環境):RadASM的安裝和使用說明

0 前言 本文適合8086CPU的指令集。 對于重要的專業基礎課程&#xff0c;匯編語言&#xff0c;做實驗是必不可少的&#xff0c;但是由于匯編語言本身的缺陷&#xff0c;現代計算機并不能直接運行匯編語言程序&#xff0c;因此&#xff0c;一般老師會要求我們 使用虛擬機&…

【匯編語言】理解8086CPU中,不同類型的寄存器和匯編指令規則的聯系(會繼續更新)

0 前言 你是否因為匯編指令繁雜的規則而苦惱呢&#xff1f;作者本人也很煩&#xff0c;因為往往教材中只告訴我們規則&#xff0c;卻不告訴我們為什么&#xff0c;沒有原因就直接記憶&#xff0c;負擔太大&#xff0c;后期靈活運用也增添阻力&#xff0c;因此&#xff0c;我經…

System V IPC之信號燈

信號燈也叫信號量 用于進程/線程同步或互斥的機制 信號燈的類型 1.Posix 無名信號燈 2.Posix 有名信號燈 3.System V 信號燈 信號燈的含義 計數信號燈&#xff08;1和2都是&#xff09; System V信號燈是一個或多個計數信號燈的集合&#xff08;可操作集合中的多個信號燈&…

【VS 2017 C語言 匯編語言】如何使用VS 2017,通過反匯編查看C語言代碼對應的32位x86匯編語言 VS 2017單步調試的使用

0 前言 本文適用于VS的大多數版本&#xff0c;本文以VS 2017為例進行講解。 1 編輯C語言代碼 首先&#xff0c;在VS編譯器中&#xff0c;創建項目&#xff0c;敲一段C語言代碼&#xff0c;這個過程不解釋了&#xff0c;如果不會請百度。 #include <stdio.h> #include…