王 濤,王紫婷,劉文博
(蘭州交通大學(xué)電子與信息工程學(xué)院,甘肅 蘭州,730070)
應(yīng)用ZigBee技術(shù)和FPGA技術(shù)所研制的無(wú)線(xiàn)數(shù)據(jù)采集系統(tǒng),克服了傳統(tǒng)數(shù)據(jù)采集系統(tǒng)的缺點(diǎn)。目前比較實(shí)用的短距離無(wú)線(xiàn)通信技術(shù)包括紅外、藍(lán)牙技術(shù)以及IrDA 技術(shù)等等.綜合考慮硬件設(shè)計(jì)復(fù)雜度、接口方式、開(kāi)發(fā)周期、開(kāi)發(fā)成本以及通信距離等因素。設(shè)計(jì)采用ZigBee技術(shù)來(lái)實(shí)現(xiàn)數(shù)據(jù)的無(wú)線(xiàn)傳輸。采用EP1C3T144C6來(lái)完成整個(gè)系統(tǒng)的控制和數(shù)據(jù)采集功能,性能大大優(yōu)于傳統(tǒng)的單片機(jī)控制數(shù)據(jù)采集系統(tǒng)。實(shí)驗(yàn)結(jié)果證明,該系統(tǒng)操作簡(jiǎn)單,工作穩(wěn)定可靠,具有廣闊的應(yīng)用前景。
由Zigbee各節(jié)點(diǎn)采集數(shù)據(jù)并傳輸至Zigbee基站,基站和FPGA之間應(yīng)用串口進(jìn)行通信,再將數(shù)據(jù)傳送到FPGA,FPGA作為整個(gè)系統(tǒng)的核心控制部分,完成整個(gè)系統(tǒng)的數(shù)據(jù)處理和控制。如圖1是系統(tǒng)的整體結(jié)構(gòu)圖。
圖1 系統(tǒng)整體結(jié)構(gòu)圖
1)FPGA配置
FPGA上電以后會(huì)有3個(gè)狀態(tài),首先進(jìn)入配置模式(Configuration),將編程文件載入器件,在最后一個(gè)配置數(shù)據(jù)載入到FPGA以后,進(jìn)入初始化模式(Initialization),這個(gè)過(guò)程中復(fù)位各類(lèi)寄存器,為正常工作做準(zhǔn)備。當(dāng)初始化完成以后,隨即進(jìn)入用戶(hù)模式(User-Mode)。在配置模式和初始化模式下FPGA的用戶(hù)I/O處于高阻態(tài)(或者內(nèi)部弱上拉狀態(tài)),當(dāng)進(jìn)入用戶(hù)模式時(shí),用戶(hù)I/O就將按照所設(shè)計(jì)的功能正常工作。
系統(tǒng)在設(shè)計(jì)中既保留了JTAG配置方式,又保留了AS配置方式,硬件配置電路圖分別如圖2和圖3所示。在JTAG配置方式下,TCK需要下拉到地,只接一個(gè)1kΩ下拉電阻就能滿(mǎn)足要求,TMS、TDI需要上拉到3.3V,所使用的電阻是10kΩ,這也是為了防止影響正常的配置以及工作;同樣在AS配置口的設(shè)計(jì)中nCE需要下拉到地,nSTATUS、CONF_DONE和nCONFIG需要上拉到3.3V,所用的上拉電阻和下拉電阻都是l0 kΩ,這些是為了確保在使用JTAG配置或者正常使用時(shí),這些管腳能處在一個(gè)正確的電平狀態(tài)。因在本設(shè)計(jì)中采用JTAG和AS配置方式,所以將MSEL0和MSEL1接地就可以支持這兩種方式 。
圖2 JTAG配置方式
圖3 AS配置方式
2)FPGA外圍電路設(shè)計(jì)。FPGA系統(tǒng)一般需要多電源供電,內(nèi)核電壓為1.8V,外圍輸入/輸出電壓為3.3V,所以采用TI公司的TPS70451為FPGA供電,它采用5V輸入,1.8V和3.3V輸出,最大輸出電流達(dá)2A。FPGA的時(shí)鐘源電路采用外接50MHz的晶振作為Cyclone FPGA的外部時(shí)鐘源。
選用TI公司的CC2430芯片。CC2430是一顆真正的系統(tǒng)芯片(SoC)CMOS解決方案.這種解決方案能夠提高性能并滿(mǎn)足以Zigbee為基礎(chǔ)的2.4GHz ISM波段應(yīng)用,及對(duì)低成本,低功耗的要求。它結(jié)合一個(gè)高性能2.4GHz DSSS(直接序列擴(kuò)頻)射頻收發(fā)器核心和一顆工業(yè)級(jí)小巧高效的8051控制器 。
CC2430芯片需要很少的外圍部件配合就能實(shí)現(xiàn)信號(hào)的收發(fā)功能。電路使用一個(gè)非平衡天線(xiàn),連接非平衡變壓器可使天線(xiàn)性能更好。電路中的非平衡變壓器由電容和電感以及一個(gè)PCB微波傳輸線(xiàn)組成。內(nèi)部T/R 交換電路完成LNA和PA之間的交換。用1個(gè)32 MHz的石英諧振器和2個(gè)電容構(gòu)成一個(gè)32 MHz的晶振電路。用1個(gè)32.768 kHz的石英諧振器和2個(gè)電容構(gòu)成一個(gè)32.768 kHz的晶振電路。電壓調(diào)節(jié)器為所有要求1.8V電壓的引腳和內(nèi)部電源供電。引出所有可用I/O,并提供RS232串行接口,用于系統(tǒng)的擴(kuò)充和通信等功能 。
FPGA與ZigBee基站的串行通信,整個(gè)設(shè)計(jì)采用模塊化的設(shè)計(jì)思想,可分為3個(gè)模塊:FPGA波特率發(fā)生器模塊,RS232接收器模塊和RS232發(fā)送模塊。
RS232發(fā)送器的用途是將準(zhǔn)備輸出的并行數(shù)據(jù)按照基本異步串行通信的幀格式轉(zhuǎn)為T(mén)XD信號(hào)串行輸出。RS232接收器接收RXD串行信號(hào),并將其轉(zhuǎn)化為并行數(shù)據(jù),但串并轉(zhuǎn)換的時(shí)鐘同發(fā)送器一樣處理,收發(fā)設(shè)備間的時(shí)鐘是會(huì)累計(jì)的,會(huì)導(dǎo)致接收數(shù)據(jù)不正確,波特率發(fā)生器就是專(zhuān)門(mén)產(chǎn)生一個(gè)遠(yuǎn)遠(yuǎn)高于波特率的本地時(shí)鐘信號(hào)對(duì)輸入RXD不斷采樣,以不斷地讓接收器與發(fā)送器保持同步 。
1) RS232串行通信的波特率發(fā)生器
波特率發(fā)生器實(shí)際上就是一個(gè)簡(jiǎn)單的分頻器,可以根據(jù)給定的系統(tǒng)時(shí)鐘頻率(晶振時(shí)鐘)和要求的波特率算出波特率分頻因子,已算出的波特率分頻因子作為分頻器的分頻數(shù)。對(duì)于波特率發(fā)生器中的系數(shù)一般在FPGA實(shí)現(xiàn)時(shí)往往是固定的,但對(duì)于不同的實(shí)現(xiàn),這個(gè)系數(shù)需要更改。波特率發(fā)生器產(chǎn)生的分頻時(shí)鐘,不是波特率時(shí)鐘,而是波特率時(shí)鐘的16倍,目的是為了在接收時(shí)進(jìn)行精確的采樣,以提出異步的串行數(shù)據(jù) 。
2) RS232串行通信的接收器
由于串行數(shù)據(jù)幀和接收時(shí)鐘是異步的,由邏輯1轉(zhuǎn)為邏輯0可以被視為一個(gè)數(shù)據(jù)幀的起始位。然而,為了避免毛刺的影響,能夠得到正確的起始位新后,必須要求接收到的起始位在波特率時(shí)鐘采樣的過(guò)程中至少有一般都是屬于邏輯0才可認(rèn)定接收到的是起始位。由于內(nèi)部采樣時(shí)鐘bclk周期(波特率發(fā)生器產(chǎn)生)是發(fā)送或接收波特率時(shí)鐘頻率的16倍,所
以起始位需要至少8個(gè)連續(xù)balk周期的邏輯0被接收到,才認(rèn)為起始位接收到,接著數(shù)據(jù)位和奇偶校驗(yàn)位將每隔16個(gè)bclk周期被采樣一次(即每一個(gè)波特率時(shí)鐘被采樣一次)。如果起始位的確是16個(gè)bclk周期長(zhǎng),那么接下來(lái)的數(shù)據(jù)將在每個(gè)位的中點(diǎn)處被采樣。
3)RS232串行通信的發(fā)送器
發(fā)送器只要每隔16個(gè)bclk周期輸出1個(gè)即可,次序遵循1位起始位、8位數(shù)據(jù)位和1位停止位。本設(shè)計(jì)中沒(méi)有校驗(yàn)位,但只要改變Generic參數(shù)FrameLen,也可以加入校驗(yàn)位,停止位是固定的1位格式 。
1)在ZigBee基站中首先初始化CC2430和液晶,然后程序開(kāi)始初始化協(xié)議棧并打開(kāi)中斷。之后程序開(kāi)始格式化一個(gè)網(wǎng)絡(luò),如果網(wǎng)絡(luò)格式化成功,可以在液晶上或是通過(guò)串口看到格式化網(wǎng)絡(luò)的一些信息,之后程序開(kāi)始進(jìn)入應(yīng)用層,有節(jié)點(diǎn)加入網(wǎng)絡(luò)之后,節(jié)點(diǎn)發(fā)送過(guò)來(lái)的數(shù)值和按鍵信號(hào)就會(huì)被顯示在液晶上。
2)在ZigBee節(jié)點(diǎn)中程序同樣首先初始化CC2430,然后打開(kāi)傳感器電源。之后初始化協(xié)議棧,就開(kāi)始發(fā)送加入網(wǎng)絡(luò)信號(hào),等待主機(jī)響應(yīng),并給自己分配網(wǎng)絡(luò)地址。如果加入網(wǎng)絡(luò)成功,ZigBee節(jié)點(diǎn)指示燈就會(huì)點(diǎn)亮。如果加入失敗則不亮。
加入網(wǎng)絡(luò)成功后,Zibee節(jié)點(diǎn)就可以向ZigBee基站發(fā)送數(shù)據(jù)及按鍵值了。此后程序開(kāi)始循環(huán)發(fā)送數(shù)據(jù)和按鍵值。Zibee節(jié)點(diǎn)每隔一段時(shí)間采集一次數(shù)據(jù)和掃描一次按鍵值,然后把數(shù)據(jù)打包再發(fā)送到Zibee基站,并開(kāi)始接收應(yīng)答。如果發(fā)送成功,Zibee節(jié)點(diǎn)回到空閑狀態(tài);如果發(fā)送不成功,Zibee節(jié)點(diǎn)馬上重新采集一次數(shù)據(jù)再發(fā)送給基站,直到發(fā)送成功。
3)上位機(jī)軟件設(shè)計(jì)
在本系統(tǒng)設(shè)計(jì)中,用VC開(kāi)發(fā)環(huán)境來(lái)實(shí)現(xiàn)對(duì)FPGA采集的數(shù)據(jù)進(jìn)行處理和顯示等功能,上位機(jī)程序主界面如圖4所示。
圖4 上位機(jī)程序主界面
經(jīng)過(guò)實(shí)際測(cè)試,4個(gè)節(jié)點(diǎn)所采集的數(shù)據(jù)和實(shí)際數(shù)據(jù)如表1所示。
根據(jù)數(shù)據(jù),除濕度測(cè)試部分需要繼續(xù)改進(jìn),使其精度更為精確為,其余部分均符合設(shè)計(jì)目標(biāo)。
表1 系統(tǒng)測(cè)試數(shù)據(jù)與實(shí)際數(shù)據(jù)比較
[1]董亞超.基于ZigBee技術(shù)的無(wú)線(xiàn)環(huán)境監(jiān)測(cè)網(wǎng)絡(luò)的開(kāi)發(fā)[D].大連:大連理工大學(xué),2008.
[2]文璧,張潔,徐謙.基于無(wú)線(xiàn)射頻與FPGA技術(shù)的數(shù)據(jù)采集系統(tǒng)[J].中國(guó)測(cè)試,2009.
[3]王彥.基于FPGA的工程設(shè)計(jì)與應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2007.
[4]田春雷.基于FPGA的機(jī)房環(huán)境參量采集系統(tǒng)設(shè)計(jì)[D].呼和浩特:內(nèi)蒙古工業(yè)大學(xué),2007.
[5]王志華.基于FPGA的四路同步數(shù)據(jù)采集和處理系統(tǒng)的設(shè)計(jì)[D].南京:南京理工大學(xué),2007.
[6]李文仲.ZIGBEE無(wú)線(xiàn)網(wǎng)絡(luò)技術(shù)入門(mén)與實(shí)戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,2007:184-200.
[7]張明.基于PIC單片機(jī)和DS18B20的溫度測(cè)量系統(tǒng)設(shè)計(jì)[J],電子測(cè)試,2010(4).
[8]孫波.基于MSP430的串口擴(kuò)展設(shè)計(jì)[J].電子測(cè)試,2010(4).