基于CPLD的并口數(shù)據(jù)的采集和存儲(chǔ)
摘 要:提出了一種利用CPLD實(shí)現(xiàn)雷達(dá)并口數(shù)據(jù)的采集和存儲(chǔ)的方案。采用單片CPLD完成了以往需要大量外圍器件來(lái)完成的雷達(dá)并口數(shù)據(jù)收發(fā)及存儲(chǔ)功能,有效地減少了印制板上功能模塊的面積,減少了系統(tǒng)體積,提高了設(shè)計(jì)效率;同時(shí)還利用CPLD中的鎖相環(huán)倍頻系統(tǒng)時(shí)鐘大大提高系統(tǒng)采集速度。實(shí)踐證明,基于CPLD的系統(tǒng)設(shè)計(jì)是靈活、現(xiàn)實(shí)且高效的。
關(guān)鍵詞:CPLD;雙口RAM;數(shù)據(jù)采集;存儲(chǔ)
O 引 言
在雷達(dá)的控制和數(shù)據(jù)采集系統(tǒng)中通常采用并行數(shù)據(jù)總線方式進(jìn)行控制信號(hào)傳輸和數(shù)據(jù)交換。在以往的設(shè)計(jì)中,大量使用中小規(guī)模集成電路及分立元件搭建總線數(shù)據(jù)采集和控制功能模塊,不僅占用較大的印制板面積,而且設(shè)計(jì)工作量大,時(shí)序控制復(fù)雜,采集速度不理想。
將CPLD應(yīng)用到該系統(tǒng)的設(shè)計(jì)中可以有效地解決上述問(wèn)題。CPLD可以實(shí)現(xiàn)許多中小規(guī)模集成電路的功能,因此可以有效地減少印制板上功能模塊的面積,同時(shí)減少系統(tǒng)體積。利用CPLD的在線編程和仿真功能可以模擬系統(tǒng)各類(lèi)信號(hào)的時(shí)序,大大提高設(shè)計(jì)效率。
l 系統(tǒng)硬件結(jié)構(gòu)
為了實(shí)現(xiàn)高速數(shù)據(jù)處理與數(shù)據(jù)傳送,系統(tǒng)采用CP—CI總線接口形式。該設(shè)計(jì)方案為雷達(dá)系統(tǒng)提供了兩路并行數(shù)據(jù)總線接口。其中一路并口由CPLD控制,將存儲(chǔ)空間中系統(tǒng)已經(jīng)準(zhǔn)備好的數(shù)據(jù)發(fā)送給雷達(dá);另一路用于接收雷達(dá)傳回的回波信號(hào),并由CPLD控制放到存儲(chǔ)空間中去。系統(tǒng)設(shè)計(jì)框圖如圖1所示。
1.1 CPCI總線接口
CPCI總線接口兼顧了PCI總線的高速度,同時(shí)丟棄了金手指式互連方式,而改用2 mm密度的針孔連接器,提高了系統(tǒng)的可靠性,增強(qiáng)了負(fù)載能力。在工業(yè)領(lǐng)域已經(jīng)得到廣泛應(yīng)用。
總線接口電路采用PLX公司的高性能接口芯片PCI9054。它采用了先進(jìn)的PLX數(shù)據(jù)管道結(jié)構(gòu)技術(shù),是32 b,33 MHz的PCI總線控制器。其主要特性如下:
支持主/從兩種訪問(wèn)方式,其峰值傳輸速率可達(dá)133 MB/s;提供了2個(gè)獨(dú)立的可編程DMA控制器,每個(gè)通道均支持塊和分散/集中的DMA方式;局部總線速率高達(dá)50 MHz,局部總線的時(shí)鐘可以由外部提供,且該時(shí)鐘可以與:PCI的時(shí)鐘同步;內(nèi)部有6種可編程的FIFO,以實(shí)現(xiàn)零等待突發(fā)傳輸及局部總線和PCI:總線之間的異步操作。
系統(tǒng)啟動(dòng)的時(shí)候,在系統(tǒng)配置的周期內(nèi),PCI9054從配置E2PROM中讀人配置信息完成初始化。這里采用NS93CS56完成對(duì)PCI9054的初始化配置。
1.2 可編程邏輯器件
可編程邏輯器件選用ALTERA公司的EPlC3,其型號(hào)為Cyclone系列的產(chǎn)品,具有內(nèi)部邏輯分析功能。在JTAG方式下,通過(guò)下載電纜即可觀察到各個(gè)IO引腳及內(nèi)部各個(gè)寄存器中的數(shù)據(jù),調(diào)試十分方便。
1.3 存儲(chǔ)器
本系統(tǒng)中采用雙口RAM作為PCI總線和并口數(shù)據(jù)存儲(chǔ)和交換的媒介。考慮到用于并口交換的數(shù)據(jù)量較大,因此選用IDT公司的64K×16 b雙口芯片IDT70V28。做成乒乓方式的存儲(chǔ)結(jié)構(gòu),以實(shí)現(xiàn)并行操作,節(jié)約處理時(shí)間,保證實(shí)時(shí)處理。
2 系統(tǒng)設(shè)計(jì)及原理
2.1 鎖相環(huán)
在印制板上采用的晶體或晶振的輸出頻率較低,并不能滿足系統(tǒng)需求,為了能夠得到較高的采樣速度,必須有一個(gè)高頻率時(shí)鐘作為系統(tǒng)時(shí)鐘。EPlC3內(nèi)部的鎖相環(huán)功能可以對(duì)輸入時(shí)鐘進(jìn)行倍頻和降頻的處理,還可以根據(jù)需要產(chǎn)生不同的時(shí)鐘相位。倍頻后的時(shí)鐘可以作為CPLD內(nèi)部的系統(tǒng)時(shí)鐘使用,也可以輸出至CPLD外部,作為其他器件的時(shí)鐘輸入。
在本系統(tǒng)中采用一個(gè)20 MHz的晶振作為CPLD的輸入時(shí)鐘,通過(guò)倍頻產(chǎn)生一個(gè)100 MHz的時(shí)鐘作為內(nèi)部的系統(tǒng)時(shí)鐘,同時(shí)產(chǎn)生一個(gè)33 HMz的時(shí)鐘輸出作為PCI9054的局部總線異步時(shí)鐘。
2.2 并口數(shù)據(jù)收發(fā)
雷達(dá)回波包括16位寬度的數(shù)據(jù)和握手信號(hào),首先需要用CPLD對(duì)握手信號(hào)進(jìn)行接收和處理。接收到的、握手信號(hào)都為下降沿觸發(fā)脈沖。需要注意的是,接收到的握手信號(hào)必須去除毛刺和噪聲產(chǎn)生的干擾,避免系統(tǒng)接收到錯(cuò)誤的數(shù)據(jù)。為了去除毛刺干擾產(chǎn)生的影響,應(yīng)使低電平保持一段時(shí)間,以減少誤觸發(fā)。根據(jù)系統(tǒng)中毛刺和噪聲的周期設(shè)定檢測(cè)門(mén)限,例如,當(dāng)握手信號(hào)經(jīng)電纜傳輸至接口板時(shí),有時(shí)會(huì)在前沿產(chǎn)生一個(gè)15~20 ns的毛刺,因此可以在檢測(cè)到握手信號(hào)的下降沿后接著連續(xù)記錄四個(gè)以上時(shí)鐘周期的低電平信號(hào),只有當(dāng)這四個(gè)周期的信號(hào)電平全為“0”時(shí),才確定本次握手有效。并口接收數(shù)據(jù)示意圖如圖2所示。
需要輸出的并口數(shù)據(jù)從存儲(chǔ)器讀出后應(yīng)先于握手信號(hào)放置在輸出口上并進(jìn)行保持,待并口數(shù)據(jù)穩(wěn)定后才能輸出握手信號(hào)。握手信號(hào)的延遲時(shí)間及握手信號(hào)的寬度可以進(jìn)行設(shè)定以增強(qiáng)系統(tǒng)的適應(yīng)性。并口發(fā)送數(shù)據(jù)示意圖如圖3所示。
2.3數(shù)據(jù)存儲(chǔ)及與交換
本系統(tǒng)中由雙口RAM作為系統(tǒng)輸入和輸出數(shù)據(jù)的緩沖區(qū),由CPLD和總線接口PCI9054共同使用。由于系統(tǒng)輸入輸出數(shù)據(jù)量較大,輸入輸出操作頻繁,因此可將雙口RAM的存儲(chǔ)空間平均分割成長(zhǎng)度相同的兩半,輸入輸出數(shù)據(jù)占用一半存儲(chǔ)空間。這樣當(dāng)CPLD向第一塊存儲(chǔ)空間寫(xiě)入數(shù)據(jù)時(shí),PCI9054既可以從這塊存儲(chǔ)空間讀出數(shù)據(jù),同時(shí)還可以向另外一塊存儲(chǔ)空間寫(xiě)入數(shù)據(jù),這樣可以幾乎節(jié)約一半的操作時(shí)間。但是當(dāng)雙口RAM的兩端同時(shí)對(duì)同一個(gè)地址單元分別進(jìn)行讀數(shù)據(jù)和寫(xiě)數(shù)據(jù)的操作時(shí),讀出的數(shù)據(jù)會(huì)是錯(cuò)誤的。為了防止發(fā)生這種錯(cuò)誤,可以使用雙口RAM內(nèi)部的仲裁機(jī)制,利用BUSY信號(hào)進(jìn)行判斷。當(dāng)讀取一個(gè)地址單元中的數(shù)據(jù)時(shí)首先判斷BUSY信號(hào)是否為低電平,如果BUSY信號(hào)為低電平時(shí)表示雙口RAM的另外一邊正在對(duì)該地址單元進(jìn)行寫(xiě)操作。使用仲裁機(jī)制可以有效消除讀寫(xiě)沖突,但是也需要系統(tǒng)不斷的對(duì)雙口RAM的BUSY信號(hào)進(jìn)行判斷。這會(huì)嚴(yán)重的占用系統(tǒng)資源,同時(shí)也影響了數(shù)據(jù)的傳輸速度。本系統(tǒng)中,再次利用乒乓結(jié)構(gòu)將接收和發(fā)送數(shù)據(jù)的存儲(chǔ)空間各分為長(zhǎng)度相等的兩部分。存儲(chǔ)空間最終分配示意圖如圖4所示。
接收數(shù)據(jù)時(shí),當(dāng)CPLD將一塊出處空間寫(xiě)滿數(shù)據(jù)以后向PCI9054產(chǎn)生中斷信號(hào)并產(chǎn)生一個(gè)標(biāo)志信息,PCI9054接收到中斷信號(hào)以后首先查詢(xún)標(biāo)志信息判斷是哪一塊存儲(chǔ)區(qū)域已經(jīng)寫(xiě)滿,然后將這一存儲(chǔ)空間中的數(shù)據(jù)讀出并發(fā)送給系統(tǒng)。此時(shí)CPLD可以繼續(xù)向另一塊存儲(chǔ)空間寫(xiě)入數(shù)據(jù)。同樣地,當(dāng)PCI9054向其中一塊發(fā)送區(qū)寫(xiě)入數(shù)據(jù)時(shí),CPLD可以從另一塊區(qū)域中讀出數(shù)據(jù)。
乒乓結(jié)構(gòu)存儲(chǔ)形式使得數(shù)據(jù)交換和數(shù)據(jù)處理可以并行進(jìn)行,極大地節(jié)約了處理時(shí)間,對(duì)系統(tǒng)滿足實(shí)時(shí)性要求具有及其重要的意義。
2.4 接口時(shí)序控制
當(dāng)雷達(dá)的回波數(shù)據(jù)與雙口RAM中的數(shù)據(jù)同時(shí)淮備好時(shí),由于PCI9054局部總線讀寫(xiě)速度較快,如果先接收數(shù)據(jù),則雙口RAM中的數(shù)據(jù)有可能溢出,而如果先將雙口RAM中準(zhǔn)備好的數(shù)據(jù)發(fā)送出去則接收的數(shù)據(jù)需要等待一段時(shí)間,影響了系統(tǒng)的實(shí)時(shí)性。因此CPLD必須控制雙口RAM的讀寫(xiě)時(shí)序,既使發(fā)送區(qū)的數(shù)據(jù)不會(huì)溢出同時(shí)又不影響系統(tǒng)的實(shí)時(shí)性。由于雙口數(shù)據(jù)速率相對(duì)于系統(tǒng)來(lái)說(shuō)速度相對(duì)比較慢,因此本系統(tǒng)采用分時(shí)處理的辦法解決。首先判斷握手信號(hào)是否有效,如果握手信號(hào)有效則表明并口正在將接收數(shù)據(jù)寫(xiě)入雙口RAM,否則并口正處于接收間隔時(shí)間,CPLD對(duì)雙口RAM沒(méi)有寫(xiě)操作。由于每組并口數(shù)據(jù)的傳輸速率比較固定,因此間隔時(shí)間可以預(yù)知。在此間隔時(shí)間將雙口RAM中的數(shù)據(jù)讀出并發(fā)送,通過(guò)這種方法可以進(jìn)一步提高數(shù)據(jù)的收發(fā)速率,減少數(shù)據(jù)在雙口中的滯留時(shí)間,更加提高了系統(tǒng)的實(shí)時(shí)性。
3 結(jié) 語(yǔ)
本文采用單片CPLD完成了以往需要大量外圍器件來(lái)完成的雷達(dá)并口數(shù)據(jù)收發(fā)及存儲(chǔ)功能,所設(shè)計(jì)的CPLD已應(yīng)用于雷達(dá)系統(tǒng)中,其應(yīng)用結(jié)果表明:
(1)采用CPLD極大的簡(jiǎn)化了系統(tǒng)結(jié)構(gòu),減少了板卡體積,降低了系統(tǒng)的發(fā)熱量和干擾,提高了系統(tǒng)的可靠性,也給調(diào)試維修帶來(lái)了極大的方便。
(2)使用QuartusⅡ使得硬件“軟件化”自動(dòng)設(shè)計(jì),更新了傳統(tǒng)的電路設(shè)計(jì)和調(diào)試方式,大大縮短了開(kāi)發(fā)周期,特別是其設(shè)計(jì)仿真和定時(shí)分析使得設(shè)計(jì)更可靠,確保了系統(tǒng)邏輯的正確性。