<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于PCI軟“核”的PCI總線(xiàn)接口設計與實(shí)現

基于PCI軟“核”的PCI總線(xiàn)接口設計與實(shí)現

作者: 時(shí)間:2013-03-30 來(lái)源:網(wǎng)絡(luò ) 收藏

STOP_USR 是STOP信號的“克隆”版本。
CFG_HIT 表明一個(gè)有效的配置周期開(kāi)始。
ADDR_VLD 表明當前作業(yè)地址線(xiàn)的起始地址有效。
S_SRC_EN 在Slave模式讀操作期間,告訴用戶(hù)模塊驅動(dòng)下一片數據到總線(xiàn)ADIO[31:0]上。
S_DATA_VLD 表明當前ADIO[31:0]上的數據為有效數據(在Slave模式下)。
BASE_HIT[7:0] 表明基地址寄存器譯碼并選中相應的PCI映射空間。
CFG[255:0] PCI設備配置空間接口信號。
M_SRC_EN 在寫(xiě)操作時(shí),表明數據源可以驅動(dòng)下一片數據到ADIO[31:0]上(在INItiator模式下)。
M_DATA_VLD 表明當前數據線(xiàn)ADIO[31:0]上的數據為有效數據(在Initiator模式下)。
REQUEST 在主設備模式下,控制器請求系統仲裁器讓出總線(xiàn)。
M_WRDN 在主設備模式下,當前的作業(yè)進(jìn)行讀操作或寫(xiě)操作。M_WRDN=1時(shí)表示寫(xiě),M_WRDN=0時(shí)表示讀。
M_DBE[3:0] 在主設備模式下,驅動(dòng)總線(xiàn)命令和字節有效信號。
COMPLETE 在主設備模式下,當前的方式傳送數據完成。
M-DMTA 表示在Initiator模式下當前主設備正片于數據周期。
DR_BUS 表示主設備狀態(tài)機正驅動(dòng)。
I_IDLE 表示主設備狀態(tài)機正在空閑狀態(tài),當前沒(méi)有被驅動(dòng)。
M_ADDR_USR 表示主設備狀態(tài)機在地址周期要求驅動(dòng)地址信號到ADIO[31:0]上。
RST 復位信號的“克隆”版本。
CLK 由系統緩沖區驅動(dòng)的PCI總線(xiàn)時(shí)鐘。
INTER_USR 由用戶(hù)發(fā)出的中斷請求信號。是INTR_A信號的“克隆”版本。
從LogiCore提供的接口看出,該軟“核”將復雜的PCI接口按照PCI的兩種工作模式轉化成相對簡(jiǎn)單的Slave和Master兩組獨立接口信號。用戶(hù)可以根據實(shí)際需要來(lái)確定的應用那種模式,從而選用相應的一組或兩組信號作為接口。而且LogiCore這種橋梁作用只是對PCI功能進(jìn)行劃分,它將PCI控制器的核心邏輯留給用戶(hù)來(lái)實(shí)現,并給出狀態(tài)機的接口信號。
2 PCI Master控制器的實(shí)現
以一個(gè)基于PCI總線(xiàn)的數據采集卡為例說(shuō)明利用LogiCore實(shí)現PCI Master控制器的方法。由PCI協(xié)議知道,當PCI設備工作在Master模式下,可以直接訪(fǎng)問(wèn)計算機系統主存儲器,而不通過(guò)計算機CPU。為此,在PCI Master控制器中必須設計一個(gè)控制器。這樣同主存儲器傳送數據時(shí),可以暫時(shí)接管系統總線(xiàn),控制傳送字節數,判斷DMA傳輸是否結束,發(fā)出DMA結束等信號來(lái)保證數據的正確傳送。該數據采集卡所實(shí)現的功能就是不斷從外部接收數據并以DMA方式輸入到計算機系統緩沖區中,同時(shí)將預先放在計算機內存中的大量數據以DMA方式輸出到外部的儀器中。DMA控制器屬于LogiCore邏輯框圖中的用戶(hù)控制模塊。它由現行字節數寄存器、現行地址寄存器、基字節數寄存器、基地址寄存器、半滿(mǎn)地址寄存器、全滿(mǎn)地址寄存器、狀態(tài)寄存器、讀寫(xiě)緩沖器及控制寄存器和優(yōu)先級編碼器等組成、DMA控制器原理圖如圖3所示。其中控制寄存器和優(yōu)先級編碼器是DMA控制器的關(guān)鍵。

2.1 DMA控制器的特點(diǎn)
(1)現行地址寄存器、基字節數寄存器、基地址寄存器、半滿(mǎn)地址寄存器、全滿(mǎn)地址寄存器5個(gè)寄存器可由高層應用程序根據當前驅動(dòng)程序分配的系統內存空間來(lái)靈活配置。當傳送完規定的傳送長(cháng)度(字節數減到零時(shí)),結束當前DMA傳送并自動(dòng)重新對現行地址寄存器進(jìn)行初始化,具有自動(dòng)初始化能力。
(2)優(yōu)先級編碼器中的4個(gè)DMA請求源的優(yōu)先級是固定的,不可以旋轉。優(yōu)先級按照從高到低依次為讀緩沖器、STATUS_C(由狀態(tài)寄存器C-D發(fā)出的)、寫(xiě)緩沖器、STATUS_D(由狀態(tài)寄存器C-D發(fā)出的)。
優(yōu)先權編碼器對4個(gè)DMA請求源進(jìn)行優(yōu)先級編碼,并向LogiCore發(fā)出DMA請求信號。
(3)DMA數據傳送有單字節傳送和數據塊傳送兩種方式。數據塊傳送方式可由用戶(hù)初始化基字節寄存器來(lái)靈活設置一次傳送的數據塊長(cháng)度。DMA控制器向系統緩沖區發(fā)送狀態(tài)寄存器C-D中的信息時(shí)采用單字節傳送方式。而傳送讀緩沖器和寫(xiě)緩存器中的數據時(shí)采用數據塊傳送方式并可由用戶(hù)設置一次傳送數據的長(cháng)度。此時(shí)每傳送一個(gè)數據,地址指針加1,字節數據1。
(4)DMA控制器中讀緩沖器和寫(xiě)緩沖器都是2KB。

2.2 DMA控制器基本工作原理
首先由高層應用程序根據采集卡的低層驅動(dòng)程序分配的系統內存地址對基地址寄存器、半滿(mǎn)地址寄存器、全滿(mǎn)地址寄存器、狀態(tài)寄存器、讀寫(xiě)緩沖器和控制寄存器進(jìn)行初始化。然后啟動(dòng)系統,開(kāi)始工作。當讀緩沖器的數據量不到半滿(mǎn)或寫(xiě)緩沖器中接收到的數據量已超過(guò)半滿(mǎn)或狀態(tài)寄存器C-D有狀態(tài)信息向高層報告時(shí),則向優(yōu)先級編碼器發(fā)出相應的請求信號。DMA優(yōu)先級編碼器根據DMA請求對象的操作類(lèi)型向DMA控制寄存器發(fā)出相應的控制信號。當DMA控制器檢索到對應的控制信息發(fā)生變化時(shí),向LogiCore發(fā)出DMA請求,并用基字節寄存器和基地址寄存器分別初始化現行字節數寄存器和現行地址寄存器。當計算機系統允許DMA控制器占用PCI總線(xiàn)時(shí),則DMA控制器接管PCI總線(xiàn),并在地址周期向LogiCore發(fā)出DMA讀寫(xiě)命令,同時(shí)輸出當前要對系統緩沖區操作的起始地址。在隨后的數據周期中,從數據總線(xiàn)ADIO上輸出或接收數據,同時(shí)修改地址指針(DMA支持隱含尋址)和字節計數器值,DMA控制器檢測傳送是否結束。如未結束則不停循環(huán)傳送。當檢測到字節計數器即將為零時(shí),則向LogiCore發(fā)出COMPLETE信號,COMPLETE信號持續到字節計數器為零時(shí),DMA控制器釋放掉對PCI總線(xiàn)的控制權,使CPU恢復正常工作狀態(tài)。
在DMA控制器中,狀態(tài)寄存器C-D有兩個(gè)DMA請求源STATUS_C和STATUS_D。其中STATUS_C在地址比較器檢測到讀緩沖器讀完對應系統緩沖區一半空間或全部讀守對應系統緩沖區數據時(shí),置相應的狀態(tài)信息并向優(yōu)先級編碼器發(fā)出STATUS_C請求信號。而STATUS_D在地址比較器檢測到寫(xiě)緩沖器寫(xiě)完對應系統緩沖區數據、置相應的狀態(tài)信息并向優(yōu)先級編碼器發(fā)出STATUS_D的請求信號。
值和注意的是,在DMA控制器設計過(guò)程中,當進(jìn)行數據塊傳輸、字節數寄存器計數快結束時(shí),應提前向計算機系統發(fā)出完成本次數據塊傳送的COMPLETE信號,這樣可保證DMA數據塊傳送的正確進(jìn)行。至于提前幾個(gè)字節數據可以根據試驗來(lái)確定,一般提前2~4個(gè)字節即可。
PCI總線(xiàn)設計中定義的雙向信號,均要用OE信號來(lái)控制。同時(shí)有些信號如地址比較等要進(jìn)行分割,以使用最少的通用邏輯模塊數來(lái)實(shí)現。這些是PCI總線(xiàn)設計所要注意的事項。由于LogiCore中對這些情況在邏輯上已經(jīng)進(jìn)行優(yōu)化處理,從而使用戶(hù)避免了同復雜的PCI接口打交道,減少犯錯誤的可能,縮短了開(kāi)發(fā)周期。
本數據采集卡在WINDOWS 98多任務(wù)操作系統下運行數據傳輸速率可以達到140Mbps,滿(mǎn)足了實(shí)際要求。

電磁爐相關(guān)文章:電磁爐原理



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: PCI總線(xiàn) DMA 局部總線(xiàn)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>