基于FPGA高速數(shù)據(jù)采集與傳輸?shù)穆暦鶞y井系統(tǒng)
3 系統(tǒng)軟件設(shè)計(jì)
設(shè)計(jì)的數(shù)據(jù)采集系統(tǒng)是基于高性能FPGA芯片實(shí)現(xiàn)的,FPGA承擔(dān)了絕大部分的控制和數(shù)據(jù)處理任務(wù),是設(shè)計(jì)的核心內(nèi)容,對FPGA進(jìn)行模塊化設(shè)計(jì),是大型系統(tǒng)設(shè)計(jì)的常用方法。本項(xiàng)目中將FPGA分成USB控制模塊、采樣控制模塊、觸發(fā)脈沖產(chǎn)生模塊和RAM等幾個(gè)主要功能模塊來設(shè)計(jì)。
FPGA模塊的原理如圖3所示。其工作原理為觸發(fā)脈沖產(chǎn)生模塊,根據(jù)設(shè)定的參數(shù)周期性輸出脈沖信號觸發(fā)采樣控制模塊對A/D進(jìn)行采樣。采樣控制模塊在接收到USB控制模塊的啟動(dòng)信號后,只要接收到觸發(fā)信號就開始采樣數(shù)據(jù),并判斷采樣數(shù)據(jù)是否滿足要求,如果滿足要求則把數(shù)據(jù)存放于RAM中,且在采樣結(jié)束后觸發(fā)USB控制模塊上傳數(shù)據(jù)。本文引用地址:http://www.ex-cimer.com/article/190675.htm
通電后,先對USB芯片初始化,然后如果接收到采樣結(jié)束信號或上傳結(jié)束信號并且RAM在還剩余有數(shù)據(jù)的條件下把RAM數(shù)據(jù)上傳,若接收到下傳信號,則把計(jì)算機(jī)下傳的數(shù)據(jù)按要求分配到各端口。
3.1 采樣控制模塊
采樣控制模塊根據(jù)外部觸發(fā)信號,利用狀態(tài)機(jī)對A/D的采樣行為進(jìn)行控制。共有5個(gè)狀態(tài),每個(gè)狀態(tài)的動(dòng)作在代碼中進(jìn)行了詳細(xì)描述。
第1個(gè)狀態(tài):空閑狀態(tài)(IDLE),表示程序無任何操作,在等待外部觸發(fā)信號的到來。
第2個(gè)狀態(tài):延時(shí)1(第一個(gè)等待狀態(tài),WAIT1),表示收到觸發(fā)信號后需要禁閉A/D一段預(yù)先設(shè)定的時(shí)間,這段時(shí)間不進(jìn)行任何操作。
第3個(gè)狀態(tài):找門限(門限判決狀態(tài),THDET),在規(guī)定的時(shí)間段時(shí)間里判斷A/D采樣的信號中是否有連續(xù)6個(gè)采樣大于門限的值,如果有,等待一段時(shí)間后把采樣后的數(shù)據(jù)存入緩沖區(qū)以便上傳給上位機(jī)。否則繼續(xù)等待下一個(gè)觸發(fā)信號。
第4個(gè)狀態(tài):延時(shí)2(第二個(gè)等待狀態(tài),WAIT2),表示已經(jīng)滿足采樣要求后再禁閉A/D一段預(yù)先設(shè)定的時(shí)間,這段時(shí)間不進(jìn)行任何操作。然后啟動(dòng)A/D進(jìn)行采樣。
第5個(gè)狀態(tài):采樣狀態(tài)(SAMPER),啟動(dòng)A/D進(jìn)行采樣,并存儲(chǔ)數(shù)據(jù)。
此處為米莉(Mealy)型狀態(tài)機(jī),Mealy型狀態(tài)機(jī)的輸出不僅與現(xiàn)態(tài)有關(guān),而且和輸入也有關(guān)。
該狀態(tài)機(jī)采取3段式描述方式:即使用3個(gè)always塊,第1個(gè)always塊采用同步時(shí)序描述狀態(tài)轉(zhuǎn)移;第2個(gè)always塊采用組合邏輯判斷狀態(tài)轉(zhuǎn)移條件,描述狀態(tài)轉(zhuǎn)移規(guī)律;第3個(gè)always塊描述狀態(tài)輸出。
狀態(tài)機(jī)的編碼使用獨(dú)熱碼(One-hot)編碼,獨(dú)熱碼編碼的最大優(yōu)勢在于狀態(tài)比較時(shí)僅需要比較一個(gè)位,從而一定程度上簡化了比較邏輯,減少了毛刺產(chǎn)生的概率。
評論