一種基于fpga的數(shù)據(jù)傳輸板之間進(jìn)行高速傳輸?shù)姆椒?br>
【專利摘要】本發(fā)明涉及一種基于FPGA的數(shù)據(jù)傳輸板之間進(jìn)行高速傳輸?shù)姆椒?,與現(xiàn)有技術(shù)相比解決了數(shù)據(jù)傳輸板之間數(shù)據(jù)通信速率低的缺陷。本發(fā)明包括以下步驟:監(jiān)聽(tīng)空閑標(biāo)志位;對(duì)發(fā)送FIFO寫數(shù)據(jù);數(shù)據(jù)組幀;數(shù)據(jù)編碼;差分傳送;差分轉(zhuǎn)換;同步接收;數(shù)據(jù)解碼;數(shù)據(jù)解析;數(shù)據(jù)讀取。本發(fā)明可以更快的實(shí)現(xiàn)數(shù)據(jù)傳輸板之間的數(shù)據(jù)傳輸。
【專利說(shuō)明】—種基于FPGA的數(shù)據(jù)傳輸板之間進(jìn)行高速傳輸?shù)姆椒?br>
[0001]
【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及FPGA傳輸技術(shù),具體來(lái)說(shuō)是一種基于FPGA的數(shù)據(jù)傳輸板之間進(jìn)行高速傳輸?shù)姆椒ā?br>
[0003]
【背景技術(shù)】
[0004]目前在配電自動(dòng)化終端中多采用控制板、數(shù)據(jù)傳輸板的結(jié)構(gòu),數(shù)據(jù)傳輸板之間主要通過(guò)總線來(lái)傳輸數(shù)據(jù),傳統(tǒng)的數(shù)據(jù)總線有CAN7、RS232和PCI。由于智能電網(wǎng)的建設(shè),對(duì)配電網(wǎng)要求越來(lái)越高,配電網(wǎng)自動(dòng)化設(shè)備功能也越來(lái)越多,隨之而來(lái)的問(wèn)題就是這些設(shè)備內(nèi)部需要很高的數(shù)據(jù)傳輸速率來(lái)保證各種功能的實(shí)現(xiàn)。比如在配電自動(dòng)化系統(tǒng)中,最大需要同時(shí)采樣90路模擬量,一個(gè)周波需要采集128點(diǎn),如果用16位的采集,則數(shù)據(jù)速率至少為90xl6xl28x50=9216000bps,傳統(tǒng)的CAN接口,通常高速為500K?1M,顯然已經(jīng)不能滿足我們的需求,而FPGA內(nèi)部擁有豐富的邏輯資源和接口資源,可以實(shí)現(xiàn)數(shù)據(jù)傳輸板的高速通訊。因此如何開(kāi)發(fā)出一種基于FPGA實(shí)現(xiàn)數(shù)據(jù)傳輸板高速通信的方法已經(jīng)成為急需解決的技術(shù)問(wèn)題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中數(shù)據(jù)傳輸板之間數(shù)據(jù)通信速率低的缺陷,提供一種基于FPGA的數(shù)據(jù)傳輸板之間進(jìn)行高速傳輸?shù)姆椒▉?lái)解決上述問(wèn)題。
[0006]為了實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案如下:
一種基于FPGA的數(shù)據(jù)傳輸板之間進(jìn)行高速傳輸?shù)姆椒?,主?shù)據(jù)傳輸板包括主CPU和主FPGA,從數(shù)據(jù)傳輸板包括從CPU和從FPGA ;主FPGA包括與主CPU相連的主總線控制邏輯模塊,主總線控制邏輯模塊通過(guò)發(fā)送FIFO與發(fā)送幀處理模塊相連,發(fā)送幀處理模塊通過(guò)編碼模塊與并串轉(zhuǎn)換模塊相連,并串轉(zhuǎn)換模塊與差分輸出模塊相連;差分輸入模塊通過(guò)同步模塊與解碼模塊相連,解碼模塊通過(guò)接收幀處理模塊與接收FIFO相連,接收FIFO通過(guò)從總線控制邏輯模塊與從CPU相連;差分輸出模塊與差分輸入模塊相連,傳輸方法包括以下步驟:監(jiān)聽(tīng)空閑標(biāo)志位,檢測(cè)并串轉(zhuǎn)換模塊中的空閑標(biāo)志位是否處于空閑狀態(tài),若處于繁忙狀態(tài)則繼續(xù)等待空閑狀態(tài),若處于空閑狀態(tài),主CPU將發(fā)送數(shù)據(jù)寫入主總線控制邏輯模塊,并置位于主總線控制邏輯模塊中的發(fā)送標(biāo)志位;
對(duì)發(fā)送FIFO寫數(shù)據(jù),主總線控制邏輯模塊接收到發(fā)送標(biāo)志位的消息后,將數(shù)據(jù)寫入發(fā)送 FIFO ;
數(shù)據(jù)組幀,發(fā)送幀處理模塊檢測(cè)到發(fā)送FIFO中有數(shù)據(jù)后,將數(shù)據(jù)讀出并組幀發(fā)送給編碼模塊;
數(shù)據(jù)編碼,編碼模塊接收到數(shù)據(jù)后,將數(shù)據(jù)的每個(gè)字節(jié)通過(guò)8B/10B編碼器編成IObit的數(shù)據(jù),發(fā)送至并串轉(zhuǎn)換模塊;
差分傳送,并串轉(zhuǎn)換模塊接收到編碼模塊的IObit數(shù)據(jù)后將其轉(zhuǎn)換成Ibit數(shù)據(jù),通過(guò)差分輸出模塊將單端信號(hào)轉(zhuǎn)化為差分信號(hào)傳出去,并置并串轉(zhuǎn)換模塊的空閑標(biāo)志位為空閑狀態(tài);
差分轉(zhuǎn)換,差分輸入模塊接收差分輸出模塊發(fā)送的數(shù)據(jù)并轉(zhuǎn)換成單端信號(hào)后發(fā)送給同步豐吳塊;
同步接收,同步模塊通過(guò)位同步形成數(shù)據(jù)采集時(shí)鐘,通過(guò)字節(jié)同步得到IObit數(shù)據(jù)后發(fā)送給解碼模塊;
數(shù)據(jù)解碼,解碼模塊通過(guò)8B/10B解碼器將IObit數(shù)據(jù)轉(zhuǎn)換成Sbit數(shù)據(jù)并發(fā)送給接收中貞處理模塊;
數(shù)據(jù)解析,接收幀處理模塊將數(shù)據(jù)根據(jù)幀定義進(jìn)行解析,并將解析后的數(shù)據(jù)存入接收FIFO ;
數(shù)據(jù)讀取,從總線控制邏輯模塊監(jiān)控接收FIFO中的字節(jié)數(shù)N,如果N=20,則產(chǎn)生中斷并通知從CPU,從CPU通過(guò)數(shù)據(jù)總線讀取數(shù)據(jù)。
[0007]所述的數(shù)據(jù)組幀包括以下步驟:
發(fā)送幀處理模塊監(jiān)測(cè)發(fā)送FIFO中的數(shù)據(jù)字節(jié)接口 ;
若檢測(cè)到發(fā)送FIFO中的字節(jié)數(shù)不為零,則不停地輪詢發(fā)送FIFO中的字節(jié)信號(hào);若字節(jié)數(shù)超過(guò)10個(gè)則將數(shù)據(jù)依次讀出,發(fā)送FIFO進(jìn)入讀數(shù)據(jù)狀態(tài),發(fā)送FIFO讀取一個(gè)字節(jié)的數(shù)據(jù)后進(jìn)行計(jì)算校驗(yàn)和,判斷處理的數(shù)據(jù)個(gè)數(shù)是否等于待發(fā)送字節(jié)數(shù),若是則進(jìn)入組幀狀態(tài),加上幀頭、信息位和校驗(yàn)位并將數(shù)據(jù)傳給編碼模塊;若數(shù)據(jù)個(gè)數(shù)小于待發(fā)送字節(jié)數(shù),則繼續(xù)發(fā)送FIFO的數(shù)據(jù),直到處理的字節(jié)數(shù)等于待發(fā)送字節(jié)數(shù)為止;
若發(fā)送FIFO的輪詢時(shí)間大于超時(shí)時(shí)間,發(fā)送FIFO進(jìn)入數(shù)據(jù)狀態(tài),發(fā)送FIFO讀取一個(gè)字節(jié)的數(shù)據(jù)后進(jìn)計(jì)算校驗(yàn)和,判斷處理的數(shù)據(jù)個(gè)數(shù)是否等于待發(fā)送字節(jié)數(shù),若是則進(jìn)入組幀狀態(tài),加上幀頭、信息位和校驗(yàn)位并將數(shù)據(jù)傳給編碼模塊;若數(shù)據(jù)個(gè)數(shù)小于待發(fā)送字節(jié)數(shù),則繼續(xù)發(fā)送FIFO的數(shù)據(jù),直到處理的字節(jié)數(shù)等于待發(fā)送字節(jié)數(shù)為止。
[0008]所述的數(shù)據(jù)解析包括以下步驟:
接收幀處理模塊在未收到字節(jié)使能信號(hào)前處于空閑狀態(tài),探測(cè)到字節(jié)使能信號(hào)后,接收幀處理模塊進(jìn)入幀頭狀態(tài);
判斷幀頭狀態(tài)中收到的數(shù)據(jù)是否是幀頭,如果是則等下一個(gè)字節(jié)使能信號(hào)到來(lái)進(jìn)入讀幀字節(jié)數(shù)狀態(tài),如果不是,則返回空閑狀態(tài);
讀取數(shù)據(jù)并轉(zhuǎn)入計(jì)算校驗(yàn)狀態(tài),在計(jì)算校驗(yàn)狀態(tài)中計(jì)算校驗(yàn)和并累加讀取字節(jié)數(shù),當(dāng)讀取字節(jié)數(shù)小于幀字節(jié)數(shù)時(shí),返回讀取數(shù)據(jù)狀態(tài);當(dāng)讀取字節(jié)數(shù)等于幀字節(jié)數(shù)時(shí),進(jìn)入讀取校驗(yàn)位狀態(tài);
在讀取校驗(yàn)位狀態(tài)中,判斷校驗(yàn)和是否正確,如果正確則進(jìn)入寫數(shù)據(jù)到接收FIFO的狀態(tài),如果不正確則返回空閑狀態(tài);在寫數(shù)據(jù)到接收FIFO狀態(tài)中,連續(xù)將等于幀字節(jié)數(shù)個(gè)數(shù)的數(shù)據(jù)都存入接收FIFO中,存完轉(zhuǎn)入空閑狀態(tài),重新等待新數(shù)據(jù)幀的到來(lái)。
[0009]有益效果
本發(fā)明的一種基于FPGA的數(shù)據(jù)傳輸板之間進(jìn)行高速傳輸?shù)姆椒?,與現(xiàn)有技術(shù)相比可以更快的實(shí)現(xiàn)數(shù)據(jù)傳輸板之間的數(shù)據(jù)傳輸。相對(duì)于CAN、RS232總線傳輸速率更高,相對(duì)于PCI總線不需要設(shè)計(jì)復(fù)雜的通信板和單獨(dú)的PCI橋接芯片,并且由于采用差分信號(hào)傳輸,其
抗干擾能力更強(qiáng),成本更低。
[0010]
【專利附圖】
【附圖說(shuō)明】
圖1為基于FPGA的數(shù)據(jù)傳輸板之間的連接結(jié)構(gòu)圖 圖2為本發(fā)明的方法流程圖 圖3為本發(fā)明中數(shù)據(jù)組幀的方法流程圖 圖4為本發(fā)明中位同步處理的邏輯結(jié)構(gòu)示意圖 圖5為本發(fā)明中位同步處理的D觸發(fā)器連接示意圖
其中,1-主FPGA、2-主CPUUl-主總線控制邏輯模塊、12-發(fā)送FIFO、13-發(fā)送幀處理模塊、14-編碼模塊、15-并串轉(zhuǎn)換模塊、16-差分輸出模塊、3-從FPGA、31-差分輸入模塊、32-同步模塊、33-解碼模塊、34-接收幀處理模塊、35-接收FIF0、36_從總線控制邏輯模塊、4-從 CPU。
[0011]
【具體實(shí)施方式】
[0012]為使對(duì)本發(fā)明的結(jié)構(gòu)特征及所達(dá)成的功效有更進(jìn)一步的了解與認(rèn)識(shí),用以較佳的實(shí)施例及附圖配合詳細(xì)的說(shuō)明,說(shuō)明如下:
本發(fā)明一種基于FPGA的數(shù)據(jù)傳輸板之間進(jìn)行高速傳輸?shù)姆椒?,如圖1所示,可以根據(jù)現(xiàn)有技術(shù)的內(nèi)容對(duì)主數(shù)據(jù)傳輸板與從數(shù)據(jù)傳輸板之間進(jìn)行連接,數(shù)據(jù)傳輸板為設(shè)于控制板上用于數(shù)據(jù)傳輸而使用。主數(shù)據(jù)傳輸板用于發(fā)送數(shù)據(jù)而使用,包括主CPU2和主FPGAl,從數(shù)據(jù)傳輸板用于接收數(shù)據(jù)而使用,包括從CPU4和從FPGA3。主FPGAl包括與主CPU2相連的主總線控制邏輯模塊11,主總線控制邏輯模塊11通過(guò)發(fā)送FIF012與發(fā)送幀處理模塊13相連,發(fā)送幀處理模塊13通過(guò)編碼模塊14與并串轉(zhuǎn)換模塊15相連,并串轉(zhuǎn)換模塊15與差分輸出模塊16相連。從FPGA3包括差分輸入模塊31,差分輸入模塊31通過(guò)同步模塊32與解碼模塊33相連,解碼模塊33通過(guò)接收幀處理模塊34與接收FIF035相連,接收FIF035通過(guò)從總線控制邏輯模塊36與從CPU4相連。差分輸出模塊16與差分輸入模塊31相連,可以通過(guò)LVPECL總線進(jìn)行差分輸出模塊16與差分輸入模塊31之間的連接,從而實(shí)現(xiàn)主數(shù)據(jù)傳輸板和從數(shù)據(jù)傳輸板之間的物理連接。
[0013]如圖2所示,基于FPGA的數(shù)據(jù)傳輸板之間進(jìn)行高速傳輸?shù)姆椒òㄒ韵虏襟E: 第一步,檢測(cè)并串轉(zhuǎn)換模塊15中的空閑標(biāo)志位是否處于空閑狀態(tài),若處于繁忙狀態(tài)則
繼續(xù)等待空閑狀態(tài),若處于空閑狀態(tài),主CPU2將發(fā)送數(shù)據(jù)寫入主總線控制邏輯模塊11,并置位于主總線控制邏輯模塊11中的發(fā)送標(biāo)志位。并串轉(zhuǎn)換模塊15通過(guò)主CPU2進(jìn)行檢測(cè),置位于主總線控制邏輯模塊11中的發(fā)送標(biāo)志位即置位主總線控制邏輯模塊11的寫使能信號(hào)有效。
[0014]第二步,主總線控制邏輯模塊11接收到發(fā)送標(biāo)志位的消息后,將數(shù)據(jù)寫入發(fā)送FIF012。當(dāng)主總線控制邏輯模塊11接到的寫使能信號(hào)有效后,將接收到的數(shù)據(jù)發(fā)送給發(fā)送FIF012。[0015]第三步,發(fā)送幀處理模塊13檢測(cè)到發(fā)送FIF012中有數(shù)據(jù)后,將數(shù)據(jù)讀出并組幀發(fā)送給編碼模塊14。發(fā)送幀處理模塊13監(jiān)測(cè)發(fā)送FIF012中的數(shù)據(jù)字節(jié)接口,其中如果字節(jié)數(shù)超過(guò)10個(gè)則將數(shù)據(jù)依次讀出,并加上幀頭、信息位及校驗(yàn)位,如果字節(jié)數(shù)超時(shí)不變,則將發(fā)送FIF012中剩余的字節(jié)讀出加上幀頭、信息位及校驗(yàn)位,同時(shí)將數(shù)據(jù)給編碼模塊15。
[0016]如圖3所示,其包括以下步驟:
(I)發(fā)送幀處理模塊13監(jiān)測(cè)發(fā)送FIF012中的數(shù)據(jù)字節(jié)接口,發(fā)送幀處理模塊13對(duì)發(fā)送FIF012中的數(shù)據(jù)字節(jié)接口進(jìn)行實(shí)時(shí)監(jiān)聽(tīng)。
[0017](2)若檢測(cè)到發(fā)送?正012中的字節(jié)數(shù)不為零,則不停地輪詢發(fā)送?正012中的字節(jié)信號(hào),此時(shí)為字節(jié)數(shù)狀態(tài)。
[0018](3)檢測(cè)發(fā)送FIF012中的字節(jié)數(shù)時(shí),若字節(jié)數(shù)超過(guò)10個(gè)則將數(shù)據(jù)依次讀出,發(fā)送FIF012進(jìn)入讀數(shù)據(jù)狀態(tài),發(fā)送FIF012讀取一個(gè)字節(jié)的數(shù)據(jù)后進(jìn)行計(jì)算校驗(yàn)和。此時(shí),判斷處理的數(shù)據(jù)個(gè)數(shù)是否等于待發(fā)送字節(jié)數(shù),若是則進(jìn)入組幀狀態(tài),加上幀頭、信息位和校驗(yàn)位并將數(shù)據(jù)傳給編碼模塊14 ;若數(shù)據(jù)個(gè)數(shù)小于待發(fā)送字節(jié)數(shù),則繼續(xù)發(fā)送FIF012的數(shù)據(jù),直到處理的字節(jié)數(shù)等于待發(fā)送字節(jié)數(shù)為止。
[0019](4)同樣,在第(2)步的判斷中,若發(fā)送FIF012的輪詢時(shí)間大于超時(shí)時(shí)間,發(fā)送FIF012進(jìn)入讀數(shù)據(jù)狀態(tài),發(fā)送FIF012讀取一個(gè)字節(jié)的數(shù)據(jù)后進(jìn)計(jì)算校驗(yàn)和。此時(shí)判斷處理的數(shù)據(jù)個(gè)數(shù)是否等于待發(fā)送字節(jié)數(shù),若是則進(jìn)入組幀狀態(tài),加上幀頭、信息位和校驗(yàn)位并將數(shù)據(jù)傳給編碼模塊14 ;若數(shù)據(jù)個(gè)數(shù)小于待發(fā)送字節(jié)數(shù),則繼續(xù)發(fā)送FIF012的數(shù)據(jù),直到處理的字節(jié)數(shù)等于待發(fā)送字節(jié)數(shù)為止。
[0020]在以上第(3)步和第(4)步的組幀狀態(tài)中,將幀頭、信息位、校驗(yàn)位加上,然后進(jìn)入傳送數(shù)據(jù)狀態(tài),在此狀態(tài)中,發(fā)送幀處理模塊13逐字節(jié)的發(fā)送數(shù)據(jù)和字節(jié)使能位給編碼模塊14,直至發(fā)送字節(jié)數(shù)等于幀字節(jié)數(shù)為止。
[0021]第四步,編碼模塊14接收到數(shù)據(jù)后,將數(shù)據(jù)的每個(gè)字節(jié)通過(guò)8B/10B編碼器編成IObit的數(shù)據(jù),發(fā)送至并串轉(zhuǎn)換模塊15。編碼模塊14探測(cè)到字節(jié)使能信號(hào)后再依據(jù)8B/10B編碼規(guī)則將8bit數(shù)據(jù)變換為IObit數(shù)據(jù),然后發(fā)送字節(jié)使能信號(hào)通知并串轉(zhuǎn)換模塊T5數(shù)據(jù)準(zhǔn)備就緒。
[0022]第五步,并串轉(zhuǎn)換模塊15接收到編碼模塊14的IObit數(shù)據(jù)后將其轉(zhuǎn)換成Ibit數(shù)據(jù),通過(guò)差分輸出模塊16將單端信號(hào)轉(zhuǎn)化為差分信號(hào)傳出去,并置并串轉(zhuǎn)換模塊15的空閑標(biāo)志位為空閑狀態(tài)。并串轉(zhuǎn)換模塊15在接收到字節(jié)使能信號(hào)后,將數(shù)據(jù)通過(guò)移位寄存器轉(zhuǎn)換為Ibit的數(shù)據(jù),發(fā)送給差分輸出模塊16。
[0023]以上完成了主數(shù)據(jù)傳輸板對(duì)外發(fā)送數(shù)據(jù)的方法過(guò)程,以下為從數(shù)據(jù)傳輸板接收數(shù)據(jù)的方法過(guò)程。
[0024]第六步,差分輸入模塊31接收差分輸出模塊16發(fā)送的數(shù)據(jù)并轉(zhuǎn)換成單端信號(hào)后發(fā)送給同步模塊32。,在這里板間信號(hào)可以采用LVPECL標(biāo)準(zhǔn),假設(shè)CPU總線速度為NMhz,則LVPECL信號(hào)的速度S為8xNxl.25 Mhz0差分輸出模塊31把Ibit的單端信號(hào)轉(zhuǎn)換成差分LVPECL電平信號(hào)通過(guò)主數(shù)據(jù)傳輸板將信號(hào)傳輸?shù)綇臄?shù)據(jù)傳輸板上。
[0025]第七步,同步模塊32通過(guò)位同步形成數(shù)據(jù)采集時(shí)鐘,通過(guò)字節(jié)同步得到數(shù)據(jù)為IObit數(shù)據(jù)后發(fā)送給解碼模塊33。
[0026]同步模塊32包括位同步和字節(jié)同步兩層邏輯。由差分輸出模塊16出來(lái)的單端信號(hào),需要確定有效數(shù)據(jù)位從哪開(kāi)始,形成數(shù)據(jù)采集時(shí)鐘,稱之為位同步。在位同步之后需要確定有效字節(jié)從哪開(kāi)始,稱之為字節(jié)同步。
[0027]位同步的基本原理是數(shù)據(jù)線上信號(hào)的上升或下降沿就是IBIT數(shù)據(jù)的開(kāi)始,通過(guò)不同相位的時(shí)鐘來(lái)采集信號(hào),判斷信號(hào)的上升沿和下降沿,再根據(jù)判斷的結(jié)果來(lái)選擇合適的采樣相位。首先通過(guò)PLL產(chǎn)生兩個(gè)相位相差90度頻率與數(shù)據(jù)傳輸速率一樣的時(shí)鐘,再利用CLK和CLK90的上升和下降沿分別對(duì)LVPECL端口接收來(lái)的單端信號(hào)采樣,并通過(guò)如圖5所示的兩級(jí)D觸發(fā)器,消除亞穩(wěn)態(tài)的影響,如圖4所示,Ax、Bx、Cx、Dx分別代表CLK O度、90度、180度、270度4種不同的采集相位所采集的信號(hào)。信號(hào)首先通過(guò)4個(gè)相位時(shí)鐘進(jìn)行信號(hào)采集,然后通過(guò)兩級(jí)D觸發(fā)器,產(chǎn)生的信號(hào)再經(jīng)過(guò)圖5所示的電路,來(lái)產(chǎn)生上升沿和下降沿判定信號(hào)。
[0028]其中,上升沿判定信號(hào)為AP、BP、CP、DP,下降沿判定信號(hào)為AN、BN、CN、DN。根據(jù)這兩組判定信號(hào)來(lái)選擇合適的采樣相位,對(duì)于這兩組判定信號(hào),可能會(huì)有5種情況
a、AP=BP=CP=DP=I,或AN=BN=CN=DN=I, A相位首先發(fā)現(xiàn)跳變沿,則選擇C相位時(shí)鐘為采樣時(shí)鐘。
[0029]b、AP=1、BP=CP=DP=O,或AN= 1、BN=CN=DN=O, B相位首先發(fā)現(xiàn)跳變沿,則選擇D相位時(shí)鐘為采樣時(shí)鐘。
[0030]c、AP=BP=1、CP=DP=O,或AN=BN= 1、CN=DN=O, C相位首先發(fā)現(xiàn)跳變沿,則選擇A相位時(shí)鐘為采樣時(shí)鐘。
[0031]d、AP=BP=CP=1、DP=0,或AN=BN=CN= 1、DN=0,D相位首先發(fā)現(xiàn)跳變沿,則選擇B相位時(shí)鐘為采樣時(shí)鐘。
[0032]e,AP=BP=CP=DP=O,或AN=BN=CN=DN=O,說(shuō)明位數(shù)據(jù)沒(méi)有發(fā)生變化,則延用上次的采樣時(shí)鐘。
[0033]字節(jié)同步過(guò)程中,數(shù)據(jù)是通過(guò)8B/10B編碼后傳輸,每一種字節(jié)編碼的結(jié)果是不一樣的,同時(shí)8B/10B編碼方式有候補(bǔ)碼,它與其它任意一種字節(jié)組合的編碼都不一樣,這樣我們就可以利用候補(bǔ)碼做為首字節(jié)和尾字節(jié)來(lái)代表有效字節(jié)的開(kāi)始和結(jié)束。本發(fā)明中使用候補(bǔ)碼K28.5來(lái)作為頭字節(jié),候補(bǔ)碼K28.3作為尾字節(jié),K28.5、K28.3不會(huì)與其他字節(jié)的編碼重復(fù),所以探測(cè)和K28.5 一樣位串以后,其后的數(shù)據(jù)位可按照10位一個(gè)字節(jié)來(lái)組成數(shù)據(jù),并以探測(cè)到k28.3位串結(jié)束,同時(shí)將數(shù)據(jù)送到后面的8B/10B解碼模塊進(jìn)行解碼,轉(zhuǎn)換成8bit —字節(jié)的數(shù)據(jù)。
[0034]同步模塊通過(guò)以上兩層邏輯后,將IObit數(shù)據(jù)放松給解碼模塊33并通過(guò)字節(jié)使能信號(hào)通知解碼模塊33接收數(shù)據(jù)。
[0035]第八步,解碼模塊33通過(guò)8B/10B解碼器將IObit數(shù)據(jù)轉(zhuǎn)換成Sbit數(shù)據(jù)并發(fā)送給接收幀處理模塊34。解碼模塊33探測(cè)到同步模塊32送來(lái)的字節(jié)使能信號(hào),將接收的IObit數(shù)據(jù)根據(jù)10B/8B解碼規(guī)則轉(zhuǎn)換成Sbit數(shù)據(jù),送給接收幀處理模塊34,同時(shí)發(fā)出字節(jié)使能信號(hào),通知接收幀處理模塊34接收數(shù)據(jù)。
[0036]第九步,接收幀處理模塊34將數(shù)據(jù)根據(jù)幀定義進(jìn)行解析,并將解析后的數(shù)據(jù)存入接收 FIF035。
[0037]其包括以下步驟:
(I)接收幀處理模塊34在未收到字節(jié)使能信號(hào)前處于空閑狀態(tài),探測(cè)到字節(jié)使能信號(hào)后,接收幀處理模塊34進(jìn)入幀頭狀態(tài)。
[0038](2)在幀頭狀態(tài)中,判斷幀頭狀態(tài)中收到的數(shù)據(jù)是否是幀頭,如果是則等下一個(gè)字節(jié)使能信號(hào)到來(lái)進(jìn)入讀幀字節(jié)數(shù)狀態(tài),如果不是,則返回空閑狀態(tài)。
[0039](3)在讀幀字節(jié)數(shù)狀態(tài)中,讀取數(shù)據(jù)即信息體字節(jié)(幀字節(jié)數(shù)),記錄在幀字節(jié)數(shù)信號(hào)里,并轉(zhuǎn)入計(jì)算校驗(yàn)狀態(tài)。在計(jì)算校驗(yàn)狀態(tài)中計(jì)算校驗(yàn)和并累加讀取字節(jié)數(shù),當(dāng)讀取字節(jié)數(shù)小于幀字節(jié)數(shù)時(shí),返回讀取數(shù)據(jù)狀態(tài);當(dāng)讀取字節(jié)數(shù)等于幀字節(jié)數(shù)時(shí),進(jìn)入讀取校驗(yàn)位狀態(tài);
(4)在讀取校驗(yàn)位狀態(tài)中,狀態(tài)機(jī)讀取校驗(yàn)位,判斷校驗(yàn)和是否正確,,進(jìn)入判斷校驗(yàn)位狀態(tài)。如果正確則進(jìn)入寫數(shù)據(jù)到接收FIF035的狀態(tài),如果不正確則返回空閑狀態(tài);在寫數(shù)據(jù)到接收FIFO狀態(tài)35中,連續(xù)將等于幀字節(jié)數(shù)個(gè)數(shù)的數(shù)據(jù)都存入接收FIF035中,存完轉(zhuǎn)入空閑狀態(tài),重新等待新數(shù)據(jù)幀的到來(lái)。
[0040]第十步,從總線控制邏輯模塊36監(jiān)控接收FIF035中的數(shù)據(jù)字節(jié)數(shù)信號(hào)N,如果N=20,則產(chǎn)生中斷并通知從CPU4,從CPU4通過(guò)數(shù)據(jù)總線讀取數(shù)據(jù)??偩€控制邏輯模塊36監(jiān)控接收FIF035中的數(shù)據(jù)字節(jié)數(shù)信號(hào),如果N=20則產(chǎn)生中斷信號(hào)。CPU4接收到中斷信號(hào)后,啟動(dòng)數(shù)據(jù)總線從從總線控制邏輯模塊36中讀取20個(gè)字節(jié)的數(shù)據(jù),然后再等待下個(gè)中斷的到來(lái),至此主數(shù)據(jù)傳輸板和從數(shù)據(jù)傳輸板間數(shù)據(jù)傳輸完畢。
[0041]以上顯示和描述了本發(fā)明的基本原理、主要特征和本發(fā)明的優(yōu)點(diǎn)。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說(shuō)明書(shū)中描述的只是本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下本發(fā)明還會(huì)有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明的范圍內(nèi)。本發(fā)明要求的保護(hù)范圍由所附的權(quán)利要求書(shū)及其等同物界定。
【權(quán)利要求】
1.一種基于FPGA的數(shù)據(jù)傳輸板之間進(jìn)行高速傳輸?shù)姆椒?,主?shù)據(jù)傳輸板包括主CPU(2 WPiFPGA (I ),從數(shù)據(jù)傳輸板包括從CPU (4)和從FPGA (3);主FPGA (I)包括與主CPU(2)相連的主總線控制邏輯模塊(11),主總線控制邏輯模塊(11)通過(guò)發(fā)送FIFO (12)與發(fā)送幀處理模塊(13)相連,發(fā)送幀處理模塊(13)通過(guò)編碼模塊(14)與并串轉(zhuǎn)換模塊(15)相連,并串轉(zhuǎn)換模塊(15)與差分輸出模塊(16)相連;差分輸入模塊(31)通過(guò)同步模塊(32)與解碼模塊(33)相連,解碼模塊(33)通過(guò)接收幀處理模塊(34)與接收FIFO (35)相連,接收FIFO (35)通過(guò)從總線控制邏輯模塊(36)與從CPU (4)相連;差分輸出模塊(16)與差分輸入模塊(31)相連,其特征在于,傳輸方法包括以下步驟: 10)監(jiān)聽(tīng)空閑標(biāo)志位,檢測(cè)并串轉(zhuǎn)換模塊(15)中的空閑標(biāo)志位是否處于空閑狀態(tài),若處于繁忙狀態(tài)則繼續(xù)等待空閑狀態(tài),若處于空閑狀態(tài),主CPU (2)將發(fā)送數(shù)據(jù)寫入主總線控制邏輯模塊(11),并置位于主總線控制邏輯模塊(11)中的發(fā)送標(biāo)志位; 11)對(duì)發(fā)送FIFO寫數(shù)據(jù),主總線控制邏輯模塊(11)接收到發(fā)送標(biāo)志位的消息后,將數(shù)據(jù)寫入發(fā)送FIFO (12); 12)數(shù)據(jù)組幀,發(fā)送幀處理模塊(13)檢測(cè)到發(fā)送FIFO(12)中有數(shù)據(jù)后,將數(shù)據(jù)讀出并組幀發(fā)送給編碼模塊(14); 13)數(shù)據(jù)編碼,編碼模塊(14)接收到數(shù)據(jù)后,將數(shù)據(jù)的每個(gè)字節(jié)通過(guò)8B/10B編碼器編成IObit的數(shù)據(jù),發(fā)送至并串轉(zhuǎn)換模塊(15); 14)差分傳送,并串轉(zhuǎn)換模塊(15)接收到編碼模塊(14)的IObit數(shù)據(jù)后將其轉(zhuǎn)換成Ibit數(shù)據(jù),通過(guò)差分輸出模塊(16)將單端信號(hào)轉(zhuǎn)化為差分信號(hào)傳出去,并置并串轉(zhuǎn)換模塊(15)的空閑標(biāo)志位為空閑 狀態(tài); 15)差分轉(zhuǎn)換,差分輸入模塊(31)接收差分輸出模塊(16)發(fā)送的數(shù)據(jù)并轉(zhuǎn)換成單端信號(hào)后發(fā)送給同步模塊(32); 16)同步接收,同步模塊(32)通過(guò)位同步形成數(shù)據(jù)采集時(shí)鐘,通過(guò)字節(jié)同步得到IObit數(shù)據(jù)后發(fā)送給解碼模塊(33); 17)數(shù)據(jù)解碼,解碼模塊(33)通過(guò)8B/10B解碼器將IObit數(shù)據(jù)轉(zhuǎn)換成Sbit數(shù)據(jù)并發(fā)送給接收幀處理模塊(34); 18)數(shù)據(jù)解析,接收幀處理模塊(34)將數(shù)據(jù)根據(jù)幀定義進(jìn)行解析,并將解析后的數(shù)據(jù)存入接收FIFO (35); 19)數(shù)據(jù)讀取,從總線控制邏輯模塊(36)監(jiān)控接收FIFO(35)中的數(shù)據(jù)字節(jié)數(shù)信號(hào)N,如果N=20,則產(chǎn)生中斷并通知從CPU (4),從CPU (4)通過(guò)數(shù)據(jù)總線讀取數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的一種基于FPGA的數(shù)據(jù)傳輸板之間進(jìn)行高速傳輸?shù)姆椒?,其特征在于,所述的?shù)據(jù)組幀包括以下步驟: 21)發(fā)送幀處理模塊(13)監(jiān)測(cè)發(fā)送FIFO(12)中的數(shù)據(jù)字節(jié)接口 ; 22)若檢測(cè)到發(fā)送FIFO(12)中的字節(jié)數(shù)不為零,則不停地輪詢發(fā)送FIFO (12)中的字節(jié)信號(hào); 23)若字節(jié)數(shù)超過(guò)10個(gè)則將數(shù)據(jù)依次讀出,發(fā)送FIFO(12)進(jìn)入讀數(shù)據(jù)狀態(tài),發(fā)送FIFO(12)讀取一個(gè)字節(jié)的數(shù)據(jù)后進(jìn)行計(jì)算校驗(yàn)和,判斷處理的數(shù)據(jù)個(gè)數(shù)是否等于待發(fā)送字節(jié)數(shù),若是則進(jìn)入組幀狀態(tài),加上幀頭、信息位和校驗(yàn)位并將數(shù)據(jù)傳給編碼模塊(14);若數(shù)據(jù)個(gè)數(shù)小于待發(fā)送字節(jié)數(shù),則繼續(xù)發(fā)送FIFO (12)的數(shù)據(jù),直到處理的字節(jié)數(shù)等于待發(fā)送字節(jié)數(shù)為止; 24)若發(fā)送FIFO (12)的輪詢時(shí)間大于超時(shí)時(shí)間,發(fā)送FIFO (12)進(jìn)入數(shù)據(jù)狀態(tài),發(fā)送FIFO (12)讀取一個(gè)字節(jié)的數(shù)據(jù)后進(jìn)計(jì)算校驗(yàn)和,判斷處理的數(shù)據(jù)個(gè)數(shù)是否等于待發(fā)送字節(jié)數(shù),若是則進(jìn)入組幀狀態(tài),加上幀頭、信息位和校驗(yàn)位并將數(shù)據(jù)傳給編碼模塊(14);若數(shù)據(jù)個(gè)數(shù)小于待發(fā)送字節(jié)數(shù),則繼續(xù)發(fā)送FIFO (12)的數(shù)據(jù),直到處理的字節(jié)數(shù)等于待發(fā)送字節(jié)數(shù)為止。
3.根據(jù)權(quán)利要求1所述的一種基于FPGA的數(shù)據(jù)傳輸板之間進(jìn)行高速傳輸?shù)姆椒ǎ涮卣髟谟?,所述的?shù)據(jù)解析包括以下步驟: 31)接收幀處理模塊(34)在未收到字節(jié)使能信號(hào)前處于空閑狀態(tài),探測(cè)到字節(jié)使能信號(hào)后,接收幀處理模塊(34)進(jìn)入幀頭狀態(tài); 32)判斷幀頭狀態(tài)中收到的數(shù)據(jù)是否是幀頭,如果是則等下一個(gè)字節(jié)使能信號(hào)到來(lái)進(jìn)入讀幀字節(jié)數(shù)狀態(tài),如果不是,則返回空閑狀態(tài); 33)讀取數(shù)據(jù)并轉(zhuǎn)入計(jì)算校驗(yàn)狀態(tài),在計(jì)算校驗(yàn)狀態(tài)中計(jì)算校驗(yàn)和并累加讀取字節(jié)數(shù),當(dāng)讀取字節(jié)數(shù)小于幀字節(jié)數(shù)時(shí),返回讀取數(shù)據(jù)狀態(tài);當(dāng)讀取字節(jié)數(shù)等于幀字節(jié)數(shù)時(shí),進(jìn)入讀取校驗(yàn)位狀態(tài); 34)在讀取校驗(yàn)位狀態(tài)中,判斷校驗(yàn)和是否正確,如果正確則進(jìn)入寫數(shù)據(jù)到接收FIFO(35)的狀態(tài),如果不正確則返回空閑狀態(tài);在寫數(shù)據(jù)到接收FIFO狀態(tài)(35)中,連續(xù)將等于幀字節(jié)數(shù)個(gè)數(shù)的數(shù)據(jù)都存入接收FIFO (35)中,存完轉(zhuǎn)入空閑狀態(tài),重新等待新數(shù)據(jù)幀的到來(lái)。
【文檔編號(hào)】H04L1/00GK104008078SQ201410226473
【公開(kāi)日】2014年8月27日 申請(qǐng)日期:2014年5月27日 優(yōu)先權(quán)日:2014年5月27日
【發(fā)明者】徐強(qiáng), 王飛, 王俊 申請(qǐng)人:安徽中興繼遠(yuǎn)信息技術(shù)股份有限公司