宋師軍,吳宏斌,王存寶
(1.北京航天長征飛行器研究所,北京 100076;2.山西北方機(jī)械制造有限責(zé)任公司,山西 太原 030009)
隨著無線通信技術(shù)的發(fā)展,無線傳感網(wǎng)絡(luò)因具有低功耗、安全性能高、靈活性好等優(yōu)勢被廣泛應(yīng)用在工業(yè)、日常家居控制等方面[1].其中ZigBee無線通信技術(shù)具有成本低、穩(wěn)定性能好、可靠性高等特點(diǎn)被大量用于安防設(shè)備檢測與控制、環(huán)境監(jiān)測等方面[2],但該技術(shù)一般適用于短距離、傳輸數(shù)據(jù)量較小的網(wǎng)絡(luò)[3],對(duì)接收數(shù)據(jù)量大的復(fù)雜環(huán)境,ZigBee無線通信受到了限制.針對(duì)ZigBee無線通信存在的弊端,設(shè)計(jì)了一種基于eMMC的64路無線數(shù)據(jù)存儲(chǔ)系統(tǒng),采用eMMC作為存儲(chǔ)器件,具有傳輸速度快、操作簡單、管理容易等優(yōu)勢[4],可實(shí)現(xiàn)設(shè)備對(duì)目標(biāo)區(qū)域的長時(shí)間、大范圍監(jiān)測工作.設(shè)計(jì)64路數(shù)據(jù)采集,可應(yīng)用于復(fù)雜的環(huán)境,實(shí)現(xiàn)對(duì)目標(biāo)區(qū)域多影響因素的信號(hào)檢測.該系統(tǒng)以實(shí)測所得的速變數(shù)據(jù)作為研究對(duì)象,采用Z-stack協(xié)議棧實(shí)現(xiàn)無線數(shù)據(jù)的傳輸,以現(xiàn)場可編程門陣列(Field Programmable Gate Array, FPGA)為主控模塊實(shí)現(xiàn)終端節(jié)點(diǎn)電路的設(shè)計(jì),對(duì)產(chǎn)生的多路數(shù)據(jù)進(jìn)行編幀處理并存儲(chǔ)至eMMC器件,可實(shí)現(xiàn)無線傳感器網(wǎng)絡(luò)終端節(jié)點(diǎn)大數(shù)據(jù)量的采集.結(jié)果表明該系統(tǒng)操作簡單、工作穩(wěn)定且可靠性高,具有廣泛應(yīng)用前景.
本系統(tǒng)設(shè)計(jì)的無線傳感網(wǎng)絡(luò)節(jié)點(diǎn)電路主要由FPGA主控模塊、ADC轉(zhuǎn)換電路、eMMC存儲(chǔ)電路、CC2530無線收發(fā)模塊、電源管理模塊等組成.系統(tǒng)框圖如圖 1 所示.
圖 1 系統(tǒng)總體設(shè)計(jì)框圖Fig.1 System design block diagram
整個(gè)電路的工作過程如下:在FPGA的控制下通過模擬多路復(fù)用器配合AD轉(zhuǎn)換器完成64路模擬信號(hào)的采集,將數(shù)據(jù)傳輸給FPGA,由FPGA對(duì)數(shù)據(jù)進(jìn)行FIFO緩存和編幀操作,通過控制eMMC完成對(duì)64路數(shù)據(jù)的存儲(chǔ),若外界發(fā)送請(qǐng)求信號(hào)有效,通過FPGA控制將eMMC中的數(shù)據(jù)讀出到讀FIFO中,最終將數(shù)據(jù)經(jīng)過串口與CC2350無線收發(fā)模塊進(jìn)行通信,該模塊通過Z-stack協(xié)議棧[5]完成芯片的配置與組網(wǎng)操作[6].
數(shù)據(jù)采集模塊由模擬開關(guān)及ADC轉(zhuǎn)換器組成,系統(tǒng)選用4片16通道模擬多路復(fù)用器ADG706,實(shí)現(xiàn)64路模擬信號(hào)的地址切換.該芯片具有導(dǎo)通電阻小、切換速度快等優(yōu)點(diǎn),能夠滿足系統(tǒng)精度的設(shè)計(jì)要求.ADC芯片選用AD7904,該器件采樣率可達(dá)1 Msps,采樣位數(shù)為8 bit,4通道的ADC芯片具有體積小,功耗低等優(yōu)點(diǎn),只需進(jìn)行簡單的配置便能滿足不同的電路設(shè)計(jì).ADC芯片控制寄存器設(shè)置為4通道循環(huán)采集工作模式,二進(jìn)制格式編碼.選用AD780芯片為AD7904提供2.5 V的基準(zhǔn)電壓源,保證模數(shù)轉(zhuǎn)換的正確性.ADC轉(zhuǎn)換芯片的4個(gè)通道分別接一片ADG706的輸出端,通過FPGA對(duì)模擬開關(guān)地址選通.
系統(tǒng)正常工作時(shí),F(xiàn)PGA通過對(duì)AD模數(shù)轉(zhuǎn)換芯片設(shè)定和對(duì)模擬開關(guān)地址的切換控制,使其完成64路對(duì)應(yīng)地址下的調(diào)理電路后電壓信號(hào)的循環(huán)采集,將對(duì)應(yīng)通道下的信號(hào)傳至ADC進(jìn)行采集、量化,并送至FPGA進(jìn)行編幀處理.
系統(tǒng)選用MTFC64GAKAEEY作為存儲(chǔ)單元,容量為64 GB,芯片符合eMMC5.0[7]標(biāo)準(zhǔn),最高支持HS400速度模式[8],該芯片的接口標(biāo)準(zhǔn)主要有時(shí)鐘線CLK、復(fù)位線RST、命令線CMD、數(shù)據(jù)線DAT0-7、電源線VCC和VCCQ、地線VSS和VSSQ.其中命令線CMD為雙向傳輸線,負(fù)責(zé)傳輸主機(jī)發(fā)往eMMC器件的命令以及反饋eMMC響應(yīng);復(fù)位線RST為eMMC的硬復(fù)位線;數(shù)據(jù)線DAT為雙向端口,完成傳輸主機(jī)寫入的eMMC的數(shù)據(jù)或讀出eMMC的數(shù)據(jù),在HS400模式下,理論寫入峰值為400 MB/s,工程中持續(xù)寫速率為100 MB/s.圖 2 為單片eMMC芯片與FPGA的詳細(xì)電路連接圖.
圖 2 eMMC存儲(chǔ)模塊電路Fig.2 eMMC memory module circuit
無線發(fā)送模塊主要實(shí)現(xiàn)無線數(shù)字化傳感網(wǎng)絡(luò)節(jié)點(diǎn)之間的數(shù)據(jù)傳遞,該模塊包括終端設(shè)備發(fā)送設(shè)計(jì)、路由器節(jié)點(diǎn)設(shè)計(jì)及協(xié)調(diào)器節(jié)點(diǎn)設(shè)計(jì).采用CC2530為核心作為傳感節(jié)點(diǎn),器件支持Z-stack協(xié)議,該ZigBee協(xié)議具有更好的交互操作性和節(jié)點(diǎn)密度管理、支持網(wǎng)狀網(wǎng)絡(luò)、低功耗且具有較高的安全可靠性,使得節(jié)點(diǎn)通信距離更遠(yuǎn),組網(wǎng)性能穩(wěn)定[9-10].該ZigBee模塊通過串口完成與FPGA的數(shù)據(jù)交互,通過配置將其設(shè)置為終端節(jié)點(diǎn)數(shù)據(jù)發(fā)送模式,其與FPGA的硬件連接圖如圖 3 所示.
圖 3 無線數(shù)據(jù)發(fā)送模塊電路Fig.3 Wireless data transmitting module circuit
路由器節(jié)點(diǎn)負(fù)責(zé)完成設(shè)備終端節(jié)點(diǎn)數(shù)據(jù)的中轉(zhuǎn)傳輸,使數(shù)據(jù)準(zhǔn)確傳輸至協(xié)調(diào)器.協(xié)調(diào)器則負(fù)責(zé)將前端數(shù)據(jù)傳輸給上位機(jī),該部分同樣通過串口完成傳輸,波特率為115 200 bps.系統(tǒng)采用蛇形天線的方式保證ZigBee網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)臏?zhǔn)確性.
該模塊主要負(fù)責(zé)模擬電路的時(shí)序電壓信號(hào)采樣處理與對(duì)應(yīng)通道的數(shù)據(jù)判斷,以便后續(xù)的數(shù)據(jù)編幀操作.具體工作過程如圖 4 所示:系統(tǒng)準(zhǔn)確開始工作,F(xiàn)PGA通過SPI總線對(duì)AD7904內(nèi)部控制寄存器進(jìn)行數(shù)據(jù)參數(shù)配置,本系統(tǒng)配置AD的工作模式為全功率模式,采用循環(huán)采集的方式[11],采集電壓范圍為0~2.5 V,使AD轉(zhuǎn)換器不間斷工作.然后進(jìn)入等待觸發(fā)狀態(tài),系統(tǒng)觸發(fā)有效后,通過FPGA控制ADG706的地址線決定對(duì)應(yīng)通道的電壓時(shí)序信號(hào)傳送給AD轉(zhuǎn)換器,以便完成數(shù)據(jù)的采樣、傳輸工作.
圖 4 程序流程圖Fig.4 Program flow chart
FPGA接收并處理ADC轉(zhuǎn)換的64路時(shí)序電壓數(shù)據(jù),將采集到的數(shù)據(jù)發(fā)送至信號(hào)選擇判斷模塊,并對(duì)數(shù)據(jù)進(jìn)行編幀處理,將數(shù)據(jù)送至前端寫FIFO,該FIFO輸入數(shù)據(jù)位寬為8 bits,輸出數(shù)據(jù)也為8 bits,F(xiàn)IFO深度為8 KB.
根據(jù)JEDEC協(xié)議[12]要求,該eMMC器件應(yīng)先進(jìn)行初始化配置,分兩部分完成,首先完成eMMC芯片的識(shí)別、地址的分配以及總線測試,其次完成工作模式的配置及HS400工作模式的采樣調(diào)諧操作.然后系統(tǒng)對(duì)eMMC設(shè)備進(jìn)行擦除操作,通過相應(yīng)的命令完成對(duì)擦除起始地址、結(jié)束地址的設(shè)置,通過命令觸發(fā)啟動(dòng)擦除操作至完成擦除,發(fā)出擦除完成信號(hào).FPGA接收到擦除完成信號(hào)后,等待前端寫FIFO傳出的半滿標(biāo)志位有效,當(dāng)標(biāo)志位有效時(shí),即外部寫使能有效,啟動(dòng)eMMC數(shù)據(jù)寫操作.FPGA首先發(fā)送相應(yīng)的命令設(shè)置寫塊長度,本系統(tǒng)塊長度為512字節(jié),根據(jù)數(shù)據(jù)量的大小,發(fā)送數(shù)據(jù)寫塊數(shù)命令,然后發(fā)送命令設(shè)置數(shù)據(jù)寫起始地址,等待響應(yīng)正確的反饋信號(hào)有效,開始寫操作并進(jìn)行單塊寫完成的CRC16校驗(yàn),以保證數(shù)據(jù)的正確性,同時(shí)FPGA可通過查詢命令檢測eMMC的編程狀態(tài),等待編程完成.
FPGA檢測無線模塊數(shù)據(jù)的發(fā)送請(qǐng)求信號(hào),該信號(hào)有效時(shí),可將eMMC數(shù)據(jù)根據(jù)讀命令控制流程將數(shù)據(jù)發(fā)送至CC2530,進(jìn)而通過無線網(wǎng)絡(luò)發(fā)送至上位機(jī)進(jìn)行數(shù)據(jù)分析處理.FPGA接收數(shù)據(jù)發(fā)送信號(hào)后,發(fā)送數(shù)據(jù)讀命令等待eMMC正確響應(yīng),一方面eMMC通過CMD線響應(yīng)FPGA發(fā)出的命令.FPGA發(fā)送命令設(shè)置一次讀的塊數(shù),開始進(jìn)行讀操作,并發(fā)送讀數(shù)據(jù)的讀取地址.另一方面將數(shù)據(jù)塊(含CRC16)由數(shù)據(jù)線DAT0-7傳輸給FPGA,直到數(shù)據(jù)傳輸完成,同時(shí)FPGA將數(shù)據(jù)進(jìn)行校驗(yàn)比對(duì),校驗(yàn)無誤后,開始進(jìn)行下一塊的讀取操作,F(xiàn)PGA將讀取的數(shù)據(jù)進(jìn)行組包操作,并發(fā)送至讀FIFO進(jìn)行數(shù)據(jù)緩存,等待半滿標(biāo)志有效后,控制數(shù)據(jù)通過串口傳輸至ZigBee控制發(fā)送模塊,完成數(shù)據(jù)傳輸.
為防止數(shù)據(jù)的冗余,F(xiàn)PGA設(shè)置的波特率為115 200 bps,通過ZigBee芯片CC2530上的UART0接收數(shù)據(jù).同時(shí)為了使CC2530成功組網(wǎng),實(shí)現(xiàn)網(wǎng)絡(luò)通訊,使用Z-stack協(xié)議棧實(shí)現(xiàn)ZigBee網(wǎng)絡(luò)開發(fā),該協(xié)議棧具有半開源、開發(fā)簡單、使用范圍廣的優(yōu)勢,主要完成對(duì)APP層、HAL層、MAC層(介質(zhì)訪問)、MT層、NWK層(網(wǎng)絡(luò)層)、ZDO(對(duì)象層)的開發(fā).
為實(shí)現(xiàn)無線網(wǎng)絡(luò)組網(wǎng),需要分別對(duì)協(xié)調(diào)器、路由器和終端節(jié)點(diǎn)設(shè)備進(jìn)行構(gòu)建.協(xié)調(diào)器負(fù)責(zé)網(wǎng)絡(luò)的偵聽以便其它節(jié)點(diǎn)的加入,協(xié)調(diào)器網(wǎng)絡(luò)層給新節(jié)點(diǎn)分配地址,以對(duì)不同節(jié)點(diǎn)進(jìn)行識(shí)別.由于本系統(tǒng)的無線傳感網(wǎng)絡(luò)為拓?fù)浣Y(jié)構(gòu)網(wǎng)狀,故需要路由器節(jié)點(diǎn)完成網(wǎng)絡(luò)搭建,路由器父節(jié)點(diǎn)為協(xié)調(diào)器,當(dāng)路由器發(fā)送入網(wǎng)信號(hào)給父節(jié)點(diǎn)時(shí),父節(jié)點(diǎn)發(fā)送連接成功的響應(yīng)并分配地址給新加入的路由器.終端設(shè)備節(jié)點(diǎn)加入無線網(wǎng)絡(luò)操作類似于路由器入網(wǎng)過程,以子節(jié)點(diǎn)的形式存在.終端節(jié)點(diǎn)在上電初始化后,搜尋并加入相應(yīng)網(wǎng)絡(luò),負(fù)責(zé)將FPGA控制傳輸過來的數(shù)據(jù)通過無線網(wǎng)發(fā)送出去,路由器通過無線網(wǎng)接收終端節(jié)點(diǎn)發(fā)送過來的數(shù)據(jù),同時(shí)將數(shù)據(jù)通過無線網(wǎng)絡(luò)發(fā)送給協(xié)調(diào)器,協(xié)調(diào)器在接收數(shù)據(jù)之前先進(jìn)行初始化,然后處于偵聽狀態(tài),當(dāng)有節(jié)點(diǎn)通過網(wǎng)絡(luò)向協(xié)調(diào)器發(fā)送數(shù)據(jù)時(shí),會(huì)觸發(fā)協(xié)調(diào)器中的信息接收指令,隨后協(xié)調(diào)器調(diào)用數(shù)據(jù)發(fā)送函數(shù)將接收到的數(shù)據(jù)通過串口發(fā)送至上位機(jī)進(jìn)行后續(xù)分析.
首先進(jìn)行數(shù)據(jù)寫調(diào)試,調(diào)試結(jié)果波形如圖 5 所示.標(biāo)號(hào)A為FPGA發(fā)送的寫命令,標(biāo)號(hào)B表示eMMC接收響應(yīng)正確,數(shù)據(jù)進(jìn)入傳輸狀態(tài),標(biāo)號(hào)C表示接收的遞增數(shù)據(jù),標(biāo)號(hào)D為定義的32 bit 的時(shí)鐘計(jì)數(shù)器,記錄寫完成所用的周期數(shù),最后可計(jì)算得出在50 MHz時(shí)鐘下的eMMC的數(shù)據(jù)寫速度為20 MB/s.
圖 5 eMMC數(shù)據(jù)寫操作波形圖Fig.5 eMMC data writing operation waveform
數(shù)據(jù)讀測試波形結(jié)果如圖 6 所示.標(biāo)號(hào)C脈沖上升沿表示eMMC讀使能有效,標(biāo)號(hào)A表示設(shè)置數(shù)據(jù)一次讀取塊數(shù),標(biāo)號(hào)B表示讀命令響應(yīng)正確,標(biāo)號(hào)D表示記錄讀命令發(fā)送至讀完成所用的時(shí)鐘周期數(shù),經(jīng)計(jì)算,一次讀數(shù)據(jù)量為8 KB,時(shí)鐘為50 MHz時(shí),讀速度可達(dá)24.07 MB/s,滿足系統(tǒng)前端的帶寬要求.
圖 6 eMMC數(shù)據(jù)讀操作波形圖Fig.6 eMMC data read operation waveform
測試信號(hào)通過信號(hào)發(fā)生器產(chǎn)生,為了方便測試結(jié)果的分析,各路數(shù)據(jù)分別采用不同的波形,第一路數(shù)據(jù)為正弦波數(shù)據(jù),第二路數(shù)據(jù)為鋸齒波數(shù)據(jù),第三路數(shù)據(jù)為三角波數(shù)據(jù),波形周期為10 ms,幅值為5 V.
上位機(jī)發(fā)送指令給串口及協(xié)調(diào)器節(jié)點(diǎn),經(jīng)路由器中繼傳輸給終端設(shè)備,終端節(jié)點(diǎn)將接收到的指令碼通過CC2530上的相應(yīng)串口發(fā)送至FPGA.FPGA通過對(duì)模擬開關(guān)相應(yīng)地址的選通及AD轉(zhuǎn)換器片選信號(hào)拉低,將通過調(diào)理電路的外界信號(hào)由ADC轉(zhuǎn)換成數(shù)字信號(hào)并傳輸給FPGA.FPGA對(duì)采樣量化后的數(shù)據(jù)進(jìn)行編幀處理,傳輸至后端eMMC器件存儲(chǔ),一旦eMMC器件接收到讀命令有效信號(hào),在FPGA及時(shí)鐘控制下將數(shù)據(jù)傳輸給CC2530無線發(fā)送模塊,該發(fā)送模塊在與路由器、協(xié)調(diào)器成功組網(wǎng)的前提下,將數(shù)據(jù)通過無線網(wǎng)絡(luò)傳輸至協(xié)調(diào)器,再經(jīng)由相應(yīng)的串口發(fā)送給上位機(jī),通過上位機(jī)軟件對(duì)各節(jié)點(diǎn)數(shù)據(jù)進(jìn)行分離與還原,得到相應(yīng)波形如圖 7 所示.可以看出,還原出來的信號(hào)波形穩(wěn)定,無毛刺,波形周期為9.8 ms,幅值為5 V,說明本系統(tǒng)具有可靠的傳輸性能.
圖 7 上位機(jī)波形Fig.7 Upper computer waveform
通過超級(jí)編輯器讀取的數(shù)據(jù)如圖 8 所示,經(jīng)分析,數(shù)據(jù)幀格式正確,表明系統(tǒng)功能的可靠性.
圖 8 上位機(jī)數(shù)據(jù)Fig.8 Upper computer data
根據(jù)特定的應(yīng)用背景及工程需要,提出了一種基于eMMC的64路無線數(shù)據(jù)存儲(chǔ)系統(tǒng)的設(shè)計(jì),并通過在線邏輯分析儀對(duì)eMMC的數(shù)據(jù)傳輸單元進(jìn)行調(diào)試驗(yàn)證,對(duì)前端輸入信號(hào)進(jìn)行回讀測試.結(jié)果表明,eMMC的命令傳輸與讀寫速度滿足系統(tǒng)設(shè)定要求,采用HS400的工作模式能夠?qū)崿F(xiàn)更高的數(shù)據(jù)帶寬要求,同時(shí)通過上位機(jī)測試表明信號(hào)脈沖電壓誤差在0.5%范圍內(nèi),達(dá)到了設(shè)計(jì)指標(biāo),在很大程度上提高了無線收發(fā)系統(tǒng)的可靠性.