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