王碩 殷樹娟 李翔宇
摘 要:隨著物聯(lián)網(wǎng)技術(shù)的高速發(fā)展,終端與智能設(shè)備間的數(shù)據(jù)交互變得越來越頻繁。因此如何將數(shù)據(jù)準(zhǔn)確、快速地送到處理單元是突破物聯(lián)網(wǎng)技術(shù)發(fā)展瓶頸的關(guān)鍵。在FPGA中整合多種高速接口,對(duì)不同應(yīng)用開發(fā)提供靈活的設(shè)計(jì)方案。以Xilinx公司的Nexys4開發(fā)板為基帶處理單元,實(shí)現(xiàn)了一種多路數(shù)據(jù)采集并可將數(shù)據(jù)上傳到上位機(jī)的嵌入式系統(tǒng)。
關(guān)鍵詞:物聯(lián)網(wǎng)技術(shù);數(shù)據(jù)交互;FPGA;嵌入式系統(tǒng);Nexys;模數(shù)轉(zhuǎn)換
中圖分類號(hào):TP39;TN4文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2095-1302(2020)01-00-03
0 引 言
在物聯(lián)網(wǎng)技術(shù)應(yīng)用中,智能設(shè)備通過紅外、射頻識(shí)別、激光掃描等信息傳感設(shè)備采集信號(hào)并通過終端互聯(lián)方式實(shí)現(xiàn)數(shù)據(jù)交互。因此高速穩(wěn)定的數(shù)據(jù)采樣和傳輸是物聯(lián)網(wǎng)技術(shù)中不可或缺的一個(gè)關(guān)鍵點(diǎn),隨著數(shù)字集成電路的發(fā)展,高性能的FPGA(Field Programmable Gate Array)不僅擁有了更多的可配置邏輯資源,更集成了多種高速接口,使得FPGA的應(yīng)用變得更加豐富[1]。主流的FPGA廠商設(shè)計(jì)了功能多樣的開發(fā)工具,為開發(fā)者提供了從軟件設(shè)計(jì)仿真到硬件實(shí)現(xiàn)的完整設(shè)計(jì)流程。本文以Xilinx公司的Nexys4開發(fā)板為基礎(chǔ),使用配套集成開發(fā)環(huán)境Vivado設(shè)計(jì)實(shí)現(xiàn)了一種信號(hào)采集嵌入式系統(tǒng)。
1 FPGA發(fā)展概述
FPGA是現(xiàn)場(chǎng)可編程門陣列的縮寫,是在可編輯器件基礎(chǔ)上進(jìn)一步發(fā)展得到的產(chǎn)物,既有優(yōu)于定制電路的高靈活性,又解決了可編輯器件門電路數(shù)有限的缺點(diǎn)。對(duì)于集成電路設(shè)計(jì)行業(yè)而言,F(xiàn)PGA就像一塊“橡皮泥”,可以用來模仿任何電路,并且可以隨時(shí)進(jìn)行修改和二次設(shè)計(jì)。
通常FPGA通過硬件描述語(yǔ)音Verilog和VHDL等進(jìn)行電路的設(shè)計(jì),但隨著FPGA配套開發(fā)環(huán)境的不斷進(jìn)步,其開發(fā)方式也變得更加靈活多樣。在主流的FPGA廠商中,以Altera和Xilinx的FPGA性能最為優(yōu)越。Altera是可編程邏輯器件的發(fā)明者,但是隨著Altera公司被英特爾收購(gòu),其工作重心也發(fā)生了轉(zhuǎn)移。Xilinx公司定義了FPGA,并占領(lǐng)了大部分市場(chǎng)。Xilinx對(duì)應(yīng)的開發(fā)環(huán)境Vivado整合了全套FPGA開發(fā)工具,不僅包括硬件仿真、分析和綜合,還包括軟件的深度開發(fā)和軟硬件聯(lián)合調(diào)試等。同時(shí)還提供了圖形化塊設(shè)計(jì)流程,其中大部分復(fù)雜的邏輯器件都以IP形式封裝,用戶可以直接調(diào)用,大大縮短了開發(fā)周期[2]。
國(guó)內(nèi)的FPGA產(chǎn)業(yè)近些年蓬勃發(fā)展,但是硬件國(guó)產(chǎn)化率仍然較低,主要依賴國(guó)外廠商。原因在于FPGA專業(yè)人才集中于幾家龍頭企業(yè),且FPGA需要先進(jìn)封測(cè)工藝與大量功能IP才能滿足市場(chǎng)需求。但隨著國(guó)家逐漸大力支持集成電路產(chǎn)業(yè)發(fā)展,中國(guó)的FPGA企業(yè)也迎來了發(fā)展的黃金時(shí)期,不論是從國(guó)防信息安全還是產(chǎn)業(yè)獨(dú)立發(fā)展的角度來看,中國(guó)都需要做自己的FPGA。
2 FPGA信號(hào)采集系統(tǒng)設(shè)計(jì)
2.1 模數(shù)轉(zhuǎn)換單元
Nexys4是Dligilent公司基于Xilinx Artix-7系列FPGA制作的開發(fā)板,具體如圖1所示。A7系列的可配置資源較為豐富,內(nèi)部有多達(dá)10萬個(gè)邏輯單元(Logic Cells),且提供了統(tǒng)一總線(AXI)功能豐富的IP資源。該開發(fā)板集成了多種外設(shè)數(shù)據(jù)接口,主要包括Mirco USB接口(串口與編程共用)、USB HID主機(jī)接口、12位VGA接口、Pmod接口、以太網(wǎng)口等。
該系列FPGA還支持片內(nèi)的模數(shù)轉(zhuǎn)換器,即XADC。XADC由一個(gè)雙12位的ADC和片上傳感器組成,可以作為一個(gè)通用、高精度的模擬接口,其基本結(jié)構(gòu)如圖2所示。
在Vivado集成設(shè)計(jì)環(huán)境中可以直接在IP庫(kù)中找到已經(jīng)封裝XADC的IP核,如圖3所示。在構(gòu)建本文的采集系統(tǒng)時(shí),模數(shù)轉(zhuǎn)換模塊直接調(diào)用該IP到板塊設(shè)計(jì)圖紙即可。該ADC支持多通道輸入,只需激活Channel Selection選擇Channel Sequencer即可。
從圖3中可以看到兩個(gè)主要的總線接口,即s_axi_lite和M_AXIS。其中axi_lite是AXI總線協(xié)議的簡(jiǎn)化版本,占用資源較少,主要作為微處理器MicroBlaze對(duì)XADC的驅(qū)動(dòng)配置命令接口,對(duì)XADC進(jìn)行初始化和基本配置。M_AXIS是AXI Stream的簡(jiǎn)稱,通常這種總線協(xié)議被用來傳輸邏輯單元的數(shù)據(jù),M是英文Master的縮寫,表明數(shù)據(jù)的主從方向[3]。數(shù)據(jù)從Vaux2引腳輸入到XADC中完成模數(shù)轉(zhuǎn)換后,通過M_AXIS將數(shù)據(jù)送到下一個(gè)邏輯處理單元。
2.2 數(shù)據(jù)傳輸單元
數(shù)據(jù)傳輸單元主要用到的IP為直接內(nèi)存存取單元 (Direct Memory Access,DMA)和片外存儲(chǔ)單元PSRAM。其中DMA的主要功能是通過對(duì)地址的訪問,向PSRAM中寫入XADC的采樣數(shù)據(jù),然后PSRAM可以將數(shù)據(jù)暫時(shí)存儲(chǔ),進(jìn)行下一步操作。由于片外存儲(chǔ)單元容量有限,因此不能將無限的數(shù)據(jù)送入存儲(chǔ)單元中,所以在邏輯上需要對(duì)數(shù)據(jù)量的大小進(jìn)行控制。由于邏輯上通常使用計(jì)數(shù)方式,因此需要自建一個(gè)邏輯模塊對(duì)數(shù)據(jù)量進(jìn)行控制。
邏輯模塊主要對(duì)XADC的數(shù)據(jù)進(jìn)行計(jì)數(shù),當(dāng)達(dá)到預(yù)先設(shè)定的量時(shí)通過發(fā)送停止命令來關(guān)斷數(shù)據(jù)搬運(yùn)。因此在設(shè)計(jì)中,我們參考一個(gè)DMA Controller的IP核,做了一個(gè)簡(jiǎn)單的計(jì)數(shù)功能模塊。該模塊的初始化由MicroBlaze通過GPIO寫入一個(gè)pkt_length(數(shù)據(jù)最大量)來實(shí)現(xiàn)。當(dāng)通過的數(shù)據(jù)量達(dá)到pkt_length的值時(shí)就會(huì)發(fā)送停止命令[4]。
數(shù)據(jù)從XADC輸出,經(jīng)計(jì)數(shù)模塊后由DMA搬運(yùn)至PSRAM。Vivado內(nèi)部提供的AXI_DMA的IP核如圖4(a)所示。S_AXI_LITE引腳同上述XADC s_axi_lite的引腳功能,用來做初始化配置。M_AXI_S2MM是對(duì)存儲(chǔ)器進(jìn)行數(shù)據(jù)寫入的引腳,S_AXIS_S2MM是Stream協(xié)議數(shù)據(jù)的流入引腳,用來接收計(jì)數(shù)模塊的輸出,DMA配置功能表如圖4(b)所示。
通過圖4(b)可以看到IP核的一些基本設(shè)置。第一欄為設(shè)置DMA的工作模式,普通的工作模式下DMA將對(duì)連續(xù)的地址進(jìn)行讀寫,當(dāng)讀完最后一個(gè)地址時(shí)發(fā)送一次中斷,Scatter Gather模式的DMA是對(duì)一個(gè)預(yù)先存儲(chǔ)好的地址鏈表(不連續(xù))進(jìn)行訪問。本設(shè)計(jì)對(duì)片外存儲(chǔ)器進(jìn)行連續(xù)寫入,所以采用普通模式的DMA即可。另外,在下一欄的設(shè)置中需要激活寫功能。
當(dāng)數(shù)據(jù)被DMA搬運(yùn)到PSRAM中暫時(shí)存儲(chǔ)后,還需要將這些數(shù)據(jù)取出并發(fā)送到上位機(jī)中進(jìn)行后續(xù)處理。本文將串口作為與上位機(jī)的通信手段,在Vivado中提供了用來作為通信端的串口IP核(UART模塊),如圖5所示,可在模塊設(shè)計(jì)中直接調(diào)用。
2.3 控制單元
在Vivado設(shè)計(jì)中,已經(jīng)封裝好的邏輯IP模塊通常內(nèi)部都帶有一個(gè)配置寄存器,通過對(duì)配置寄存器的修改,可以使這些IP模塊靈活實(shí)現(xiàn)多種功能,以適應(yīng)不同的環(huán)境。在開發(fā)環(huán)境中,允許通過軟件來編寫驅(qū)動(dòng),初始化邏輯器件,或者更改配置寄存器來實(shí)現(xiàn)更多功能。
目前,許多FPGA都集成了內(nèi)部ARM核心,例如Xilinx的ZYNQ系列開發(fā)板。在設(shè)計(jì)時(shí)將ARM作為處理系統(tǒng),稱為PS(Processing System),邏輯部分稱為PL(Progarmmable Logic)。這種開發(fā)板已經(jīng)可以實(shí)現(xiàn)更為強(qiáng)大的SoC(System on Chip)[5-7]。本設(shè)計(jì)采用的Nexys4系列開發(fā)板雖然內(nèi)部無ARM核,但Xilinx公司通過邏輯單元搭建了一個(gè)被稱為MicroBlaze的軟核,同樣可以實(shí)現(xiàn)軟件的深度開發(fā)。
在Vivado設(shè)計(jì)環(huán)境中通過SDK進(jìn)行軟件部分的設(shè)計(jì),并且在開發(fā)板支持工具包中預(yù)先編輯對(duì)應(yīng)IP的初始化驅(qū)動(dòng),如果僅實(shí)現(xiàn)該IP塊的基本功能,則可直接調(diào)用對(duì)應(yīng)的驅(qū)動(dòng)函數(shù),然后定義初始化順序和啟動(dòng)順序,從而實(shí)現(xiàn)軟硬件協(xié)同的嵌入式系統(tǒng)[8-10]。本文設(shè)計(jì)的采集系統(tǒng)軟件部分首先對(duì)各模塊進(jìn)行初始化操作,然后啟動(dòng)XADC和DMA,當(dāng)DMA啟動(dòng)時(shí)復(fù)位計(jì)數(shù)器模塊。當(dāng)計(jì)數(shù)器模塊復(fù)位后,XADC的數(shù)據(jù)才能被送入DMA中。當(dāng)DMA傳輸完畢后,啟動(dòng)UART模塊將數(shù)據(jù)發(fā)送至上位機(jī)。
2.4 功能測(cè)試
在SDK模式下將上述設(shè)計(jì)生成的比特文件燒入FPGA中,并啟動(dòng)軟硬件聯(lián)合調(diào)試功能。本文用一個(gè)鋸齒波作為測(cè)試的模擬信號(hào),通過偽差分轉(zhuǎn)換后送入XADC。啟動(dòng)系統(tǒng),采集數(shù)據(jù)后將PSRAM中存儲(chǔ)的數(shù)據(jù)發(fā)送至PC進(jìn)行還原,結(jié)果如圖6所示。
3 結(jié) 語(yǔ)
本文以Nexys4開發(fā)板為基礎(chǔ),通過Vivado開發(fā)環(huán)境設(shè)計(jì)了一種嵌入式系統(tǒng),將SDK部分的驅(qū)動(dòng)調(diào)用進(jìn)行了軟硬件協(xié)同的功能調(diào)試。測(cè)試結(jié)果表明,該系統(tǒng)基本實(shí)現(xiàn)了對(duì)模擬信號(hào)的采集,這對(duì)于測(cè)試儀表行業(yè)有一定的參考意義。
注:本文通訊作者為殷樹娟。
參 考 文 獻(xiàn)
[1]朱劍.基于FPGA汽車防撞雷達(dá)信號(hào)處理機(jī)的設(shè)計(jì)與實(shí)現(xiàn)[D].南京: 南京理工大學(xué),2008.
[2]張志偉,趙峰.基于FPGA的LED顯示控制系統(tǒng)設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2013(3):753-756.
[3]邵伯川,侯書銘,賈小小,等.一種基于FPGA的多路高精度加速度計(jì)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2012(35):9486-9490.
[4]胡銳,薛曉中,孫瑞勝,等.基于FPGA+DSP的嵌入式GPS數(shù)字接收機(jī)系統(tǒng)設(shè)計(jì)[J].中國(guó)慣性技術(shù)學(xué)報(bào),2009(2):187-190.
[5]王美玲,牛劍凱,劉彤.一種應(yīng)用于嵌入式領(lǐng)域的GPS接收機(jī)的硬件設(shè)計(jì)[J].中國(guó)慣性技術(shù)學(xué)報(bào),2006(2):43-46.
[6]張正烜,張其善,寇艷紅.GPS接收機(jī)基帶信號(hào)處理模塊的FPGA實(shí)現(xiàn)[J].遙測(cè)遙控,2006(4):13-17.
[7]張占來,任紅光,季新明.基于ARM+FPGA高分辨率液晶顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2014(6):30-32.
[8]張強(qiáng),王華,蘇宏鋒,等.基于Xilinx FPGA的硬件協(xié)處理器設(shè)計(jì)[J].數(shù)字技術(shù)與應(yīng)用,2017(4):173-174.
[9]張春宇,王曉君.FPGA單倍線測(cè)試方法研究[J].微處理機(jī),2014(6):17-18.
[10]包可佳.基于FPGA的高速實(shí)時(shí)數(shù)字存儲(chǔ)示波器設(shè)計(jì)[D].南京:南京航空航天大學(xué),2007.