PCI總線(xiàn)協(xié)議的FPGA實(shí)現及驅動(dòng)設計
現在市面上存在著(zhù)各種PCI接口芯片,如AMCC公司的S5933,PLX的9080系列等。專(zhuān)用芯片可以實(shí)現完整的PCI主設備與從設備模式的接口功能,將復雜的PCI總線(xiàn)接口轉化為相對簡(jiǎn)單的用戶(hù)接口,但系統結構受接口芯片的限制,不能靈活地設計目標系統,且成本較高。本文使用符合PCI電氣特性的FPGA芯片進(jìn)行簡(jiǎn)化的PCI接口邏輯設計,實(shí)現了33MHz、32位數據寬度的PCI從設備模塊的接口功能,節約了系統的邏輯資源,且可以將其它用戶(hù)邏輯集成在同一塊芯片上,降低了成本,增加了設計的靈活性。另外,還給出了Windows9x系統下的設備驅動(dòng)程序,可以與應用程序接口,形成一個(gè)完整的系統。目前,本系統已經(jīng)被印染企業(yè)應用在數據采集和處理等方面。
?。?系統構成與功能描述
系統的總體框圖如圖1所示。
由圖1可見(jiàn),系統的硬件平臺為一塊PCI卡。此卡的結構十分簡(jiǎn)潔,主要由FPGA芯片、RAM芯片和輸出接口三部分組成。其中,FPGA芯片集成了PCI接口模塊和數據處理模塊。PCI接口模塊實(shí)現了33MHz工作時(shí)鐘、32位總線(xiàn)寬度的接口功能,支持I/O空間、內存空間及配置空間的讀寫(xiě)和PCI中斷功能。由于簡(jiǎn)化的PCI接口占用的邏輯資源較少,可以在同一塊芯片中集成其他用戶(hù)邏輯。作為一個(gè)應用實(shí)例,本文加入了一個(gè)數據處理模塊,對PCI接口傳送來(lái)的數據進(jìn)行處理,通過(guò)片外的輸出接口輸出到下位機。RAM芯片為數據處理提供緩存功能。
?。?從設備模式下的簡(jiǎn)化PCI協(xié)議的實(shí)現
為了實(shí)現PCI接口的基本功能,必須完成以下幾個(gè)模塊:
?。ǎ保校茫膳渲每臻g設置。PCI協(xié)議支持三種地址空間:I/O空間、內存空間和配置空間。配置空間提供了支持PCI設備自動(dòng)配置的機制,是必需的。
?。ǎ玻校茫蓮脑O備狀態(tài)機。PCI總線(xiàn)狀態(tài)機是具有PCI總線(xiàn)的計算機系統的狀態(tài)流,是由一個(gè)已知狀態(tài)到另一個(gè)狀態(tài)的條件、時(shí)序的描述。這是PCI接口設計中最基本也是最重要的部分。
?。ǎ常┑刂纷g碼和命令譯碼。地址譯碼用來(lái)確定PCI設備是否應當響應當前總線(xiàn)的操作;命令譯碼則用來(lái)指示PCI設備根據不同的總線(xiàn)命令作出相應的動(dòng)作。
本文采用ALTERA公司的Max+PlusII軟件平臺,硬件描述語(yǔ)言使用ALTERA HDL語(yǔ)言,也可以方便地轉換成VHDL或VerilogHDL語(yǔ)言。在此之前,先引入PCI總線(xiàn)信號的定義。
?。玻?總線(xiàn)信號定義
根據PCI總線(xiàn)協(xié)議2.2版,從設備模式下PCI接口至少包含47根引腳。圖2給出了按功能劃分的引腳分布,左邊是必需引腳,右邊是可選引腳。為簡(jiǎn)化起見(jiàn),本文采用了如下引腳,其他引腳均不使能或置為高阻態(tài)。
?。ǎ保┯上到y提供的33MHz的同步時(shí)鐘信號CLK和復位信號RST#(#表示低電平有效);
?。ǎ玻╆P(guān)于數據傳輸的核心信號:32位地址/數據復用線(xiàn)AD[31:0]、總線(xiàn)命令/字節使能復用線(xiàn)C/BE[3:0]#和偶校驗信號PAR;
評論