技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > PCI總線目標(biāo)控制器的設(shè)計(jì)

PCI總線目標(biāo)控制器的設(shè)計(jì)

時(shí)間:2008-10-30 11:13:00來源:ronggang

導(dǎo)語:?在PCI2.2總線規(guī)范的基礎(chǔ)上,給出了一種PCI總線目標(biāo)控制器的設(shè)計(jì)方案。重點(diǎn)從控制邏輯和數(shù)據(jù)通路的建立上闡述了目標(biāo)控制器的設(shè)計(jì)

摘 要:本文在PCI2.2總線規(guī)范的基礎(chǔ)上,給出了一種PCI總線目標(biāo)控制器的設(shè)計(jì)方案。重點(diǎn)從控制邏輯和數(shù)據(jù)通路的建立上闡述了目標(biāo)控制器的設(shè)計(jì):用狀態(tài)機(jī)實(shí)現(xiàn)總線訪問操作的復(fù)雜時(shí)序,通過FIFO型目標(biāo)接口和寄存器型目標(biāo)接口的建立實(shí)現(xiàn)了數(shù)據(jù)通路。目前本設(shè)計(jì)已應(yīng)用到光電器件CMOS圖象傳感器的數(shù)據(jù)傳輸并通過了FPGA原型驗(yàn)證。

關(guān)鍵詞:PCI;目標(biāo)控制器;狀態(tài)機(jī)

Abstract: This paper developed a PCI target controller based on the PCI2.2 bus specification, which focused on controlling logic and data path: the realization of the complication of the access sequence to the bus interface controller is expressed by state machine, the data path is set up through the FIFO target interface and register target interface. The design has been used in the data transmission of CMOS image sensor and has passed the FPGA prototype verification correctly.

Keywords: PCI; target controller; state machine

0 引言

PCI(Peripheral Component Interconnect)總線是微型計(jì)算機(jī)中處理器/存儲(chǔ)器與外圍控制部件、擴(kuò)展卡之間的互聯(lián)接口。PCI總線規(guī)范是互聯(lián)機(jī)構(gòu)的協(xié)議,以及電氣和機(jī)械配置的規(guī)范,是當(dāng)今高性能微型計(jì)算機(jī)事實(shí)上的總線標(biāo)準(zhǔn)。[1]

PCI總線控制器為PCI總線和用戶設(shè)備提供操作接口,協(xié)調(diào)PCI總線信號(hào)和用戶設(shè)備接口信號(hào),使用戶設(shè)備能夠按照PCI總線的規(guī)范進(jìn)行數(shù)據(jù)的傳輸。本文設(shè)計(jì)了一個(gè)適用于CMOS圖象處理的PCI目標(biāo)控制器,具有較強(qiáng)的通用性。

1 控制器的頂層設(shè)計(jì)

PCI總線目標(biāo)設(shè)備在總線傳輸中處于被動(dòng)地位,它不會(huì)申請對總線的使用權(quán)。當(dāng)PCI總線上的某一主設(shè)備發(fā)起對本地資源的訪問時(shí),整個(gè)控制邏輯的建立和數(shù)據(jù)傳輸?shù)倪^程都是通過目標(biāo)控制器實(shí)現(xiàn)的。

目標(biāo)控制器頂層結(jié)構(gòu)

圖1 目標(biāo)控制器頂層結(jié)構(gòu)

PCI系統(tǒng)中,目標(biāo)設(shè)備在地址周期內(nèi)響應(yīng)總線主設(shè)備的傳輸要求,并配合主設(shè)備完成整個(gè)數(shù)據(jù)傳輸。圖1為目標(biāo)控制器的詳細(xì)結(jié)構(gòu)圖。

本設(shè)計(jì)將目標(biāo)控制器按照功能分為幾個(gè)功能模塊實(shí)現(xiàn),即命令解碼器、狀態(tài)機(jī)、FIFO類型目標(biāo)接口和寄存器型目標(biāo)接口。命令解碼模塊和狀態(tài)機(jī)構(gòu)成目標(biāo)控制器的控制部分,PCI主設(shè)備發(fā)起某類型的操作,目標(biāo)控制器在地址周期內(nèi)解析相應(yīng)的地址和命令信息。在解析地址確定為本次操作的目標(biāo)設(shè)備后,目標(biāo)控制器會(huì)啟動(dòng)目標(biāo)設(shè)備狀態(tài)機(jī)根據(jù)當(dāng)前解碼的信息進(jìn)行一系列的控制操作。FIFO類型通道用于大批量的數(shù)據(jù)傳輸,可將本地存儲(chǔ)器塊掛接在該類型的數(shù)據(jù)通道上;寄存器類型接口用于數(shù)據(jù)量小的數(shù)據(jù)傳輸,該接口的后面可以掛接配置寄存器和一些本地功能設(shè)備的控制/狀態(tài)寄存器塊。這樣,PCI總線上的主設(shè)備既可以訪問到本地的存儲(chǔ)器設(shè)備也可以訪問本地的寄存器。下面從目標(biāo)控制器的數(shù)據(jù)路徑和控制路徑分別進(jìn)行論述。

2 控制模塊實(shí)現(xiàn)

目標(biāo)控制器的控制由兩部分完成,命令解碼器和目標(biāo)狀態(tài)機(jī)。命令解碼器解碼來自PCI總線上的地址命令信息作為目標(biāo)狀態(tài)機(jī)的輸入,狀態(tài)機(jī)鑒于此輸入執(zhí)行相應(yīng)的操作。

(1)命令解碼器:PCI總線主設(shè)備在地址周期內(nèi)通過命令數(shù)據(jù)線(C/BE#)設(shè)置不同的編碼可以發(fā)起以下的操作,I/O讀寫、存儲(chǔ)器讀寫、配置讀寫、存儲(chǔ)器行讀/多行讀和存儲(chǔ)器寫及使無效。

(2)目標(biāo)狀態(tài)機(jī)[3]:對于PCI總線上傳來的信號(hào),狀態(tài)機(jī)根據(jù)命令解碼器的解碼信息來控制總線控制器進(jìn)行相應(yīng)的操作。如果地址信息不正確或者本地的設(shè)備正忙于存取數(shù)據(jù),狀態(tài)機(jī)會(huì)向PCI總線上發(fā)起本次操作的主設(shè)備回應(yīng)目標(biāo)丟棄或目標(biāo)重試。目標(biāo)狀態(tài)機(jī)的具體設(shè)計(jì),如圖2所示。

目標(biāo)設(shè)備接口狀態(tài)機(jī)

圖2 目標(biāo)設(shè)備接口狀態(tài)機(jī)

狀態(tài)機(jī)共分為10個(gè)狀態(tài),下面對每個(gè)狀態(tài)的意義及狀態(tài)跳轉(zhuǎn)條件的詳細(xì)說明:

目標(biāo)空閑(idle):當(dāng)PCI總線有新的命令但控制器正忙于未完成的數(shù)據(jù)傳輸或寄存器配置時(shí),狀態(tài)機(jī)跳轉(zhuǎn)到check_abort;控制器空閑但寄存器內(nèi)有記錄的未完成的讀操作,狀態(tài)機(jī)跳轉(zhuǎn)到check_addr;PCI總線上有數(shù)據(jù)傳輸要求而又未出現(xiàn)上面的兩種情況,狀態(tài)機(jī)跳轉(zhuǎn)至cmd_start。

啟動(dòng)命令解碼(cmd_start):滿足放棄條件如奇偶校驗(yàn)錯(cuò)誤、強(qiáng)制放棄等條件時(shí),狀態(tài)機(jī)跳轉(zhuǎn)至start_abort;不滿足放棄條件,若目標(biāo)設(shè)備沒有突發(fā)傳輸能力,狀態(tài)機(jī)跳轉(zhuǎn)至start_single,若目標(biāo)設(shè)備有突發(fā)傳輸能力且主設(shè)備發(fā)起的是寫命令,狀態(tài)機(jī)跳轉(zhuǎn)至start_multiple,如果目標(biāo)設(shè)備有突發(fā)傳輸能力且主設(shè)備發(fā)起的是延遲讀命令,狀態(tài)機(jī)跳至start_retry;上述情況均未發(fā)生,狀態(tài)機(jī)跳轉(zhuǎn)至start_wait_rd1。

檢查地址匹配(check_addr):滿足放棄條件如奇偶校驗(yàn)錯(cuò)誤、強(qiáng)制放棄等條件時(shí),狀態(tài)機(jī)跳轉(zhuǎn)至start_abort;如果地址與之前的請求地址一致,對目標(biāo)設(shè)備進(jìn)行延遲讀,狀態(tài)機(jī)跳轉(zhuǎn)至start_multiple;如果地址不一致狀態(tài)機(jī)跳轉(zhuǎn)至start_retry。

放棄條件檢測(check_abort):滿足放棄條件如奇偶校驗(yàn)錯(cuò)誤、強(qiáng)制放棄等條件時(shí),狀態(tài)機(jī)跳轉(zhuǎn)至start_abort;不滿足條件,狀態(tài)機(jī)轉(zhuǎn)至start_retry。

讀等待狀態(tài)1(start_wait_rd1):如果FIFO中有了待傳輸?shù)臄?shù)據(jù),狀態(tài)機(jī)跳轉(zhuǎn)至start_wait_rd2;否則一直等待在狀態(tài)start_wait_rd1。

讀等待狀態(tài)2(start_wait_rd2):FIFO中已經(jīng)有了所要讀取的數(shù)據(jù),狀態(tài)機(jī)跳轉(zhuǎn)至start_multiple。

目標(biāo)設(shè)備放棄(start_abort):一直維持該狀態(tài)直到主設(shè)備聲明傳輸結(jié)束,狀態(tài)機(jī)轉(zhuǎn)至idle。

單數(shù)據(jù)傳輸(start_single):如果主設(shè)備聲明最后一個(gè)數(shù)據(jù)傳輸,狀態(tài)機(jī)跳轉(zhuǎn)至idle;如果主設(shè)備繼續(xù)對該目標(biāo)設(shè)備進(jìn)行讀寫操作,狀態(tài)機(jī)跳轉(zhuǎn)至start_retry。

數(shù)據(jù)突發(fā)傳輸(start_multiple):如果剩下最后一個(gè)字節(jié)傳輸,狀態(tài)機(jī)跳轉(zhuǎn)到idle;如果地址信息無效或地址越界,狀態(tài)機(jī)跳轉(zhuǎn)到start_retry;如果接收FIFO幾乎滿了而PCI主設(shè)備繼續(xù)往其中寫入數(shù)據(jù),狀態(tài)機(jī)跳轉(zhuǎn)到start_retry;其它情況狀態(tài)機(jī)保持start_multiple狀態(tài)不變。

重試(start_retry):一直維持該狀態(tài)直到主設(shè)備聲明傳輸結(jié)束,狀態(tài)機(jī)轉(zhuǎn)至idle。

3 數(shù)據(jù)通路實(shí)現(xiàn)

目標(biāo)控制器的數(shù)據(jù)通路具體可通過兩種類型的目標(biāo)接口實(shí)現(xiàn):寄存器型目標(biāo)接口和FIFO型目標(biāo)接口。

3.1 寄存器型目標(biāo)接口

每個(gè)PCI功能擁有64個(gè)配置雙字的單元[1](前16個(gè)雙字的格式和用法由PCI規(guī)范預(yù)定),保留用于實(shí)現(xiàn)配置寄存器。本地可以有一些功能設(shè)備,這些設(shè)備都有相應(yīng)的控制/狀態(tài)寄存器,PCI總線上的主設(shè)備要對這些控制寄存器進(jìn)行編程,進(jìn)而控制相應(yīng)的功能設(shè)備完成特定功能。兩類寄存器可以歸為一個(gè)數(shù)據(jù)通道實(shí)現(xiàn),寄存器型目標(biāo)接口就為本地的功能設(shè)備提供了這樣一種接口,使得PCI總線上的主設(shè)備可以通過它來訪問功能設(shè)備的寄存器。由于PCI總線主設(shè)備的訪問目標(biāo)是一些寄存器,所以該接口無需支持突發(fā)傳輸,主設(shè)備每一次訪問最多只涉及到32位的數(shù)據(jù)傳輸。

3.2 FIFO型目標(biāo)接口

FIFO型的目標(biāo)通道主要用于大量的數(shù)據(jù)傳輸,可以將本地的存儲(chǔ)器掛接在該接口上,這樣PCI總線主設(shè)備可以通過FIFO型目標(biāo)通道訪問到本地的存儲(chǔ)器,針對PCI主設(shè)備對本地存儲(chǔ)器的讀和寫操作,設(shè)置了兩個(gè)異步FIFO,讀FIFO和寫FIFO。其結(jié)構(gòu)如圖3

命令解碼器和目標(biāo)狀態(tài)機(jī)組成了該接口的控制單元。FIFO型目標(biāo)接口由地址解碼器、讀寫控制單元和讀/寫異步FIFO四部分組成,在控制部件的協(xié)調(diào)控制下,共同完成PCI總線上的其它主設(shè)備對本地存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)或讀取。

讀寫控制單元:主要用于目標(biāo)延遲讀的控制,存儲(chǔ)并比照前后數(shù)據(jù)傳輸請求的地址和命令信息,聲明本次傳輸請求是否為有效的延遲讀請求。   讀/寫FIFO:異步FIFO,用于緩存PCI主設(shè)備到本地存儲(chǔ)器的讀寫數(shù)據(jù)。

地址解碼器:解碼PCI總線上的地址信息,識(shí)別對FIFO型目標(biāo)接口的訪問。對于地址解碼器的實(shí)現(xiàn),在最初PCI系統(tǒng)分配地址時(shí),F(xiàn)IFO型的目標(biāo)接口被分配到某一段地址區(qū)內(nèi),通過地址翻譯將其映射到本地的系統(tǒng)中[4]。

FIFO型目標(biāo)接口邏輯結(jié)構(gòu)

圖3 FIFO型目標(biāo)接口邏輯結(jié)構(gòu)

對PCI主設(shè)備發(fā)起的寫操作,數(shù)據(jù)會(huì)先以PCI時(shí)鐘寫入接口內(nèi)的寫FIFO,同時(shí)PCI控制器會(huì)通知本地存儲(chǔ)器控制器有數(shù)據(jù)寫入。本地存儲(chǔ)器控制器待FIFO中達(dá)到一定數(shù)據(jù)量時(shí)以自己的時(shí)鐘讀取FIFO中的數(shù)據(jù)存入本地存儲(chǔ)器,如果FIFO讀空,存儲(chǔ)器會(huì)暫停等待直到FIFO中有新的數(shù)據(jù)寫入,才進(jìn)行讀取。

對PCI主設(shè)備發(fā)起的讀本地存儲(chǔ)器的操作,為了提高讀數(shù)據(jù)的效率,設(shè)計(jì)中根據(jù)不同數(shù)據(jù)傳輸?shù)奶攸c(diǎn),把讀操作劃分為兩個(gè)類型,即立即讀和延遲讀。

(1)立即讀:在PCI總線主設(shè)備發(fā)起讀操作后,一直占用PCI總線等待,PCI總線控制器向本地存儲(chǔ)器請求對應(yīng)的數(shù)據(jù),直到本地存儲(chǔ)器將數(shù)據(jù)寫入讀FIFO中,PCI控制器讀取FIFO中數(shù)據(jù)開始PCI總線上的數(shù)據(jù)傳輸。這種讀類型一般適用于進(jìn)行數(shù)據(jù)量小的傳輸且本地存儲(chǔ)器可以在較短的時(shí)間內(nèi)將要求的數(shù)據(jù)送到PCI總線。

(2)延遲讀:PCI總線主設(shè)備的讀請求到達(dá)PCI目標(biāo)總線控制器時(shí),控制器鎖存地址和命令信息,并回應(yīng)主設(shè)備讓它重試。同時(shí)PCI目標(biāo)總線控制器向本地存儲(chǔ)器請求數(shù)據(jù),本地存儲(chǔ)器將數(shù)據(jù)寫入總線控制器中的FIFO中。此時(shí)如果PCI總線上的主設(shè)備重試先前的數(shù)據(jù)傳輸請求,PCI目標(biāo)控制器就可以響應(yīng)請求將數(shù)據(jù)發(fā)送到PCI總線上。這個(gè)過程中,PCI總線主設(shè)備在收到重試回應(yīng)后就會(huì)釋放PCI總線,允許其它的主設(shè)備占用總線進(jìn)行數(shù)據(jù)傳輸,這樣從而提高了總線的利用率。圖4給出了PCI主設(shè)備突發(fā)讀時(shí)采用延遲讀的仿真結(jié)果圖

突發(fā)讀時(shí)仿真波形

圖4 突發(fā)讀時(shí)仿真波形

4 結(jié)束語

本文基于PCI2.2總線規(guī)范完成了通用PCI目標(biāo)控制器的RTL級設(shè)計(jì)。經(jīng)驗(yàn)證設(shè)計(jì)完全實(shí)現(xiàn)了目標(biāo)控制器的功能,目前已通過了FPGA原型驗(yàn)證并應(yīng)用到CMOS圖象傳感器的數(shù)據(jù)傳輸中。在后續(xù)的開發(fā)中,可以考慮在控制器內(nèi)部加入電源管理模塊,進(jìn)一步降低PCI目標(biāo)控制器的功耗。

本文的創(chuàng)新點(diǎn):該設(shè)計(jì)方案將目標(biāo)控制器整體分為控制邏輯和數(shù)據(jù)通道兩部分,并根據(jù)目標(biāo)設(shè)備的不同類型,在數(shù)據(jù)通道內(nèi)實(shí)現(xiàn)不同的目標(biāo)接口,并引入了立即讀和延遲讀機(jī)制實(shí)現(xiàn)數(shù)據(jù)傳輸,使整個(gè)設(shè)計(jì)取得了較高的效率。

參考文獻(xiàn)

[1] Tom Shanley, Don Anderson 著. 林輝等譯. PCI 系統(tǒng)結(jié)構(gòu). 電子工業(yè)出版社, 2000.

[2] 沈涵飛, 甘萌. PCI總線目標(biāo)控制器的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與設(shè)計(jì). 2004, 25 (11):2101~2104

[3] 施少敏,馬彥恒. 基于接口芯片PCI9030的PCI總線接口卡的設(shè)計(jì)[J]. 微計(jì)算機(jī)信息. 2006,11-2: 295~297

[4] Tinoosh Mohsenin. Design and Evaluation of FPGA-Based Gigabit-Ethernet/PCI Netword Interface Card. Master Degree Dissertation of Rice University. 2004:71~74

[5] Janick Bergeron, Writing Testbenches-Functional Verification of HDL Models. Boston, Kluwer Academic Publisher, 2000.

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:數(shù)控技術(shù)崛起中的反遏制和技...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號(hào) | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)