【Verilog HDL学习之路】第一章 Verilog HDL 数字设计总论
1 Verilog HDL 數(shù)字設(shè)計(jì)總論
1.1 幾個(gè)重要的概念
-
EDA(Electronic Design Automation)
電子技術(shù)自動(dòng)化 -
EDA工具
類似于軟件工程中的IDE(集成開(kāi)發(fā)環(huán)境),能夠使用Verilog HDL語(yǔ)言描述電路設(shè)計(jì),并且能夠通過(guò)邏輯綜合工具將用Verilog HDL描述的電路自動(dòng)轉(zhuǎn)換為門級(jí)網(wǎng)表,當(dāng)然還有其他的一些功能,并且EDA工具的功能越來(lái)越強(qiáng)大。接下來(lái)的章節(jié)中,我將使用Vivado 2017.4來(lái)進(jìn)行數(shù)字電路設(shè)計(jì)。
-
RTL(Register Transfer Level):
寄存器傳輸級(jí) -
RTL級(jí)描述
即:寄存器傳輸級(jí)描述,一般會(huì)使用專業(yè)術(shù)語(yǔ)RTL級(jí)描述,講這個(gè)概念拆分為兩部分:寄存器和傳輸級(jí)在本概念中,寄存器相當(dāng)于科技黑箱(也就是你只需要知道它的外部接口,以及如何使用,不必管內(nèi)部是什么),寄存器在本概念中不是重點(diǎn) ,重點(diǎn)是對(duì)于傳輸?shù)拿枋?/strong>。
這也就是說(shuō),設(shè)計(jì)者需要
- 在概念模型的層次描述清楚數(shù)據(jù)是如何在寄存器之間傳輸?shù)?/strong>;
- 在RTL級(jí)描述的層次,使用Verilog HDL語(yǔ)言來(lái)“翻譯”構(gòu)建的概念模型(這種概念模型,在數(shù)字設(shè)計(jì)中被稱為“行為描述”)。
對(duì)于這樣的總體結(jié)構(gòu)來(lái)說(shuō),設(shè)計(jì)者無(wú)需管寄存器或信息內(nèi)部細(xì)節(jié)是什么,只需要描述好他們之間的聯(lián)系,將連線部分內(nèi)容以及他們的接口描述清楚,并且能夠調(diào)用信息和寄存器即可進(jìn)行RTL級(jí)描述。
可以將RTL級(jí)描述與《數(shù)據(jù)結(jié)構(gòu)》這門課程進(jìn)行類比學(xué)習(xí),這樣你能更輕松明白其含義。
| 行為描述 | ADT模型 |
| RTL級(jí)描述 | ADT模型的實(shí)現(xiàn) |
如果你之前沒(méi)有學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu)這門課程,沒(méi)有關(guān)系,接下來(lái)我來(lái)解析一下行為描述。
- 行為描述
對(duì)于一個(gè)現(xiàn)實(shí)問(wèn)題,設(shè)計(jì)者通過(guò)分析問(wèn)題,從抽象的角度,設(shè)計(jì)出數(shù)字電路的總體結(jié)構(gòu)、功能和接口,這也就是行為描述。然后,設(shè)計(jì)者就可以根據(jù)行為描述來(lái)進(jìn)行RTL級(jí)描述了。
1.2 典型數(shù)字設(shè)計(jì)流程
先給出當(dāng)今時(shí)代,典型的數(shù)字流程設(shè)計(jì)流程,然后做出解釋
設(shè)計(jì)者分析問(wèn)題邏輯綜合工具/時(shí)序驗(yàn)證現(xiàn)實(shí)問(wèn)題 設(shè)計(jì)要求說(shuō)明行為描述RTL級(jí)描述功能驗(yàn)證和測(cè)試門級(jí)網(wǎng)表邏輯驗(yàn)證和測(cè)試其他-
對(duì)于RTL級(jí)描述的后續(xù)內(nèi)容,將會(huì)使用Vivado軟件進(jìn)行講解,在后續(xù)內(nèi)容將會(huì)詳細(xì)提及,目前先了解如下內(nèi)容即可。
- 邏輯綜合工具:將RTL級(jí)描述描述自動(dòng)轉(zhuǎn)換為門級(jí)網(wǎng)表,但是自動(dòng)轉(zhuǎn)換的門級(jí)網(wǎng)表不一定是優(yōu)化的方案
-
對(duì)于【行為描述】–>【RTL級(jí)描述】部分,談及之前,先來(lái)說(shuō)明一下Verilog HDL的幾種描述方式
| 門級(jí)描述 | 低 | 常嵌套在RTL級(jí)描述中 | 比匯編語(yǔ)言還底層一些 |
| RTL級(jí)描述 | 中 | 目前主流都是用它 | 匯編語(yǔ)言 |
| 行為級(jí)描述 | 高 | 暫時(shí)沒(méi)有成為主流 | 高級(jí)語(yǔ)言 C/C++ |
| 開(kāi)關(guān)級(jí) | 暫不談 | 高級(jí)主題先不管 |
特別注意:在實(shí)際數(shù)字設(shè)計(jì)中,RTL級(jí)(寄存器傳輸級(jí))描述通常是指能夠被邏輯綜合工具接受的行為級(jí)描述和數(shù)據(jù)流級(jí)描述的混合描述,這里對(duì)于RTL級(jí)描述做了概念上的拓展,不再單純指數(shù)據(jù)流級(jí)描述。
對(duì)于行為描述來(lái)說(shuō),可以使用這三種形式中任意形式來(lái)進(jìn)行實(shí)現(xiàn),并且,對(duì)于同一個(gè)數(shù)字電路模型,這三種形式可以混合使用。
目前的主流是使用RTL級(jí)描述,行為級(jí)描述在更加抽象的程度上來(lái)實(shí)現(xiàn)了行為描述,行為級(jí)綜合工具允許直接對(duì)電路的算法和行為進(jìn)行描述,它最符合人類思維方式,基于C/C++描述,但是有些RTL級(jí)描述做的事情它并不能完成,目前暫時(shí)沒(méi)有得到主流設(shè)計(jì)者的認(rèn)可。
至于門級(jí)描述,它就像匯編語(yǔ)言一樣,非常繁瑣麻煩和惡心,人們很少會(huì)直接使用他,但是會(huì)在特定的情況下, 為了提高電路的速度,在RTL級(jí)描述中嵌套一些必要的門級(jí)描述(因?yàn)樽詣?dòng)生成的門級(jí)網(wǎng)表不一定是優(yōu)化的)。這就好像,軟件工程師(比如C++工程師)可能會(huì)在他們的程序中直接自定義導(dǎo)入一些由匯編語(yǔ)言編輯的代碼一樣。
簡(jiǎn)而言之,數(shù)字電路設(shè)計(jì)者要先分析問(wèn)題得出行為描述,然后使用RTL級(jí)描述來(lái)實(shí)現(xiàn)行為描述,為了提高電路速度,可以在RTL級(jí)描述中嵌套門級(jí)描述。
問(wèn)題1:對(duì)于過(guò)程“RTL級(jí)描述描述–>門級(jí)網(wǎng)表”,門級(jí)網(wǎng)表等同于門級(jí)描述嗎?
待解決
問(wèn)題2:行為級(jí)綜合工具的出現(xiàn)允許Verilog HDL進(jìn)行行為級(jí)描述,那么它是可以將行為級(jí)描述轉(zhuǎn)換為RTL級(jí)描述嗎?
待解決
問(wèn)題3:行為級(jí)描述與RTL級(jí)描述的區(qū)別?行為級(jí)描述能夠完成RTL級(jí)描述的所有事情嗎?
目前來(lái)說(shuō),行為級(jí)描述只能完成部分工作,以減輕進(jìn)行RTL級(jí)描述的負(fù)擔(dān),但是有些工作只能用RTL級(jí)描述來(lái)完成。
至于區(qū)別,舉一個(gè)例子,以Python和C++作比較,對(duì)于【輸出“你好!”】這件事情。
Python會(huì)這樣做
print("你好!")但是C++卻需要寫這么長(zhǎng)的內(nèi)容
#include <iostream> int main() {std::cout << "你好!";return 0; }顯然,對(duì)比之下,Python是高效的。不過(guò),有些事情Python做不到,但是C++可以完成,比如對(duì)內(nèi)存的管理。不過(guò)整體來(lái)說(shuō),Python確實(shí)比C++高效。
Python與C++的對(duì)比,廣義上來(lái)說(shuō),可以相當(dāng)于行為級(jí)描述與RTL級(jí)描述的對(duì)比,我這樣說(shuō),你應(yīng)該明白了,不過(guò)這樣的比喻可能并不是很嚴(yán)謹(jǐn),我想通過(guò)類比的方法讓你更容易理解這件事,不過(guò)你也要明白,類比并不能夠一 一對(duì)照完全相同。
1.3 系統(tǒng)級(jí)設(shè)計(jì)
在這里簡(jiǎn)單介紹一下系統(tǒng)級(jí)設(shè)計(jì),它相當(dāng)于一個(gè)大型企業(yè)項(xiàng)目,也可以相當(dāng)于一個(gè)圖片設(shè)計(jì)作品。
C++有STL庫(kù),程序員可以直接調(diào)用別人已經(jīng)完成的模塊,來(lái)完成自己的項(xiàng)目;圖片設(shè)計(jì)中,設(shè)計(jì)師可以直接使用一些已有的素材,將它們進(jìn)行加工處理來(lái)完成自己的設(shè)計(jì)作品。這樣的做法效率會(huì)很高。
所以,在系統(tǒng)級(jí)設(shè)計(jì)中,設(shè)計(jì)者也可以做類似的事情來(lái)提高效率,設(shè)計(jì)者可以使用已有的功能模塊來(lái)快速搭建自己的系統(tǒng),然后通過(guò)RTL級(jí)描述來(lái)使他們建立起聯(lián)系。
我舉一個(gè)例子來(lái)說(shuō)明這一點(diǎn)
設(shè)計(jì)一個(gè)含有CPU、圖形處理芯片、I/O芯片和系統(tǒng)總線的系統(tǒng)
這時(shí)候,設(shè)計(jì)者可以直接使用CPU設(shè)計(jì)者完成的CPU,圖形處理芯片和I/O芯片以及第三方提供的系統(tǒng)總線來(lái)快速搭建系。
CPU圖形處理芯片I/O芯片系統(tǒng)總線設(shè)計(jì)者只需對(duì)他們進(jìn)行RTL級(jí)描述,進(jìn)行系統(tǒng)級(jí)仿真等等。這樣做效率很高,在工程上大大縮短了開(kāi)發(fā)周期,降低了開(kāi)發(fā)成本。
1.4 小結(jié)
將最重要的內(nèi)容,以最精簡(jiǎn)的方式呈現(xiàn)出來(lái)。
- EDA與EDA工具:能夠幫助硬件開(kāi)發(fā)設(shè)計(jì)者高效率完成開(kāi)發(fā)工作
- 行為描述,類似于ADT抽象模型
- 行為描述的實(shí)現(xiàn)(可以互相嵌套)
- 行為級(jí)描述
- RTL級(jí)描述【最常用】
- 門級(jí)描述
- 開(kāi)關(guān)級(jí)描述
- 自動(dòng)化功能
- 行為級(jí)綜合工具
- 邏輯綜合工具
- 驗(yàn)證與優(yōu)化流程
- 具體實(shí)現(xiàn)到物理版圖上(不必掌握)
目前來(lái)說(shuō)有個(gè)印象記個(gè)大概即可,因?yàn)檫@些都是概述,后期不斷掌握其細(xì)節(jié)后,會(huì)逐漸加深理解他們!
1.5 章節(jié)檢測(cè)
回顧復(fù)習(xí)本章的重要內(nèi)容,如果不能完全掌握,請(qǐng)回顧復(fù)習(xí),不要繼續(xù)往下學(xué)!
總結(jié)
以上是生活随笔為你收集整理的【Verilog HDL学习之路】第一章 Verilog HDL 数字设计总论的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【C++学习之路】第一章——C++核心方
- 下一篇: 原神绝云间遇仙人在哪