本發明屬于數據采集存儲系統技術領域,更為具體地講,涉及一種基于片上ram提升多通道有效數據傳輸的裝置及方法。
背景技術:
數字系統采樣率越來越高,而高速數據采集系統的實現,無疑對系統采集到的海量數據的存儲和處理能力提出了新的要求;每秒有百兆字節的數據流量輸入存儲器,,但是當存儲器具有很大的輸出數字帶寬的時候,若要通過pci總線、usb接口等快速通訊方式將采樣數據傳到主機進行處理,則需要巨大總線帶寬來實時傳輸數據,一般的總線或接口都難以做到,因此需要對高速數據進行一級緩存再上傳給主機,以減輕總線傳輸壓力和主機處理壓力。
經過研究發現,國內基于片上ram多通道數據緩存裝置多采用兼容設計的方法,將多通道的數據按照一種兼容控制方式來寫入fifo,但這種方法中,fifo中最多可以寫入n(n=2x,x>0)個通道的數據,但用戶在某種情況下需要緩存q(2x-1<q<n)個通道的數據,這時如果按照兼容控制的方式將q個通道數據寫入fifo的時候,同時會寫入用戶不需要的數據,這樣fifo就會存在n-q個通道的冗余數據,在傳給主機的時候,有效數據在傳給主機的全部數據中所占比率不能達到100%,當然也可以建立n個fifo,將每個通道的數據分別存儲,在這種情況下,當用戶需要緩存q個通道數據的時候,用戶可以從n個fifo中選擇q個fifo來存儲q個通道數據,這時有效數據在傳給主機的全部數據中所占比率達到100%,但是這樣主機讀取數據的時候需要依次讀取q個fifo中的數據,讀取速度很慢,因此需要提出一種基于片上ram的數據緩存裝置及方法,用于實現數據緩存,提高數據傳輸效率,方便用戶使用。
技術實現要素:
本發明的目的在于克服現有技術的不足,提供一種基于片上ram提升多通道有效數據傳輸的裝置及方法,根據用戶選擇的通道數實現對應通道中的數據緩存及傳輸,從而提高數據傳輸效率。
為實現上述發明目的,本發明一種基于片上ram提升多通道有效數據傳輸的裝置,其特征在于,包括:i路的信號調理通道chi、adci模塊、大容量存儲器、抽點模塊s、多路選擇器和一個fifo陣列,i=1,2,…,n(n=2x,x≥1),n表示通道路數;
信號調理通道chi與對應的adci模塊連接,將對應通道內的數據流輸入至adci模塊,adci模塊將數據流進行模數變化后,輸入至大容量存儲器進行存儲,之后送給抽點模塊s,抽點模塊s對數字數據流進行抽點處理,得到降低頻率的數字數據流并發送至多路選擇器,多路選擇器根據用戶指令選擇緩存數據的通道數,再將選出的通道中對應的數據發送至fifo陣列緩存,最后fifo陣列根據用戶選擇的通道數將緩存數據依次回傳給主機。
進一步的,利用上述裝置提升多通道有效數據傳輸效率的方法,其特征在于,包括以下步驟:
(1)、將信號調理通道chi中的輸入信號輸入至對應的adci模塊,adci模塊將接收到的輸入信號轉化為數字信號datai,并發送至大容量存儲器進行存儲;
(2)、大容量存儲器對接收得到的數字信號datai進行存儲,當用戶主機需要數據時,大容量存儲器將存儲數據c_datai發送至抽點模塊;
(3)、抽點模塊s對接收得到的數據c_datai進行抽點處理,得到降低頻率的數字信號s_datai,并發送至多路選擇器;
(4)、多路選擇器根據用戶指令選擇緩存數據的通道數,將選出的通道中對應的數據發送至fifo陣列;
(5)、fifo陣列根據用戶選擇的緩存數據通道數來選擇不同數量、不同位寬的fifo進行緩存,實現fifo中的數據全部為有效數據,最后fifo陣列根據用戶選擇的通道數將緩存數據依次回傳給主機。
其中,用戶選擇緩存數據的通道數的方法為:
當用戶選擇通道數為i,如果i<n時,i用二進制碼表示為i=(dbdb-1...d1d0)2,且db∈{0,1},則從二進制編碼的最低位到最高位的順序依次標記,當第b位db為1時,b≥0,則2b個通道的數據存儲在第b個fifo中,對應i個通道中的通道編號為[2b+1-1,2b],其中,[2b+1-1,2b]表示i個通道中的第2b個通道到第2b+1-1個通道;當第b位db為0時,則沒有數據寫入第b個fifo中;
如果i=n時,i用二進制碼表示為i=(dbdb-1...d1d0)2+(1)2,且db∈{1},則從二進制編碼的最低位到最高位的順序依次標記,當d0=1時,則1個通道的數據存儲在第1個fifo中,對應i個通道中的通道編號為[1,1]-;當d1=1時,則2個通道的數據存儲在第2個fifo中,對應i個通道中的通道編號為[3,2];當d2=1時,則4個通道的數據存儲在第3個fifo中,對應i個通道中的通道編號為[7,4]-;并依次類推,第n個通道數據存儲在第x+1個fifo;
如果i>n時,舍棄。
本發明的發明目的是這樣實現的:
本發明一種基于片上ram提升多通道有效數據傳輸的裝置及方法,通過adc模塊對對應信號調理通道的輸入信號進行模數轉換,存到大容量存儲器中,當用戶需要數據時,數據被讀出大容量存儲器,再通過抽點模塊對數字信號抽點,使所有通道的數據流的降低頻率,多路選擇器根據用戶選擇的緩存數據的通道數,將選出通道對應的數據流發送給對應的不同數量、不同輸入位寬的fifo進行緩存。
同時,本發明一種基于片上ram提升多通道有效數據傳輸的裝置及方法還具有以下有益效果:
(1)、當用戶選擇的通道數為2y(y=0,1,2...,2y<n)時,本發明可實現連續傳輸大量數據,而不受fifo容量的限制。
(2)、由于用戶選擇的通道數不一樣,本發明可實現用戶選擇不同的通道數時fifo中存儲的全是有效數據,而不浪費資源存儲冗余數據,進而在傳給主機的時候使有效數據在全部數據中占有的比例為100%。
附圖說明
圖1是本發明基于片上ram提升多通道有效數據傳輸的原理圖;
具體實施方式
下面結合附圖對本發明的具體實施方式進行描述,以便本領域的技術人員更好地理解本發明。需要特別提醒注意的是,在以下的描述中,當已知功能和設計的詳細描述也許會淡化本發明的主要內容時,這些描述在這里將被忽略。
實施例
圖1是本發明基于片上ram提升多通道有效數據傳輸的原理圖。
在本實施例中,如圖1所示,本發明基于片上ram提升多通道有效數據傳輸的裝置包括16路的多路選擇器、adc模塊、大容量存儲器和抽點模塊,以及一個fifo陣列,其中,多路選擇器和fifo陣列均在同一片fpga中實現,每路adc模塊adci、抽點模塊s對應一個輸入信號通道,i=1,2,…,16。
下面結合該裝置,對提升16通道有效數據傳輸效率的方法進行詳細說明,包括以下步驟:
s1、將信號調理通道chi中的輸入信號輸入至對應的adci模塊,i=1,2,…,16,adci模塊將接收到的輸入信號轉化為數字信號datai,并發送至大容量存儲器。
s2、大容量存儲器對接收得到的數字信號datai進行存儲,當用戶主機需要數據時,大容量存儲器將數據c_datai發送至抽點模塊;
s3、抽點模塊s對接收得到的數字信號c_datai進行抽點處理,得到降低頻率的數字信號s_datai,并發送至多路選擇器;
大容量存儲器具有很大的數字帶寬,每個時鐘周期輸出數據數據位寬很大,所以數據輸出大容量存儲器時,需要巨大總線帶寬來實時傳輸數據,一般的總線或接口都難以做到,因此需要抽點模塊s改變采樣率,從而使數字信號降低速率。
s4、多路選擇器根據用戶選擇的緩存數據通道數,將選出的通道中對應的數據發送至fifo陣列;
fifo陣列共有x+1個fifo,其中,第t個fifo的數據輸入位寬為2t-1k位,可以存儲2t-1個通道的數據,第x+1個fifo的數據輸入位寬為k位,可以存儲1個通道的數據,其中,k為adc的輸出數據位寬,1≤t≤x。
s5、fifo陣列根據用戶選擇緩存數據的通道數來選擇不同數量、不同位寬的fifo進行緩存;
在本實施例中,總通道數為n,且n=2x(x=1,2,...),將總通道數用二進制表示為
當i<n時,用戶選擇通道數為i,i用二進制碼表示為i=(dbdb-1...d1d0)2,且db∈{0,1},(b=0,1,2,...)。從二進制編碼的最低位到最高位的順序依次標記,當第b位db為1時,則2b個通道的數據存儲在第b個fifo中,對應i個通道中的通道編號為[2b+1-1,2b],其中,[2b+1-1,2b]表示i個通道中的第2b個通道到第2b+1-1個通道;當第b位db為0時,則沒有數據寫入第b個fifo中。
當i=n時,i用二進制碼表示為m=(dbdb-1...d1d0)2+(1)2,且db∈{1}。從二進制編碼的最低位到最高位的順序依次標記,當d0=1時則1個通道的數據存儲在第1個fifo中,對應i個通道中的通道編號為[1,1],其中[p,q]表示i個通道中的第q個通道到第p個通道當d1=1時則2個通道的數據存儲在第2個fifo中,對應i個通道中的通道編號為[3,2],當d2=1時則4個通道的數據存儲在第3個fifo中,對應i個通道中的通道編號為[7,4],依次類推。第n個通道數據存儲在第x+1個fifo;
如果i>n時,舍棄。
最后fifo陣列根據用戶選擇的通道數將緩存數據依次回傳給主機。
實例
為了更好地說明本發明的技術效果,采用一個具體實施例進行實驗驗證。用戶選擇i(1,2,3...16)通道的數據傳回主機。
基于片上ram的16通道數據傳輸裝置中,adc分辨率為16bit,輸入數據流的位寬是256bit,fifo陣列共有5個fifo,2個編號為a和b存儲深度為16bit×2k的fifo,輸入分別為a_in,b_in,位寬為16bit;1個編號為c存儲深度為32bit×2k的fifo,輸入為c_in,位寬為32bit;1個編號為d存儲深度為64bit×2k的fifo,輸入分別為d_in,位寬為64bit;1個編號為e存儲深度為128bit×2k的fifo,輸入分別為e_in,位寬為128bit;所有fifo的輸出位寬是32bit。
當用戶選擇i=1時,用戶選擇傳輸1個通道的數據回主機,多路選擇器輸入數據的[255:240]輸出,送到編號為a的fifo中;當fifo存儲滿數據之后,主機讀走全部緩存數據。
當用戶選擇i=2時,用戶選擇傳輸2個通道的數據回主機,多路選擇器輸入數據的[255:224]輸出,送到編號為c的fifo中;當fifo存儲滿數據之后,主機讀走全部緩存數據。
當用戶選擇i=3時,用戶選擇傳輸3個通道的數據回主機,多路選擇器輸入數據的[255:208]輸出,其中輸入數據的[255:240]送到編號為a的fifo中;輸入數據的[239:208]送到編號為c的fifo中;兩個fifo將會同時裝滿,之后主機依次全部讀到主機緩沖區。
當用戶選擇i=4時,用戶選擇傳輸4個通道的數據回主機,多路選擇器輸入數據的[255:192]輸出,其中輸入數據的[255:192]送到編號為d的fifo中;當fifo存儲滿數據之后,之后主機依次全部讀到主機緩沖區。
當用戶選擇i=5時,用戶選擇傳輸5個通道的數據回主機,多路選擇器輸入數據的[255:176]輸出,其中輸入數據的[255:240]送到編號為a的fifo中;輸入數據的[239:176]送到編號為d的fifo中,兩個fifo將會同時裝滿,當fifo存儲滿數據之后,之后主機依次全部讀到主機緩沖區。
當用戶選擇i=6時,用戶選擇傳輸6個通道的數據回主機,多路選擇器輸入數據的[255:160]輸出,其中輸入數據的[255:224]送到編號為c的fifo中;輸入數據的[223:160]送到編號為d的fifo中,兩個fifo將會同時裝滿,當fifo存儲滿數據之后,之后主機依次全部讀到主機緩沖區。
當用戶選擇i=7時,用戶選擇傳輸7個通道的數據回主機,多路選擇器輸入數據的[255:144]輸出,其中輸入數據的[255:240]送到編號為a的fifo中;輸入數據的[239:208]送到編號為c的fifo中,輸入數據的[207:144]送到編號為d的fifo中;三個fifo將會同時裝滿,當fifo存儲滿數據之后,之后主機依次全部讀到主機緩沖區。
當用戶選擇i=8時,用戶選擇傳輸8個通道的數據回主機,多路選擇器輸入數據的[255:128]輸出,其中輸入數據的[255:128]送到編號為e的fifo中,當fifo存儲滿數據之后,之后主機依次全部讀到主機緩沖區。
當用戶選擇i=9時,用戶選擇傳輸9個通道的數據回主機,多路選擇器輸入數據的[255:112]輸出,其中輸入數據的[255:240]送到編號為a的fifo中;輸入數據的[239:112]送到編號為e的fifo中,兩個fifo將會同時裝滿,當fifo存儲滿數據之后,之后主機依次全部讀到主機緩沖區。
當用戶選擇i=10時,用戶選擇傳輸10個通道的數據回主機,多路選擇器輸入數據的[255:96]輸出,其中輸入數據的[255:224]送到編號為c的fifo中;輸入數據的[223:96]送到編號為e的fifo中,兩個fifo將會同時裝滿,當fifo存儲滿數據之后,之后主機依次全部讀到主機緩沖區。
當用戶選擇i=11時,用戶選擇傳輸11個通道的數據回主機,多路選擇器輸入數據的[255:80]輸出,其中輸入數據的[255:240]送到編號為a的fifo中;輸入數據的[239:208]送到編號為c的fifo中,輸入數據的[207:80]送到編號為e的fifo中,三個fifo將會同時裝滿,當fifo存儲滿數據之后,之后主機依次全部讀到主機緩沖區。
當用戶選擇i=12時,用戶選擇傳輸12個通道的數據回主機,多路選擇器輸入數據的[255:64]輸出,其中輸入數據的[255:192]送到編號為d的fifo中;輸入數據的[191:64]送到編號為e的fifo中,兩個fifo將會同時裝滿,當fifo存儲滿數據之后,之后主機依次全部讀到主機緩沖區。
當用戶選擇i=13時,用戶選擇傳輸13個通道的數據回主機,多路選擇器輸入數據的[255:48]輸出,其中輸入數據的[255:240]送到編號為a的fifo中;輸入數據的[239:176]送到編號為d的fifo中,輸入數據的[175:48]送到編號為e的fifo中,三個fifo將會同時裝滿,當fifo存儲滿數據之后,之后主機依次全部讀到主機緩沖區。
當用戶選擇i=14時,用戶選擇傳輸14個通道的數據回主機,多路選擇器輸入數據的[255:32]輸出,其中輸入數據的[255:224]送到編號為c的fifo中;輸入數據的[223:160]送到編號為d的fifo中,輸入數據的[159:32]送到編號為e的fifo中,三個fifo將會同時裝滿,當fifo存儲滿數據之后,之后主機依次全部讀到主機緩沖區。
當用戶選擇i=15時,用戶選擇傳輸15個通道的數據回主機,多路選擇器輸入數據的[255:16]輸出,其中輸入數據的[255:240]送到編號為a的fifo中;輸入數據的[239:208]送到編號為c的fifo中,輸入數據的[207:144]送到編號為d的fifo中,輸入數據的[143:16]送到編號為e的fifo中,四個fifo將會同時裝滿,當fifo存儲滿數據之后,之后主機依次全部讀到主機緩沖區。
當用戶選擇i=16時,用戶選擇傳輸16個通道的數據回主機,多路選擇器輸入數據的[255:0]輸出,其中輸入數據的[255:240]送到編號為a的fifo中;輸入數據的[239:208]送到編號為c的fifo中,輸入數據的[207:144]送到編號為d的fifo中,輸入數據的[143:16]送到編號為e的fifo中,輸入數據的[15:0]送到編號為b的fifo中,五個fifo將會同時裝滿,當fifo存儲滿數據之后,之后主機依次全部讀到主機緩沖區。
根據以上說明可知,本發明基于片上ram的多通道數據傳輸效率裝置與現有的兼容設計的技術方案不同,以本實施例為例,當用戶選擇傳回主機的通道數為1-16任意一種,有效數據在傳輸的全部數據中占有的比例全部是100%。因此,本發明能夠提升可變多通道數據傳輸效率,從而提高示波記錄儀的傳輸效率。
盡管上面對本發明說明性的具體實施方式進行了描述,以便于本技術領域的技術人員理解本發明,但應該清楚,本發明不限于具體實施方式的范圍,對本技術領域的普通技術人員來講,只要各種變化在所附的權利要求限定和確定的本發明的精神和范圍內,這些變化是顯而易見的,一切利用本發明構思的發明創造均在保護之列。