張霞
(西安郵電大學(xué) 電子工程學(xué)院, 陜西 西安710100)
正弦信號(hào)是電子、通信、雷達(dá)、自動(dòng)化、計(jì)算機(jī)等工程領(lǐng)域應(yīng)用最多的信號(hào)之一,因此正弦信號(hào)的測量在系統(tǒng)聯(lián)調(diào)測試階段和排查錯(cuò)誤過程中具有重要的作用[1]。 傳統(tǒng)的正弦信號(hào)測量方法主要采用模擬技術(shù),其電路復(fù)雜,在運(yùn)用過程中存在著種種弊端[2]。 隨著微電子技術(shù)的發(fā)展和EDA 技術(shù)的日漸成熟,現(xiàn)場可編程邏輯器件FPGA 憑借其穩(wěn)定性好、可靠性高、設(shè)計(jì)方便靈活等特點(diǎn)廣泛應(yīng)用于信號(hào)處理、通信、雷達(dá)等眾多領(lǐng)域,并且隨著可重構(gòu)的嵌入式MCU 核、百萬門級(jí)的FPGA、 各種功能強(qiáng)大的EDA 工具及功能復(fù)雜的IP 核的出現(xiàn),將存儲(chǔ)器、外圍電路和MCU 集成到一個(gè)芯片得以實(shí)現(xiàn)[3]。
本文采用在FPGA 內(nèi)嵌入8051 IP 核的方法設(shè)計(jì)并實(shí)現(xiàn)了正弦信號(hào)頻率和幅度的測量系統(tǒng)。 FPGA 主要完成正弦信號(hào)頻率數(shù)據(jù)和幅度數(shù)據(jù)的采集;51 IP 核主要完成FPGA 和LCD 液晶顯示的控制,以及測試數(shù)據(jù)的處理等。 該系統(tǒng)采用51 IP 核進(jìn)行相關(guān)的數(shù)據(jù)處理和顯示控制, 極大地簡化了FPGA 進(jìn)行該項(xiàng)工作的復(fù)雜度。
以FPGA 為核心的正弦信號(hào)測量系統(tǒng)由模數(shù)轉(zhuǎn)換器、基于FPGA 的數(shù)據(jù)采集模塊、 基于8051 IP 核的數(shù)據(jù)處理模塊以及LCD 液晶顯示模塊所組成。 正弦信號(hào)經(jīng)TLC549 模數(shù)轉(zhuǎn)換器進(jìn)行信號(hào)采樣后,送入FPGA 內(nèi)部進(jìn)行正弦信號(hào)頻率和幅度的測量,并利用51 IP 核對(duì)數(shù)據(jù)進(jìn)行處理,最后將頻率和幅度的測量結(jié)果通過LCD 進(jìn)行顯示。 系統(tǒng)框圖如圖1 所示。
圖1 系統(tǒng)框圖Fig. 1 Structure diagram of the system
該系統(tǒng)的主要功能是測量輸入正弦信號(hào)的頻率和幅度。正弦信號(hào)首先經(jīng)TLC549 模數(shù)轉(zhuǎn)換器將其由模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)。 TLC549 是以8 位開關(guān)電容逐次逼近A/D 轉(zhuǎn)換器為基礎(chǔ)而構(gòu)造的CMOS A/D 轉(zhuǎn)換器, 其采樣速率為40 kHz,參考電壓為2.5 V,輸入電壓范圍為0~2.5 V,輸出為8 位串行數(shù)據(jù)。 正弦信號(hào)經(jīng)TLC549 模數(shù)轉(zhuǎn)換器后輸出為僅保留正弦信號(hào)正半周期的數(shù)字信號(hào)。 FPGA 采用算法對(duì)轉(zhuǎn)換后的數(shù)字信號(hào)進(jìn)行頻率和幅度的測量,其框圖如圖2 所示。
圖2 FPGA 數(shù)據(jù)采集模塊框圖Fig. 2 Structure diagram of the data acquisition module based on FPGA
本文采用等精度測頻法進(jìn)行正弦信號(hào)頻率的測量。 等精度測頻法是以直接測頻法為基礎(chǔ)發(fā)展而來的,它沒有對(duì)被測信號(hào)計(jì)數(shù)產(chǎn)生的±1 周期誤差,因此在整個(gè)被測信號(hào)范圍內(nèi)都能達(dá)到相同的測量精度[4-5]。 等精度測頻法在測量頻率時(shí),其實(shí)際閘門與被測信號(hào)進(jìn)行了同步。 在測量過程中,使用兩個(gè)計(jì)數(shù)器分別對(duì)標(biāo)準(zhǔn)信號(hào)和被測信號(hào)同時(shí)進(jìn)行計(jì)數(shù)。 首先將預(yù)置閘門置為高電平,此時(shí)計(jì)數(shù)器不計(jì)數(shù),只有當(dāng)被測信號(hào)產(chǎn)生上升沿時(shí),兩個(gè)計(jì)數(shù)器才同時(shí)開始計(jì)數(shù)。 一段時(shí)間后,將預(yù)置閘門拉低,此時(shí)計(jì)數(shù)器不停止計(jì)數(shù),僅當(dāng)檢測到被測信號(hào)上升沿時(shí)才停止計(jì)數(shù)[6]。 假設(shè)在實(shí)際閘門中計(jì)數(shù)標(biāo)準(zhǔn)信號(hào)有Ns個(gè)上升沿,被測信號(hào)有Nx個(gè)上升沿,標(biāo)準(zhǔn)信號(hào)頻率為fs,則被測信號(hào)的頻率f 可表示為式(1)。
本文通過對(duì)外部時(shí)鐘頻率50 MHz 信號(hào)進(jìn)行分頻獲得100 Hz 的時(shí)鐘信號(hào),作為等精度測頻法的標(biāo)準(zhǔn)信號(hào)。同時(shí),為了對(duì)實(shí)際閘門內(nèi)被測信號(hào)的上升沿進(jìn)行計(jì)數(shù), 需要對(duì)ADC采樣獲得的信號(hào)進(jìn)行零點(diǎn)檢測,獲得頻率與正弦信號(hào)頻率相同的脈沖信號(hào)作為等精度測頻法的被測信號(hào), 如圖2 所示。在實(shí)際閘門為高電平期間,使用兩個(gè)計(jì)數(shù)器,分別對(duì)標(biāo)準(zhǔn)信號(hào)和被測信號(hào)進(jìn)行計(jì)數(shù)。
通過對(duì)標(biāo)準(zhǔn)信號(hào)進(jìn)行計(jì)數(shù),設(shè)定預(yù)置閘門高電平時(shí)間即開啟時(shí)間為500 ms。在預(yù)置閘門變?yōu)楦唠娖胶髾z測到第一個(gè)被測信號(hào)上升沿時(shí),實(shí)際閘門變?yōu)楦唠娖健?在實(shí)際閘門為高電平期間,使用兩個(gè)計(jì)數(shù)器,分別對(duì)標(biāo)準(zhǔn)信號(hào)和零點(diǎn)個(gè)數(shù)進(jìn)行計(jì)數(shù)。 預(yù)置閘門變?yōu)榈碗娖胶髾z測到被測信號(hào)上升沿時(shí),實(shí)際閘門變?yōu)榈碗娖剑藭r(shí)計(jì)數(shù)器停止計(jì)數(shù),從而實(shí)現(xiàn)了實(shí)際閘門的動(dòng)態(tài)控制。 等精度測頻法的時(shí)序波形圖如圖3 所示, 圖中adc_data 為ADC 轉(zhuǎn)換數(shù)據(jù),detected 為零點(diǎn)檢測信號(hào),pose_detected 為反映零點(diǎn)檢測信號(hào)上升沿的脈沖信號(hào),pre_gate 為 預(yù) 置 閘 門,start 為 實(shí) 際 閘 門,pregate_count 為 標(biāo) 準(zhǔn)信號(hào)計(jì)數(shù)輸出,z_count 為被測信號(hào)計(jì)數(shù)輸出。
圖3 等精度測頻法的時(shí)序波形圖Fig. 3 Timing waveform of equal precision frequency measuring method
在幅度測量方面,F(xiàn)PGA 內(nèi)部對(duì)ADC 轉(zhuǎn)換輸出數(shù)據(jù)進(jìn)行采集,多次分段比較求段內(nèi)正弦信號(hào)幅度的最大值,并將多個(gè)最大值的平均值作為最終的幅度測量結(jié)果。
FPGA 將采集到的頻率數(shù)據(jù)和幅度數(shù)據(jù)發(fā)送給51 IP核,通過計(jì)算求取正弦信號(hào)的頻率和幅度。 如果將頻率數(shù)據(jù)和幅度數(shù)據(jù)以并行的形式單獨(dú)發(fā)送給IP 核, 將需要大量的端口,51 IP 核的端口遠(yuǎn)遠(yuǎn)不夠, 所以采用將數(shù)據(jù)以8 bits 的形式分次進(jìn)行發(fā)送,在IP 核內(nèi)重新恢復(fù)為原值后進(jìn)行計(jì)算,這樣就節(jié)省了51 IP 核的端口。 數(shù)據(jù)發(fā)送的仿真結(jié)果如圖4所示。信號(hào)data_part 由51IP 核向FPGA 發(fā)送,表明IP 核準(zhǔn)備接收的數(shù)據(jù),其值為兩位二進(jìn)制數(shù)。當(dāng)data_part 值為‘00’時(shí),F(xiàn)PGA 向51 IP 核發(fā)送被測信號(hào)的計(jì)數(shù)值(z_count,為14 位二進(jìn)制數(shù))的低8 位;data_part 值為‘01’時(shí),發(fā)送z_count 的高六位, 并且51 IP 核將z_count 進(jìn)行還原;data_part 值為‘10’時(shí),發(fā)送標(biāo)準(zhǔn)信號(hào)的計(jì)數(shù)值pregate_count;data_part 值為‘11’時(shí),發(fā)送幅度數(shù)據(jù)amp_data;wave_data 為51 IP 核接收到的來自FPGA 的數(shù)據(jù)。由此可見,在51 IP 核的控制下實(shí)現(xiàn)了對(duì)FPGA 所采集的頻率數(shù)據(jù)和幅度數(shù)據(jù)的分時(shí)傳送。
圖4 數(shù)據(jù)發(fā)送的仿真圖Fig. 4 Simulation diagram of data sending
本文使用Oregano Systems 公司開發(fā)的免費(fèi)51 IP 核,其設(shè)計(jì)描述采用全同步方式, 指令集與工業(yè)標(biāo)準(zhǔn)8051 單片機(jī)構(gòu)架完全兼容,并針對(duì)SOC 設(shè)計(jì)流程的要求進(jìn)行了優(yōu)化。 該軟核具有如下特點(diǎn):可綜合的RTL 風(fēng)格、完全同步設(shè)計(jì)、單時(shí)鐘、 可通過調(diào)整和修改VHDL 代碼進(jìn)行功能擴(kuò)展、 具有128字節(jié)的片內(nèi)RAM、最高可支持64KB 的ROM 和RAM,并且集成了UART、定時(shí)器、中斷和4 組8 位的I/O 口[3,7]。 使用Quartus II 中自身集成的MegaWizard Plug-In Manager 工具生成51 IP 核所需的外擴(kuò)RAM 和ROM, 并使用FPGA 自帶的PLL(鎖相環(huán))調(diào)整時(shí)鐘頻率,產(chǎn)生51 IP 核所需的工作時(shí)鐘。PLL 輸出的時(shí)鐘頻率、相位均可調(diào)且精度很高,完全可以為51 IP 核提供時(shí)鐘信號(hào)。 51 IP 核向FPGA 數(shù)據(jù)采集模塊發(fā)送控制信號(hào), 同時(shí)接收來自FPGA 的頻率數(shù)據(jù)和幅度數(shù)據(jù),F(xiàn)PGA 與51 IP 核的連接示意圖如圖5 所示。
rec_ready:當(dāng)其為高電平脈沖時(shí),表明51 IP 核開始接收來自FPGA 的頻率數(shù)據(jù);
圖5 FPGA 與51 IP 核的連接示意圖Fig. 5 Connection diagram of FPGA and 51 IP core
rec_done:當(dāng)其為高電平脈沖時(shí),表明51IP 核數(shù)據(jù)接收完成, 此時(shí)數(shù)據(jù)采集模塊將上次采集到的所有數(shù)據(jù)清零,準(zhǔn)備進(jìn)行下一次計(jì)數(shù);
data_part:包括 高低兩位(data_part_h 和data_part_l),用來表明當(dāng)前51 IP 核需要接收的數(shù)據(jù)類型;
amp_test:幅度測量使能信號(hào),當(dāng)其為高電平時(shí),F(xiàn)PGA 進(jìn)行幅度數(shù)據(jù)采集;
test_finish:由數(shù)據(jù)采集模塊向51IP 核發(fā)送,它與IP 核的外部中斷0 相連,數(shù)據(jù)采集完成后,該信號(hào)由高電平變?yōu)榈碗娖剑?說明數(shù)據(jù)采集模塊完成了頻率和幅度數(shù)據(jù)的采集工作,此時(shí),51 IP 核進(jìn)入外部中斷,開始改變data_part 值,并接收數(shù)據(jù)采集模塊發(fā)送的數(shù)據(jù),接收完成后,產(chǎn)生rec_done 高電平脈沖;
wave_data: 數(shù)據(jù)采集模塊根據(jù)data_part 的值向51IP 核發(fā)送采集的8 位數(shù)據(jù)。
數(shù)據(jù)接收采用外部中斷的形式, 當(dāng)51 IP 核向FPGA 發(fā)送的rec_ready 信號(hào)為高電平脈沖時(shí),表明51 IP 核開始準(zhǔn)備接收來自FPGA 的采集數(shù)據(jù), 當(dāng)數(shù)據(jù)采集模塊采集完成后,產(chǎn)生完成信號(hào),此時(shí)51 IP 核進(jìn)入外部中斷INT0,依次改變data_part 的值并接收所對(duì)應(yīng)的數(shù)據(jù)。
基于FPGA 的正弦信號(hào)測量系統(tǒng)采用Altera 公司的Cyclone II EP2C8Q208C8N 芯片并嵌入Oregano Systems 公司開發(fā)的8051 IP 核來實(shí)現(xiàn)。 由安捷倫信號(hào)發(fā)生器產(chǎn)生正弦信號(hào)作為輸入信號(hào), 選取若干測試點(diǎn)進(jìn)行頻率和幅度的測量,輸入信號(hào)及其測量結(jié)果如表1 和表2 所示。 由測試結(jié)果可見,該系統(tǒng)能夠?qū)崿F(xiàn)正弦信號(hào)頻率和幅度的測量,且測量結(jié)果可靠,性能穩(wěn)定。
表1 頻率的測量結(jié)果Tab. 1 Test results of the frequency
表2 幅度的測量結(jié)果Tab. 2 Test results of the amplitude
本系統(tǒng)采用FPGA 內(nèi)部嵌入8051 IP 核的方法, 使用Quartus II 軟件平臺(tái)進(jìn)行設(shè)計(jì)輸入,Modelsim 軟件平臺(tái)進(jìn)行功能仿真,并在Altera 開發(fā)板上進(jìn)行實(shí)現(xiàn)。 測試結(jié)果表明該系統(tǒng)實(shí)現(xiàn)了對(duì)正弦信號(hào)頻率和幅度的精確測量。
[1] 徐麗燕. 正弦信號(hào)測試儀的設(shè)計(jì)[J]. 計(jì)算機(jī)測量與控制,2009,17(12):2564-2567.
[2] 杜英,郝茂森. 基于DDS和FPGA的頻率特性測試儀[J]. 現(xiàn)代電子技術(shù),2014,37(4):112-117.
[3] 王瑞,游志宇,杜楊,等. MC8051單片機(jī)IP核的FPGA實(shí)現(xiàn)與應(yīng)用[J]. 電子設(shè)計(jì)工程, 2009,17(1):57-60.
[4] 夏振華. 等精度頻率計(jì)的實(shí)現(xiàn)[J]. 電子設(shè)計(jì)工程,2010,18(6):177-182.
[5] 李國利,劉旭明,翟力欣. 基于FPGA與單片機(jī)的等精度頻率計(jì)的設(shè)計(jì)[J]. 電子設(shè)計(jì)工程,2013,21(22):171-173.
[6] 方易圓,鄧琛. 等精度頻率計(jì)的FPGA設(shè)計(jì)[J]. 測控技術(shù),2012,31(10):1-4.
[7] 萬曉華,鐘夏,陳建勛. 8051 IP 核的應(yīng)用開發(fā)系統(tǒng)研究[J].微計(jì)算機(jī)信息,2008,24(6):102-104.