PCI總線(xiàn)目標控制器的設計
狀態(tài)機共分為10個(gè)狀態(tài),下面對每個(gè)狀態(tài)的意義及狀態(tài)跳轉條件的詳細說(shuō)明:
目標空閑(idle):當PCI總線(xiàn)有新的命令但控制器正忙于未完成的數據傳輸或寄存器配置時(shí),狀態(tài)機跳轉到check_abort;控制器空閑但寄存器內有記錄的未完成的讀操作,狀態(tài)機跳轉到check_addr;PCI總線(xiàn)上有數據傳輸要求而又未出現上面的兩種情況,狀態(tài)機跳轉至cmd_start。
啟動(dòng)命令解碼(cmd_start):滿(mǎn)足放棄條件如奇偶校驗錯誤、強制放棄等條件時(shí),狀態(tài)機跳轉至start_abort;不滿(mǎn)足放棄條件,若目標設備沒(méi)有突發(fā)傳輸能力,狀態(tài)機跳轉至start_single,若目標設備有突發(fā)傳輸能力且主設備發(fā)起的是寫(xiě)命令,狀態(tài)機跳轉至start_multiple,如果目標設備有突發(fā)傳輸能力且主設備發(fā)起的是延遲讀命令,狀態(tài)機跳至start_retry;上述情況均未發(fā)生,狀態(tài)機跳轉至start_wait_rd1。
檢查地址匹配(check_addr):滿(mǎn)足放棄條件如奇偶校驗錯誤、強制放棄等條件時(shí),狀態(tài)機跳轉至start_abort;如果地址與之前的請求地址一致,對目標設備進(jìn)行延遲讀,狀態(tài)機跳轉至start_multiple;如果地址不一致?tīng)顟B(tài)機跳轉至start_retry。
放棄條件檢測(check_abort):滿(mǎn)足放棄條件如奇偶校驗錯誤、強制放棄等條件時(shí),狀態(tài)機跳轉至start_abort;不滿(mǎn)足條件,狀態(tài)機轉至start_retry。
讀等待狀態(tài)1(start_wait_rd1):如果FIFO中有了待傳輸的數據,狀態(tài)機跳轉至start_wait_rd2;否則一直等待在狀態(tài)start_wait_rd1。
讀等待狀態(tài)2(start_wait_rd2):FIFO中已經(jīng)有了所要讀取的數據,狀態(tài)機跳轉至start_multiple。
目標設備放棄(start_abort):一直維持該狀態(tài)直到主設備聲明傳輸結束,狀態(tài)機轉至idle。
單數據傳輸(start_single):如果主設備聲明最后一個(gè)數據傳輸,狀態(tài)機跳轉至idle;如果主設備繼續對該目標設備進(jìn)行讀寫(xiě)操作,狀態(tài)機跳轉至start_retry。
數據突發(fā)傳輸(start_multiple):如果剩下最后一個(gè)字節傳輸,狀態(tài)機跳轉到idle;如果地址信息無(wú)效或地址越界,狀態(tài)機跳轉到start_retry;如果接收FIFO幾乎滿(mǎn)了而PCI主設備繼續往其中寫(xiě)入數據,狀態(tài)機跳轉到start_retry;其它情況狀態(tài)機保持start_multiple狀態(tài)不變。
重試(start_retry):一直維持該狀態(tài)直到主設備聲明傳輸結束,狀態(tài)機轉至idle。
3數據通路實(shí)現
目標控制器的數據通路具體可通過(guò)兩種類(lèi)型的目標接口實(shí)現:寄存器型目標接口和FIFO型目標接口。
3.1寄存器型目標接口
每個(gè)PCI功能擁有64個(gè)配置雙字的單元[1](前16個(gè)雙字的格式和用法由PCI規范預定),保留用于實(shí)現配置寄存器。本地可以有一些功能設備,這些設備都有相應的控制/狀態(tài)寄存器,PCI總線(xiàn)上的主設備要對這些控制寄存器進(jìn)行編程,進(jìn)而控制相應的功能設備完成特定功能。兩類(lèi)寄存器可以歸為一個(gè)數據通道實(shí)現,寄存器型目標接口就為本地的功能設備提供了這樣一種接口,使得PCI總線(xiàn)上的主設備可以通過(guò)它來(lái)訪(fǎng)問(wèn)功能設備的寄存器。由于PCI總線(xiàn)主設備的訪(fǎng)問(wèn)目標是一些寄存器,所以該接口無(wú)需支持突發(fā)傳輸,主設備每一次訪(fǎng)問(wèn)最多只涉及到32位的數據傳輸。
3.2FIFO型目標接口
FIFO型的目標通道主要用于大量的數據傳輸,可以將本地的存儲器掛接在該接口上,這樣PCI總線(xiàn)主設備可以通過(guò)FIFO型目標通道訪(fǎng)問(wèn)到本地的存儲器,針對PCI主設備對本地存儲器的讀和寫(xiě)操作,設置了兩個(gè)異步FIFO,讀FIFO和寫(xiě)FIFO。其結構如圖3
命令解碼器和目標狀態(tài)機組成了該接口的控制單元。FIFO型目標接口由地址解碼器、讀寫(xiě)控制單元和讀/寫(xiě)異步FIFO四部分組成,在控制部件的協(xié)調控制下,共同完成PCI總線(xiàn)上的其它主設備對本地存儲器的數據存儲或讀取。
讀寫(xiě)控制單元:主要用于目標延遲讀的控制,存儲并比照前后數據傳輸請求的地址和命令信息,聲明本次傳輸請求是否為有效的延遲讀請求。
讀/寫(xiě)FIFO:異步FIFO,用于緩存PCI主設備到本地存儲器的讀寫(xiě)數據。
地址解碼器:解碼PCI總線(xiàn)上的地址信息,識別對FIFO型目標接口的訪(fǎng)問(wèn)。對于地址解碼器的實(shí)現,在最初PCI系統分配地址時(shí),FIFO型的目標接口被分配到某一段地址區內,通過(guò)地址翻譯將其映射到本地的系統中[4]。

圖3FIFO型目標接口邏輯結構
對PCI主設備發(fā)起的寫(xiě)操作,數據會(huì )先以PCI時(shí)鐘寫(xiě)入接口內的寫(xiě)FIFO,同時(shí)PCI控制器會(huì )通知本地存儲器控制器有數據寫(xiě)入。本地存儲器控制器待FIFO中達到一定數據量時(shí)以自己的時(shí)鐘讀取FIFO中的數據存入本地存儲器,如果FIFO讀空,存儲器會(huì )暫停等待直到FIFO中有新的數據寫(xiě)入,才進(jìn)行讀取。
對PCI主設備發(fā)起的讀本地存儲器的操作,為了提高讀數據的效率,設計中根據不同數據傳輸的特點(diǎn),把讀操作劃分為兩個(gè)類(lèi)型,即立即讀和延遲讀。
?。?)立即讀:在PCI總線(xiàn)主設備發(fā)起讀操作后,一直占用PCI總線(xiàn)等待,PCI總線(xiàn)控制器向本地存儲器請求對應的數據,直到本地存儲器將數據寫(xiě)入讀FIFO中,PCI控制器讀取FIFO中數據開(kāi)始PCI總線(xiàn)上的數據傳輸。這種讀類(lèi)型一般適用于進(jìn)行數據量小的傳輸且本地存儲器可以在較短的時(shí)間內將要求的數據送到PCI總線(xiàn)。
?。?)延遲讀:PCI總線(xiàn)主設備的讀請求到達PCI目標總線(xiàn)控制器時(shí),控制器鎖存地址和命令信息,并回應主設備讓它重試。同時(shí)PCI目標總線(xiàn)控制器向本地存儲器請求數據,本地存儲器將數據寫(xiě)入總線(xiàn)控制器中的FIFO中。此時(shí)如果PCI總線(xiàn)上的主設備重試先前的數據傳輸請求,PCI目標控制器就可以響應請求將數據發(fā)送到PCI總線(xiàn)上。這個(gè)過(guò)程中,PCI總線(xiàn)主設備在收到重試回應后就會(huì )釋放PCI總線(xiàn),允許其它的主設備占用總線(xiàn)進(jìn)行數據傳輸,這樣從而提高了總線(xiàn)的利用率。圖4給出了PCI主設備突發(fā)讀時(shí)采用延遲讀的仿真結果圖

圖4突發(fā)讀時(shí)仿真波形
4結束語(yǔ)
本文基于PCI2.2總線(xiàn)規范完成了通用PCI目標控制器的RTL級設計。經(jīng)驗證設計完全實(shí)現了目標控制器的功能,目前已通過(guò)了FPGA原型驗證并應用到CMOS圖象傳感器的數據傳輸中。在后續的開(kāi)發(fā)中,可以考慮在控制器內部加入電源管理模塊,進(jìn)一步降低PCI目標控制器的功耗。
本文的創(chuàng )新點(diǎn):該設計方案將目標控制器整體分為控制邏輯和數據通道兩部分,并根據目標設備的不同類(lèi)型,在數據通道內實(shí)現不同的目標接口,并引入了立即讀和延遲讀機制實(shí)現數據傳輸,使整個(gè)設計取得了較高的效率。
參考文獻
[1]TomShanley,DonAnderson著(zhù).林輝等譯.PCI系統結構.電子工業(yè)出版社,2000.
[2]沈涵飛,甘萌.PCI總線(xiàn)目標控制器的設計與實(shí)現[J].計算機工程與設計.2004,25(11):2101~2104
[3]施少敏,馬彥恒.基于接口芯片PCI9030的PCI總線(xiàn)接口卡的設計[J].微計算機信息.2006,11-2:295~297
[4]TinooshMohsenin.DesignandEvaluationofFPGA-BasedGigabit-Ethernet/PCINetwordInterfaceCard.MasterDegreeDissertationofRice
University.2004:71~74
[5]JanickBergeron,WritingTestbenches-FunctionalVerificationofHDLModels.Boston,KluwerAcademicPublisher,2000.
相關(guān)推薦
技術(shù)專(zhuān)區
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線(xiàn)
- 開(kāi)關(guān)電源
- 單片機
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開(kāi)發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機控制
- 藍牙
- PLC
- PWM
- 汽車(chē)電子
- 轉換器
- 電源管理
- 信號放大器
評論