【Verilog HDL學習之路】第一章 Verilog HDL 數字設計總論

1 Verilog HDL 數字設計總論

1.1 幾個重要的概念

  • EDA(Electronic Design Automation)
    電子技術自動化

  • EDA工具
    類似于軟件工程中的IDE(集成開發環境),能夠使用Verilog HDL語言描述電路設計,并且能夠通過邏輯綜合工具將用Verilog HDL描述的電路自動轉換為門級網表,當然還有其他的一些功能,并且EDA工具的功能越來越強大。

    接下來的章節中,我將使用Vivado 2017.4來進行數字電路設計。

  • RTL(Register Transfer Level):
    寄存器傳輸級

  • RTL級描述
    即:寄存器傳輸級描述,一般會使用專業術語RTL級描述,講這個概念拆分為兩部分:寄存器傳輸級

    在本概念中,寄存器相當于科技黑箱(也就是你只需要知道它的外部接口,以及如何使用,不必管內部是什么),寄存器在本概念中不是重點 ,重點是對于傳輸的描述

    這也就是說,設計者需要

    • 在概念模型的層次描述清楚數據是如何在寄存器之間傳輸的
    • 在RTL級描述的層次,使用Verilog HDL語言來“翻譯”構建的概念模型(這種概念模型,在數字設計中被稱為“行為描述”)。
信息1
信息2
信息3
寄存器1
寄存器2
寄存器3

對于這樣的總體結構來說,設計者無需管寄存器或信息內部細節是什么,只需要描述好他們之間的聯系,將連線部分內容以及他們的接口描述清楚,并且能夠調用信息和寄存器即可進行RTL級描述。

可以將RTL級描述與《數據結構》這門課程進行類比學習,這樣你能更輕松明白其含義。

Verilog HDL數據結構
行為描述ADT模型
RTL級描述ADT模型的實現

如果你之前沒有學過數據結構這門課程,沒有關系,接下來我來解析一下行為描述。

  • 行為描述
    對于一個現實問題,設計者通過分析問題,從抽象的角度,設計出數字電路的總體結構、功能和接口,這也就是行為描述。然后,設計者就可以根據行為描述來進行RTL級描述了。

1.2 典型數字設計流程

先給出當今時代,典型的數字流程設計流程,然后做出解釋

設計者分析問題
邏輯綜合工具/時序驗證
現實問題 設計要求說明
行為描述
RTL級描述
功能驗證和測試
門級網表
邏輯驗證和測試
其他
  • 對于RTL級描述的后續內容,將會使用Vivado軟件進行講解,在后續內容將會詳細提及,目前先了解如下內容即可。

    • 邏輯綜合工具:將RTL級描述描述自動轉換為門級網表,但是自動轉換的門級網表不一定是優化的方案
  • 對于【行為描述】–>【RTL級描述】部分,談及之前,先來說明一下Verilog HDL的幾種描述方式

描述方式抽象程度應用對比學習
門級描述常嵌套在RTL級描述中比匯編語言還底層一些
RTL級描述目前主流都是用它匯編語言
行為級描述暫時沒有成為主流高級語言 C/C++
開關級暫不談高級主題先不管

特別注意:在實際數字設計中,RTL級(寄存器傳輸級)描述通常是指能夠被邏輯綜合工具接受的行為級描述和數據流級描述的混合描述,這里對于RTL級描述做了概念上的拓展,不再單純指數據流級描述。

對于行為描述來說,可以使用這三種形式中任意形式來進行實現,并且,對于同一個數字電路模型,這三種形式可以混合使用

目前的主流是使用RTL級描述,行為級描述在更加抽象的程度上來實現了行為描述,行為級綜合工具允許直接對電路的算法和行為進行描述,它最符合人類思維方式,基于C/C++描述,但是有些RTL級描述做的事情它并不能完成,目前暫時沒有得到主流設計者的認可。

至于門級描述,它就像匯編語言一樣,非常繁瑣麻煩和惡心,人們很少會直接使用他,但是會在特定的情況下, 為了提高電路的速度,在RTL級描述中嵌套一些必要的門級描述(因為自動生成的門級網表不一定是優化的)。這就好像,軟件工程師(比如C++工程師)可能會在他們的程序中直接自定義導入一些由匯編語言編輯的代碼一樣。

簡而言之,數字電路設計者要先分析問題得出行為描述,然后使用RTL級描述來實現行為描述,為了提高電路速度,可以在RTL級描述中嵌套門級描述。

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

待解決

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

待解決

問題3:行為級描述與RTL級描述的區別?行為級描述能夠完成RTL級描述的所有事情嗎?

目前來說,行為級描述只能完成部分工作,以減輕進行RTL級描述的負擔,但是有些工作只能用RTL級描述來完成。

至于區別,舉一個例子,以Python和C++作比較,對于【輸出“你好!”】這件事情。

Python會這樣做

print("你好!")

但是C++卻需要寫這么長的內容

#include <iostream>
int main()
{std::cout << "你好!";return 0;
}

顯然,對比之下,Python是高效的。不過,有些事情Python做不到,但是C++可以完成,比如對內存的管理。不過整體來說,Python確實比C++高效。

Python與C++的對比,廣義上來說,可以相當于行為級描述與RTL級描述的對比,我這樣說,你應該明白了,不過這樣的比喻可能并不是很嚴謹,我想通過類比的方法讓你更容易理解這件事,不過你也要明白,類比并不能夠一 一對照完全相同。

1.3 系統級設計

在這里簡單介紹一下系統級設計,它相當于一個大型企業項目,也可以相當于一個圖片設計作品。

C++有STL庫,程序員可以直接調用別人已經完成的模塊,來完成自己的項目;圖片設計中,設計師可以直接使用一些已有的素材,將它們進行加工處理來完成自己的設計作品。這樣的做法效率會很高。

所以,在系統級設計中,設計者也可以做類似的事情來提高效率,設計者可以使用已有的功能模塊來快速搭建自己的系統,然后通過RTL級描述來使他們建立起聯系。

我舉一個例子來說明這一點

設計一個含有CPU、圖形處理芯片、I/O芯片和系統總線的系統

這時候,設計者可以直接使用CPU設計者完成的CPU,圖形處理芯片和I/O芯片以及第三方提供的系統總線來快速搭建系。

CPU
圖形處理芯片
I/O芯片
系統總線

設計者只需對他們進行RTL級描述,進行系統級仿真等等。這樣做效率很高,在工程上大大縮短了開發周期,降低了開發成本。

1.4 小結

將最重要的內容,以最精簡的方式呈現出來。

  • EDA與EDA工具:能夠幫助硬件開發設計者高效率完成開發工作
  • 行為描述,類似于ADT抽象模型
  • 行為描述的實現(可以互相嵌套)
    • 行為級描述
    • RTL級描述【最常用】
    • 門級描述
    • 開關級描述
  • 自動化功能
    • 行為級綜合工具
    • 邏輯綜合工具
  • 驗證與優化流程
  • 具體實現到物理版圖上(不必掌握)

目前來說有個印象記個大概即可,因為這些都是概述,后期不斷掌握其細節后,會逐漸加深理解他們!

1.5 章節檢測

回顧復習本章的重要內容,如果不能完全掌握,請回顧復習,不要繼續往下學!

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

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

相關文章

【學會如何學習系列】從嬰兒到大學——學習的本質從未改變過

從嬰兒到大學——學習的本質從未改變過 從我們出生一直到現在&#xff0c;其實&#xff0c;學習的本質從來都沒有改變過&#xff0c;并且&#xff0c;嬰兒時期的我們&#xff0c;是學習能力最強的時候&#xff0c;隨著我們不斷長大&#xff0c;外界的誘惑越來越多&#xff0c;…

【匯編語言學習之路】第一章 匯編語言核心方法論

版權聲明&#xff1a;本學習筆記是本人根據小甲魚“匯編語言學習課程”和《匯編語言》&#xff08;王爽&#xff09;的書籍&#xff0c;來記錄筆記的 1 匯編語言核心方法論 1.1 學習匯編語言的必要性 匯編語言與機器語言是一一對應關系&#xff0c;它的本質是機器語言的代號。…

藍橋單片機賽題及模擬題代碼

鏈接&#xff1a;https://pan.baidu.com/s/1BVB6VILEed0ufqRDMhvALg 提取碼&#xff1a;ukx7

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

2 Verilog HDL的設計方法學——層次建模 重要的思想&#xff1a; 在語文教學中&#xff0c;應該先掌握核心方法論&#xff0c;再用正確的方法論去做題目&#xff0c;這樣能夠逐漸加深對于方法論的理解&#xff0c;做題的速度和準確率也會越來越高。在Verilog HDL中&#xff0c…

stm32機械臂資料含視頻

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

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

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

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

鏈接&#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…