曹尚斌,韓建寧,馬瑜涓,郝國棟,衛(wèi)國倩
(中北大學(xué)信息與通信工程學(xué)院,山西 太原 030051)
數(shù)據(jù)采集作為現(xiàn)代信息處理的首要問題,顯得越來越重要。隨著工業(yè)、農(nóng)業(yè)和醫(yī)療等行業(yè)的不斷發(fā)展,需要進(jìn)行數(shù)據(jù)監(jiān)測的對(duì)象逐漸增多,而數(shù)據(jù)采集是進(jìn)行數(shù)據(jù)監(jiān)控的重要部分,如何高效地獲取數(shù)據(jù)成為一個(gè)關(guān)鍵的問題。隨著嵌入式技術(shù)的提高,越來越多的嵌入式系統(tǒng)被應(yīng)用在高精度數(shù)據(jù)采集系統(tǒng)中。在實(shí)際應(yīng)用過程中,單一的FPGA或者ARM在某些領(lǐng)域不能滿足使用者的需求,所以自賽靈思公司的Zynq系列產(chǎn)品問世以來就廣受關(guān)注,賽靈思公司的Zynq系列是集成了雙核ARM Cortex-A9處理器以及納米級(jí)工藝的FPGA 的可擴(kuò)展處理平臺(tái)[1]。在Zynq系列芯片中,F(xiàn)PGA與ARM通過AXI4傳輸協(xié)議進(jìn)行數(shù)據(jù)的交互,可以很好地降低系統(tǒng)的延遲,提高處理性能。在系統(tǒng)軟件流程的設(shè)計(jì)方面,計(jì)劃使用賽靈思公司開發(fā)的集成設(shè)計(jì)環(huán)境Vivado設(shè)計(jì)套件進(jìn)行設(shè)計(jì),此集成設(shè)計(jì)環(huán)境工具把各類可編程技術(shù)結(jié)合在一起,并且提供了可供多種類型實(shí)驗(yàn)的IP核,可以滿足各種實(shí)驗(yàn)設(shè)計(jì)的需求以及多種復(fù)雜算法的設(shè)計(jì)。
Zynq-7000系列可擴(kuò)展平臺(tái)是整個(gè)數(shù)據(jù)采集系統(tǒng)的核心,以1片賽靈思公司的Zynq-7000系列芯片以及2片AD7606采集芯片進(jìn)行16通道的并行數(shù)據(jù)采集[2-4],通過HDMI在上位機(jī)顯示采集結(jié)果。該系統(tǒng)通過40針(實(shí)驗(yàn)只用到其中的34個(gè)針口)的擴(kuò)展口實(shí)現(xiàn)AD7606與Zynq-7000芯片的數(shù)據(jù)通信,每個(gè)擴(kuò)展口上為了完成不同的工作要求設(shè)置了幾個(gè)不同電壓為電源的通路,同時(shí)有34路IO口可以進(jìn)行通信傳輸。IO口在芯片內(nèi)部連接到芯片PL端的BANK35上,為了防止芯片PL端在電壓過高時(shí)損壞芯片,在2個(gè)擴(kuò)展口J10和J11與PL端相連接的中間都加入了33 Ω的排阻。由于所使用的是2片AD7606板卡,所以需要分別在Zynq-7000芯片的J11和J10擴(kuò)展口分別接1片AD7606。該擴(kuò)展口位于PL(可編程邏輯)端,使用硬件描述語言進(jìn)行AD采集控制代碼的編寫,并且將編寫好的程序通過Vivado開發(fā)軟件封裝為1個(gè)后期可以隨意調(diào)用的IP核,加入 IP 核以后,系統(tǒng)會(huì)自動(dòng)使用 AXI 接口將 IP 核與處理器連接起來[5-6]。
該采集系統(tǒng)的整體工作流程如圖1所示,2路模擬信號(hào)分別從2片AD7606的信號(hào)輸入端輸入,連接在Zynq-7000開發(fā)板2個(gè)擴(kuò)展口的AD7606數(shù)據(jù)采集芯片,接收到進(jìn)行采集的命令后進(jìn)行1次8通道全部打開的并行數(shù)據(jù)采集,然后將有效通道的數(shù)據(jù)進(jìn)行1次A/D轉(zhuǎn)換,并且將數(shù)據(jù)放入到PL端進(jìn)行儲(chǔ)存,通過DMA控制器來進(jìn)行數(shù)據(jù)傳送的管控可以減少系統(tǒng)資源的損耗,為了防止在進(jìn)行數(shù)據(jù)傳輸時(shí)出現(xiàn)信息傳輸不穩(wěn)定的問題加入先進(jìn)先出(FIFO)寄存器,先進(jìn)先出寄存器可以實(shí)現(xiàn)跨時(shí)鐘域的數(shù)據(jù)傳輸, 解決AD控制器與AXI4總線時(shí)鐘頻率不一致的問題。將PL端的數(shù)據(jù)傳輸至PS端的DDR3存儲(chǔ)器中。經(jīng)過ARM驅(qū)動(dòng)后,將數(shù)據(jù)從HDMI端口傳出最終顯示在終端上位機(jī)[7-9]。
Zynq作為全新的全可編程和系統(tǒng)芯片(SoC)體系結(jié)構(gòu),由最新系列的28 nm FPGA和Xilinx的雙核高性能高級(jí)RISC機(jī)器(ARM)Cortex-A9處理器組成,在此基礎(chǔ)上整個(gè)處理平臺(tái)搭建的核心都是處理器,并且由于處理器之中集成了大量外設(shè)以及內(nèi)部控制裝置,使得在不使用Zynq-7000系列的FPGA部分時(shí),該開發(fā)板的ARM區(qū)仍然可以獨(dú)立使用,這更體現(xiàn)了Zynq的優(yōu)勢所在。在基于Zynq的讀出模塊中,具有可編程邏輯(PL)和處理系統(tǒng)(PS)之間的高速數(shù)據(jù)傳輸同時(shí)包含了低功耗(HPL)、高性能等優(yōu)點(diǎn)。
本實(shí)驗(yàn)所使用開發(fā)板是ALINX的7010開發(fā)平臺(tái),其核心控制器型號(hào)為XC7Z010-1CLG400C,芯片為BGA封裝。Zynq-7000系列的開發(fā)板在此芯片的外部搭載了大量的通信外設(shè),以及上百個(gè)引腳,同時(shí)極小的引腳間距大大縮小了開發(fā)板的體積,使得其更加靈巧。此開發(fā)板的2片DDR3芯片的內(nèi)存為512 MB,還具有1 066 Mbit/s的最高運(yùn)行速度,極大地滿足了客戶的需要,并且可以進(jìn)行多種功能的實(shí)驗(yàn)。1片EMMC和1片QSPI Flash,這些與系統(tǒng)的CPU、內(nèi)存、Flash、SDRAM以及AD7606組成了本實(shí)驗(yàn)的高速存儲(chǔ)最小系統(tǒng)[10]。
使用2片AD7606進(jìn)行信號(hào)的同步采集與顯示。AD7606作為1款集成16位、同步采樣、模數(shù)數(shù)據(jù)采集的系統(tǒng)(DAS),最大可以同時(shí)進(jìn)行8通道的數(shù)據(jù)采集。AD7606包括了輸入鉗位保護(hù)、輸入信號(hào)縮放放大器、二階抗鋸齒濾波器、跟蹤和保持放大器、片上參考、參考緩沖器、高速ADC、數(shù)字信號(hào)濾波器以及可以高速數(shù)據(jù)傳輸?shù)拇谳敵?。多?yīng)用于電力線路監(jiān)測和保護(hù)系統(tǒng)、多相電動(dòng)機(jī)控制、儀表和控制系統(tǒng)、多軸定位系統(tǒng)以及數(shù)據(jù)采集系統(tǒng)。
AD7606采集芯片在進(jìn)行數(shù)據(jù)采集時(shí)會(huì)將所有的8通道全部開啟,BUSY信號(hào)在該芯片的8個(gè)通道完成數(shù)據(jù)轉(zhuǎn)換之前會(huì)一直以高電平輸出。只有在將8個(gè)通道的所有數(shù)據(jù)完成轉(zhuǎn)換并且存入到輸出寄存器之后,BUSY信號(hào)才會(huì)拉低并等待下一輪的信號(hào)采集。當(dāng)CS和RD在并行模式下均為邏輯低電平時(shí),輸出總線啟用,輸出總線啟動(dòng)后進(jìn)行8通道的數(shù)據(jù)讀取,在數(shù)據(jù)讀取完成后將所有讀取到的數(shù)據(jù)進(jìn)行存儲(chǔ)。
為了精簡設(shè)備以及使2片AD7606之間有良好的匹配性能,將2片AD7606采用對(duì)稱分布,這種布局可以在高通道數(shù)的采樣系統(tǒng)中保持高精度。在此布局的基礎(chǔ)上,將2個(gè)采集芯片的A/D轉(zhuǎn)換信號(hào)CONVSTA與CONVSTB分別相連,這樣方便進(jìn)行同步控制并實(shí)現(xiàn)同步采樣。
設(shè)計(jì)中使用8個(gè)輸入通道中的1個(gè)通道進(jìn)行采樣,DB0~DB15為16位數(shù)據(jù)總線。在進(jìn)行數(shù)據(jù)采集時(shí),為了實(shí)現(xiàn)2片AD7606芯片真正的同步采樣,將2片AD芯片的采樣使能信號(hào)與讀數(shù)據(jù)觸發(fā)信號(hào)由Zynq統(tǒng)一進(jìn)行調(diào)配控制[11]。
根據(jù)軟件操作流程,首先新建工程,根據(jù)實(shí)驗(yàn)要求使用Verilog語言設(shè)計(jì)操作Zynq的程序以及根據(jù)實(shí)驗(yàn)所需加入IP核。在系統(tǒng)上電后利用開發(fā)板外部的RESET按鈕進(jìn)行系統(tǒng)的復(fù)位,按下該按鈕后會(huì)產(chǎn)生1個(gè)脈沖復(fù)位信號(hào),該信號(hào)被發(fā)送至AD采集芯片的復(fù)位點(diǎn)進(jìn)行AD7606的初始化操作,進(jìn)行完初始化操作之后進(jìn)行BUSY信號(hào)的判斷,只有當(dāng)BUSY信號(hào)為低電平時(shí),A/D完成轉(zhuǎn)換,否則繼續(xù)等待BUSY信號(hào)再進(jìn)行下一次判斷,在A/D轉(zhuǎn)換完成之后進(jìn)行數(shù)據(jù)的采集與存儲(chǔ),同時(shí)通過Zynq板卡的HDMI接口連接到上位機(jī)將采集到的信號(hào)進(jìn)行顯示。數(shù)據(jù)采集流程如圖2所示。
圖2 數(shù)據(jù)采集流程
本設(shè)計(jì)中,在進(jìn)行數(shù)據(jù)傳輸時(shí)首先進(jìn)行時(shí)鐘的設(shè)定,在Zynq的PS端設(shè)置50 MHz的輸出時(shí)鐘,然后為了減少邏輯單元的使用,使用輕量級(jí)地址映射單元傳輸接口進(jìn)行DMA工作模式的配置,通過PS端將數(shù)據(jù)寫入DDR3存儲(chǔ)器。為了精準(zhǔn)地控制AXI DMA與DDR的數(shù)據(jù)交互問題,設(shè)計(jì)加入HP高速接口,然后再將之前寫入DMA模塊的數(shù)據(jù)進(jìn)行讀出操作[12],將讀出的數(shù)據(jù)寫入配置好的FIFO寄存器,添加1個(gè)中斷信號(hào),最后通過控制DMA并通過AXI總線將寫入FIFO的數(shù)據(jù)流再次發(fā)送回DDR之中,再添加1個(gè)中斷信號(hào),完成上述操作后PL端通過AXI總線進(jìn)行1次DMA數(shù)據(jù)的讀寫操作,完成數(shù)據(jù)的傳輸。芯片內(nèi)部數(shù)據(jù)傳輸如圖3所示。
圖3 芯片內(nèi)部數(shù)據(jù)傳輸
進(jìn)行上位機(jī)顯示時(shí),核心板內(nèi)部直接將板子的3.3 V差分IO口與板子的外設(shè)HDMI接口進(jìn)行連接,PL板塊的FPGA完成TMDS與RGB的轉(zhuǎn)換。在進(jìn)行實(shí)驗(yàn)時(shí),將HDMI轉(zhuǎn)接線一端與核心板相連接,另一端與上位機(jī)相連接進(jìn)行波形顯示[13-14]。HDMI的工作流程如圖4所示。
圖4 HDMI工作流程
進(jìn)行設(shè)計(jì)時(shí),將HDMI的輸出顯示部分劃分為7大工作模塊。通過時(shí)鐘模塊進(jìn)行硬件工作頻率的設(shè)置,信號(hào)轉(zhuǎn)換模塊完成VGA信號(hào)與DVI信號(hào)的轉(zhuǎn)換,畫布背景生成模塊以及疊加網(wǎng)格模塊用來設(shè)置波形顯示的背景以及網(wǎng)格間隙。在進(jìn)行數(shù)據(jù)傳輸時(shí)通過設(shè)計(jì)1個(gè)接口模塊完成與采集芯片AD7606的連接,主要完成8路信號(hào)的采集功能。采樣模塊在進(jìn)行定量數(shù)據(jù)采集時(shí),將每路輸入的數(shù)據(jù)轉(zhuǎn)換為無負(fù)數(shù)的無符號(hào)數(shù),再進(jìn)行高8位的數(shù)據(jù)讀取。波形顯示模塊使用1個(gè)雙口的隨機(jī)存儲(chǔ)IP核進(jìn)行采集數(shù)據(jù)的讀寫,在進(jìn)行波形顯示時(shí)將該模塊中存入的數(shù)據(jù)讀出[15]。
通過HDMI數(shù)據(jù)線將主控開發(fā)板與上位機(jī)連接,同時(shí)將2片AD7606分別連接在開發(fā)板的2個(gè)擴(kuò)展口上,通過信號(hào)發(fā)生器將2路信號(hào)分別輸入采集芯片,所設(shè)計(jì)的16通道數(shù)據(jù)采集系統(tǒng)整體如圖5所示。
圖5 設(shè)備總體
將信號(hào)發(fā)生器的A路設(shè)置為1 V、1.0 kHz的正弦波,B路設(shè)置為5 V、1.5 kHz的正弦波,分別輸入2個(gè)采集芯片的第1通道。
串口打印數(shù)據(jù)如圖6所示。由于本次實(shí)驗(yàn)只使用到第1個(gè)通道進(jìn)行波形采樣,所以可以從圖6看到1通道的數(shù)據(jù)變化幅度是在-0.5~+0.5 V之間,符合所設(shè)置的正弦波幅度,其他通道的電壓幅值變化為0.000 2 V,誤差在0.01%,可以看出本文設(shè)計(jì)的采集系統(tǒng)精度達(dá)到預(yù)期水平。
圖6 串口數(shù)據(jù)打印
AD7606的采樣頻率為200 kHz,采集時(shí)將2個(gè)板子的16個(gè)通道全部開啟,但是只采集每個(gè)板子的1路信號(hào)。實(shí)驗(yàn)結(jié)果如圖7所示,在HDMI上顯示的正弦波信號(hào)即為該系統(tǒng)所采集到的信號(hào)。
圖7 實(shí)驗(yàn)結(jié)果
為了充分實(shí)驗(yàn)驗(yàn)證,滿足可重復(fù)性要求,進(jìn)行了2路相同頻率與幅值的波形測試,測試結(jié)果如圖8所示。由圖8a可知,經(jīng)過顯示部分代碼調(diào)整,將2路波形分成上下2部分顯示,上半部分1路波形幅值為2 V,下半部分1路波形幅值為5 V。由圖8b可知,上位機(jī)顯示波形與波形發(fā)生器輸入波形對(duì)比完全一致。上述實(shí)驗(yàn)證明該系統(tǒng)可以完成全部通道的數(shù)據(jù)采集與顯示功能。
圖8 測試波形
經(jīng)過測試表明,使用Zynq與2片AD7606所搭建的信號(hào)采集系統(tǒng),可以完成16通道的高精度信號(hào)采集與波形顯示功能。
針對(duì)多通道的數(shù)據(jù)采集與顯示功能的問題,利用Xilinx公司的Zynq-7000系列開發(fā)板以及2片AD7606設(shè)計(jì)了一種16通道高精度同步數(shù)據(jù)采集與顯示系統(tǒng)。本文系統(tǒng)設(shè)計(jì)中使用DMA進(jìn)行數(shù)據(jù)的傳輸,通過鎖相環(huán)調(diào)控頻率,同時(shí)加入FIFO寄存器以避免出現(xiàn)AD控制器與AXI4總線時(shí)鐘頻率不一致的問題,后通過ARM將存儲(chǔ)在DDR3中的數(shù)據(jù)通過HDMI接口在上位機(jī)顯示出來。經(jīng)多次實(shí)驗(yàn)證明,本文系統(tǒng)可以完成所需功能,在后期進(jìn)行更多通道采集時(shí)可以作為基礎(chǔ)模塊,節(jié)省了開發(fā)時(shí)間。