劉玉梅,綦俊煒,任立群,侯長波,于 蕾
(哈爾濱工程大學 信息與通信工程學院,黑龍江 哈爾濱 150001)
隨著互聯(lián)網(wǎng)時代的到來,基于物聯(lián)網(wǎng)(IoT)技術革命的新經(jīng)濟世界正在形成,智能物聯(lián)的泛在連接與泛在服務需求促使嵌入式微系統(tǒng)的設計及應用技術進入全新的發(fā)展階段[1-2]。同時以集成電路和基礎軟件為代表的嵌入式系統(tǒng)(SoC)設計技術已被公認為業(yè)內(nèi)的標志性技術。對于高校本科生而言,“嵌入式微系統(tǒng)原理及應用”課程也早已不再是簡單的單片機或微機應用技術教育,而是信息化社會中必備的思想和技能的教育[3-5]。在此背景下,我校電子信息類工程專業(yè)對相關課程中最核心的2門課程“微機原理與接口技術”“嵌入式系統(tǒng)設計”整合后設立了“微處理器結(jié)構(gòu)與嵌入式系統(tǒng)設計”課程。在強調(diào)專業(yè)基礎性與技術前沿性相結(jié)合的基礎上,對相關系列課程理論教學和實驗教學內(nèi)容進行了有機整合,實現(xiàn)了微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)設計技術的有機融合。
該課程作為工科非計算機類電子信息專業(yè)的核心課程,理論知識點多,覆蓋學科面廣,教師講授難度大,學生感覺內(nèi)容枯燥乏味[6-8]。為了加強學生的學習興趣,提高專業(yè)課程的教學效果,使學生盡早接觸行業(yè)最新技術,也為學生后續(xù)從事科研工作奠定良好基礎,本文設計了基于PYNQ的多種傳感器數(shù)據(jù)采集系統(tǒng)實驗案例。該實驗教學硬件平臺采用了 Xilinx的ZYNQ-7000系列為核心的PYNQ-Z2開發(fā)板,實驗內(nèi)容結(jié)合了相應工程實際案例采用自頂向下的方法進行設計[9-10],強化理論與實踐應用相結(jié)合,引導學生獨立思考,培養(yǎng)學生解決復雜工程問題的能力。
本實驗系統(tǒng)是基于 Xilinx的 ZYNQ XC7Z020-1 CLG400C系列的PYNQ-Z2開發(fā)板,主要由主控模塊(ZYNQ-7000,雙核 CortexA9)、PL(Arduino 接口)、信息采集與處理模塊(傳感器)、無線Wi-Fi通信網(wǎng)模塊組成。傳感器通過PYNQ-Z2開發(fā)板Arduino接口的模擬、數(shù)字、I2C、UART總線通信接口接入系統(tǒng),實現(xiàn)數(shù)據(jù)采集、管理和傳送功能。系統(tǒng)整體結(jié)構(gòu)設計如圖1所示。系統(tǒng)總體主要完成對具有不同功能和接口的傳感器的控制管理和數(shù)據(jù)采集,并以無線連接方式通過TCP/IP協(xié)議把數(shù)據(jù)傳送到上位機。根據(jù)自頂向下設計方法,把實際工程系統(tǒng)按照功能分解為如下6個模塊。
圖1 系統(tǒng)總體結(jié)構(gòu)圖
(1)數(shù)字接口設計與管理模塊。對由Arduino數(shù)字接口接入系統(tǒng)的傳感器按鍵、蜂鳴器、LED BAR、溫濕度傳感器等數(shù)字接口進行管理,實現(xiàn)選擇、顯示、報警等功能。
(2)數(shù)據(jù)采集預警管理模塊。對通過數(shù)字接口采集后的溫濕度傳感器數(shù)據(jù)進行管理和顯示,設置溫度、濕度預警值,超過預警值時通過蜂鳴器報警輸出。
(3)模擬接口設計與管理模塊。對由Arduino的模擬接口接入系統(tǒng)的光敏和聲音傳感器等模擬接口進行管理,實現(xiàn)聲、光數(shù)據(jù)采集,通過LED BAR分段顯示輸出。
(4)I2C接口設計與管理模塊。對由 Arduino的 I2C接口接入系統(tǒng)的傳感器進行控制管理,實現(xiàn)3軸數(shù)字加速傳感器的數(shù)據(jù)采集。
(5)UART Wi-Fi接口設計與管理模塊。對由Arduino的UART接口接入系統(tǒng)的UART Wi-Fi進行控制管理,通過UART Wi-Fi模塊建立無線通信程序和上位機通信,可進行數(shù)據(jù)傳輸和接收控制上位機的控制命令功能。
(6)上位機通信管理與數(shù)據(jù)處理模塊。
PYNQ[11]是Xilinx公司的一個開源項目,是Xilinx研究院推出的一套面向教育和科研的開源軟硬件協(xié)同設計框架,它將軟件、硬件、電子信息、計算機和自動化等學科融合在一起,在教學與科研領域已獲得廣泛應用。可作為本科4學年多門基礎與專業(yè)課程的統(tǒng)一平臺,易于實現(xiàn)貫穿式教學。
PYNQ-Z2開發(fā)板是 Xilinx大學計劃支持 PYNQ開源框架的第二代最新開發(fā)平臺。它的核心芯片采用Xilinx ZYNQ XC7Z020,其內(nèi)部異構(gòu)雙核ARM Cortex-A9 CPU和FPGA,可編程系統(tǒng)PS(ARM)和可編程邏輯PL(FPGA)之間通過片上高速AXI總線進行數(shù)據(jù)交互,具有豐富的外圍接口,支持針對不同應用場景擴展,支持傳統(tǒng)FPGA與ARM嵌入式開發(fā)方式。實驗開發(fā)板如圖2所示。
圖2 PYNQ-Z2開發(fā)板
為了能將多個傳感器安全、可靠地接入開發(fā)板,選用Seeed的Base Shield V2擴展板[12](如圖3所示),通過板卡的Arduino接口與PYNQ-Z2的Arduino接口連接。Base Shield V2擴展板提供了4個模擬接口(A0—A3)、7個數(shù)字接口(D2—D8)、1個UART接口和4個I2C接口。
圖3 Base Shield V2擴展板
DHT11數(shù)字溫濕度傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器,包括一個電阻式感濕元件和一個NTC測溫元件,具有超小體積、極低功耗的特點。單線制串行接口使系統(tǒng)集成變得簡易快捷,信號傳輸距離可達20 m以上,電路如圖4所示。具體參數(shù)如表1所示。
圖4 DHT11電路圖
表1 DHT11電氣參數(shù)
實驗系統(tǒng)的所有硬件均使用Xilinx的Vivado軟件進行設計與實現(xiàn)。通過Arduino數(shù)字接口接入系統(tǒng)的傳感器,使用Xilinx AXI GPIO IP核進行統(tǒng)一設計,通過AXI總線接入PS系統(tǒng)。在Vivado中,添加GPIO IP核,在Board選項卡中選擇Custom,在IP Configuration選項卡中配置,GPIO Width為12位,制作外部端口,添加管腳約束,配制完成的AXI GPIO IP核如圖5所示。本實驗系統(tǒng)的溫濕度傳感器、蜂鳴器、按鍵、LED BAR 10段 LED顯示均通過數(shù)字接口接入系統(tǒng)。
圖5 配置完成后的AXI GPIO IP核
聲音傳感器(圖6(a))基于LM386放大器和一個駐極體麥克風,可用于檢測周圍是否有聲音(如拍擊聲、噪聲等),并輸出環(huán)境的聲強。該模塊可以方便地與其他電路輸入端的邏輯模塊集成,其輸出是模擬的。它的體積小,性能高,容易采樣和測試,是音頻檢測項目和互動項目的最佳選擇。
光敏傳感器(圖6(b))用于測量光的電平,其用LS06-S光敏電阻(一種高靈敏度和可靠的光電二極管)代替?zhèn)鹘y(tǒng)的LDR GL5528光敏電阻來檢測環(huán)境中的光強度。光敏電阻的電阻值隨光強的增加而減小,可以輸出各種模擬電信號,這些電信號可以被轉(zhuǎn)換成不同的量程(取決于控制器板上的模數(shù)轉(zhuǎn)換器,具有較高的可靠性和靈敏度,可用于光測量、光檢測和光控開關。
圖6 聲音傳感器和光敏傳感器實物圖
Xilinx所有7系列[13-14]內(nèi)部集成了XADC模塊,XADC提供了模數(shù)轉(zhuǎn)換器(ADC)的全部功能,分辨率為12位,最高采樣速率為1MSPS,且采樣保持電路支持多種不同的電壓輸入形式,如單極性、雙極性與差分形式,多路復用器最多支持 17個采樣通路。XADC在ZYNQ系統(tǒng)的組成如圖7所示。XADC內(nèi)部結(jié)構(gòu)如圖8所示。
聲音和光敏傳感器通過Arduino模擬接口接入系統(tǒng),通過 XADC IP核進行設計,在 Vivado中添加XADC IP核,在BASIC設置中,Startup Channel Select選擇Channel Sequence,在Channel Sequence中配置,外部接入模擬通道,PYNQ-Z2有6個模擬通道,分別是1、9、6、15、5、13。配置完成后如圖9所示。
圖7 ZYNQ內(nèi)部XADC組成圖
圖8 XADC內(nèi)部結(jié)構(gòu)圖
圖9 配置完成后的AXI XADC IP核
ADXL345是ADI公司推出的基于iMEMS技術一款小型、超薄、超低功耗的3軸、數(shù)字輸出加速度傳感器,具有最高13位分辨率,可測量+/–2g,+/–4g,+/–8g,+/–16g測量范圍,g為重力加速度。ADXL345非常適合移動設備應用,可以測量重力在傾斜儀上的靜態(tài)加速度,也可以測量由運動或震動引起的動態(tài)加速度。其最高分辨率高達3.9 mg/LSB,能測量小于1.0°的傾斜角度變化。ADXL345支持標準的I2C或SPI數(shù)字接口,自帶32級FIFO存儲,并且內(nèi)部有多種運動狀態(tài)檢測和靈活的中斷方式。ADXL345 3軸加速傳感器的邏輯功能如圖10所示。
圖10 ADXL345 3軸加速傳感器邏輯功能
ADXL345 3軸加速傳感器,通過Arduino的I2C接口接入系統(tǒng),使用Xilinx的AXI IIC IP核進行設計,I2C總線接口如圖11所示。
在Vivado中添加AXI IIC IP核,配置SCL時鐘高頻率為100 kHZ,地址模式為7bit等參數(shù),配置完成后如圖12所示。
圖11 I2C總線接口圖
圖12 配置完成后的AXI IIC IP核
Grove-UART Wi-Fi如圖13所示,是串行收發(fā)器模塊,集成了ESP8285物聯(lián)網(wǎng)SoC芯片。每個ESP8285模塊都預編程了AT命令集,并集成了TCP/IP協(xié)議棧,該UART Wi-Fi串行收發(fā)器模塊,可以通過發(fā)送簡單的文本命令來控制微控制器與Wi-Fi網(wǎng)絡進行交互。它集成了 WEP,WPA/WPA2,TKIP,AES和 WAPI引擎,可以作為動態(tài)主機配置協(xié)議(DHCP)的接入點,加入現(xiàn)有的 Wi-Fi網(wǎng)絡,并具有可配置的 MAC和IP地接口接入系統(tǒng)。UART Wi-Fi通過Arduino的UART接口接入系統(tǒng)。本文使用Xilinx的AXI Uartlite IP核進行設計,UART總線接口如圖14所示。
圖13 UART Wi-Fi實物圖
UART接口通過AXI Uartlite IP核調(diào)用實現(xiàn),在Vivado中添加 AXI Uartlite IP核,配置波特率為115 200,無校驗位,8位數(shù)據(jù)位。配置完成后如圖15所示。
圖14 UART總線接口圖
圖15 配置完成后的AXI Uartlite IP核圖
添加IIC和UART的中斷。即IIC的iic2intc_irpt引腳和Uartlite的interrupt引腳,接入xlconcat IP輸入端,連接到ZYNQ的irqf2p[1:0]管腳,通過PL引腳把中斷傳送到PS系統(tǒng)。最終建立完成的系統(tǒng)硬件結(jié)構(gòu)如圖 16所示。添加 Arduino管腳約束,選擇Create HDL Wrapper生成頂級的VHDL模型,然后生成比特流,最后導出硬件文件到軟件開發(fā)工具包(SDK),包括比特流。然后在SDK下進行軟件開發(fā)與設計。
圖16 系統(tǒng)硬件結(jié)構(gòu)圖
在SDK下由硬件文件生成板級支持包BSP。主控程序的流程如圖17所示,控制整個系統(tǒng)的管理和運行。
圖17 主控程序流程圖
蜂鳴器連接到Arduino的D3口,按鍵接到D4,DTH11溫濕度傳感器接到D5口,LED BAR連接到D6口。編程實現(xiàn)了對Arduino數(shù)字接口的讀、寫及模式設置等通用函數(shù)功能,移植DTH11溫濕度傳感器和LED BAR的函數(shù)庫。通過GPIO編程實現(xiàn)對這些傳感器的管理和調(diào)用。具體程序流程如圖18所示。
圖18 數(shù)字接口程序流程圖
光敏、聲音傳感器檢測環(huán)境信息,采集相應的模擬數(shù)據(jù)。PYNQ有6個模擬輸入通道,光傳感器連接到Arduino的A0口,對應XADC的Channel 1,聲音傳感器連接到Arduino的A1口,對應XADC的Channel 9。通過對XADC編程實現(xiàn)對環(huán)境的光、聲音數(shù)據(jù)進行采集、轉(zhuǎn)換、打包處理,并把數(shù)據(jù)按要求在 LED BAR進行分級顯示。程序控制流程如圖19所示。
圖19 模擬接口程序流程圖
ADXL345 3軸加速傳感器通過Arduino的I2C接口接入系統(tǒng),移植ADXL345的函數(shù)庫,通過AXI IIC IP核,和中斷管理程序?qū)崿F(xiàn)對ADXL345 3軸加速傳感器進行設置和數(shù)據(jù)采集功能的設計。程序流程如圖20所示。
圖20 I2C程序流程圖
UART Wi-Fi集成了ESP8266物聯(lián)網(wǎng)SoC芯片,具有預編程AT命令集,通過串口AT命令建立與上位機的TCP/IP通信程序,把傳感器獲取的數(shù)據(jù)按照預定義格式生成傳輸數(shù)據(jù)包,發(fā)送給上位機。UART Wi-Fi通過Arduino的UART接口連接到系統(tǒng)。程序控制流程如圖21所示。
圖21 UART通信程序流程圖
最終系統(tǒng)的實物如圖22所示。
圖22 系統(tǒng)實物圖
課程建設是保障人才培養(yǎng)質(zhì)量的根本,而專業(yè)課程的實驗教學是培養(yǎng)學生解決復雜工程問題能力的重要抓手。為了加強嵌入式系統(tǒng)設計實踐教學的效果,增強學生工程實踐能力,培養(yǎng)學生創(chuàng)新意識和創(chuàng)新能力,本文采用自頂向下的設計方法研發(fā)了基于PYNQ的 Arduino接口的多種傳感器數(shù)據(jù)采集系統(tǒng)實驗案例。該實驗案例資源既能用于課堂教學,又可以用于學生課下自主學習,能夠極大地激發(fā)學生的積極性、想象力和創(chuàng)造力。