基于SOPC的數(shù)據(jù)發(fā)生系統(tǒng)設(shè)計(jì)
數(shù)據(jù)產(chǎn)生,乒乓結(jié)構(gòu)和兩片SRAM三部分的組合在ModelSim中的仿真結(jié)果如圖6所示。avalon_ad-dress_b不變時(shí)是在執(zhí)行第一次寫操作,此時(shí)沒有數(shù)據(jù)讀出,所以avalon_readdata_b值為高阻;avalon_ad-dress_b開始變化時(shí),表示一片SRAM已經(jīng)寫滿,正在執(zhí)行該片的讀操作,而另一片在執(zhí)行寫操作,avalon_readdata_b為系統(tǒng)生成的數(shù)據(jù)。
2.3 PCI9054接口邏輯模塊
PCI總線作為PC機(jī)與外部設(shè)備之間重要的連接總線,具有數(shù)據(jù)傳輸穩(wěn)定靈活,傳輸速度快,即插即用和良好的擴(kuò)展性等特點(diǎn),被廣泛地用在各種與PC機(jī)互聯(lián)的設(shè)備中。該系統(tǒng)采用的PCI9054芯片口可以將復(fù)雜的PCI總線接口轉(zhuǎn)換為相對(duì)簡(jiǎn)單的用戶接口,大大縮短了設(shè)計(jì)周期。
2.3.1 本地總線狀態(tài)機(jī)設(shè)計(jì)
由于PCI9054的DMA傳輸方式只適宜于做單次傳輸,故該系統(tǒng)采用了DMA結(jié)合中斷的方式傳輸數(shù)據(jù)。由于數(shù)據(jù)的存儲(chǔ)采用了乒乓結(jié)構(gòu),可以在一片SRAM執(zhí)行DMA傳輸?shù)耐瑫r(shí)執(zhí)行另一片寫操作,這樣不會(huì)造成數(shù)據(jù)丟失,狀態(tài)也比較容易控制。
系統(tǒng)復(fù)位后,數(shù)據(jù)產(chǎn)生模塊開始產(chǎn)生偽隨機(jī)序列,產(chǎn)生的數(shù)據(jù)直接存入SRAM中。此時(shí),計(jì)數(shù)器同步計(jì)數(shù),當(dāng)計(jì)數(shù)值每一次達(dá)到262 144時(shí),也就是一片SRAM已經(jīng)存滿時(shí),SOPC系統(tǒng)就會(huì)觸發(fā)PCI9054中斷請(qǐng)求信號(hào)LINT#,CPU響應(yīng)中斷,發(fā)出讀命令、要讀取的字節(jié)數(shù)、地址信號(hào)等。PCI9054:先通過LHOLD申請(qǐng)本地總線的控制權(quán),SOPC系統(tǒng)通過LHOLDA響應(yīng),使PCI9054.獲得本地總線的控制權(quán)。PCI9054將PCI地址空間映射到本地地址空間,接著啟動(dòng)本地總線的DMA傳輸。
該系統(tǒng)采用VHDL語言,實(shí)現(xiàn)了DMA讀傳輸本地端的時(shí)序控制狀態(tài)機(jī)設(shè)計(jì)。狀態(tài)0為空閑狀態(tài)(i-dle),若LHOLD信號(hào)被置1,則轉(zhuǎn)到狀態(tài)1,否則留在狀態(tài)0。狀態(tài)1為總線保持狀態(tài)(hold),在此狀態(tài)下應(yīng)將LHOLDA信號(hào)置l。如果信號(hào)ADs為O且LW_R為0,則轉(zhuǎn)到狀態(tài)2。狀態(tài)2為DMA讀狀態(tài)(DMA_read),在此狀態(tài)下應(yīng)將READY信號(hào)和模塊內(nèi)部信號(hào)avaIon_read置l,從而使AvaIon主端口的master_read置1,表示Avalon主外設(shè)發(fā)起讀傳輸。如果BLAST為1,則表明此次DMA讀取還沒有完成,繼續(xù)留在狀態(tài)2;如果BLAsT為0,則表明此次DMA讀取完成,轉(zhuǎn)到狀態(tài)3。狀態(tài)3為DMA讀操作完成狀態(tài)(end cycle),當(dāng)LHOLD被置0時(shí),表示PCI9054不再請(qǐng)求本地總線,則轉(zhuǎn)到狀態(tài)0;當(dāng)BLAST為0且LHOLD為1時(shí),則表明PCI9054還要進(jìn)行DMA讀操作,則轉(zhuǎn)到狀態(tài)1繼續(xù)。其中的DMA讀操作的時(shí)序邏輯的ModelSim仿真結(jié)果如圖7所示。
2.3.2 Avalon主外設(shè)的端口信號(hào)設(shè)計(jì)
該系統(tǒng)中,PCI9054控制數(shù)據(jù)從本地總線上讀出,先到PCI9054的FIFO中,再將FIFO中的數(shù)據(jù)傳輸?shù)絇CI總線上。因此SOPC系統(tǒng)中的PCI9054接口邏輯模塊為Avalon主外設(shè),主端口通過address,read,wait-request等信號(hào)發(fā)起Avalon總線上的讀操作,從而控制Avalon從外設(shè)即乒乓結(jié)構(gòu)模塊的讀操作。
由于本系統(tǒng)定制的從外設(shè)采用了流水線讀的傳輸模式,為了使端口傳輸模式匹配,主外設(shè)也采用流水線讀的傳輸模式。流水線主端口一個(gè)必須的信號(hào)為readdatavalid,Avalon交換結(jié)構(gòu)向主端口發(fā)出readdat-avalid,以表示readdata信號(hào)正在提供有效的數(shù)據(jù)。
本系統(tǒng)定制的Avalon主外設(shè)構(gòu)成模塊主要由5部分構(gòu)成,其中Read Master Logic提供了符合Aval-on接口規(guī)范的主端口信號(hào);Control Logic是ReadMaster Logic與PCI9054 Local Bus Logic控制信號(hào)和狀態(tài)信號(hào)轉(zhuǎn)換的橋梁;FIFO是數(shù)據(jù)由Read MasterLogic向PCI9054傳輸?shù)木彌_區(qū)。這三部分通過主端口流水線讀傳輸時(shí)序邏輯聯(lián)系在一起,提供了Avalon主外設(shè)的主端口接口界面。PCI9054 Local Bus Logic即VHDL語言設(shè)計(jì)的本地總線狀態(tài)機(jī),它將PCI9054本地端的信號(hào)通過狀態(tài)機(jī)邏輯轉(zhuǎn)換為與Control Logic和FIFO相對(duì)應(yīng)的信號(hào);Clock/Reset提供了主外設(shè)的clk和reset信號(hào)。
光耦相關(guān)文章:光耦原理
萬用表相關(guān)文章:萬用表怎么用
斷路器相關(guān)文章:斷路器原理
負(fù)離子發(fā)生器相關(guān)文章:負(fù)離子發(fā)生器原理 高壓真空斷路器相關(guān)文章:高壓真空斷路器原理 塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理 漏電斷路器相關(guān)文章:漏電斷路器原理
評(píng)論