掃描二維碼
隨時(shí)隨地手機(jī)看文章
AD前端處理電路的作用是實(shí)現(xiàn)對(duì)信號(hào)的放大、衰減以及阻抗匹配,從而滿足ADC對(duì)輸入信號(hào)的要求。濾波網(wǎng)絡(luò)濾除高頻噪聲和工頻信號(hào)的干擾,增益放大通過(guò)ARM給出的控制信號(hào)實(shí)現(xiàn)對(duì)模擬信號(hào)的不同增益的放大處理。ADS1255負(fù)責(zé)把模擬電信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),可以通過(guò)功能選擇設(shè)置ADS1255工作在不同的工作模式下。ADS1255的工作時(shí)鐘由FPGA提供,改變FPGA輸出時(shí)鐘的頻率就能實(shí)現(xiàn)AD采樣率的改變。FPGA并行控制5路AD的數(shù)據(jù)采集,并把采集到的各路數(shù)據(jù)按順序以字節(jié)的形式寫入雙口RAM中緩存。FPGA對(duì)雙口RAM的數(shù)據(jù)寫入和ARM對(duì)數(shù)據(jù)的讀取是通過(guò)乒乓傳輸結(jié)構(gòu)實(shí)現(xiàn)的。當(dāng)FPGA寫滿雙口RAM上半?yún)^(qū)后,向ARM申請(qǐng)中斷,ARM響應(yīng)中斷后,讀出上半?yún)^(qū)數(shù)據(jù)到內(nèi)存中進(jìn)行存儲(chǔ);同時(shí)FPGA向RAM的下半?yún)^(qū)寫數(shù)據(jù),寫滿下半?yún)^(qū)后也向ARM發(fā)出中斷,通知ARM讀出下半?yún)^(qū)數(shù)據(jù)。通過(guò)乒乓傳輸保證了系統(tǒng)數(shù)據(jù)采樣和數(shù)據(jù)傳輸可以連續(xù)進(jìn)行。
2 FPGA的邏輯設(shè)計(jì)
本方案中的數(shù)據(jù)采集流程如下:系統(tǒng)初始化后,ARM通過(guò)控制信號(hào)把采樣頻率、通道選擇等參數(shù)通知給FPGA,然后FPGA向需要同步采樣的通道對(duì)應(yīng)的AD芯片提供統(tǒng)一時(shí)鐘,使得AD同步地選擇相應(yīng)的通道進(jìn)行數(shù)據(jù)的同步采樣和轉(zhuǎn)換,其結(jié)果由FPGA接收并存儲(chǔ)在雙口RAM對(duì)應(yīng)的存儲(chǔ)空間,然后由ARM從相應(yīng)的雙口RAM空間讀取數(shù)據(jù)進(jìn)行本地存儲(chǔ)或經(jīng)過(guò)網(wǎng)絡(luò)傳輸給上位機(jī)進(jìn)行處理。根據(jù)以上流程以及FPGA要實(shí)現(xiàn)的功能,整個(gè)FPGA邏輯設(shè)計(jì)劃分為通道和采樣率選擇模塊、時(shí)鐘模塊、雙口RAM模塊、AD采樣控制模塊、串并轉(zhuǎn)換模塊、數(shù)據(jù)存儲(chǔ)控制模塊、ARM接口控制模塊。
各模塊連接關(guān)系如圖2所示。
2.1 通道和采樣率選擇模塊
在實(shí)際應(yīng)用中并不是每個(gè)通道都被使用,AD的采樣率也不只一種,所以在通道的控制和采樣率設(shè)置上應(yīng)該具有可選擇性。
通道和采樣率選擇模塊提供2個(gè)8 bit的控制寄存器A和B。如圖3所示,寄存器A的0~4 bit分別對(duì)應(yīng)ADC通道CH0~CH4,5~7 bit保留;寄存器B的8 bit分別對(duì)應(yīng)采樣率FS0~FS7。如果要選擇某幾個(gè)通道,只需將寄存器A中相應(yīng)的位置1,其他位置0,AD采樣控制模塊就會(huì)根據(jù)該寄存器中的內(nèi)容使能相應(yīng)的通道。如果要選擇某一個(gè)采樣頻率,只需把寄存器B中相應(yīng)的位置1,其他位置0,時(shí)鐘模塊會(huì)產(chǎn)生相應(yīng)的時(shí)鐘控制AD的采樣率。在開啟數(shù)據(jù)采集之前,ARM應(yīng)根據(jù)所要求的通道和采樣頻率向寄存器A和B寫入相應(yīng)命令字。
2.2 時(shí)鐘模塊
本設(shè)計(jì)中外部輸入時(shí)鐘為16.384 MHz。由于設(shè)計(jì)中各個(gè)模塊工作時(shí)鐘的不同以及AD采樣率的變化,所以需要多種不同的時(shí)鐘信號(hào)。時(shí)鐘模塊的功能就是根據(jù)不同采樣率為各個(gè)模塊提供所需的時(shí)鐘信號(hào)。由于該設(shè)計(jì)采用同步時(shí)序電路,它是基于時(shí)鐘觸發(fā)沿設(shè)計(jì),對(duì)時(shí)鐘的周期、占空比、延時(shí)、抖動(dòng)提出了較高的要求,為此本設(shè)計(jì)中采用FPGA所帶的PLL時(shí)鐘資源驅(qū)動(dòng)設(shè)計(jì)的主時(shí)鐘,使其達(dá)到最低的時(shí)鐘抖動(dòng)和延遲。
2.3 雙口RAM模塊
本設(shè)計(jì)中雙口RAM用于數(shù)據(jù)緩存,一方面存儲(chǔ)各個(gè)AD芯片轉(zhuǎn)換的數(shù)據(jù),另一方面供ARM讀取數(shù)據(jù)做進(jìn)一步的存儲(chǔ)與處理。它具有真正的雙端口,可以同時(shí)對(duì)其進(jìn)行數(shù)據(jù)存取,兩個(gè)端口具有獨(dú)立的控制線、地址線和數(shù)據(jù)線。該雙口RAM模塊是通過(guò)調(diào)用Altera FPGA自帶的參數(shù)化模型庫(kù)(Mega-lpm)實(shí)現(xiàn)的。
2.4 A/D采樣控制模塊
A/D采樣控制模塊的主要任務(wù)就是根據(jù)ADS1255的轉(zhuǎn)換時(shí)序圖,在其芯片的引腳發(fā)出相應(yīng)的時(shí)序控制信號(hào),使ADS1255完成啟動(dòng)、配置和數(shù)據(jù)讀取等操作。ADS1255的控制操作如下:首先設(shè)置ADS1255的參數(shù)配置,讀數(shù)據(jù)模,然后啟動(dòng)轉(zhuǎn)換,通過(guò)查詢ADS1255的DRDY信號(hào)判斷是否轉(zhuǎn)換完成,轉(zhuǎn)換結(jié)束后將數(shù)據(jù)按bit順序讀出。同時(shí)將數(shù)據(jù)輸出給串并轉(zhuǎn)換模塊,完成一次A/D轉(zhuǎn)換操作。采樣控制模塊每完成一次采樣操作,則停止等待下一個(gè)觸發(fā)脈沖的到來(lái)。
這一控制過(guò)程通過(guò)狀態(tài)機(jī)實(shí)現(xiàn)。圖4給出了該A/D轉(zhuǎn)換控制模塊的狀態(tài)轉(zhuǎn)換圖。當(dāng)數(shù)據(jù)采集啟動(dòng)信號(hào)START為高電平時(shí),狀態(tài)機(jī)啟動(dòng)。
狀態(tài)機(jī)的各個(gè)狀態(tài)描述如下:
(1)conv_init:狀態(tài)機(jī)的初始狀態(tài)。
(2)mode_set:設(shè)置ADS1255內(nèi)部的控制寄存器。
(3)conv_start:?jiǎn)?dòng)A/D轉(zhuǎn)換。
(4)conv_wait:等待A/D轉(zhuǎn)換結(jié)束。如果轉(zhuǎn)換結(jié)束則進(jìn)入下一狀態(tài),否則將繼續(xù)保持在該狀態(tài)。
(5)conv_read:A/D轉(zhuǎn)換結(jié)束后讀出每個(gè)bit信息,同時(shí)使能移位寄存器進(jìn)行串并轉(zhuǎn)換。
(6)read_next:判斷數(shù)據(jù)是否讀完。如果沒(méi)有返回conv_read狀態(tài),否則進(jìn)入下一狀態(tài)。
(7)conv_next:判斷是否需要繼續(xù)轉(zhuǎn)換數(shù)據(jù)。如果沒(méi)有就進(jìn)入下一狀態(tài),否則返回conv_start狀態(tài)。
(8)cony_end:表示本次采樣任務(wù)結(jié)束。狀態(tài)機(jī)保持在該狀態(tài),直到采樣啟動(dòng)脈沖觸發(fā)重新開始新的一次采樣任務(wù),狀態(tài)機(jī)復(fù)位到conv_init狀態(tài)。
2.5 串并轉(zhuǎn)換模塊
由于ADS1255是以串行輸出轉(zhuǎn)換結(jié)果的,故需要該模塊將串行輸出的數(shù)據(jù)轉(zhuǎn)換為井行輸出。該模塊主要采用移位寄存器來(lái)實(shí)現(xiàn),其移位控制信號(hào)由AD采樣控制模塊提供。
2.6 數(shù)據(jù)存儲(chǔ)控制模塊
該模塊的作用是將5通道24 bit經(jīng)過(guò)串并轉(zhuǎn)換的采樣數(shù)據(jù)按通道順序,以從低字節(jié)到高字節(jié)的次序,一個(gè)一個(gè)字節(jié)將其寫入雙口RAM中,實(shí)際上相當(dāng)于一個(gè)字節(jié)意義上的并串轉(zhuǎn)換。該模塊輸入為5路采樣數(shù)據(jù)reg24Data_0~4,dataF為輸出的字節(jié)數(shù)據(jù),wrenF為雙口RAM的寫控制信號(hào)。圖5是一個(gè)五通道數(shù)據(jù)存儲(chǔ)的仿真示意圖。輸入數(shù)據(jù)值分別為0x030201、0x060504、0x090807、0x121110、0x151413,輸出字節(jié)數(shù)據(jù)為01~15,同時(shí)使能寫RAM,滿足設(shè)計(jì)要求。
2.7 ARM接口控制模塊
該模塊為ARM與FPGA及其雙口RAM交互提供橋梁。當(dāng)ARM向控制寄存器寫入采集參數(shù)信息時(shí),接口模塊要將該信息通知通道和采樣率選擇模塊;當(dāng)ARM讀取雙口RAM中的數(shù)據(jù)時(shí),接口模塊對(duì)ARM的訪問(wèn)地址進(jìn)行譯碼,選中對(duì)應(yīng)的存儲(chǔ)空間取出數(shù)據(jù)。
本文采用FPGA和ARM結(jié)合設(shè)計(jì),很好地完成了多通道高精度的數(shù)據(jù)采集與處理,并且還詳細(xì)介紹了FPGA邏輯的設(shè)計(jì)方法。FPGA邏輯通過(guò)硬件描述語(yǔ)言Verilog實(shí)現(xiàn),已應(yīng)用到磁數(shù)據(jù)采集系統(tǒng)中。本方案設(shè)計(jì)靈活,能很容易地?cái)U(kuò)展為更多路的數(shù)據(jù)采集,也能很容易地修改為與其他的A/D轉(zhuǎn)換芯片接口。所以該方案可根據(jù)不同的應(yīng)用進(jìn)行擴(kuò)展,進(jìn)一步增強(qiáng)了系統(tǒng)應(yīng)用的靈活性。
FPGA的應(yīng)用領(lǐng)域包羅萬(wàn)象,我們今天來(lái)看看在音樂(lè)科技領(lǐng)域及醫(yī)療照護(hù)的智能巧思。
關(guān)鍵字: FPGA 科技領(lǐng)域 智能強(qiáng)大的產(chǎn)品可降低信號(hào)噪音并提高分辨率與動(dòng)態(tài)
關(guān)鍵字: Spectrum儀器 數(shù)字化儀 FPGA大家好,我是鲏。認(rèn)識(shí)我的朋友都知道,我是一個(gè)實(shí)踐派,相比研究枯燥的理論知識(shí),我更喜歡做自己想做的項(xiàng)目,用技術(shù)來(lái)實(shí)現(xiàn)自己的想法的感覺(jué)真的很棒。所以從大學(xué)期間一直到現(xiàn)在,除了工作中的項(xiàng)目外,我依然保持著自己做項(xiàng)目的習(xí)慣,有堅(jiān)...
關(guān)鍵字: 系統(tǒng)設(shè)計(jì) 技術(shù)選型 需求分析本篇是FPGA之旅設(shè)計(jì)的第十二例,在前面的例程中,完成了DS18B20溫度傳感器數(shù)據(jù)的采集,并且將采集到的數(shù)據(jù)顯示在數(shù)碼管上。由于本例將對(duì)溫濕度傳感器DHT11進(jìn)行采集,而且兩者的數(shù)據(jù)采集過(guò)程類似,所以可以參考一下前面的...
關(guān)鍵字: FPGA DS18B20溫度傳感器第八例啦,本例將介紹如何通過(guò)FPGA采集DS18B20傳感器的溫度值。
關(guān)鍵字: FPGA DS18B20傳感器