【Verilog HDL学习之路】第二章 Verilog HDL的设计方法学——层次建模
2 Verilog HDL的設(shè)計(jì)方法學(xué)——層次建模
- 重要的思想:
在語(yǔ)文教學(xué)中,應(yīng)該先掌握核心方法論,再用正確的方法論去做題目,這樣能夠逐漸加深對(duì)于方法論的理解,做題的速度和準(zhǔn)確率也會(huì)越來越高。 - 在Verilog HDL中,該思想同樣適用,在編程,軟件開發(fā)也一樣如此
2.1 設(shè)計(jì)方法學(xué)——層次建模
2.1.1 方法理論
- 自上而下設(shè)計(jì)方法
設(shè)計(jì)者先設(shè)計(jì)出頂層模塊,然后將其拆解,分析出其內(nèi)部模塊,再進(jìn)一步為更小的、已知的功能單元。用流程圖可以進(jìn)行如下表示
頂層模塊子模塊1子模塊2子模塊3葉單元葉單元葉單元葉單元圖示:
- 自下而上的設(shè)計(jì)方法
設(shè)計(jì)者使用功能確定是小的功能單元,組合成大的功能單元,然后逐漸增大,流程圖即上面的箭頭反向
2.1.2 實(shí)際應(yīng)用
在實(shí)際使用設(shè)計(jì)方法學(xué)的過程中,往往采用二者結(jié)合的方式,程序員一邊設(shè)計(jì)頂層的架構(gòu),一邊將小模塊組合成大模塊,上下同時(shí)進(jìn)行,然后進(jìn)行對(duì)接。
實(shí)際的流程往往是這個(gè)樣子的
把他們組合起來繼續(xù)組合設(shè)計(jì)整體架構(gòu)拆解為小的單元小單元中,哪些是我能寫出的?哪些是別人開發(fā)好的?哪些能查到?設(shè)計(jì)好小單元構(gòu)成大單元完成整體架構(gòu)這個(gè)過程中,對(duì)于小單元的實(shí)現(xiàn),是自下而上的,對(duì)于整體架構(gòu)的實(shí)現(xiàn),是自上而下的。
當(dāng)然,其實(shí)這樣的流程過于抽象,并且也不是唯一的,我們看后面的實(shí)例部分來深入理解思想即可,大可不必生搬硬套。
2.2 應(yīng)用層次建模思想設(shè)計(jì)Verilog HDL程序
具體內(nèi)容請(qǐng)參考書籍《Verilog HDL:A Guide to Design and Synthesis》(Second Edition)
先來闡述核心概念:
- 模塊與模塊實(shí)例
- 設(shè)計(jì)塊與激勵(lì)塊
2.2.1 模塊與模塊實(shí)例
對(duì)于模塊與模塊實(shí)例的關(guān)系,和C++中模板與模板實(shí)例的關(guān)系是類似的
在Verilog HDL中,模塊是基本功能單元,它可以是
- 葉單元
- 子模塊
- 頂層模塊
在更高級(jí)的模塊中,可以調(diào)用低級(jí)模塊實(shí)例來構(gòu)建,也有了一條重要的原則:
- 下級(jí)模塊實(shí)例,被調(diào)用,來構(gòu)建上級(jí)模塊
總而言之,Verilog的核心設(shè)計(jì),是由模塊構(gòu)成的,不同等級(jí)的模塊通過模塊實(shí)例進(jìn)行相互調(diào)用來建立聯(lián)系
每一個(gè)模塊,都是一個(gè)有接口,有功能,但是內(nèi)部細(xì)節(jié)不可見的科技黑箱
每一個(gè)模塊實(shí)例,都是模塊的副本,可以被它的上級(jí)模塊調(diào)用
2.2.2 設(shè)計(jì)塊與激勵(lì)塊
- 設(shè)計(jì)塊就是2.2.1中構(gòu)建的最上級(jí)的模塊,即頂層模塊
- 激勵(lì)塊就是用來驗(yàn)證設(shè)計(jì)塊的正確性
問題:什么是“激勵(lì)”?
先來舉一個(gè)類似的例子,在物理電路實(shí)驗(yàn)中,我們連接好電路,然后給他加上電源通電,驗(yàn)證電路是否連接正確。
在Verilog設(shè)計(jì)中,我們的“設(shè)計(jì)塊”就是電路,“激勵(lì)塊”就是電源,“仿真測(cè)試”就是通電。這樣的類比應(yīng)該非常清晰明確了,再畫個(gè)表格對(duì)比。
| 設(shè)計(jì)塊 | 電路 |
| 激勵(lì)塊 | 電源 |
| 仿真測(cè)試 | 電路通電 |
激勵(lì)塊的作用:
給設(shè)計(jì)塊加上具備指定特征的信號(hào),來測(cè)試設(shè)計(jì)塊的正確性和效率
激勵(lì)塊的兩種設(shè)計(jì)模式:
舉個(gè)例子你就明白了
- 方式一:手動(dòng)點(diǎn)火來引爆炸藥
- 方式二:使用引爆器引爆炸藥
2.2.3 使用規(guī)則
- 模塊、模塊實(shí)例和激勵(lì)塊的命名,必須是唯一的,不能重名
- 模塊不能嵌套定義,但是模塊內(nèi)部可以進(jìn)行其他模塊的聲明或調(diào)用其他模塊實(shí)例
- 模塊由module開始,endmodule結(jié)束
2.2.4 示例
2.3 思考:層次建模在Verilog與C/C++應(yīng)用的區(qū)別
層次建模的思想,一直都應(yīng)該存在,但是在具體實(shí)現(xiàn)中,Verilog設(shè)計(jì)使用自上而下的設(shè)計(jì)是可能的,因?yàn)槟K相對(duì)簡(jiǎn)單,接口相對(duì)確定,只需要設(shè)置好接口,知道需要的模塊和功能即可。
但是對(duì)于高級(jí)語(yǔ)言來說,自上而下的在紙上設(shè)計(jì)框架是可以的,具體實(shí)現(xiàn)并不能這樣的做,因?yàn)樗牡蛯涌蚣芡瑯邮欠浅?fù)雜的,并不能直接提前設(shè)計(jì)好,尤其是對(duì)于大框架嵌套小框架的情況,一定要先設(shè)計(jì)好小框架,再完成大框架,也就是自上而下地設(shè)計(jì),自下而上地實(shí)現(xiàn)。
對(duì)于并行的中層框架來說,實(shí)現(xiàn)順序也需要按照?qǐng)?zhí)行順序來編寫。
2.4 疑問解答
對(duì)于第一章提到的問題,現(xiàn)在可以解答了。【Verilog HDL學(xué)習(xí)之路】第一章 Verilog HDL 數(shù)字設(shè)計(jì)總論
問題1:對(duì)于過程“RTL級(jí)描述描述–>門級(jí)網(wǎng)表”,門級(jí)網(wǎng)表等同于門級(jí)描述嗎?
問題2:行為級(jí)綜合工具的出現(xiàn)允許Verilog HDL進(jìn)行行為級(jí)描述,那么它是可以將行為級(jí)描述轉(zhuǎn)換為RTL級(jí)描述嗎?
回答以上兩個(gè)問題,Verilog HDL的設(shè)計(jì)者可以使用四種抽象層次對(duì)模塊進(jìn)行描述,最終通過綜合工具后,一般生成的是門級(jí)結(jié)構(gòu)的描述
另外補(bǔ)充一點(diǎn),RTL級(jí)描述,通常指的是能夠被邏輯綜合工具接受的行為級(jí)描述和數(shù)據(jù)流級(jí)描述的混合描述
總結(jié)
以上是生活随笔為你收集整理的【Verilog HDL学习之路】第二章 Verilog HDL的设计方法学——层次建模的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成都欢乐谷生日当天去有优惠吗
- 下一篇: 【Verilog HDL】第四章 模块