|
Xilinx FPGA入門(mén)連載25:PLL實(shí)例之模塊化設(shè)計(jì) 特權(quán)同學(xué),版權(quán)所有 配套例程和更多資料下載鏈接: http://pan.baidu.com/s/1jGjAhEm
模塊化設(shè)計(jì)是FPGA設(shè)計(jì)中一個(gè)很重要的技巧,它能夠使一個(gè)大型設(shè)計(jì)的分工協(xié)作、仿真測(cè)試更加容易,代碼維護(hù)或升級(jí)更加便利。 如圖所示,一般整個(gè)設(shè)計(jì)的頂層只做例化,不做邏輯。然后一個(gè)頂層下面會(huì)有模塊A、模塊B、模塊C等等,模塊A/B/C下又可以分多個(gè)子模塊實(shí)現(xiàn)。
如此一來(lái),就可以將大規(guī)模復(fù)雜系統(tǒng)按照一定規(guī)則劃分成若干模塊,然后對(duì)每個(gè)模塊進(jìn)行設(shè)計(jì)輸入、綜合,并將實(shí)現(xiàn)結(jié)果約束在預(yù)先設(shè)置好的區(qū)域內(nèi),最后將所有模塊的實(shí)現(xiàn)結(jié)果有機(jī)地組織起來(lái),就能完成整個(gè)系統(tǒng)的設(shè)計(jì)。 對(duì)于頂層模塊的設(shè)計(jì),主管設(shè)計(jì)師需要完成頂層模塊的設(shè)計(jì)輸入與綜合,為進(jìn)行模塊化設(shè)計(jì)實(shí)現(xiàn)階段的第一步即初始預(yù)算階段(Initial Budgeting Phase)做準(zhǔn)備。 對(duì)于子模塊的設(shè)計(jì),多個(gè)模塊的設(shè)計(jì)者相對(duì)獨(dú)立地并行完成各自子模塊的設(shè)計(jì)輸入與綜合,為進(jìn)行模塊化設(shè)計(jì)實(shí)現(xiàn)階段的第二步即子模塊的激活模式實(shí)現(xiàn)(Active Module Implementation)做準(zhǔn)備。 模塊化設(shè)計(jì)的實(shí)現(xiàn)步驟是整個(gè)模塊化設(shè)計(jì)流程中最重要、最特殊的,它包含: (1) 初始預(yù)算,本階段是實(shí)現(xiàn)步驟的第一步,對(duì)整個(gè)模塊化設(shè)計(jì)起著指導(dǎo)性的作用。在初始預(yù)算階段,項(xiàng)目管理者需要為設(shè)計(jì)的整體進(jìn)行位置布局,只有布局合理,才能夠在最大程度上體現(xiàn)模塊化設(shè)計(jì)的優(yōu)勢(shì);反之,如果因布局不合理而在較后的階段需要再次進(jìn)行初始預(yù)算,則需要對(duì)整個(gè)實(shí)現(xiàn)步驟全面返工。 (2) 子模塊的激活模式實(shí)現(xiàn)(Active ModuleImplementation),在該階段,每個(gè)項(xiàng)目成員并行完成各自子模塊的實(shí)現(xiàn)。 (3) 模塊的最后合并(Final Assembly),在該階段項(xiàng)目管理者將頂層的實(shí)現(xiàn)結(jié)果和所有子模塊的激活模式實(shí)現(xiàn)結(jié)果有機(jī)地組織起來(lái),完成整個(gè)設(shè)計(jì)的實(shí)現(xiàn)步驟。 模塊劃分的基本原則是,子模塊功能相對(duì)獨(dú)立,模塊內(nèi)部聯(lián)系盡量緊密,而模塊間的連接盡量簡(jiǎn)單。對(duì)于那些難以滿足模塊劃分準(zhǔn)則的具有強(qiáng)內(nèi)部關(guān)聯(lián)的復(fù)雜設(shè)計(jì),并不適合采用模塊化設(shè)計(jì)方法。 本實(shí)驗(yàn),我們就要來(lái)體驗(yàn)一把模塊化設(shè)計(jì)。如圖所示,在這個(gè)設(shè)計(jì)中,我們的頂層模塊是sp6.v,在此之前的實(shí)例中,我們都只有孤零零的一個(gè)sp6.v是源代碼文件,所有的邏輯代碼都寫(xiě)在這個(gè)文件中,但是這個(gè)實(shí)例開(kāi)始,我們將使用模塊化的設(shè)計(jì),將各個(gè)不同的獨(dú)立的功能邏輯代碼分別寫(xiě)在不同的源文件中,然后通過(guò)“例化”的方式,將它們之間的接口互聯(lián)起來(lái)。 因此,這個(gè)例子中,sp6.v文件里面其實(shí)幾乎是沒(méi)有具體的邏輯功能的,它只是做一些基本的例化和互聯(lián),將它下面的5個(gè)功能模塊相關(guān)的接口信號(hào)都連接起來(lái)。從圖示來(lái)看,它們還具體層級(jí)的關(guān)系,一目了然,非常易于查看和編輯管理。
參考前面的例程,將本實(shí)例生成的sp6.bit文件燒錄到FPGA中,接著我們就能看到D2、D3、D4和D5這4個(gè)LED完全同步的進(jìn)行閃爍。當(dāng)然了,這也至少證明了我們的PLL輸出的4個(gè)時(shí)鐘相互之間所呈現(xiàn)的倍頻關(guān)系。 |