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