1 PCI總線介紹 PCI總線是一種不依附于某個具體處理器的局部總線。從結構上看,PCI是在CPU和原來的系統總線之間插入的一級總線,具體由一個橋接電路實現對這一層的管理,并實現上下之間的接口以協調數據的傳送。管理器提供了信號緩沖,使之能支持10種外設,并在高時鐘頻率下保持高性能。 與其它總線相比,PCI總線標準具有多方面的優點。表1為幾種總線性能的比較。PCI局部總線的性能特點如下: (1)傳輸速度快。最高工作頻率33MHz,峰值吞吐率在32位時為132Mb/s,64位時為264Mb/s。 (2)支持無限猝發讀寫方式。讀寫時后面可跟無數個數據周期,具有強大的數據猝發傳輸能力。 (3)支持并行工作方式。PCI控制器具有多級緩沖,利用它可使PCI總線上外設與CPU并行工作。例如CPU輸出數據時,先將數據快速送到緩沖器中,當這些數據不斷送往設備時,CPU就可轉而執行其他工作了。 (4)獨立于處理器。PCI在CPU和外設間插人一個復雜的管理層,用以協調數據傳輸,通常稱之為橋。橋的主要功能是在兩種不同的信號環境之間進行轉換,并向系統中所有的主控制器提供一致的總線接口。因此PCI總線可支持多種系列的處理器, 并為處理器升級創造了條件。 (5)提供4種規格,可定義32位/64位以及5V/3.3V電壓信號。3.3V電壓信號環境的定義為PCI總線進入便攜機領域提供了便利。 (6)數據線和地址線采用了多路復用結構,減少了針腳數。一般而言.32位字長、僅作目標設備的接口只需47條引腳,作為總線控制者的設備接口再加2條引腳,并可有選擇地增加信號線擴展功能,如64位字長的接口卡需加39條引腳,資源鎖定加l條引腳,等等。 (7)支持即插即用功能,能實現自動配置。在PCI器件上包含有寄存器,上面帶有配置所需的器件信息,使外設適配器在和系統連接時能自動進行配置,無須人工干預。 2 設計流程 本設計的主要流程是將應用層程序產生的數據送入底層驅動,然后由底層驅動軟件將數據分發到硬件的存儲空間中。這一過程由軟件和硬件兩部分完成。系統框圖如圖1所示。 2.1 軟件設計 在本設計中,先通過高端數據處理軟件進行信號的仿真處理,然后將仿真數據直接放入應用層緩沖區。由于本系統考慮到適應一定的快速數據交換,理想狀況下不允許出現空間信號的間斷現象,因此在應用層開辟兩塊數據緩沖區,如圖2所示,分別標號BUFFERl和BUFFER2,在裝完BUFFERl以后,再使用數據填充BUFFER2。只要軟件設計的合理,就可以在應用層連續地將交換數據。 底層軟件設計的驅動中,可以開多個分塊緩沖,分別對應用層進行相應的數據緩沖映射,由于底層驅動直接與硬件相關,因此需要盡可能設計出與硬件十分匹配的緩沖區分塊,以達到最佳的硬件數據傳輸效果。 2.2 硬件設計 數據的傳輸過程由應用層程序發起,但由PCI橋接口芯片PLX9054執行。PLX9054工作于主模式。在該模式下,軟件應用層完全不需要耗費資源便能完成數據的傳輸。而應用層軟件可以在這個過程中進行數據的產生和調配。整個傳輸過程通過DMA和中斷完成。 當DMA傳輸開始后,首先對靜態RAMl中數據進行傳輸,然后通知可編程邏輯器件CPLD,啟動地址計數器,將SRAMl中的數據送向D/A,通過數模轉換產生模擬信號波形。在SRAMl向D/A送數據期間,PLX9054開始向第二塊靜態RAM中傳送數據,同時,應用層軟件又可以為第一塊數據區準備數據,當向第二塊靜態RAM傳送完數據后,檢測第一塊靜態RAM,如果此時第一塊RAM中的數據已經發完,那么就啟動第二塊RAM,向D/A發送數據,與此同時,又開始向第一塊靜態RAM中傳送數據,而應用層軟件則開始為第二塊RAM準備數據。如此周而復始。如果工作條件設計的較為理想,那么就可以得到連續、不間斷、形式不同的模擬信號。 設計中注意以下三個要點: (1)應用層軟件的核心工作是數據的產生和數據的調配。 (2)驅動層軟件的設計是為了在數據傳輸過程中最有效地配合硬件,和最有效的響應硬件的中斷。 (3)本地可編程邏輯器件PLD的使用要最大限度的進行本地時序的調用,以達到最優的數據傳輸。 可以產生連續、不間斷、樣式不同的模擬信號,是本系統設計的優勢和關鍵所在。如果只考慮普通任意波形發生器的做法,那么并不需要對應用層、驅動層以及硬件緩沖區的設計進行過多的考慮,只要開一個足夠大的數據緩沖區,放一個足夠容量的靜態RAM,然后將需要的數據灌入靜態RAM,就可以完成一個高性能任意波形發生器的功能。 3 器件和工具介紹 應用層軟件的編制采用美國微軟公司的VC++編譯器環境。VC是Windows系統下的主要編程語言之一,用它開發的系統具有容易維護升級、界面友好、代碼效率高,執行速度快等一系列優點,并且能夠直接與系統及底層硬件交換數據。 驅動程序的設計和制作采用NuMega公司的DriverWorks驅動開發工具包。DriverWorks以面向對象(OOP)的方式,將編寫WDM及WINNT驅動程序所需的對內核模式訪問及硬件的訪問封裝成類。這樣只要在其向導程序的指引下,根據硬件的具體參數填寫必要步驟,就可以很方便地完成所需驅動程序的框架。最后根據具體的要求添加新的類對象和所需的代碼就可以成功地完成自己的驅動程序。DriverWorks是基于VC++的,它生成的是標準的VC工程,只要將所建的工程在VC下編譯,就可以生成最終的設備驅動程序。 PCI接口電路采用PCI專用接口芯片PLX9-054。PLX9054是由美國PIX公司生產的先進的PCII/OAccelerator,符合PCIV2.2規范,采用176引腳PQFP和225引腳PBGA兩種封裝形式。PLX9054提供了PCI總線、EEPROM、LOCAL總線三個接口。PLX9054作為一種橋接芯片,在PCI總線和LOCAL總線之間傳遞信息,既可以作為兩個總線的主控設備去控制總線,也可以作為兩個總線的目標設備去響應總線。PLX9054采用了先進的PLX數據管道結構技術,是32位、33MHz的通用PCI總線控制器專用芯片,功能強大、使用靈活。PLX9054的靜態RAM采用Cypress公司的CY7C1041靜態RAM。PLX9054的D/A轉換電路采用AnalogDevice公司的AD768高速16位D/A數模轉換器,數據轉換速度達到30MSPS,是一種高速,穩定的電流型D/A轉換器。 4 數據的產生 本系統采用Matlab仿真軟件對信號的數據產生文件進行仿真,仿真的條件完全設置為真實的數據模擬信號輸出條件,仿真效果如圖3所示。舉例如下:若產生一個中心頻率為5MHz,調頻寬度為2MHz的Chip信號,使用30MHz的信號恢復采樣時鐘,嚴格符合采樣定理。仿真程序如下: 通過以上程序產生了一個16K的數據文件,只要將這個文件裝入緩沖區,就可以得到輸出的模擬波形。然后將D/A輸出波形用示波器采集,就可以得到清晰的、與圖4所示的D/A輸出仿真圖中臺階式一模一樣的輸出圖形。 5 結束語 基于PCI總線的任意波形發生器具有靈活、快速、可變、可控,精度高等多方面的優勢,由于其可編程性能優越,因此只要能夠保證準確建立信號的數學模型,就可以得到相應準確的模擬輸出結果,從而為提供復雜的信號產生環境和高質量的信號波形樣式提供了有力的保證。 基于PCI總線的任意波形發生器的研制,能夠滿足各種高質量、復雜信號的需求,從而減輕了由于環境因素和波形質量而影響到的研究精度。 |