SOPC在PCI總線高速數(shù)據(jù)傳輸系統(tǒng)中的應(yīng)用
2.2 PCI總線異常的自動(dòng)處理
PCI總線DMA傳輸過(guò)程中,可能出現(xiàn)的異常包括:
?。?)PCI總線上SERR信號(hào)為高,系統(tǒng)錯(cuò)誤。
?。?)PCI總線上PERR信號(hào)為高,數(shù)據(jù)奇偶校驗(yàn)錯(cuò)誤;
?。?)主設(shè)備或從設(shè)備中止傳輸;
?。?)主設(shè)備或從設(shè)備中止傳輸,或重試次數(shù)超過(guò)門(mén)限,導(dǎo)致PCI橋?qū)偩€讀/寫(xiě)失敗。
在偵察接收系統(tǒng)設(shè)計(jì)中,上述異常一旦發(fā)生,PCI接口便中斷NiosCPU,CPU接收到中斷后,通過(guò)查詢(xún)PCI橋的控制寄存器訪問(wèn)(Control RegisterAccess,CRA)空間,獲得異常信息。系統(tǒng)錯(cuò)誤發(fā)生時(shí),PCI接口設(shè)備是沒(méi)有辦法恢復(fù)的,在這種情況下,NiosCPU可點(diǎn)亮指示燈,指示系統(tǒng)錯(cuò)誤發(fā)生;其它異常情況發(fā)生后,Nios CPU可立即通過(guò)對(duì)DMA控制器的狀態(tài)空間的長(zhǎng)度寫(xiě)零來(lái)停止DMA傳輸,然后重新啟動(dòng)DMA傳輸,讓系統(tǒng)從異常中恢復(fù)過(guò)來(lái)。
2.3 提高PCI總線DMA速率的優(yōu)化措施
為了盡可能提高DMA傳輸速率,本方案中共采取了以下三個(gè)方面的措施。
?。?)PCI總線的突發(fā)傳輸與Avalon總線的流水線操作
為了提高系統(tǒng)傳輸速率,應(yīng)充分利用PCI總線的突發(fā)傳輸特性,使PCI總線處于突發(fā)傳輸狀態(tài)。為此,在系統(tǒng)設(shè)計(jì)中,一方面使Avalon總線工作于流水線模式下,降低Avalon總線的延遲時(shí)間;另一方面適當(dāng)增大緩存存儲(chǔ)空間,避免因緩沖區(qū)滿造成的傳輸延遲等待。
?。?)DMA控制的優(yōu)化
為了使DMA傳輸更為靈活,如程序運(yùn)行過(guò)程中改變DMA長(zhǎng)度、讀寫(xiě)地址、數(shù)據(jù)的幀長(zhǎng)度,以及發(fā)生異常時(shí)程序自動(dòng)恢復(fù)等,本文中使用Nio sCPU控制DMA傳輸。CPU的主要任務(wù)是在PC使能DMA和數(shù)據(jù)準(zhǔn)備好時(shí)啟動(dòng)DMA傳輸,應(yīng)盡可能使程序緊湊,減少冗余操作,做到條件具備立即啟動(dòng)DMA傳輸。
?。?)功能模塊的時(shí)鐘設(shè)置
如圖2所示,SOPC中包括7個(gè)功能組件,為了進(jìn)一步提高系統(tǒng)的速度,需要分別讓這7個(gè)組件的時(shí)鐘處于最佳狀態(tài)。PCI總線訪問(wèn)相關(guān)組件的時(shí)鐘為33MHz,Nios CPU相關(guān)的組件運(yùn)行在150MHz時(shí)鐘上。使系統(tǒng)在正確穩(wěn)定運(yùn)行的基礎(chǔ)上,最大限度地提高運(yùn)行速度。
3 結(jié)束語(yǔ)
本文給出了一種基于SOPC系統(tǒng)的PCI總線高速DMA傳輸方案。與傳統(tǒng)的使用PCI橋芯片實(shí)現(xiàn)PCI總線的方案相比,該方案將PCI橋和用戶邏輯在一片F(xiàn)PGA中實(shí)現(xiàn),減少了硬件電路的復(fù)雜度、降低了系統(tǒng)成本;采用SOPC創(chuàng)建PCI橋,大大縮短了開(kāi)發(fā)周期,提高了系統(tǒng)的可靠性,且因使用了片上Nios CPU進(jìn)行DMA的在線配置和自動(dòng)異常處理,使DMA傳輸更加靈活。通過(guò)在EP3C120芯片上驗(yàn)證,該設(shè)計(jì)能夠?qū)崿F(xiàn)大于100Mbytes /s的PCI總線DMA傳輸速率
評(píng)論