本發(fā)明屬于電氣工程技術(shù)領(lǐng)域,涉及一種基于FPGA軟核采集ASCII形式數(shù)據(jù)的系統(tǒng)。
背景技術(shù):
由于FPGA在組合邏輯與時序控制方面比較擅長,在解析ASCII協(xié)議方面不如用C語言解析方便。因此希望通過FPGA的軟核(microblaze)解決該問題,microblaze作為FPGA的一種嵌入式處理器,可以采用C語言編寫程序避開FPGA在這方面的弱點(diǎn)。
然而ASCII為8位數(shù)據(jù)形式,與FPGA軟核所能處理的32位數(shù)據(jù)位形式以及數(shù)字信號處理器的16為數(shù)據(jù)位形式均不同,因此采用FPGA芯片處理ASCII數(shù)據(jù)具備一定的困難,目前尚未有有效的解決方法。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供了一種基于FPGA軟核采集ASCII形式數(shù)據(jù)的系統(tǒng),能夠?qū)崿F(xiàn)FPGA對ASCII形式數(shù)據(jù)的快速解析。
為了達(dá)到上述目的,本發(fā)明的技術(shù)方案為:一種基于FPGA軟核采集ASCII形式數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括一塊數(shù)字信號處理芯片和FPGA芯片。
FPGA芯片中包括串口數(shù)據(jù)接收模塊、先入先出緩沖區(qū)FIFO、軟核microblaze、數(shù)據(jù)轉(zhuǎn)換模塊和第一雙口RAM。
串口數(shù)據(jù)接收模塊為在FPGA中創(chuàng)建的軟件模塊,用于接收外部輸入的ASCII形式數(shù)據(jù),并將該ASCII形式數(shù)據(jù)發(fā)送至FIFO中。
FIFO在FPGA的IP核中創(chuàng)建,F(xiàn)IFO數(shù)據(jù)類型為8位,F(xiàn)IFO輸出接口包括8位輸出數(shù)據(jù)線、1位讀數(shù)據(jù)線和1位非空數(shù)據(jù)線。
microblaze具有10根GPIO口分別與FIFO的10根數(shù)據(jù)線一一對應(yīng)連接;在microblaze中創(chuàng)建第二雙口RAM,第二雙口RAM數(shù)據(jù)位為32位;microblaze讀取FIFO的非空數(shù)據(jù)線中電位,當(dāng)FIFO中有數(shù)據(jù)時,F(xiàn)IFO非空數(shù)據(jù)線變?yōu)榈碗娢?,該低電位由microblaze獲取后,microblzae通過對FIFO的讀數(shù)據(jù)線進(jìn)行置位,F(xiàn)IFO的讀數(shù)據(jù)線置位后,microblaze通過FIFO的8位輸出數(shù)據(jù)線讀取FIFO中數(shù)據(jù),microblaze將讀取的數(shù)據(jù)進(jìn)行解析,提取其中所需信息,將該所需信息發(fā)送到microblaze中的第二雙口RAM中。
數(shù)據(jù)轉(zhuǎn)換模塊將所需信息從第二雙口RAM中讀取出來,并將第二雙口RAM中的所需信息進(jìn)行數(shù)據(jù)位轉(zhuǎn)換將32位數(shù)據(jù)轉(zhuǎn)換為16位,將轉(zhuǎn)換結(jié)果存入第一雙口RAM中。
第一雙口RAM在FPGA的IP核中創(chuàng)建,第一雙口RAM的數(shù)據(jù)位為16位;第一雙口RAM與數(shù)字信號處理芯片相連接;數(shù)字信號處理芯片從第一雙口RAM中讀取上述轉(zhuǎn)換結(jié)果,實(shí)現(xiàn)數(shù)字信號處理芯片對ASCII形式數(shù)據(jù)的接收。
有益效果:
本系統(tǒng)的核心數(shù)據(jù)處理板由一塊數(shù)字信號處理芯片(OMAPL138)與FPGA組成,系統(tǒng)運(yùn)行需要兩塊芯片協(xié)同工作。采用FPGA作為與外界數(shù)據(jù)交互的接口,配合OMAPL138工作。當(dāng)對外串口通訊數(shù)據(jù)協(xié)議為ASCII方式時,F(xiàn)PGA能夠進(jìn)行快速解析。
附圖說明
圖1為系統(tǒng)框圖。
具體實(shí)施方式
下面結(jié)合附圖并舉實(shí)施例,對本發(fā)明進(jìn)行詳細(xì)描述。
該系統(tǒng)的系統(tǒng)框圖如圖1所示,包括一塊數(shù)字信號處理芯片和FPGA,F(xiàn)PGA中包括串口數(shù)據(jù)接收模塊(采用代碼實(shí)現(xiàn)),F(xiàn)IFO(可以在IP核中創(chuàng)建,F(xiàn)IFO數(shù)據(jù)類型為8位,F(xiàn)IFO數(shù)據(jù)輸出包括8位輸出數(shù)據(jù)線,1位讀數(shù)據(jù)線,1位非空數(shù)據(jù)線),嵌入式處理器(microblaze,嵌入式處理器具有10根GPIO口分別于FIFO的10根數(shù)據(jù)線連接;在嵌入式處理器中需要添加雙口RAM控制器以及雙口RAM,該雙口RAM數(shù)據(jù)默認(rèn)為32位),數(shù)據(jù)轉(zhuǎn)換模塊(采用代碼來實(shí)現(xiàn)將32位數(shù)據(jù)轉(zhuǎn)換為16位),雙口RAM(可以在IP核中創(chuàng)建,雙口RAM數(shù)據(jù)類型為16位)。
ASCII形式的串口數(shù)據(jù)進(jìn)入到串口數(shù)據(jù)接收模塊,串口數(shù)據(jù)接收模塊將接受到的數(shù)據(jù)發(fā)送至FIFO中,當(dāng)FIFO中有數(shù)據(jù)時,F(xiàn)IFO非空標(biāo)志數(shù)據(jù)線(empty)變?yōu)榈碗娢?,該低電位由microblaze獲取后,microblzae通過控制FIFO的讀數(shù)據(jù)線,microblaze通過FIFO的8位輸出數(shù)據(jù)線讀取FIFO中數(shù)據(jù),microblaze將讀取的數(shù)據(jù)進(jìn)行解析,提取其中所需信息,將該所需信息發(fā)送到microblazede的雙口RAM中,由數(shù)據(jù)轉(zhuǎn)換模塊將該信息從雙口RAM中讀取出來,并進(jìn)行出具轉(zhuǎn)換,將轉(zhuǎn)換結(jié)果存入16位的雙口RAM中,該16位的雙口RAM與數(shù)字信號處理芯片相連接。數(shù)字信號處理芯片可以從該雙口RAM中讀取上述轉(zhuǎn)換結(jié)果。
實(shí)施例1:
以深水羅經(jīng)系統(tǒng)(其核心板由數(shù)字信號處理器OMAPL138及FPGA組成)為例,深水羅經(jīng)在水面上工作時需要接受GPS信息。GPS提供位置速度等信息,通過串口將數(shù)據(jù)發(fā)送給深水羅經(jīng)系統(tǒng),具體串口協(xié)議如下:
$GPRMC,010006.00,A,3650.1230000,N,11250.0000345,E,12.000,40.0,16,0.0,W,N*3F其中$GPRMC為數(shù)據(jù)頭,010006.00為時間,A為數(shù)據(jù)有效,3650.1230000為緯度,11250.0000345為經(jīng)度。
深水羅經(jīng)系統(tǒng)串口接收引腳(RX)與GPS的發(fā)送引腳(TX)相連接,當(dāng)GPS通過串口向外發(fā)送數(shù)據(jù)時,深水羅經(jīng)系統(tǒng)的FPGA檢測到接收引腳信號,F(xiàn)PGA通過串口接收模塊將數(shù)據(jù)轉(zhuǎn)換為字符型數(shù)據(jù)存儲到FIFO中,當(dāng)FIFO中有數(shù)據(jù)時標(biāo)志數(shù)據(jù)線(empty)拉低。由于empty引腳與microblaze連接,microblaze檢測到empty的低電平后通過控制與FIFO連接的讀信號RD發(fā)送讀信號,通過數(shù)據(jù)線獲取FIFO中數(shù)據(jù)。通過以上操作,microblaze中獲取了一包GPS的完成數(shù)據(jù)。在microblzae中,我們通過編寫C語言程序提取其中的位置信息(例如上面的緯度3650.1230000,經(jīng)度11250.0000345),將位置信息存儲在自身的雙口RAM中,數(shù)據(jù)轉(zhuǎn)換模塊將microblaze的RAM數(shù)據(jù)轉(zhuǎn)換后存儲到與數(shù)字信號處理器(omapl138)向連接的雙口RAM中,供數(shù)字信號處理器讀取使用。
綜上,以上僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。