基于CPLD的并口數(shù)據(jù)的采集和存儲(chǔ)
需要輸出的并口數(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ǔ)空間寫入數(shù)據(jù)時(shí),PCI9054既可以從這塊存儲(chǔ)空間讀出數(shù)據(jù),同時(shí)還可以向另外一塊存儲(chǔ)空間寫入數(shù)據(jù),這樣可以幾乎節(jié)約一半的操作時(shí)間。但是當(dāng)雙口RAM的兩端同時(shí)對(duì)同一個(gè)地址單元分別進(jìn)行讀數(shù)據(jù)和寫數(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)行寫操作。使用仲裁機(jī)制可以有效消除讀寫沖突,但是也需要系統(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將一塊出處空間寫滿數(shù)據(jù)以后向PCI9054產(chǎn)生中斷信號(hào)并產(chǎn)生一個(gè)標(biāo)志信息,PCI9054接收到中斷信號(hào)以后首先查詢標(biāo)志信息判斷是哪一塊存儲(chǔ)區(qū)域已經(jīng)寫滿,然后將這一存儲(chǔ)空間中的數(shù)據(jù)讀出并發(fā)送給系統(tǒng)。此時(shí)CPLD可以繼續(xù)向另一塊存儲(chǔ)空間寫入數(shù)據(jù)。同樣地,當(dāng)PCI9054向其中一塊發(fā)送區(qū)寫入數(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局部總線讀寫速度較快,如果先接收數(shù)據(jù),則雙口RAM中的數(shù)據(jù)有可能溢出,而如果先將雙口RAM中準(zhǔn)備好的數(shù)據(jù)發(fā)送出去則接收的數(shù)據(jù)需要等待一段時(shí)間,影響了系統(tǒng)的實(shí)時(shí)性。因此CPLD必須控制雙口RAM的讀寫時(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ù)寫入雙口RAM,否則并口正處于接收間隔時(shí)間,CPLD對(duì)雙口RAM沒(méi)有寫操作。由于每組并口數(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)試方式,大大縮短了開發(fā)周期,特別是其設(shè)計(jì)仿真和定時(shí)分析使得設(shè)計(jì)更可靠,確保了系統(tǒng)邏輯的正確性。
評(píng)論