本發(fā)明涉及數(shù)據(jù)傳輸,尤其涉及一種數(shù)據(jù)接收方法、系統(tǒng)和fpga設備。
背景技術:
1、隨著數(shù)字化和信息化時代的到來,數(shù)據(jù)處理量呈現(xiàn)爆炸性增長,fpga(fieldprogrammable?gate?array,現(xiàn)場可編程門陣列)由于其高速數(shù)據(jù)處理的能力,被廣泛應用于各個領域的通信和數(shù)據(jù)處理中。在fpga的應用中,通常使用axi4-stream(axi4streamprotocol)總線協(xié)議進行高速串行通信,axi4-stream協(xié)議是一種簡單易用、高速可靠的通信協(xié)議,可以有效地提高fpga傳輸數(shù)據(jù)的效率和可靠性,實現(xiàn)fpga對大量數(shù)據(jù)的高效傳輸、處理和分析,從而滿足各種復雜應用的需求。
2、在fpga應用axi4-stream協(xié)議進行數(shù)據(jù)傳輸?shù)膶嶋H場景中,數(shù)據(jù)傳輸?shù)碾p方以分工合作的方式進行,常用的傳輸方式為發(fā)送端負責數(shù)據(jù)傳輸?shù)目刂疲邮斩薴pga則預先使用內部存儲資源創(chuàng)建一個緩沖區(qū),以等待接收數(shù)據(jù);而且,為了使緩沖區(qū)能夠持續(xù)接收數(shù)據(jù),fpga在至少一次傳輸任務完成后,通常會立即開始從緩沖池中讀取數(shù)據(jù),在數(shù)據(jù)接收的過程中同步做數(shù)據(jù)處理,以保證數(shù)據(jù)接收的持續(xù)性和速率。
3、盡管上述fpga接收數(shù)據(jù)的方法具有持續(xù)性和高效性,但它需要預先規(guī)劃內存空間以創(chuàng)建緩沖池,一方面,這種接收方式占用了大量的內存空間資源,可能會限制fpga的傳輸速率和處理速率;另一方面,這種緩沖池接收方法主要適用于輸入數(shù)據(jù)流速度較慢而輸出處理速度較快的情況,對于其他傳輸方式可能無法充分發(fā)揮作用,具有一定的局限性,而且緩沖池需要精確地管理數(shù)據(jù)的流入和流出,其流控制較為復雜。
4、因此,如何在保證數(shù)據(jù)傳輸速率的前提下,提供一種普適性強、內存空間占用少、易于流控的數(shù)據(jù)接收方法是本領域技術人員亟需解決的技術問題的。
技術實現(xiàn)思路
1、本發(fā)明旨在至少在一定程度上解決相關技術中的技術問題之一。
2、為此,本發(fā)明的第一個目的在于提出一種數(shù)據(jù)接收方法。
3、本發(fā)明的第二個目的在于提出一種fpga設備。
4、本發(fā)明的第三個目的在于提出一種數(shù)據(jù)接收系統(tǒng)。
5、為達上述目的,本發(fā)明第一方面實施例提出了一種數(shù)據(jù)接收方法,包括以下步驟:創(chuàng)建第一計數(shù)器和第二計數(shù)器,并將所述第一計數(shù)器和所述第二計數(shù)器的初始值設置為零;確定單次數(shù)據(jù)傳輸任務的數(shù)據(jù)總長度和數(shù)據(jù)分組總數(shù);根據(jù)所述第一計數(shù)器的數(shù)值和發(fā)送端tvalid信號的斷言狀態(tài)來設置tready信號的斷言狀態(tài),在tvalid信號和tready信號都斷言有效時執(zhí)行數(shù)據(jù)傳輸任務,并根據(jù)所述數(shù)據(jù)傳輸任務的執(zhí)行狀態(tài)控制所述第一計數(shù)器進行相應的計數(shù)操作;其中,所述計數(shù)操作包括數(shù)值加一和數(shù)值減一;接收所述數(shù)據(jù)傳輸任務中的數(shù)據(jù)分組并暫存于寄存器中,在下個時鐘周期從所述寄存器中讀取出所述數(shù)據(jù)分組以進行數(shù)據(jù)處理,在進行數(shù)據(jù)處理的同時將所述第二計數(shù)器的數(shù)值加一;其中,接收數(shù)據(jù)分組和對數(shù)據(jù)分組進行數(shù)據(jù)處理都為單周期操作;直至所述第一計數(shù)器的數(shù)值與所述第二計數(shù)器的數(shù)值都等于所述數(shù)據(jù)分組總數(shù)時,結束所述數(shù)據(jù)傳輸任務,并將所述第一計數(shù)器和所述第二計數(shù)器的數(shù)值清零。
6、在第一方面的一具體實施例中,所述確定單次數(shù)據(jù)傳輸任務的數(shù)據(jù)總長度和數(shù)據(jù)分組總數(shù),包括:通過發(fā)送端和接收端雙端協(xié)商確定所述數(shù)據(jù)傳輸任務的數(shù)據(jù)總長度;通過發(fā)送端和接收端雙端協(xié)商確定單次傳輸?shù)臄?shù)據(jù)位寬,其中,所述單次傳輸?shù)臄?shù)據(jù)位寬基于axi4-stream協(xié)議確定;基于所述數(shù)據(jù)傳輸任務的數(shù)據(jù)總長度和所述單次傳輸?shù)臄?shù)據(jù)位寬,確定所述數(shù)據(jù)分組總數(shù)。
7、在第一方面的一具體實施例中,所述根據(jù)第一計數(shù)器的數(shù)值和發(fā)送端tvalid信號的斷言狀態(tài)來設置tready信號的斷言狀態(tài),包括:在所述第一計數(shù)器的數(shù)值小于所述數(shù)據(jù)分組總數(shù)時,若tvalid信號斷言有效,則設置tready信號斷言有效;若tvalid信號斷言無效,則設置tready信號斷言無效。
8、在第一方面的一具體實施例中,所述根據(jù)所述數(shù)據(jù)傳輸任務的執(zhí)行狀態(tài)控制所述第一計數(shù)器進行相應的計數(shù)操作之前,還包括:在每個時鐘周期的起始時刻,基于第一計數(shù)器的數(shù)值、tvalid信號和tready信號的斷言狀態(tài),結合所述數(shù)據(jù)分組總數(shù)協(xié)同判定數(shù)據(jù)傳輸任務的執(zhí)行狀態(tài);若所述第一計數(shù)器的數(shù)值小于所述數(shù)據(jù)分組總數(shù)且tvalid信號斷言有效,則預判所述數(shù)據(jù)傳輸任務在下個時鐘周期中的執(zhí)行狀態(tài)為正常傳輸中;若所述第一計數(shù)器的數(shù)值小于或等于所述數(shù)據(jù)分組總數(shù),且tvalid信號斷言無效和tready信號斷言有效,則判定所述數(shù)據(jù)傳輸任務的執(zhí)行狀態(tài)為傳輸中斷。
9、在第一方面的一具體實施例中,所述根據(jù)數(shù)據(jù)傳輸任務的執(zhí)行狀態(tài)控制第一計數(shù)器進行對應的計數(shù)操作,包括:若所述數(shù)據(jù)傳輸任務在下個時鐘周期中的執(zhí)行狀態(tài)被預判為正常傳輸中,則控制所述第一計數(shù)器在下個時鐘周期內進行數(shù)值加一操作。
10、在第一方面的一具體實施例中,所述根據(jù)數(shù)據(jù)傳輸任務的執(zhí)行狀態(tài)控制第一計數(shù)器進行對應的計數(shù)操作,包括:若所述數(shù)據(jù)傳輸任務的執(zhí)行狀態(tài)為傳輸中斷,則控制所述第一計數(shù)器在下個時鐘周期內進行數(shù)值減一操作。
11、在第一方面的一具體實施例中,所述根據(jù)第一計數(shù)器的數(shù)值和發(fā)送端tvalid信號的斷言狀態(tài)來設置tready信號的斷言狀態(tài),包括:在所述第一計數(shù)器的數(shù)值等于所述數(shù)據(jù)分組總數(shù)時,判斷是否為tvalid信號斷言無效且tready信號斷言有效;若是,則等待所述第一計數(shù)器的數(shù)值減一后,再根據(jù)所述第一計數(shù)器的數(shù)值和tvalid信號的斷言狀態(tài)來設置tready信號的斷言狀態(tài);否則,將tready信號設置為斷言無效直至所述數(shù)據(jù)傳輸任務結束。
12、在第一方面的一具體實施例中,所述在進行數(shù)據(jù)處理的同時將第二計數(shù)器的數(shù)值加一,包括:在每個時鐘周期的起始時刻,通過檢測tvalid信號和tready信號的斷言狀態(tài),確定下個時鐘周期的數(shù)據(jù)處理狀態(tài);其中,所述數(shù)據(jù)處理狀態(tài)包括不作數(shù)據(jù)處理和對接收到的數(shù)據(jù)分組作數(shù)據(jù)處理;若下個時鐘周期的數(shù)據(jù)處理狀態(tài)為對接收到的數(shù)據(jù)分組作數(shù)據(jù)處理,則在下個時鐘周期內將所述第二計數(shù)器的數(shù)值加一。
13、為達上述目的,本發(fā)明第二方面實施例提出了一種fpga設備,包括創(chuàng)建模塊、確定模塊、數(shù)據(jù)操作模塊和收尾模塊;其中,所述數(shù)據(jù)操作模塊包括數(shù)據(jù)傳輸單元和數(shù)據(jù)處理單元;所述創(chuàng)建模塊,用于創(chuàng)建第一計數(shù)器和第二計數(shù)器,并將所述第一計數(shù)器和所述第二計數(shù)器的初始值設置為零;所述確定模塊,用于和發(fā)送端協(xié)商確定單次數(shù)據(jù)傳輸任務的數(shù)據(jù)總長度,以及確定單次數(shù)據(jù)傳輸任務的數(shù)據(jù)分組總數(shù);所述數(shù)據(jù)傳輸單元,用于根據(jù)所述第一計數(shù)器的數(shù)值和tvalid信號的斷言狀態(tài)來設置tready信號的斷言狀態(tài),在tvalid信號和tready信號都斷言有效時接收數(shù)據(jù)分組以執(zhí)行所述數(shù)據(jù)傳輸任務,并根據(jù)所述數(shù)據(jù)傳輸任務的執(zhí)行狀態(tài)控制所述第一計數(shù)器進行相應的計數(shù)操作;其中,所述計數(shù)操作包括數(shù)值加一和數(shù)值減一;所述數(shù)據(jù)處理單元,用于接收所述數(shù)據(jù)傳輸任務中的數(shù)據(jù)分組并暫存于寄存器中,在下個時鐘周期從所述寄存器中讀取出數(shù)據(jù)分組以進行數(shù)據(jù)處理,在進行數(shù)據(jù)處理的同時將所述第二計數(shù)器的數(shù)值加一;其中,接收數(shù)據(jù)分組和對數(shù)據(jù)分組進行數(shù)據(jù)處理都為單周期操作;所述收尾模塊,用于直至所述第一計數(shù)器的數(shù)值與所述第二計數(shù)器的數(shù)值都等于所述數(shù)據(jù)分組總數(shù)時,結束所述數(shù)據(jù)傳輸任務,并將所述第一計數(shù)器和所述第二計數(shù)器的數(shù)值清零。
14、為達上述目的,本發(fā)明第三方面實施例提出了一種數(shù)據(jù)接收系統(tǒng),包括第二方面實施例所述的fpga設備和發(fā)送端;所述發(fā)送端,用于和所述fpga設備協(xié)商確定單次數(shù)據(jù)傳輸任務的數(shù)據(jù)總長度;還用于設置tvalid信號的斷言狀態(tài);還用于在tvalid信號和tready信號都斷言有效時發(fā)送數(shù)據(jù)分組以執(zhí)行所述數(shù)據(jù)傳輸任務。
15、本發(fā)明的有益效果:
16、根據(jù)第一計數(shù)器的數(shù)值和發(fā)送端tvalid信號的斷言狀態(tài)來設置tready信號的斷言狀態(tài),在tvalid信號和tready信號都斷言有效時執(zhí)行數(shù)據(jù)傳輸任務,執(zhí)行數(shù)據(jù)傳輸任務時將接收到的數(shù)據(jù)分組暫存于寄存器中,并在接收到下個數(shù)據(jù)分組前從寄存器中讀取出數(shù)據(jù)分組進行數(shù)據(jù)處理,在一個時鐘周期內同步進行下個數(shù)據(jù)分組的接收和上個數(shù)據(jù)分組的數(shù)據(jù)處理,以保證數(shù)據(jù)傳輸?shù)母咝院统掷m(xù)性,只占用一個寄存器來暫存一個數(shù)據(jù)分組,無需建立緩沖池,占用內存空間少;
17、預先創(chuàng)建第一計數(shù)器并用于在接收數(shù)據(jù)分組時同步對接收到的數(shù)據(jù)分組數(shù)量進行計數(shù),預先創(chuàng)建第二計數(shù)器并用于在處理數(shù)據(jù)分組時同步對處理后的數(shù)據(jù)分組數(shù)量進行計數(shù),直至第一計數(shù)器和第二計數(shù)器的數(shù)值都達到數(shù)據(jù)分組總數(shù)時,設置tready信號的斷言狀態(tài)以結束本次數(shù)據(jù)傳輸任務;采用雙計數(shù)方式來保證數(shù)據(jù)接收的正確性,并參與設置tready信號的斷言方式和斷言狀態(tài),以實現(xiàn)接收端控制數(shù)據(jù)傳輸任務的啟停,管理數(shù)據(jù)的流入流出,使流控制更加簡捷方便。