超聲波隨鉆井徑檢測儀的數(shù)據(jù)采集與傳輸
2.1 AD控制模塊的設計與實現(xiàn)
AD控制模塊要實現(xiàn)的功能是提供AD轉(zhuǎn)換的片選信號和AD轉(zhuǎn)換時鐘,以及FIFO的寫時鐘、FIFO要存儲的16位并行數(shù)據(jù),接收AD轉(zhuǎn)換的串行數(shù)據(jù)并實現(xiàn)串轉(zhuǎn)并,同時提供換能器的激勵信號。本設計中,AD轉(zhuǎn)換芯片采用的是ADI公司的12位AD7352,該芯片具有耐高溫、功耗低等優(yōu)點。片選信號CS的周期決定了AD采樣的速率,F(xiàn)PGA為AD提供的轉(zhuǎn)換時鐘SCLK的頻率大小決定了AD的轉(zhuǎn)換時間,正常工作時,完成一個數(shù)據(jù)的轉(zhuǎn)換至少需要14個時鐘下降沿。在本設計中,綜合考慮各方面的因素,AD采樣頻率設計為2.5 MHz,完成一個模擬量的轉(zhuǎn)換采用18個轉(zhuǎn)換時鐘,這樣,AD的轉(zhuǎn)換時鐘SCLK的頻率為45 MHz,該時鐘由FPGA中鎖相環(huán)對50 MHz的系統(tǒng)時鐘分頻得到。片選信號CS高低電平的控制采用計數(shù)器對與轉(zhuǎn)換時鐘相同的時鐘計數(shù)來實現(xiàn),每當該時鐘的上升沿到來時,計數(shù)器加1,計數(shù)器加到17后,又從零開始循環(huán)計數(shù),當計數(shù)器的值小于14時,將片選信號CS置低,否則置高。片選信號與轉(zhuǎn)換時鐘的時序如圖3所示。本文引用地址:http://m.butianyuan.cn/article/192799.htm
在本部分設計中,考慮到實際應用中需要對四個換能器接收的數(shù)據(jù)進行采集,為了區(qū)別各個換能器的數(shù)據(jù),設計時在串轉(zhuǎn)并的過程中人為添加了四位數(shù)據(jù)作為標志位。為了使AD的采樣率、FPGA中串轉(zhuǎn)并的速率以及FIFO的寫速率保持一致,F(xiàn)IFO的寫時鐘采用一個計數(shù)器對AD的轉(zhuǎn)換時鐘計數(shù)獲得。每當轉(zhuǎn)換時鐘SCLK的下降沿到來時計數(shù)器加1,計數(shù)器從零到13循環(huán)計數(shù),計數(shù)器每循環(huán)一個周期就提供一個寫時鐘上升沿(寫時鐘上升沿有效),使FIFO完成一次寫操作。在AD正常工作時,第一個時鐘下降沿會輸出兩個前導零,然后從第二個時鐘下降沿開始依次從高位到低位輸出12位有效的數(shù)據(jù),并在第13個下降沿完成最后一位數(shù)據(jù)的輸出,最后在之后的上升沿返回跟蹤模式。因此,在串轉(zhuǎn)并時,要從第二個時鐘下降沿開始。
2.2 FIFO的設計與實現(xiàn)
FIFO的主要功能是實現(xiàn)不同時鐘域之間的數(shù)據(jù)傳輸。FIFO分為同步FIFO和異步FIFO,本設計中采用的是異步FIFO,涉及到的主要參數(shù)包括FIFO的深度,F(xiàn)IFO的讀、寫時鐘,F(xiàn)IFO存儲的數(shù)據(jù)的寬度和讀、寫指針等。考慮到AD采樣速率為2.5 MHz,每次開始轉(zhuǎn)換后持續(xù)的時間大約為600 μs,因此,F(xiàn)IFO需要緩存的數(shù)據(jù)大約為1 500個,Actel公司的APA075中有12個256X9的RAM空間,最多能緩存1 536個16位的數(shù)據(jù)。
為了保險起見,F(xiàn)IFO的深度設計成1 536,根據(jù)實際應用的需求,F(xiàn)IFO的寬度設計成16位,寫時鐘頻率和AD采樣頻率保持一致,讀時鐘頻率和串口傳輸速率保持一致。同時,為了防止數(shù)據(jù)溢出或讀取無效的數(shù)據(jù),F(xiàn)IFO的設計采用了空滿標志位。當FIFO寫滿時,滿標志位置1,禁止繼續(xù)向FIFO中寫入數(shù)據(jù):當FIFO為空時,禁止從FIFO中繼續(xù)讀取數(shù)據(jù)??諠M標志的準確判斷是FIFO設計的一大難點,本設計中采用了列舉的算法實現(xiàn)空滿標志的判斷。FIFO寫滿有以下兩種情況:第一,寫指針加1等于讀指針,并且寫使能有效,再繼續(xù)寫操作時,F(xiàn)IFO就為滿,滿標志位置1;第二,寫指針加1等于FIFO的深度并且讀指針為零,再繼續(xù)寫操作時,F(xiàn)IFO就為滿,滿標志位置1。與滿標志情況類似,F(xiàn)IFO讀空也有以下兩種情況:第一,讀指針加1等于寫指針,再繼續(xù)讀操作時,F(xiàn)IFO就為空,空標志位置1;第二,讀指針加1等于FIFO的深度并且寫指針為零,再繼續(xù)讀操作時,F(xiàn)IFO就為空,這時,空標志位置1。
2. 3 串口發(fā)送的設計與實現(xiàn)
串口發(fā)送模塊負責把處理后的數(shù)據(jù)從FIFO中讀出,將其按通信協(xié)議傳送給MAX232完成電平轉(zhuǎn)換后送給PC機。發(fā)送數(shù)據(jù)采用的波特率是9 600,數(shù)據(jù)幀格式如圖4所示。
本設計的數(shù)據(jù)幀格式為1位起始位,8位數(shù)據(jù)位,1位停止位,沒有奇偶校驗位,本設計采用連續(xù)兩次發(fā)送來解決發(fā)送16位數(shù)據(jù)的問題。為了保持讀FIFO的速率與發(fā)送數(shù)據(jù)的速率一致,F(xiàn)IFO的讀時鐘根據(jù)串口發(fā)送一個完整數(shù)據(jù)的速度來確定。
3 測試結(jié)果
在實驗室自制的最小系統(tǒng)板上,模擬換能器給AD提供一個250 kHz的正弦信號,在上位機串口調(diào)試小助手上接收到的數(shù)據(jù)運用Matlab畫出的圖形如圖5所示。圖5中,縱坐標是幅值,橫坐標是所取點的個數(shù)。
4 結(jié)語
可以看出,本設計中每個周期的正弦波包含有10個點。由于我們輸入的是250 kHz的正弦波,AD采樣頻率是2.5 MHz,通過理論計算,每個周期應該包含的點數(shù)為2.5 MHz/250 kHz=10,可見設計與實際測試的結(jié)果相符。另外,從測試結(jié)果圖中還可以看出,其幅值與所給的幅值也相符,測試結(jié)果也表明了該設計的合理性。
fpga相關文章:fpga是什么
評論