基于PCI總線的高速數(shù)據(jù)采集卡的設(shè)計
基于PCI總線的高速數(shù)據(jù)采集卡的設(shè)計
一、引言
數(shù)據(jù)采集是數(shù)字信號處理中的重要環(huán)節(jié)。針對不同任務(wù),數(shù)據(jù)采集要達到的技術(shù)指標也不同。對于瞬態(tài)信號、雷達信號和圖象處理都要求幾MB/S甚至幾十MB/S的速度。而目前用于PC機的數(shù)據(jù)采集卡大部分是基于ISA總線的,其最大缺點是傳輸速度太低,不能實現(xiàn)實時傳輸[1]。PCI總線是一種目前較為流行的、*的高速同步總線,它的歷史較短,正式的2.2版本于1999年2月發(fā)布。其優(yōu)點在于能夠?qū)崿F(xiàn)設(shè)備間的快速訪問,33MHZ/32位的PCI總線可以實現(xiàn)132MB/S的數(shù)據(jù)傳輸率,目前已經(jīng)有66MHZ/64位的PCI總線,傳輸速率更快[2]。PCI是獨立于處理器的同步總線,不需CPU的介入便可進行數(shù)據(jù)傳輸。此外,還支持突發(fā)傳遞、即插即用功能。PCI以其突出的性能備受計算機和通信界的青睞,將取代以往的總線,成為高檔機及高性能工作站外設(shè)的基石。
二、數(shù)據(jù)采集卡的結(jié)構(gòu)及性能
本數(shù)據(jù)采集卡主要由一個PCI總線控制器(PCI9050)[3],一塊采集控制芯片(MAX7128),以及一個A/D轉(zhuǎn)換模塊構(gòu)成,其具體的結(jié)構(gòu)框圖如圖1所示。該數(shù)據(jù)采集卡的性能可以達到每秒采樣20M個樣本,A/D字長為8位,數(shù)據(jù)傳輸率在20MB/S以上,這對以往基于ISA總線的數(shù)據(jù)采集系統(tǒng)來說,根本無法實現(xiàn)。
圖中粗線表示數(shù)據(jù)/地址總線,細線表示控制線。前端信號經(jīng)過提取、放大后,進入A/D;在CPLD控制下,高速A/D芯片將模擬信號轉(zhuǎn)為數(shù)字信號,并將數(shù)據(jù)輸出,存儲在雙口RAM中;當(dāng)一組數(shù)據(jù)存儲完畢后,由CPLD通過PCI控制芯片向主機申請中斷,主機響應(yīng)中斷后通過PCI控制芯片直接讀取RAM中的數(shù)據(jù)。
三、數(shù)據(jù)采集卡的設(shè)計方案
1、PCI總線控制器的實現(xiàn)
由于PCI總線協(xié)議的復(fù)雜度較高,其接口電路實現(xiàn)起來相對困難。因此,目前主要有兩種方案來實現(xiàn)PCI總線的控制:一種是采用專用的PCI接口芯片;另一種是用可嵌入PLD中的IP核。前者由于芯片本身已完成大部分PCI協(xié)議,不需設(shè)計者精通PCI協(xié)議的各種細節(jié),開發(fā)周期短,但系統(tǒng)集成度較低,并且費用稍高;后者需要設(shè)計者根據(jù)PCI協(xié)議自己設(shè)計接口邏輯,要求設(shè)計人員*掌握PCI協(xié)議,設(shè)計的難度相對較大,但由于可將PCI接口邏輯與用戶邏輯集成在一片PLD中,提高了電路板的集成度和系統(tǒng)的性能。根據(jù)設(shè)計需求和實際情況,我們最終選擇了第一種方式,采用了PLX公司的PLX9050作為PCI總線控制器,它即能滿足設(shè)計需要,并且價格較低。
PLX9050是PLX公司推出的用于低成本適配器的PCI總線目標接口芯片,支持32位、33MHZ的PCI總線規(guī)范。它提供用于適配卡的小型而高性能的PCI總線目標接口,主要功能與性能如下:
(1)符合PCI2.1規(guī)范,接口芯片支持低成本從屬適配器;
(2)五個本地總線地址空間和四個片選信號
(3)支持復(fù)用和非復(fù)用8位、16位和32位通用本地總線;
(4)串行EEPROM用于裝載配置信息;
(5)可將兩個來自本地總線的中斷轉(zhuǎn)換成PCI中斷;
(6)支持本地總線與PCI總線時鐘異步運行。
本設(shè)計方案采用了非復(fù)用方式(C模式),8位本地總線,兩個地址空間,一個本地中斷,接口電路的設(shè)計很簡單,在此不作具體介紹。
如果不用PCI9050的默認配置(大多數(shù)情況不用),設(shè)計者需要對其進行配置。配置數(shù)據(jù)預(yù)先燒入EEPROM中,上電后PCI9050自動裝入。PCI9050的配置寄存器分為兩類。一類是PCI配置寄存器,另一類是本地配置寄存器。PCI配置寄存器配置PCI9050的PCI總線接口方面的屬性,根據(jù)文檔說明進行配置即可。本地配置寄存器配置PCI9050的本地總線接口的屬性,由21個雙字配置寄存器組成,要根據(jù)實際開發(fā)的硬件板卡的硬件資源進行配置。本地配置寄存器共分六類:本地地址空間范圍寄存器(LASxRR)和擴展ROM范圍寄存器、本地地址空間的本地基地址寄存器(重新映射寄存器LASxBA)、本地地址空間總線屬性描述寄存器(LASxBRD)、片選基地址寄存器類(CSxBASE)、中斷控制寄存器、混合控制寄存器。在編寫配置EEPROM時,要注意各屬性寄存器和控制寄存器的設(shè)置不要前后矛盾,地址范圍和基址寄存器的設(shè)置要符合要求。在設(shè)計中,用了兩個空間,一個為存貯器空間(對應(yīng)雙口RAM),一個為I/O空間(用于主機對采集卡的控制)。
下面以本地地址空間1為例說明將本地地址總線映射到PCI總線的過程。首先設(shè)置LAS3RR,初始化時PCI9050芯片將從EEPROM中讀出此值,放入PCI基地址寄存器5中,主機先寫入FFFFFFFFH后,再讀回其值,為1的位表示需要分配地址。例如當(dāng)LAS3RR的內(nèi)容為FFF00000H時,PCI總線給本地地址空間3分配的PCI基地址可能是12300000H(此值是隨機的)。該例中內(nèi)存區(qū)域的大小是1M。接下來設(shè)置LAS3BA,即填入PCI地址12300000H對應(yīng)的本地總線地址。例如若填入04000001H。表明PCI總線上對PCI地址12300000H的訪問亦即對本地地址04000000H的訪問(注意C模式時最多只有28條地址線,J模式時可以有32位)。然后設(shè)置對應(yīng)的片選寄存器3,以便當(dāng)PCI總線對本地總線地址空間3的地址進行訪問時,片選信號3有效。其值設(shè)為04080001H,表示片選3的基地址是04080000H,其地址范圍計算:基地址第一個不是零的位前面有19個零,則范圍是2的19次冪再乘以2。這樣當(dāng)PCI的訪問地址落入片選3寄存器定義的范圍內(nèi)時,片選3信號CS3#有效,用來選擇本地總線上的外圍設(shè)備。最后配置本地地址空間3的本地總線描述寄存器,具體請查看相應(yīng)參考文檔。
2、CPLD的內(nèi)部邏輯設(shè)計
CPLD中集成了DMA控制器、PCI局部總線及A/D控制等功能,是設(shè)計中的重點。設(shè)計中選用ALTERA的EPM7128芯片,其內(nèi)部邏輯框圖如圖2所示。其中,9050接口主要完成與PCI總線的握手,例如根據(jù)9050的時序要求產(chǎn)生相應(yīng)的響應(yīng)信號、當(dāng)一組數(shù)據(jù)寫入完畢后產(chǎn)生中斷請求信號等;時鐘部分用于產(chǎn)生片內(nèi)各種時鐘信號;控制部分主要根據(jù)主機命令開啟(關(guān)閉)A/D及對CPLD片內(nèi)其它部分進行控制;DMA控制器的關(guān)鍵部分是地址控制器,寫入RAM時地址控制器根據(jù)A/D頻率產(chǎn)生遞增的RAM地址,另外還有RAM片選信號等其它必要的邏輯。
主機通過向本地I/O空間的特定地址單元寫入特定值來發(fā)出啟動命令,控制部分使A/D相應(yīng)引腳置有效,以啟動A/D。A/D數(shù)據(jù)線上數(shù)據(jù)有效的同時,DMA控制器輸出RAM寫地址和RAM片選信號,將數(shù)據(jù)存入RAM。當(dāng)RAM地址大于特定值(此值小于RAM容量)時,PCI局部總線部分產(chǎn)生LINT信號,申請中斷。同時,A/D仍繼續(xù)按地址遞增方式將變換后數(shù)據(jù)存入RAM,當(dāng)RAM寫地址為最高有效地址后,地址控制器歸零,重新向RAM低地址寫入數(shù)據(jù)。由于PCI總線速度比A/D變換速度快,不會出現(xiàn)未讀數(shù)據(jù)被覆蓋的情況。主機收到中斷信號后,進入中斷處理程序,從低地址開始讀取數(shù)據(jù)采集卡上的RAM。PLX9050的數(shù)據(jù)線/地址線與RAM的數(shù)據(jù)線/地址線直接相連,讀寫控制線與CPLD相連,中斷過程中,CPLD根據(jù)邏輯產(chǎn)生控制信號, PLX9050直接讀RAM中的數(shù)據(jù)。