在層次化的設(shè)計當(dāng)中,我們常常將復(fù)雜電路系統(tǒng)進行功能模塊劃分,先設(shè)計各個子功能模塊電路,然后再在頂層模塊中通過實例化這些子模塊,并通過各個子模塊的輸入輸出端口進行模塊間的互聯(lián),來實現(xiàn)復(fù)雜電路設(shè)計。
在這里,為了說明實例化的方法,我使用了一個簡單的門電路的例子,幫助大家理解和掌握。當(dāng)然,在實際當(dāng)中我們是不會去這樣去進行設(shè)計的,當(dāng)有了這樣的邏輯表達式,我們僅使用一條assign語句就可以實現(xiàn)設(shè)計了。這里僅僅是給大家演示實例化的方法。
0****1系統(tǒng)模塊劃分
要實現(xiàn)一個與或非邏輯的電路,可以先將這個電路進行模塊劃分,根據(jù)功能劃分為與門和或非門,如下圖所示。
△ 與或非門模塊劃分
0****2子模塊設(shè)計
模塊劃分好后,分別對與門和或非門進行獨立設(shè)計。在這里,我們可以將子功能模塊看作一個電路或者一個具有一定功能的芯片,我們現(xiàn)在要對這個芯片進行設(shè)計。設(shè)計包括模塊名稱、端口聲明,電路功能描述。
△ 子功能模塊設(shè)計
03頂層模塊搭建
子模塊設(shè)計好后,我們需要再新建一個源程序.v文件作為頂層文件,并進行頂層模塊的設(shè)計。頂層模塊的端口就是最終整個電路的端口。與或非門有四個輸入端口,分別是A、B、C和D,輸出端口是L。
**規(guī)則:**頂層模塊中只出現(xiàn)模塊的實例化,不要有assign或always等功能描述語句。
接下來,我們要將設(shè)計的子模塊實例化到頂層文件中。這個過程就好像將一個個帶引腳的芯片,用導(dǎo)線將他們的引腳根據(jù)輸入輸出關(guān)系進行連接,形成最終的數(shù)字電路系統(tǒng)。
模塊實例化中信號與模塊端口的接方式有兩種,位置對應(yīng)方式和名稱對應(yīng)方式。
(1)位置對應(yīng)方式
實例化模塊時,上層模塊的信號必須嚴格按照低層模塊端口聲明的順序一一對應(yīng)連接。例如本示例中可以這樣寫:
my_AND U1 (A, B, c1);
my_AND U2 (C, D, c2);
my_NOR U3 (c1, c2, L);
(2)名稱對應(yīng)方式(推薦)
實例化模塊時,使用端口名稱進行連接,使用“.”符號標(biāo)明原模塊定義的端口,其后所跟括號中為與之相連接的信號名,如下圖所示,即為名稱對應(yīng)方式的寫法。此方式不需要按順序排列。
△ 頂層模塊設(shè)計
my_AND是子模塊的模塊名,實例化后的實例需要一個名稱來唯一指定該器件,例如這里的U1、U2和U3。a、b、c是原子模塊中定義的端口名稱,括號中是在頂層模塊中所要連接的端口。
模塊內(nèi)部信號,要聲明為wire型,如這里的c1和c2。
總結(jié)一下,在設(shè)計之初,我們需要將電路系統(tǒng)進行模塊劃分,然后進行子模塊設(shè)計,具有相同功能和端口的電路,只需要設(shè)計一次,然后在頂層模塊中進行子模塊的實例化,每個實例都有獨一無二的實例名,因為他對應(yīng)的實實在在的電路,在對相同的模塊進行實例化時,實例化幾次就產(chǎn)生幾個相同的電路,由實例名唯一指定。最后通過端口和信號線將子模塊的輸入輸出根據(jù)邏輯關(guān)系進行連接。
04自頂向下的設(shè)計
自頂向下是一種設(shè)計思想,是解決復(fù)雜問題的有效方法。在數(shù)字系統(tǒng)設(shè)計中,設(shè)計者要先從整個系統(tǒng)的功能和結(jié)構(gòu)出發(fā),先進行最上層的設(shè)計。例如,與或非門設(shè)計示例中,我們先設(shè)計整個系統(tǒng)的模塊名,輸入、輸出端口。
接下來,將系統(tǒng)分成若干個子系統(tǒng),每個子系統(tǒng)分成若干功能模塊,模塊還可以繼續(xù)向下劃分成子模塊,直至分成許多最基本的數(shù)字功能電路。
在自頂向下的設(shè)計中,我們可以先逐級設(shè)計每一層次中各個子系統(tǒng)或子模塊的輸入、輸出端口,以及模塊之間的連接關(guān)系。根據(jù)設(shè)計可以在在頂層模塊中,將各個子系統(tǒng)通過實例化進行連接。此時,可以不必關(guān)心模塊具體是如何實現(xiàn)的,底層模塊的具體設(shè)計可以放在最后去完成。
也就是說,實際上,上述“ 02子模塊設(shè)計” 與“ 03頂層模塊的搭建 ”兩部分的順序應(yīng)該顛倒一下,先從全局視角進行頂層模塊的設(shè)計與搭建,最終再進行子模塊功能設(shè)計。
而最終的系統(tǒng)設(shè)計與驗證,則是一個自底向下的過程。先完成每個底層模塊的設(shè)計與驗證,再一步步逐級向上進行驗證,直至整個系統(tǒng)正常運行。
-
邏輯電路
+關(guān)注
關(guān)注
13文章
494瀏覽量
42688 -
連接器
+關(guān)注
關(guān)注
98文章
14653瀏覽量
137119
發(fā)布評論請先 登錄
相關(guān)推薦
評論