《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于PCI和LVDS的高速數(shù)據(jù)存儲(chǔ)系統(tǒng)的設(shè)計(jì)
基于PCI和LVDS的高速數(shù)據(jù)存儲(chǔ)系統(tǒng)的設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2014年第4期
馬志剛1,2, 劉文怡1, 凌 偉1
(1.中北大學(xué) 儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,電子測(cè)試技術(shù)重點(diǎn)實(shí)驗(yàn)室, 山西 太原030051
摘要: 針對(duì)某系統(tǒng)圖像數(shù)據(jù)量大、傳輸速率快的特點(diǎn),提出了采用PCI總線協(xié)議完成PC與高速數(shù)據(jù)存儲(chǔ)系統(tǒng)之間的通信,利用LVDS總線協(xié)議傳輸數(shù)據(jù)并進(jìn)行混合編幀的解決方案。為提高數(shù)據(jù)存儲(chǔ)速率,使用Flash交叉雙平面頁(yè)編程技術(shù),將寫入速度提高到30 MB/s,有效地滿足了圖像高速存儲(chǔ)的要求。針對(duì)數(shù)據(jù)的碼率匹配,通過構(gòu)建片內(nèi)FIFO緩存來(lái)實(shí)現(xiàn)。測(cè)試結(jié)果表明,所設(shè)計(jì)的數(shù)據(jù)存儲(chǔ)系統(tǒng)能夠穩(wěn)定地接收并存儲(chǔ)圖像數(shù)據(jù),而且具有很高的可靠性。
中圖分類號(hào): TP273
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)04-0080-04
Design of high-speed data storage system based on PCI and LVDS
Ma Zhigang1,2, Liu Wenyi1, Ling Wei1
1. Key Laboratory of Instrumentation Science & Dynamic Measurement(North University of China), Ministry of Education, Science and Technology on Electronic Test & Measurement Laboratory, Taiyuan 030051, China;2. College of Information Science and Engineering, Shanxi Agricultural University, Taigu 030801, China
Abstract: In the light of the characteristics of the large amount of data and the high rate of transmission in the image acquisition system, the solution scheme which applys the PCI bus protocol for achieving communication between PC and the data storage system and LVDS bus protocol for data transmission and mixed coding is proposed. In order to improve the rate of data storage, the interleave two-plane page programming techniques is adopted, and the writing rate can be improved to be 30 Mbyte/s, which fully fulfils the requirement of high-speed storage of the image data. Meanwhile, on-chip FIFO buffer is built for data code rate matching. Test results indicated that the data memory system proposed in this paper can receive and store image data stably and reliably.
Key words : PCI; LVDS; data memory system; interleave two-plane page programming

    數(shù)據(jù)采集與存儲(chǔ)技術(shù)已經(jīng)在圖像數(shù)據(jù)處理、遙測(cè)信息分析、語(yǔ)音識(shí)別、GPS導(dǎo)航、可視電話等一系列高速信號(hào)記錄系統(tǒng)中扮演著越來(lái)越重要的角色,并且逐步滲透到其他重要領(lǐng)域。在航天應(yīng)用領(lǐng)域,為了了解飛行艙內(nèi)的情況,飛行器在執(zhí)行飛行任務(wù)的過程中,地面需要對(duì)飛行艙內(nèi)的環(huán)境進(jìn)行持續(xù)監(jiān)測(cè),從而精確地獲取艙體內(nèi)部的各種參數(shù)信息。通過事后分析這些信息,可對(duì)飛行器的性能進(jìn)行評(píng)價(jià)并為下次飛行試驗(yàn)做好準(zhǔn)備。然而,由于圖像數(shù)據(jù)傳輸速度快,信息量大,飛行艙的空間有限,因此,需要設(shè)計(jì)出一種具有采集與存儲(chǔ)速度快、容量大、體積小、抗干擾能力強(qiáng)、可靠性高的數(shù)據(jù)存儲(chǔ)系統(tǒng)[1]。
    在數(shù)據(jù)存儲(chǔ)系統(tǒng)中,影響存儲(chǔ)速率的關(guān)鍵因素是數(shù)據(jù)傳輸和存儲(chǔ)方式。采用LVDS總線傳輸方式和混合編幀技術(shù)提高了數(shù)據(jù)接收的速率;為提高數(shù)據(jù)存儲(chǔ)器存儲(chǔ)速率,本文采用了一種可使Flash存儲(chǔ)速度達(dá)到最優(yōu)的交叉雙平面頁(yè)編程技術(shù)[1-3]。
1 系統(tǒng)總體設(shè)計(jì)
    本文設(shè)計(jì)的高速數(shù)據(jù)存儲(chǔ)系統(tǒng)用于完成對(duì)飛行器飛行過程中圖像數(shù)據(jù)的采集、編碼和存儲(chǔ)。試驗(yàn)結(jié)束后,通過PC控制專用的讀數(shù)裝置讀取存儲(chǔ)系統(tǒng)中的數(shù)據(jù),并由PC上的數(shù)據(jù)處理軟件完成數(shù)據(jù)的分析與處理。在單元測(cè)試過程中,PC通過PCI通信接口卡(PCI9054)完成與高速數(shù)據(jù)存儲(chǔ)系統(tǒng)之間的通信,實(shí)現(xiàn)指令的下發(fā)、在線實(shí)時(shí)監(jiān)測(cè)狀態(tài)顯示、數(shù)據(jù)回讀、對(duì)存儲(chǔ)數(shù)據(jù)的分析以及生成分析報(bào)告等功能。系統(tǒng)主要功能模塊可劃分為:主控單元、PC、地面監(jiān)控裝置、圖像采集單元、圖像存儲(chǔ)器(Flash)、電壓轉(zhuǎn)換模塊等,如圖1所示。

2 關(guān)鍵技術(shù)分析
2.1 PCI板卡設(shè)計(jì)

    本文采用PLX公司的PCI9054芯片實(shí)現(xiàn)PCI總線接口的邏輯設(shè)計(jì)。PCI9054的數(shù)據(jù)寬度為32 bit,本地總線支持復(fù)用/非復(fù)用的32 bit地址數(shù)據(jù)總線。PCI總線作為橋接芯片,提供了PCI總線空間、本地總線空間以及配置空間,既能作為PCI總線的發(fā)起設(shè)備也可作為PCI從設(shè)備。FPGA作為本地總線控制器,即PCI局部總線的目標(biāo)設(shè)備,完成PC與下位機(jī)的通信。設(shè)計(jì)采用從模式,基于FPGA和PCI9054的硬件平臺(tái)完成PCI局部總線的設(shè)計(jì),PCI板卡整體設(shè)計(jì)框圖如圖2所示。

    PCI板卡插入PC的PCI擴(kuò)展槽使用,如果要正常工作,需要在Windows下編寫驅(qū)動(dòng)程序。驅(qū)動(dòng)程序主要實(shí)現(xiàn)以下幾個(gè)功能: (1)連接設(shè)備;(2)設(shè)備初始化;(3)設(shè)備讀和寫;(4)斷開設(shè)備。Windows操作系統(tǒng)下驅(qū)動(dòng)程序開發(fā)最常用的有DDK、Driverstudio、Windriver等工具。其中DDK的效率最高,但編寫難度較大,因而多數(shù)技術(shù)人員使用Driverstudio、Windriver來(lái)編寫驅(qū)動(dòng)程序,使用這兩種工具編寫出來(lái)的程序也稱為WDM(Windows Device Module)程序。DriverStudio中的DriverWorks軟件為WDM驅(qū)動(dòng)程序提供了完整的框架,本設(shè)計(jì)利用其DriverWizard生成驅(qū)動(dòng)程序框架,然后添加各功能函數(shù)。此處利用類KMemoryRange實(shí)現(xiàn)對(duì)PCI9054內(nèi)部存儲(chǔ)器的讀寫訪問,類KIoRange實(shí)現(xiàn)對(duì)其寄存器的訪問[4]。
2.2 LVDS圖像采集編幀技術(shù)
    圖像數(shù)據(jù)由LVDS接口輸入,圖3所示為圖像信號(hào)接口時(shí)序,經(jīng)解串器DS90CR216解碼后轉(zhuǎn)換為21 bit并行總線輸出。圖像數(shù)據(jù)的幀同步信號(hào)周期為10 ms,高電平有效, 每幀有289行有效數(shù)據(jù); 行同步信號(hào)周期為32 μs,高電平有效,每行有384個(gè)有效數(shù)據(jù);其中,像素時(shí)鐘為15 MHz,圖像像素時(shí)鐘的上升沿為觸發(fā)條件。幀同步信號(hào)低電平期間仍有(10÷0.032)-289=23.5個(gè)行同步信號(hào),即幀同步信號(hào)低電平的時(shí)間應(yīng)為23.5×0.032 ms= 0.752 ms。幀同步信號(hào)高電平的時(shí)間為9.248 ms,行同步低電平的時(shí)間為32-(384÷15)=6.4 μs。

    測(cè)量信息伴隨著圖像數(shù)據(jù)而來(lái),每接收一幀圖像就接收80 B的測(cè)量信息,測(cè)量信息的串行傳輸波特率為115 200 b/s,每包測(cè)量信息的數(shù)據(jù)共10 bit。為便于PC進(jìn)行圖像數(shù)據(jù)分析處理,在測(cè)量信息的數(shù)據(jù)前加上幀頭0X“14 92 00”和2 B幀計(jì)數(shù)。待80 B測(cè)量信息全部讀取出來(lái)后,給出圖像采集模塊的復(fù)位信號(hào),同時(shí)清零行計(jì)數(shù)器并清空片內(nèi)FIFO中的信息,將采集到的一幀圖像數(shù)據(jù)和編好幀的測(cè)量信息寫入二選一數(shù)據(jù)選擇器。在幀同步信號(hào)高電平期間,將圖像數(shù)據(jù)寫入外部16 KB的FIFO(IDT7206);在幀同步信號(hào)低電平期間,將測(cè)量信息寫入,最后等待圖像記錄啟動(dòng)信號(hào)。
2.3 片內(nèi)FIFO設(shè)計(jì)
    圖像數(shù)據(jù)的緩存、Flash存儲(chǔ)與事后回讀等過程中都用到了片內(nèi)FIFO,采用片內(nèi)FIFO可降低硬件的復(fù)雜度、節(jié)約了成本且更有利于完成邏輯控制。本文選用的FPGA芯片是XC3S400,該芯片內(nèi)部的16個(gè)Block RAM不占用芯片的邏輯資源,設(shè)計(jì)中采用“A端口只寫,B端口只讀”的思想,根據(jù)每個(gè)端口的時(shí)鐘信號(hào)以及使能信號(hào)分別對(duì)各個(gè)端口進(jìn)行操作。利用IP核技術(shù)構(gòu)建容量為1 KB的片內(nèi)FIFO原理圖如圖4所示[1]。

 

 

    圖4中的FIFO模塊調(diào)用數(shù)據(jù)寬度為8 bit、存儲(chǔ)深度為1 024 B的雙口RAM,該RAM共有兩個(gè)獨(dú)立的存儲(chǔ)單元(A和B)。RAM的每一個(gè)管腳都是獨(dú)立配置的,數(shù)據(jù)和地址的寫入發(fā)生在各個(gè)單元的時(shí)鐘上升沿。數(shù)據(jù)和地址的讀/寫操作還與讀/寫時(shí)鐘有關(guān),所以設(shè)計(jì)中將A端口寫使能信號(hào)接VCC,B端口的寫使能信號(hào)接GND,實(shí)現(xiàn)“A端口只寫,B端口只讀”。由外部控制模塊fifo_ctrl為雙口RAM的A端口產(chǎn)生寫時(shí)鐘和寫地址,為B端口產(chǎn)生讀時(shí)鐘和讀地址,根據(jù)讀寫地址的差值offset產(chǎn)生FIFO的空(empty)、半滿(half)以及滿(full)信號(hào)。
2.4 交叉雙平面技術(shù)
    圖像傳輸速度快,對(duì)圖像數(shù)據(jù)的存儲(chǔ)采用寫入速度最快的交叉雙平面頁(yè)編程(Interleave Two-plane Page Program)技術(shù)[2-3]。為實(shí)現(xiàn)對(duì)Flash的交叉雙平面操作,首先要對(duì)Flash(K9WBG08U1M)芯片內(nèi)部平面結(jié)構(gòu)進(jìn)行劃分。整片F(xiàn)lash分為兩片(chip #1和chip #2),每片分為4個(gè)平面(plane),每個(gè)平面共2 048個(gè)存儲(chǔ)塊。也就是說(shuō),整個(gè)Flash存儲(chǔ)空間由8個(gè)平面(plane1~plane8)組成,將這8個(gè)平面分為4組:chip #1中的plane0與plane1為第0組,plane2與plane3為第1組;chip #2中的plane4與plane5為第2組,plane6與plane7為第3組,F(xiàn)lash的交叉雙平面操作必須嚴(yán)格按照這個(gè)分組執(zhí)行。
    定義矢量plane(2:0)對(duì)這8個(gè)平面進(jìn)行操作管理:plane(0)用于控制平面組內(nèi)的兩個(gè)平面之間的切換:為0時(shí)表示對(duì)偶數(shù)平面操作,對(duì)應(yīng)操作偶數(shù)塊;為1時(shí)表示對(duì)奇數(shù)平面操作,對(duì)應(yīng)操作奇數(shù)塊。plane(1)用于完成各個(gè)平面組之間的切換:為0時(shí)表示操作的是偶數(shù)組(第0組與第2組),對(duì)應(yīng)操作Flash的前4 096塊,即A31為0;為1時(shí)表示對(duì)奇數(shù)組(第1組與第3組)進(jìn)行操作,對(duì)應(yīng)操作Flash的后4 096塊,即A31為1。plane(2)相當(dāng)于片選信號(hào),用于內(nèi)部?jī)善現(xiàn)lash之間的切換,為0表示對(duì)chip #1進(jìn)行操作,為1表示對(duì)chip #2操作。進(jìn)行交叉雙平面操作時(shí),可根據(jù)plane(2:0)的值確定所要操作的平面。
    當(dāng)對(duì)第0組平面執(zhí)行編程操作時(shí),依次往第1組、第2組、第3組的各個(gè)平面中寫入命令、地址和數(shù)據(jù)。經(jīng)過多次反復(fù)測(cè)試,F(xiàn)lash的峰值寫入速度不小于30 MB/s,完成這三組平面的數(shù)據(jù)寫入時(shí)間為 6×4 096 B÷30 MB/s=819.2 μs>700μs 。如果寫入Flash速度小于峰值速度,則后3組的數(shù)據(jù)寫入時(shí)間將會(huì)更大。所以,當(dāng)這4組依次編程結(jié)束準(zhǔn)備繼續(xù)對(duì)第0組其他頁(yè)進(jìn)行編程時(shí),已經(jīng)錯(cuò)過了第0組的頁(yè)編程時(shí)間。交叉雙平面頁(yè)編程的方法省去了等待頁(yè)編程的時(shí)間,縮短了Flash的寫入時(shí)間,提高了寫入速度[3]。交叉雙平面頁(yè)編程時(shí)序如圖5所示。

3 系統(tǒng)功能自檢
    系統(tǒng)上電后,先運(yùn)行PC軟件,檢查監(jiān)控裝置與計(jì)算機(jī)之間通信是否正常,然后設(shè)置并啟動(dòng)信號(hào)源,此時(shí)監(jiān)控裝置開始向記錄器發(fā)送數(shù)據(jù)。其中,監(jiān)控裝置下發(fā)的數(shù)字量串行波特率為115 200 b/s,實(shí)時(shí)監(jiān)測(cè)回收的信號(hào)波特率為800 kb/s,信號(hào)源數(shù)據(jù)格式設(shè)計(jì)為:每幀共128  B,前5 B由幀頭0X “EB 90”和3 B幀計(jì)數(shù)組成,剩余字節(jié)為0X“0F~89”遞增數(shù)據(jù)。PC監(jiān)測(cè)數(shù)據(jù)的內(nèi)容就是監(jiān)控裝置向記錄器發(fā)送的數(shù)據(jù)。根據(jù)實(shí)時(shí)顯示的監(jiān)測(cè)數(shù)據(jù)可以判斷系統(tǒng)是否正常工作。通過PC讀取并分析記錄器所存數(shù)據(jù)與下發(fā)信號(hào)源是否一致,完成系統(tǒng)功能自檢。
4 系統(tǒng)實(shí)測(cè)結(jié)果
    系統(tǒng)上電后,存儲(chǔ)器接收到啟動(dòng)記錄信號(hào)后開始記錄。記錄圖像數(shù)據(jù)的時(shí)間不限制,直到記滿。圖6是用圖像分析軟件對(duì)測(cè)試數(shù)據(jù)還原后的某幀圖像。


    設(shè)計(jì)了一種以FPGA為主控單元,以Flash為存儲(chǔ)介質(zhì)的高速圖像數(shù)據(jù)存儲(chǔ)系統(tǒng)。系統(tǒng)用于完成對(duì)高速LVDS圖像數(shù)據(jù)的采集、存儲(chǔ)和實(shí)時(shí)監(jiān)測(cè),系統(tǒng)具有存儲(chǔ)速度快、存儲(chǔ)容量大、系統(tǒng)可靠性高等優(yōu)點(diǎn),能夠滿足實(shí)際測(cè)試的需求。在后續(xù)的設(shè)計(jì)中還可以做以下優(yōu)化工作:(1)采用雙片F(xiàn)lash進(jìn)行雙備份,防止單片F(xiàn)lash失效而造成數(shù)據(jù)丟失,進(jìn)一步提高數(shù)據(jù)存儲(chǔ)的完整性和可靠性[5-6]。(2)對(duì)FPGA代碼進(jìn)行優(yōu)化、提高FPGA資源的使用率[6-8]。
參考文獻(xiàn)
[1] 李勇. 基于LVDS接口的高速圖像數(shù)據(jù)記錄器的設(shè)計(jì)與實(shí)現(xiàn)[D]. 太原:中北大學(xué), 2013.
[2] 馬志剛, 朱思敏,劉文怡. 基于LVDS的高速圖像數(shù)據(jù)存儲(chǔ)系統(tǒng)設(shè)計(jì)[J]. 數(shù)據(jù)采集與處理,2013,28(3):382-385.
[3] 郭錚,劉文怡,馮妮.基于FPGA多通道高速數(shù)據(jù)采集存儲(chǔ)器設(shè)計(jì)[J]. 電視技術(shù),2012,36(17):55-57.
[4] 王麗莉. 基于CPCI光纖傳輸卡的設(shè)計(jì)與研究[D].太原:中北大學(xué),2012.
[5] 常鐵原,王欣,陳文軍.多路數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2008,11(2):21-23.
[6] 劉攀,王紅亮,孟令軍.基于FPGA的數(shù)字圖像采集存儲(chǔ)系統(tǒng)的設(shè)計(jì)[J]. 電視技術(shù),2010,34(6):33-35.
[7] 胡振良.某導(dǎo)彈遙測(cè)數(shù)據(jù)存儲(chǔ)器系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].太原:中北大學(xué),2008.
[8] 段靜輝. 基于存儲(chǔ)測(cè)試技術(shù)的炮射導(dǎo)彈測(cè)試系統(tǒng)的研究[D]. 太原:華北工學(xué)院, 2000.
[9] 王國(guó)華, 宋卿, 徐旭偉,等.飛行數(shù)據(jù)采集器通用自動(dòng)測(cè)試軟件[J]. 測(cè)試技術(shù)學(xué)報(bào),2010,24(3):199-204.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。