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