專利名稱:基于usb的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖像數(shù)據(jù)采集與處理技術(shù),尤其涉及高光譜成像儀的數(shù)據(jù)采集和處 理技術(shù)。
背景技術(shù):
隨著高光譜成像技術(shù)的高度發(fā)展,數(shù)據(jù)流量越來越大,實(shí)時(shí)性要求也不斷提 高,這給高速實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)帶來了更大的挑戰(zhàn)。為了避免PC系統(tǒng)數(shù)據(jù)處理抖動(dòng)而發(fā) 生數(shù)據(jù)丟失,破壞系統(tǒng)可靠性,更要進(jìn)一步提高系統(tǒng)實(shí)時(shí)性,必須研究開發(fā)高速數(shù)據(jù)采 集系統(tǒng)。因此,需要一種高效的圖像數(shù)據(jù)實(shí)時(shí)采集及存儲(chǔ)系 統(tǒng),實(shí)現(xiàn)對(duì)高光譜成像數(shù)據(jù) 的高速采集、傳輸和存儲(chǔ),為高光譜成像技術(shù)提供有利的技術(shù)支持。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種基于USB的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)系統(tǒng)及方 法,以克服現(xiàn)有技術(shù)中存在的缺陷。本發(fā)明的技術(shù)方案為一種基于USB的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)系統(tǒng),其特殊之處在于包括與成像儀相 連接的數(shù)據(jù)采集裝置和計(jì)算機(jī),所述數(shù)據(jù)采集裝置用于實(shí)現(xiàn)數(shù)字圖像數(shù)據(jù)到計(jì)算機(jī)的高速數(shù)據(jù)采集和傳輸,包 含四個(gè)接口模塊、四個(gè)高速緩存模塊以及兩個(gè)數(shù)據(jù)發(fā)送模塊,所述四個(gè)接口模塊、四個(gè) 高速緩存模塊以及兩個(gè)數(shù)據(jù)發(fā)送模塊可構(gòu)成四路獨(dú)立的數(shù)據(jù)傳輸通道;所述接口模塊可實(shí)現(xiàn)成像儀和高速緩存模塊間的電平轉(zhuǎn)換和接口轉(zhuǎn)換;所述高速緩存模塊可實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)采集和緩存,包含輸入端緩存器、輸出端 緩存器、SRAM以及用以實(shí)現(xiàn)輸入端緩存器、輸出端緩存器和SRAM之間協(xié)調(diào)工作的控 制單元;其中輸入端緩存器的輸入端與相應(yīng)的接口模塊相連,此輸入端緩存器的輸出端 與SRAM的輸入端相連;SRAM的輸出端與輸出端緩存器的輸入端相連;所述輸入端緩 存器、輸出端緩存器分別為高速同步先進(jìn)先出緩存器;所述數(shù)據(jù)發(fā)送模塊可實(shí)現(xiàn)四個(gè)高速緩存模塊與計(jì)算機(jī)的通信,包括USB控制芯 片和USB連接器,其中USB控制芯片包括8051單片機(jī)、串行接口引擎S正、通道控制緩 存器(FIFOO)、A通道緩存器(FIFOl)和B通道緩存器(FIF02),其中8051單片機(jī)用于 對(duì)通道控制緩存器(FIFOO)、A通道緩存器(FIFOl)和B通道緩存器(FIF02)進(jìn)行配置, 串行接口引擎SIE用于對(duì)輸入數(shù)據(jù)進(jìn)行譯碼、編碼、錯(cuò)誤糾正和位填充并變換為USB所 需的電平;其中通道控制緩存器(FIFOO)用于控制A通道緩存器(FIFOl)和B通道緩存 器(FIF02)是否接收數(shù)據(jù),A通道緩存器(FIFOl)和B通道緩存器(FIF02)用于分別發(fā) 送一個(gè)高速緩存模塊的數(shù)據(jù),其輸入端與相應(yīng)的高速緩存模塊中的輸出端緩存器的輸出 端相連,其輸出端分別與串行接口引擎SIE相連,所述串行接口引擎SIE與USB連接器 相連,USB連接器通過USB電纜與計(jì)算機(jī)相連。
上述接口模塊為電平轉(zhuǎn)換器,實(shí)現(xiàn)將LVDS信號(hào)轉(zhuǎn)換為TTL電平信號(hào);所述四個(gè)高速緩存模塊中的控制單元和高速同步先進(jìn)先出緩存器通過FPGA實(shí) 現(xiàn)。上述計(jì)算機(jī)包含USB接口、內(nèi)存、用于實(shí)現(xiàn)數(shù)據(jù)快速訪問和存儲(chǔ)的磁盤陣列、 用于實(shí)現(xiàn)圖像采集及存儲(chǔ)系統(tǒng)開啟和關(guān)閉的開啟關(guān)閉模塊、用于實(shí)現(xiàn)圖像數(shù)據(jù)的實(shí)時(shí)顯 示的顯示模塊、用于實(shí)現(xiàn)圖像數(shù)據(jù)的按需存儲(chǔ)功能的處理單元。一種在權(quán)利要求1所述系統(tǒng)中實(shí)現(xiàn)的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)方法,其特殊之處在 于,包含如下步驟步驟1]連接成像儀、數(shù)據(jù)采集裝置和計(jì)算機(jī);步驟2]將每個(gè)高速緩存模塊的存儲(chǔ)空間分為η個(gè)緩存塊,記為AO Α(η_1), 且任意時(shí)刻指定的寫緩存塊和讀緩存塊地址不同;設(shè)定輸入端緩存器的最大輸入緩存閾值和最小輸入緩存閾值,設(shè)定輸出端緩存 器的輸出緩存閾值;將計(jì)算機(jī)內(nèi)存分為m個(gè)緩存塊,記為BO B(m-l),且任意時(shí)刻指定的寫緩存 塊和讀緩存塊地址不同;步驟3]控制單元控制高速緩存模塊進(jìn)行數(shù)據(jù)采集;同時(shí)USB控制芯片進(jìn)行數(shù)據(jù)采集;同時(shí)處理單元控制計(jì)算機(jī)進(jìn)行數(shù)據(jù)采集;步驟4]關(guān)閉圖像采集功能。步驟3]中所述控制單元控制高速緩存模塊進(jìn)行數(shù)據(jù)采集步驟如下步驟310]控制單元判斷輸入端緩存器狀態(tài)是否大于最大輸入緩存閾值;步驟311]A.若輸入端緩存器狀態(tài)大于最大輸入緩存閾值,則控制單元判斷指定的寫緩存 塊是否為可寫;若該寫緩沖塊可寫,則將指定大小的數(shù)據(jù)從輸入端緩存器寫入該緩存塊,然后 返回步驟310];若該寫緩沖塊不可寫,則判斷輸出端緩存器狀態(tài)是否小于最大輸出緩存閾值;若輸出端緩存器狀態(tài)小于最大輸出緩存閾值,則控制單元判斷指定的讀緩存塊 是否為可讀;若該讀緩沖塊可讀,則將指定大小的數(shù)據(jù)從該緩存塊讀入輸出端緩存器,然后 返回步驟310];若該讀緩沖塊不可讀,則返回步驟310];若輸出端緩存器狀態(tài)大于輸出緩存閾值,則返回步驟310];B.若輸入端緩存器狀態(tài)小于最大輸入緩存閾值,則判斷輸出端緩存器狀態(tài)是否 小于輸出緩存閾值;若輸出端緩存器狀態(tài)小于輸出緩存閾值,則控制單元判斷指定的讀緩存塊是否 為可讀;若該讀緩存塊可讀,則將指定大小的數(shù)據(jù)從該緩存塊讀入輸出端緩存器,然后 返回步驟310];
若該讀緩存塊不可讀,則判斷輸入端緩存器狀態(tài)是否大于最小輸入緩存閾值; 若輸入端緩存器狀態(tài)大于最小輸入緩存閾值,則控制單元判斷指定的寫緩存塊 是否為可寫;若該寫緩沖塊可寫,則將指定大小的數(shù)據(jù)從輸入端緩存器寫入該緩存塊,然后 返回步驟310];若該寫緩沖塊不可寫,則返回步驟310];若輸入端緩存器狀態(tài)小于最小輸入緩存閾值,則返回步驟310];若輸出端緩存器狀態(tài)大于輸出緩存閾值,則判斷輸入端緩存器狀態(tài)是否大于最 小輸入緩存閾值;若輸入端緩存器狀態(tài)大于最小輸入緩存閾值,則控制單元判斷指定的寫緩存塊 是否為可寫;若該寫緩沖塊可寫,則將指定大小的數(shù)據(jù)從輸入端緩存器寫入該緩存塊,然后 返回步驟310];若該寫緩沖塊不可寫,則返回步驟310];若輸入端緩存器狀態(tài)小于最小輸入緩存閾值,則返回步驟310]。步驟3]中所述USB控制芯片的數(shù)據(jù)采集步驟如下步驟320]開啟A通道和B通道;否則,系統(tǒng)處于等待狀態(tài);步驟321]若開啟通道成功,則判斷A和B哪個(gè)通道為空閑狀態(tài);步驟322]若A通道空閑,則第一路數(shù)據(jù)通過A通道將高速緩存模塊的輸出端緩存器中的 數(shù)據(jù)寫入到A通道緩存器(FIFOl),并且一次性讀寫256個(gè)16bit數(shù)據(jù);若B通道空閑,則第二路數(shù)據(jù)通過B通道將高速緩存中的數(shù)據(jù)寫入到B通道緩 存器(FIF02)中,并且一次性讀寫256個(gè)16bit數(shù)據(jù);步驟323]若可以關(guān)閉A和B通道,則返回步驟320];否則,返回步驟322]。步驟3]中所述處理單元控制計(jì)算機(jī)進(jìn)行數(shù)據(jù)采集步驟如下步驟330]處理單元判斷計(jì)算機(jī)內(nèi)存中指定的寫緩存塊是否為可寫;步驟331]若該寫緩沖塊可寫,則將指定大小的數(shù)據(jù)從A通道緩存器(FIFOl)或B通道緩 存器(FIF02)寫入該緩存塊,然后返回步驟330];若該寫緩沖塊不可寫,則判斷計(jì)算機(jī)內(nèi)存中指定的讀緩存塊是否為可讀;若該讀緩沖塊可讀,則將指定大小的數(shù)據(jù)從計(jì)算機(jī)內(nèi)存讀入到磁盤陣列,然后 返回步驟320];若該讀緩沖塊不可讀,則返回步驟330]。以上步驟中指定大小的數(shù)據(jù)是指不大于一個(gè)緩存塊空間大小的數(shù)據(jù)。η值取16或32; m值取16或32 ; m值與η值可相同也可不相同。本發(fā)明的技術(shù)效果為1、采集速度快,系統(tǒng)實(shí)時(shí)性好,傳輸可靠性高,并具有使用體積小,便于攜 帶,工作性能穩(wěn)定等優(yōu)點(diǎn)。該方案同樣也適用于其它實(shí)時(shí)性要求比較高的數(shù)據(jù)采集系 統(tǒng)??蓾M足不同帶寬下的實(shí)際需求。例如高分辨率成像光譜儀、立體測(cè)量相機(jī)、可見光近紅外相機(jī)、短波紅外相機(jī)、熱紅外成像儀等。在這里只需稍作改動(dòng)便可以用于上述 成像儀的采集處理。2、性能穩(wěn)定,具有良好的可靠性??梢詫?shí)現(xiàn)對(duì)高分辨率、高幀頻的數(shù)字圖像的 實(shí)時(shí)采集、顯示和存儲(chǔ)。單USB接口可以傳輸兩路速率相同或不同的數(shù)據(jù)。單USB接 口速率不小于35Mbytes/s。
圖1是本發(fā)明中系統(tǒng)組成示意圖。圖2是本發(fā)明中實(shí)現(xiàn)數(shù)據(jù)采集與存儲(chǔ)的系統(tǒng)結(jié)構(gòu)圖。圖3為本發(fā)明實(shí)施例中計(jì)算機(jī)對(duì)數(shù)據(jù)進(jìn)行采集、顯示和存儲(chǔ)的軟件流程圖。圖4為本發(fā)明中高速緩存模塊結(jié)構(gòu)框圖;本發(fā)明中每路數(shù)據(jù)使用一個(gè)緩存單 兀。圖5為本發(fā)明中方法的邏輯示意圖,其中FO為輸入端緩存器,F(xiàn)l為輸出端緩存
ο圖6為高速緩存模塊的讀寫緩存塊空間分配原理圖。圖7為本發(fā)明中一個(gè)USB接口傳輸兩路數(shù)據(jù)的實(shí)現(xiàn)原理圖。
具體實(shí)施例方式本發(fā)明基于USB的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)系統(tǒng)可用于高光譜成像儀數(shù)據(jù)實(shí)時(shí)采 集,包括與高光譜成像儀相連接的數(shù)據(jù)數(shù)據(jù)采集裝置和計(jì)算機(jī)。數(shù)據(jù)采集裝置用于實(shí)現(xiàn) 數(shù)字圖像數(shù)據(jù)到計(jì)算機(jī)的高速數(shù)據(jù)采集和傳輸,包含四個(gè)接口模塊、四個(gè)高速緩存模塊 以及兩個(gè)數(shù)據(jù)發(fā)送模塊,四個(gè)高速緩存模塊中的控制單元和高速異步先進(jìn)先出緩存器通 過FPGA實(shí)現(xiàn);四個(gè)接口模塊、四個(gè)高速緩存模塊以及兩個(gè)數(shù)據(jù)發(fā)送模塊可構(gòu)成四路獨(dú) 立的數(shù)據(jù)傳輸通道;接口模塊為電平轉(zhuǎn)換器,接口模塊將LVDS信號(hào)轉(zhuǎn)換為TTL電平信 號(hào),可實(shí)現(xiàn)成像儀和高速緩存模塊間的電平轉(zhuǎn)換和接口轉(zhuǎn)換;高速緩存模塊可實(shí)現(xiàn)數(shù)據(jù) 的實(shí)時(shí)采集和緩存,包含輸入端緩存器、輸出端緩存器、SRAM以及用以實(shí)現(xiàn)輸入端緩 存器、輸出端緩存器和SRAM之間協(xié)調(diào)工作的控制單元;其中輸入端緩存器的輸入端與 相應(yīng)的接口模塊相連,此輸入端緩存器的輸出端與SRAM的輸入端相連;SRAM的輸出 端與輸出端緩存器的輸入端相連;輸入端緩存器、輸出端緩存器分別為高速異步先進(jìn)先 出緩存器;數(shù)據(jù)發(fā)送模塊可實(shí)現(xiàn)四個(gè)高速緩存模塊與計(jì)算機(jī)的通信,包括USB控制芯片 和USB連接器,其中USB控制芯片包括8051單片機(jī)、串行接口引擎S正、通道控制緩存 器(FIFOO)、A通道緩存器(FIFOl)和B通道緩存器(FIF02),其中8051單片機(jī)用于對(duì) 通道控制緩存器(FIFOO)、A通道緩存器(FIFOl)和B通道緩存器(FIF02)進(jìn)行配置, 串行接口引擎SIE用于對(duì)輸入數(shù)據(jù)進(jìn)行譯碼、編碼、錯(cuò)誤糾正和位填充并變換為USB所 需的電平;其中通道控制緩存器(FIFOO)用于控制A通道緩存器(FIFOl)和B通道緩存 器(FIF02)是否接收數(shù)據(jù),A通道緩存器(FIFOl)和B通道緩存器(FIF02)用于分別發(fā) 送一個(gè)高速緩存模塊的數(shù)據(jù),其輸入端與相應(yīng)的高速緩存模塊中的輸出端緩存器的輸出 端相連,其輸出端分別與串行接口引擎S正相連,串行接口引擎SIE與USB連接器相連, USB連接器通過USB電纜與計(jì)算機(jī)相連。計(jì)算機(jī)包含USB接口、內(nèi)存、用于實(shí)現(xiàn)數(shù)據(jù)快速訪問和存儲(chǔ)的磁盤陣列、用于實(shí)現(xiàn)圖像采集及存儲(chǔ)系統(tǒng)開啟和關(guān)閉的開啟關(guān)閉模塊、 用于實(shí)現(xiàn)圖像數(shù)據(jù)的實(shí)時(shí)顯示的顯示模塊、用于實(shí)現(xiàn)圖像數(shù)據(jù)的按需存儲(chǔ)功能的處理單 元。計(jì)算機(jī)內(nèi)存分為多個(gè)緩存塊,其輸出端接磁盤陣列;磁盤陣列用于實(shí)現(xiàn);處理單元 用于計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)控制。計(jì)算機(jī)具有高帶寬的內(nèi)存,可實(shí)現(xiàn)數(shù)據(jù)的快速訪問。計(jì)算機(jī) 的磁盤陣列不僅可擴(kuò)展硬盤空間,還大大提高了硬盤寫入速率。 本發(fā)明基于USB的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)系統(tǒng)所采用的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)方 法,包括以下步驟步驟1]連接成像儀、數(shù)據(jù)采集裝置和計(jì)算機(jī);步驟2]將每個(gè)高速緩存模塊的存儲(chǔ)空間分為η個(gè)緩存塊,記為AO Α(η_1), 且任意時(shí)刻指定的寫緩存塊和讀緩存塊地址不同;設(shè)定輸入端緩存器的最大輸入緩存閾值和最小輸入緩存閾值,設(shè)定輸出端緩存 器的輸出緩存閾值;將計(jì)算機(jī)內(nèi)存分為m個(gè)緩存塊,記為BO B(m-l),且任意時(shí)刻指定的寫緩存 塊和讀緩存塊地址不同;步驟3]控制單元控制高速緩存模塊進(jìn)行數(shù)據(jù)采集;同時(shí)USB控制芯片進(jìn)行數(shù)據(jù) 采集;同時(shí)處理單元控制計(jì)算機(jī)進(jìn)行數(shù)據(jù)采集;步驟4]關(guān)閉圖像采集功能。其中,步驟3]中控制單元控制高速緩存模塊進(jìn)行數(shù)據(jù)采集步驟如下步驟310]控制單元判斷輸入端緩存器狀態(tài)是否大于最大輸入緩存閾值;步驟311]A.若輸入端緩存器狀態(tài)大于最大輸入緩存閾值,則控制單元判斷指定的寫緩存 塊是否為可寫;若該寫緩沖塊可寫,則將指定大小的數(shù)據(jù)從輸入端緩存器寫入該緩存塊,然后 返回步驟310];若該寫緩沖塊不可寫,則判斷輸出端緩存器狀態(tài)是否小于最大輸出緩存閾值;若輸出端緩存器狀態(tài)小于最大輸出緩存閾值,則控制單元判斷指定的讀緩存塊 是否為可讀;若該讀緩沖塊可讀,則將指定大小的數(shù)據(jù)從該緩存塊讀入輸出端緩存器,然后 返回步驟310];若該讀緩沖塊不可讀,則返回步驟310];若輸出端緩存器狀態(tài)大于輸出緩存閾值,則返回步驟310];B.若輸入端緩存器狀態(tài)小于最大輸入緩存閾值,則判斷輸出端緩存器狀態(tài)是否 小于輸出緩存閾值;若輸出端緩存器狀態(tài)小于輸出緩存閾值,則控制單元判斷指定的讀緩存塊是否 為可讀;若該讀緩存塊可讀,則將指定大小的數(shù)據(jù)從該緩存塊讀入輸出端緩存器,然后 返回步驟310];若該讀緩存塊不可讀,則判斷輸入端緩存器狀態(tài)是否大于最小輸入緩存閾值;若輸入端緩存器狀態(tài)大于最小輸入緩存閾值,則控制單元判斷指定的寫緩存塊是否為可寫;若該寫緩沖塊可寫,則將指定大小的數(shù)據(jù)從輸入端緩存器寫入該緩存塊,然后 返回步驟310];若該寫緩沖塊不可寫,則返回步驟310];若輸入端緩存器狀態(tài)小于最小輸入緩存閾值,則返回步驟310];若輸出端緩存器狀態(tài)大于輸出緩存閾值,則判斷輸入端緩存器狀態(tài)是否大于最 小輸入緩存閾值;若輸入端緩存器狀態(tài)大于最小輸入緩存閾值,則控制單元判斷指定的寫緩存塊 是否為可寫;
若該寫緩沖塊可寫,則將指定大小的數(shù)據(jù)從輸入端緩存器寫入該緩存塊,然后 返回步驟310];若該寫緩沖塊不可寫,則返回步驟310];若輸入端緩存器狀態(tài)小于最小輸入緩存閾值,則返回步驟310]。其中,步驟3]中USB控制芯片的數(shù)據(jù)采集步驟如下步驟320]開啟A通道和B通道;否則,系統(tǒng)處于等待狀態(tài);步驟321]若開啟通道成功,則判斷A和B哪個(gè)通道為空閑狀態(tài);步驟322]若A通道空閑,則第一路數(shù)據(jù)通過A通道將高速緩存模塊的輸出端緩存器中的 數(shù)據(jù)寫入到A通道緩存器(FIFOl),并且一次性讀寫256個(gè)16bit數(shù)據(jù);若B通道空閑,則第二路數(shù)據(jù)通過B通道將高速緩存中的數(shù)據(jù)寫入到B通道緩 存器(FIF02)中,并且一次性讀寫256個(gè)16bit數(shù)據(jù);步驟323]若可以關(guān)閉A和B通道,則返回步驟320];否則,返回步驟322]。其中,步驟3]中處理單元控制計(jì)算機(jī)進(jìn)行數(shù)據(jù)采集步驟如下步驟330]處理單元判斷計(jì)算機(jī)內(nèi)存中指定的寫緩存塊是否為可寫;步驟331]若該寫緩沖塊可寫,則將指定大小的數(shù)據(jù)從A通道緩存器(FIFOl)或B通道緩 存器(FIF02)寫入該緩存塊,然后返回步驟330];若該寫緩沖塊不可寫,則判斷計(jì)算機(jī)內(nèi)存中指定的讀緩存塊是否為可讀;若該讀緩沖塊可讀,則將指定大小的數(shù)據(jù)從計(jì)算機(jī)內(nèi)存讀入到磁盤陣列,然后 返回步驟320];若該讀緩沖塊不可讀,則返回步驟330]。上述步驟中指定大小的數(shù)據(jù)是指不大于一個(gè)緩存塊空間大小的數(shù)據(jù)。上述步驟中η值取16或32 ; m值取16或32 ; m值與η值可相同也可不相同。本發(fā)明原理為了實(shí)現(xiàn)數(shù)據(jù)快速采集,具體包括四路數(shù)據(jù)接口通道,高光譜成像儀的數(shù)據(jù)由 接口模塊的四路通道下發(fā);因圖像數(shù)據(jù)的實(shí)時(shí)傳輸率不低于35MbyteS/S,因此計(jì)算機(jī)接 口選用USB接口,為解決大容量數(shù)據(jù)的緩存,本發(fā)明通過SRAM與FPGA內(nèi)部FIFO的 結(jié)合,將單端口 SRAM改進(jìn)為雙端口 SRAM。并且對(duì)SRAM的讀寫過程進(jìn)行優(yōu)化。此 方法保證了硬件數(shù)據(jù)可靠性的同時(shí),大大提高了實(shí)時(shí)系統(tǒng)的傳輸速率。
控制單元、輸入端緩存器、輸出端緩存器由FPGA實(shí)現(xiàn),輸入端緩存器為高速 同步先進(jìn)先出緩存器(FIFO);為了避免計(jì)算機(jī)處理數(shù)據(jù)時(shí)因抖動(dòng)而發(fā)生數(shù)據(jù)丟失,破壞 系統(tǒng)的可靠性,在本發(fā)明中,每一路數(shù)據(jù)都經(jīng)過一個(gè)高速緩存模塊,高速緩存模塊內(nèi)包 括一塊高速緩存SRAM,輸出端緩存器為高速同步先進(jìn)先出緩存器。圖1是本 發(fā)明基于USB的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖,由數(shù)據(jù)采集 裝置和計(jì)算機(jī)組成。計(jì)算機(jī)采用WINDOWS XP操作系統(tǒng),通過軟件控制高速數(shù)據(jù)采集 裝置和磁盤陣列,可對(duì)數(shù)據(jù)進(jìn)行采集與存儲(chǔ)。來自高光譜成像儀的多路數(shù)據(jù)通過數(shù)據(jù)采 集裝置裝置中的FPGA,再通過裝置中的高速USB2.0接口,實(shí)時(shí)傳輸?shù)接?jì)算機(jī)的數(shù)據(jù)采 集系統(tǒng)中存儲(chǔ),其中一個(gè)高速USB2.0接口可以傳輸兩路數(shù)據(jù)。圖2為本發(fā)明基于USB的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)系統(tǒng)的系統(tǒng)結(jié)構(gòu)框圖。成像儀 采用LVDS信號(hào)下傳數(shù)據(jù)。接口模塊和高速緩存模塊之間采用數(shù)據(jù)總線、控制總線,高 速緩存模塊和數(shù)據(jù)發(fā)送模塊之間采用控制總線、地址總線、數(shù)據(jù)總線等,數(shù)據(jù)發(fā)送模塊 和計(jì)算機(jī)USB2.0接口之間采用USB2.0總線。其中圖像采集裝置由接口模塊、電平轉(zhuǎn)換 器、高速緩存模塊(FPGA及其配置芯片)、數(shù)據(jù)發(fā)送模塊(USB2.0配置芯片)、組成。 接口模塊采用90LV032A。USB2.0配置芯片采用CY7C68013。成像儀與數(shù)據(jù)采集裝置相連,將拍攝到的圖像數(shù)據(jù)發(fā)送到采集裝置,圖像采集 裝置直接插在計(jì)算機(jī)的USB2.0插槽上。計(jì)算機(jī)機(jī)通過設(shè)備驅(qū)動(dòng)程序及自動(dòng)下載固件驅(qū)動(dòng) 程序?qū)崿F(xiàn)與采集裝置的軟件之間的通信,控制數(shù)據(jù)的采集、顯示、存儲(chǔ)等功能。本發(fā)明的應(yīng)用背景為總數(shù)據(jù)率260Mbps的4路數(shù)據(jù),其中兩路數(shù)據(jù)率為 IlOMbps,另2路數(shù)據(jù)率為20Mbps,每1路都是2bit的數(shù)據(jù)并行傳輸,共包含4對(duì)LVDS 信號(hào)線,分別為時(shí)鐘,使能,數(shù)據(jù)1,數(shù)據(jù)2。因這4路數(shù)據(jù)相互獨(dú)立,故采用兩片USB 控制芯片及四路獨(dú)立的數(shù)據(jù)傳輸通道分別對(duì)其進(jìn)行采集。將一路IlOMbps速率的數(shù)據(jù)和 一路20Mbps速率的數(shù)據(jù)分成一組,其余兩路為一組,每組數(shù)據(jù)占用一片USB控制芯片, 這樣每片USB控制芯片數(shù)據(jù)采集速率為130Mbps,帶寬均攤后采集更加穩(wěn)定可靠。圖3為本發(fā)明中計(jì)算機(jī)的軟件流程圖。整個(gè)軟件在VC環(huán)境下開發(fā)完成,主要 由USB驅(qū)動(dòng)、數(shù)據(jù)采集、實(shí)時(shí)存儲(chǔ)、數(shù)據(jù)解壓縮與解壓縮后圖像的回放顯示等部分組 成。在本發(fā)明中為數(shù)據(jù)采集與實(shí)時(shí)存儲(chǔ)各開辟一個(gè)線程,采集線程比存儲(chǔ)線程高一個(gè)優(yōu) 先級(jí)。數(shù)據(jù)傳輸?shù)牟杉c停止,是由軟件與USB通信來控制,通過軟件向USB控制芯 片發(fā)控制指令。在采集線程中申請(qǐng)一塊內(nèi)存作為應(yīng)用程序堆區(qū)緩存,用指針在線程之間 傳遞地址數(shù)據(jù),避免數(shù)據(jù)在PC主存中無效的搬移,提高了數(shù)據(jù)傳遞效率;多線程實(shí)現(xiàn)多 功能,用事件消息進(jìn)行線程同步,可以使采集和存儲(chǔ)在邏輯上并行執(zhí)行,將兩個(gè)操作在 物理上大塊的讀寫時(shí)間切換,用操作系統(tǒng)打碎為小時(shí)間段的線程切換,避免數(shù)據(jù)擁塞在 USB管腳阻礙進(jìn)程,同時(shí)保證了數(shù)據(jù)的高速實(shí)時(shí)存儲(chǔ)。在操作異常時(shí),可以強(qiáng)行撤消數(shù) 據(jù)采集,避免數(shù)據(jù)的溢出。為了提高緩存效率,本發(fā)明將緩存分成16個(gè)讀寫子塊,BO B15,讀寫操作各占一個(gè)塊,寫在前,讀在后,對(duì)16個(gè)塊循環(huán)讀寫。這樣的結(jié)構(gòu)緩存利 用率幾乎達(dá)到100%,遠(yuǎn)高于乒乓50%的利用率。子塊容量小于磁盤陣列的緩存,每次 可將數(shù)據(jù)完全寫入磁盤緩存,充分利用硬盤的突發(fā)高帶寬特性,進(jìn)一步提高讀寫效率。圖4為本發(fā)明基于USB的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)系統(tǒng)中高速緩存模塊的結(jié)構(gòu)框 圖。高速緩存模塊由FPGA內(nèi)部的FIFO及外部的一塊單端口 SRAM構(gòu)成。FIFO與單端口 SRAM共同組成了雙端口高速緩存,大大提高了系統(tǒng)的實(shí)時(shí)性。圖5為本發(fā)明基于USB的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)系統(tǒng)對(duì)高光譜成像儀數(shù)據(jù)實(shí)時(shí)采 集方法的邏輯示意圖。合理有效地全局控制可以優(yōu)化SRAM的計(jì)算機(jī)內(nèi)存使用。在全 局控制中數(shù)據(jù)使能優(yōu)先級(jí)最高。圖6為高速緩存模塊的讀寫緩存塊空間分配原理圖。將SRAM存儲(chǔ)空間分為16 塊,記為AO A(n-l)。在讀和寫的過程只需保證不不同時(shí)訪問一塊存儲(chǔ)空間,η的選 擇需要均衡存儲(chǔ)空間的使用率、FIFO選擇及實(shí)時(shí)數(shù)據(jù)采集裝置速率,優(yōu)選16和32。同 理,計(jì)算機(jī)內(nèi)存分為m個(gè)緩存塊,記為BO B(m-l),且任意時(shí)刻指定的寫緩存塊和讀 緩存塊地址不同,空間分配原理圖與高速緩存模塊類同。圖7為本發(fā)明實(shí)施例中一個(gè)USB接口傳輸兩路數(shù)據(jù)的實(shí)現(xiàn)原理圖。USB控制芯 片中的地址線不停的在兩個(gè)通道中選擇,發(fā)現(xiàn)其中一個(gè)通道空閑,即可以傳輸數(shù)據(jù)狀態(tài) 時(shí),就將高速緩存中的數(shù)據(jù)寫入到 USB中,并且一次性讀寫256個(gè)16bit的數(shù)據(jù)。
權(quán)利要求
1.一種基于USB的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)系統(tǒng),其特征在于包括與成像儀相連接的 數(shù)據(jù)采集裝置和計(jì)算機(jī),所述數(shù)據(jù)采集裝置用于實(shí)現(xiàn)數(shù)字圖像數(shù)據(jù)到計(jì)算機(jī)的高速數(shù)據(jù)采集和傳輸,包含四 個(gè)接口模塊、四個(gè)高速緩存模塊以及兩個(gè)數(shù)據(jù)發(fā)送模塊,所述四個(gè)接口模塊、四個(gè)高速 緩存模塊以及兩個(gè)數(shù)據(jù)發(fā)送模塊可構(gòu)成四路獨(dú)立的數(shù)據(jù)傳輸通道;所述接口模塊可實(shí)現(xiàn)成像儀和高速緩存模塊間的電平轉(zhuǎn)換和接口轉(zhuǎn)換; 所述高速緩存模塊可實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)采集和緩存,包含輸入端緩存器、輸出端緩存 器、SRAM以及用以實(shí)現(xiàn)輸入端緩存器、輸出端緩存器和SRAM之間協(xié)調(diào)工作的控制 單元;其中輸入端緩存器的輸入端與相應(yīng)的接口模塊相連,此輸入端緩存器的輸出端與 SRAM的輸入端相連;SRAM的輸出端與輸出端緩存器的輸入端相連;所述輸入端緩存 器、輸出端緩存器分別為高速同步先進(jìn)先出緩存器;所述數(shù)據(jù)發(fā)送模塊可實(shí)現(xiàn)四個(gè)高速緩存模塊與計(jì)算機(jī)的通信,包括USB控制芯片和 USB連接器,其中USB控制芯片包括8051單片機(jī)、串行接口引擎SIE、通道控制緩存 器(FIFOO)、A通道緩存器(FIFOl)和B通道緩存器(FIF02),其中8051單片機(jī)用于對(duì) 通道控制緩存器(FIFOO)、A通道緩存器(FIFOl)和B通道緩存器(FIF02)進(jìn)行配置,串 行接口引擎SIE用于對(duì)輸入數(shù)據(jù)進(jìn)行譯碼、編碼、錯(cuò)誤糾正和位填充并變換為USB所需 的電平;其中通道控制緩存器(FIFOO)用于控制A通道緩存器(FIFOl)和B通道緩存器 (FIF02)是否接收數(shù)據(jù),A通道緩存器(FIFOl)和B通道緩存器(FIF02)用于分別發(fā)送一 個(gè)高速緩存模塊的數(shù)據(jù),其輸入端與相應(yīng)的高速緩存模塊中的輸出端緩存器的輸出端相 連,其輸出端分別與串行接口引擎SIE相連,所述串行接口引擎S正與USB連接器相連, USB連接器通過USB電纜與計(jì)算機(jī)相連。
2.根據(jù)權(quán)利要求1所述的基于USB的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)系統(tǒng),其特征在于 所述接口模塊為電平轉(zhuǎn)換器,實(shí)現(xiàn)將LVDS信號(hào)轉(zhuǎn)換為TTL電平信號(hào);所述四個(gè)高速緩存模塊中的控制單元和高速同步先進(jìn)先出緩存器通過FPGA實(shí)現(xiàn)。
3.根據(jù)權(quán)利要求1或2所述的基于USB的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)系統(tǒng),其特征在于 所述計(jì)算機(jī)包含USB接口、內(nèi)存、用于實(shí)現(xiàn)數(shù)據(jù)快速訪間和存儲(chǔ)的磁盤陣列、用于實(shí)現(xiàn)圖像采集及存儲(chǔ)系統(tǒng)開啟和關(guān)閉的開啟關(guān)閉模塊、用于實(shí)現(xiàn)圖像數(shù)據(jù)的實(shí)時(shí)顯示的 顯示模塊、用于實(shí)現(xiàn)圖像數(shù)據(jù)的按需存儲(chǔ)功能的處理單元。
4.一種在權(quán)利要求1所述系統(tǒng)中實(shí)現(xiàn)的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)方法,其特征在于,包含 如下步驟步驟1]連接成像儀、數(shù)據(jù)采集裝置和計(jì)算機(jī);步驟2]將每個(gè)高速緩存模塊的存儲(chǔ)空間分為η個(gè)緩存塊,記為AO A(n-l),且任 意時(shí)刻指定的寫緩存塊和讀緩存塊地址不同;設(shè)定輸入端緩存器的最大輸入緩存閾值和最小輸入緩存閾值,設(shè)定輸出端緩存器的 輸出緩存閾值;將計(jì)算機(jī)內(nèi)存分為m個(gè)緩存塊,記為BO B(m-l),且任意時(shí)刻指定的寫緩存塊和 讀緩存塊地址不同;步驟3]控制單元控制高速緩存模塊進(jìn)行數(shù)據(jù)采集; 同時(shí)USB控制芯片進(jìn)行數(shù)據(jù)采集;同時(shí)處理單元控制計(jì)算機(jī)進(jìn)行數(shù)據(jù)采集; 步驟4]關(guān)閉圖像采集功能。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于步驟3]中所述控制單元控制高速緩存模塊進(jìn)行數(shù)據(jù)采集步驟如下 步驟310]控制單元判斷輸入端緩存器狀態(tài)是否大于最大輸入緩存閾值; 步驟311]A.若輸入端緩存器狀態(tài)大于最大輸入緩存閾值,則控制單元判斷指定的寫緩存塊是 否為可寫;若該寫緩沖塊可寫,則將指定大小的數(shù)據(jù)從輸入端緩存器寫入該緩存塊,然后返回 步驟310];若該寫緩沖塊不可寫,則判斷輸出端緩存器狀態(tài)是否小于最大輸出緩存閾值; 若輸出端緩存器狀態(tài)小于最大輸出緩存閾值,則控制單元判斷指定的讀緩存塊是否 為可讀;若該讀緩沖塊可讀,則將指定大小的數(shù)據(jù)從該緩存塊讀入輸出端緩存器,然后返回 步驟310];若該讀緩沖塊不可讀,則返回步驟310];若輸出端緩存器狀態(tài)大于輸出緩存閾值,則返回步驟310];B.若輸入端緩存器狀態(tài)小于最大輸入緩存閾值,則判斷輸出端緩存器狀態(tài)是否小于 輸出緩存閾值;若輸出端緩存器狀態(tài)小于輸出緩存閾值,則控制單元判斷指定的讀緩存塊是否為可讀;若該讀緩存塊可讀,則將指定大小的數(shù)據(jù)從該緩存塊讀入輸出端緩存器,然后返回 步驟310];若該讀緩存塊不可讀,則判斷輸入端緩存器狀態(tài)是否大于最小輸入緩存閾值; 若輸入端緩存器狀態(tài)大于最小輸入緩存閾值,則控制單元判斷指定的寫緩存塊是否 為可寫;若該寫緩沖塊可寫,則將指定大小的數(shù)據(jù)從輸入端緩存器寫入該緩存塊,然后返回 步驟310];若該寫緩沖塊不可寫,則返回步驟310]; 若輸入端緩存器狀態(tài)小于最小輸入緩存閾值,則返回步驟310]; 若輸出端緩存器狀態(tài)大于輸出緩存閾值,則判斷輸入端緩存器狀態(tài)是否大于最小輸 入緩存閾值;若輸入端緩存器狀態(tài)大于最小輸入緩存閾值,則控制單元判斷指定的寫緩存塊是否 為可寫;若該寫緩沖塊可寫,則將指定大小的數(shù)據(jù)從輸入端緩存器寫入該緩存塊,然后返回 步驟310];若該寫緩沖塊不可寫,則返回步驟310];若輸入端緩存器狀態(tài)小于最小輸入緩存閾值,則返回步驟310]。
6.根據(jù)權(quán)利要求4或5所述的方法,其特征在于步驟3]中所述USB控制芯片的數(shù)據(jù)采集步驟如下 步驟320]開啟A通道和B通道;否則,系統(tǒng)處于等待狀態(tài); 步驟321]若開啟通道成功,則判斷A和B哪個(gè)通道為空閑狀態(tài); 步驟322]若A通道空閑,則第一路數(shù)據(jù)通過A通道將高速緩存模塊的輸出端緩存器中的數(shù)據(jù) 寫入到A通道緩存器(FIFOl),并且一次性讀寫256個(gè)16bit數(shù)據(jù);若B通道空閑,則第二路數(shù)據(jù)通過B通道將高速緩存中的數(shù)據(jù)寫入到B通道緩存器 (FIF02)中,并且一次性讀寫256個(gè)16bit數(shù)據(jù);步驟323]若可以關(guān)閉A和B通道,則返回步驟320];否則,返回步驟322]。
7.根據(jù)權(quán)利要求6所述的基于USB的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)方法,其特征在于 步驟3]中所述處理單元控制計(jì)算機(jī)進(jìn)行數(shù)據(jù)采集步驟如下步驟330]處理單元判斷計(jì)算機(jī)內(nèi)存中指定的寫緩存塊是否為可寫; 步驟331]若該寫緩沖塊可寫,則將指定大小的數(shù)據(jù)從A通道緩存器(FIFOl)或B通道緩存器 (FIF02)寫入該緩存塊,然后返回步驟330];若該寫緩沖塊不可寫,則判斷計(jì)算機(jī)內(nèi)存中指定的讀緩存塊是否為可讀; 若該讀緩沖塊可讀,則將指定大小的數(shù)據(jù)從計(jì)算機(jī)內(nèi)存讀入到磁盤陣列,然后返回 步驟320];若該讀緩沖塊不可讀,則返回步驟330]。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于以上步驟中指定大小的數(shù)據(jù)是指不大 于一個(gè)緩存塊空間大小的數(shù)據(jù)。
9.根據(jù)權(quán)利要求4或5所述的方法,其特征在于η值取16或32;m值取16或32; m值與η值可相同也可不相同。
全文摘要
本發(fā)明涉及基于USB的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)系統(tǒng)及方法,包括與成像儀相連接的數(shù)據(jù)采集裝置和計(jì)算機(jī),本發(fā)明要解決的技術(shù)問題是提供一種基于USB的數(shù)據(jù)實(shí)時(shí)采集和存儲(chǔ)系統(tǒng)及方法,以克服現(xiàn)有技術(shù)中存在的缺陷。本發(fā)明具有采集速度快,系統(tǒng)實(shí)時(shí)性好,傳輸可靠性高,并具有使用體積小,便于攜帶,工作性能穩(wěn)定等優(yōu)點(diǎn)。
文檔編號(hào)G06F17/40GK102012948SQ20101014430
公開日2011年4月13日 申請(qǐng)日期2010年4月12日 優(yōu)先權(quán)日2010年4月12日
發(fā)明者于濤, 劉學(xué)斌, 呼媛, 段曉峰, 王爽, 胡炳樑, 陳小來, 馬亮 申請(qǐng)人:中國科學(xué)院西安光學(xué)精密機(jī)械研究所