2.2.2 A/D控制器設(shè)計
AD7864的工作時序圖如圖3所示。當(dāng)CONVST信號為下降沿時啟動一次四通道的A/D轉(zhuǎn)換,因此采樣頻率決定于CONVST信號的頻率,在第一通道開始轉(zhuǎn)換之后BUSY信號為高,四通道轉(zhuǎn)換全部結(jié)束后變?yōu)榈停珽OC為高表明正在轉(zhuǎn)換,為低表示一次轉(zhuǎn)換結(jié)束,可讀取結(jié)果,此時將片選置為低,同時將讀信號RD置低即可從數(shù)據(jù)線上將數(shù)據(jù)讀出。為了便于控制采樣頻率,設(shè)置AD_START和CLOCK信號分別作為外部控制A/D開始轉(zhuǎn)換信號和時鐘信號。
本文采用硬件選擇通道方式,SL1、SL2置高,兩通道依次按順序轉(zhuǎn)換。由于兩通道采樣數(shù)據(jù)使用同一路數(shù)據(jù)總線依次讀出,采用有限狀態(tài)機(FSM)實現(xiàn)各通道數(shù)據(jù)的采集。狀態(tài)機是邏輯設(shè)計中最重要的設(shè)計內(nèi)容之一,通過狀態(tài)轉(zhuǎn)移圖設(shè)計手段可以將復(fù)雜的控制時序圖形化表示,分解為狀態(tài)之間的轉(zhuǎn)換關(guān)系,將問題簡化。VHDL流水線設(shè)計方法可以提高系統(tǒng)的工作頻率,采用VHDL語言編寫控制程序。
狀態(tài)機的狀態(tài)轉(zhuǎn)移圖如圖4所示,共分為6個工作狀態(tài):零狀態(tài)(idle)、等待狀態(tài)(STAND_BY)、轉(zhuǎn)換第一通道數(shù)據(jù)(CH0_CONVST)、讀第一通道數(shù)據(jù)(CH0_RD)、轉(zhuǎn)換第二通道數(shù)據(jù)(CH1_CONVST)以及讀第二通道數(shù)據(jù)(CH1_RD)。
設(shè)計控制器端口類型及說明如表1所示。
[!--empirenews.page--]FSM結(jié)構(gòu)體定義信號類型ST和count。ST為狀態(tài),且初始狀態(tài)為零狀態(tài);count用于讀數(shù)據(jù)的計數(shù),用于濾波。
為了實現(xiàn)快速狀態(tài)轉(zhuǎn)換同時增強穩(wěn)定性,避免出現(xiàn)毛刺現(xiàn)象,A/D轉(zhuǎn)換器的時序控制采用多進程有限狀態(tài)機來實現(xiàn)。
(1) 時序邏輯
時序邏輯進程STATE_TRANS負(fù)責(zé)狀態(tài)轉(zhuǎn)換,當(dāng)時鐘信號SYS_CLK上升沿到來時,判斷轉(zhuǎn)換條件使?fàn)顟B(tài)機轉(zhuǎn)入相應(yīng)狀態(tài)。
(2) 組合邏輯
組合邏輯進程STATE_BEHV負(fù)責(zé)狀態(tài)輸出,當(dāng)狀態(tài)變量ST發(fā)生變化時,產(chǎn)生對應(yīng)此狀態(tài)的CNV_ST,AD_RD AD_CS,CH(0為第一通道,1為第二通道)及STATUS相應(yīng)輸出。
(3) 計數(shù)邏輯
定義P0進程,敏感參數(shù)為CNV_ST,當(dāng)一組數(shù)據(jù)采樣結(jié)束(CNV_ST信號由0變?yōu)?),如果已經(jīng)采集10組數(shù)據(jù),則置位FULL信號,表示采樣過程已經(jīng)結(jié)束。
2.2.3 濾波器設(shè)計
A/D轉(zhuǎn)換后的數(shù)據(jù)還不能立即送入處理器中處理,為了提高數(shù)據(jù)的準(zhǔn)確性,設(shè)計濾波單元對數(shù)據(jù)進行處理。濾波濾波器設(shè)計實現(xiàn)經(jīng)A/D轉(zhuǎn)換后的數(shù)據(jù)濾波處理及數(shù)據(jù)的輸出。
數(shù)字濾波模塊的濾波算法采用中位值平均濾波法,相當(dāng)于“中位值濾波法”+“算術(shù)平無度濾波法”,該方法計算簡單、速度快,還可消除由于脈沖干擾所引起的采樣值偏差,使得經(jīng)濾波后的輸出信號為“干凈”信號,可直接用于工業(yè)控制。中位值平均濾波法的時域差分方程是:
本系統(tǒng)設(shè)計10組數(shù)據(jù)進行濾波處理,取N=8。為了節(jié)約FPGA內(nèi)部資源,濾波器的設(shè)計中采用移位寄存器代替除法器來實現(xiàn)平均濾波部分的算法。濾波模塊的設(shè)計從采樣數(shù)據(jù)的輸入、數(shù)值累加、去極值、求平均值到數(shù)字量的輸出共5個處理步驟,并且整個數(shù)據(jù)處理是“單流向”的,前一步驟的輸出是下一步驟的輸入,符合流水線設(shè)計要求。采用流水線設(shè)計方法可以提高系統(tǒng)的工作頻率,從宏觀上看數(shù)字濾波模塊不占用額外的處理時間,對于超高速A/D轉(zhuǎn)換控制中顯得格外重要。從VHDL語言的角度看,流水線操作是用面積換速度思想的具體體現(xiàn)[3]。
定義濾波器端口類型見表2所示。
從仿真圖中可以看出,當(dāng)時鐘處于上升沿,AD_START變?yōu)楦唠娖綍r,啟動A/D轉(zhuǎn)換,依次讀2個通道的數(shù)據(jù)。當(dāng)讀滿10組時,進行濾波處理。當(dāng)CPU發(fā)出讀信號時,數(shù)據(jù)讀出??梢?,設(shè)計的A/D控制器和濾波器完全符合設(shè)計要求。
對設(shè)計程序進行編譯,可以看出,EP1C12Q240C8總的邏輯元數(shù)目為12 060,本控制模塊只占用了227個,完全達到數(shù)據(jù)采集及濾波處理功能,極大地減輕了CPU的負(fù)擔(dān),可以讓CPU專注于其他的任務(wù)。是一種可行且值得推廣的方法。
3 總體功能仿真及編譯結(jié)果
設(shè)計完成,生成頂層模塊。該模塊可直接加入到體積修正儀的SOPC設(shè)計中。其總體功能仿真如圖5所示。
從仿真圖中可以看出,當(dāng)時鐘處于上升沿,AD_START變?yōu)楦唠娖綍r,啟動A/D轉(zhuǎn)換,依次讀2個通道的數(shù)據(jù)。當(dāng)讀滿10組時,進行濾波處理。當(dāng)CPU發(fā)出讀信號時,數(shù)據(jù)讀出??梢?,設(shè)計的A/D控制器和濾波器完全符合設(shè)計要求。
對設(shè)計程序進行編譯,可以看出,EP1C12Q240C8總的邏輯元數(shù)目為12 060,本控制模塊只占用了227個,完全達到數(shù)據(jù)采集及濾波處理功能,極大地減輕了CPU的負(fù)擔(dān),可以讓CPU專注于其他的任務(wù)。是一種可行且值得推廣的方法。
北京2022年10月18日 /美通社/ -- 10月14日,國際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國軟件定義存儲及超融合市場研究報告》,報告顯示:2022年上半年浪潮超融合銷售額同比增長59.4%,近5倍于...
關(guān)鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心東京2022年10月18日 /美通社/ -- NIPPON EXPRESS HOLDINGS株式會社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團公司上海通運國際物流有限公司(Nipp...
關(guān)鍵字: 溫控 精密儀器 半導(dǎo)體制造 BSP