子模块到顶层模块——例化与调用
在Verilog程序中,不可能將所有的代碼放在一個(gè)文件里面,不同功能的模塊封裝在一個(gè)文件里面,但最終我們要生成最終的系統(tǒng)電路,必須將這些子模塊生成一個(gè)頂層模塊,那么如何生成這樣的頂層模塊呢?
給出一個(gè)實(shí)例,
上圖中提出了這樣一個(gè)問(wèn)題:如何將三個(gè)子模塊接成一個(gè)頂層模塊。這三個(gè)子模塊分別完成了:與,或,加 三種運(yùn)算,現(xiàn)在需要做的是將三個(gè)子模塊綜合成一個(gè)頂層模塊,在此我們需要將我們?cè)O(shè)計(jì)的子模塊例化成被調(diào)用的子模塊。關(guān)于例化,討論兩個(gè)問(wèn)題:
1.不要手打,要用ISE環(huán)境中自己例化的結(jié)果:
點(diǎn)擊該文件,在下面的窗口中出現(xiàn)view HDL instantiation Template!!雙擊,即可生成對(duì)應(yīng)的模板,如圖:
這樣生成的例化模板,首先在格式上不會(huì)出錯(cuò),其次,比較簡(jiǎn)單,不用手動(dòng)輸入端口,要注意變量前面有小數(shù)點(diǎn)!!!!
2.如何將分離的模塊產(chǎn)生聯(lián)系??
上述三個(gè)模塊是分離的,將其組合成一個(gè)模塊的時(shí)候,注意到,模塊1與模塊 ,模塊2或模塊,都與模塊3有聯(lián)系。具體的聯(lián)系是:將與模塊和或模塊的輸出接到了相加模塊的輸入
那么如何表示這種邏輯關(guān)系呢?
在這里是組合邏輯電路,上述的邏輯聯(lián)系本質(zhì)上是一種線連接,因此采用定義相應(yīng)的變量為wire,并采用assign的賦值方式,即可完成賦值,如下圖:
得到得到綜合電路結(jié)果如下圖:
圖示完成了完整的頂層模塊構(gòu)架。再次總結(jié)以下3個(gè)觀點(diǎn):
1 各個(gè)子模塊的設(shè)計(jì)可以相互獨(dú)立
2 例化子模塊的時(shí)候,不要手打,采用“view HDL instantiaion Template”!例化更為方便。
3 線端子進(jìn)行連接的時(shí)候,定義wire ,采用assign賦值的方式即可完成?。。?/p>
view HDL instantiation Template
總結(jié)
以上是生活随笔為你收集整理的子模块到顶层模块——例化与调用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android中ExpandableLi
- 下一篇: 简单实现KeyChain实例