張霞
(西安郵電大學 電子工程學院, 陜西 西安710100)
正弦信號是電子、通信、雷達、自動化、計算機等工程領域應用最多的信號之一,因此正弦信號的測量在系統聯調測試階段和排查錯誤過程中具有重要的作用[1]。 傳統的正弦信號測量方法主要采用模擬技術,其電路復雜,在運用過程中存在著種種弊端[2]。 隨著微電子技術的發展和EDA 技術的日漸成熟,現場可編程邏輯器件FPGA 憑借其穩定性好、可靠性高、設計方便靈活等特點廣泛應用于信號處理、通信、雷達等眾多領域,并且隨著可重構的嵌入式MCU 核、百萬門級的FPGA、 各種功能強大的EDA 工具及功能復雜的IP 核的出現,將存儲器、外圍電路和MCU 集成到一個芯片得以實現[3]。
本文采用在FPGA 內嵌入8051 IP 核的方法設計并實現了正弦信號頻率和幅度的測量系統。 FPGA 主要完成正弦信號頻率數據和幅度數據的采集;51 IP 核主要完成FPGA 和LCD 液晶顯示的控制,以及測試數據的處理等。 該系統采用51 IP 核進行相關的數據處理和顯示控制, 極大地簡化了FPGA 進行該項工作的復雜度。
以FPGA 為核心的正弦信號測量系統由模數轉換器、基于FPGA 的數據采集模塊、 基于8051 IP 核的數據處理模塊以及LCD 液晶顯示模塊所組成。 正弦信號經TLC549 模數轉換器進行信號采樣后,送入FPGA 內部進行正弦信號頻率和幅度的測量,并利用51 IP 核對數據進行處理,最后將頻率和幅度的測量結果通過LCD 進行顯示。 系統框圖如圖1 所示。

圖1 系統框圖Fig. 1 Structure diagram of the system
該系統的主要功能是測量輸入正弦信號的頻率和幅度。正弦信號首先經TLC549 模數轉換器將其由模擬信號轉換為數字信號。 TLC549 是以8 位開關電容逐次逼近A/D 轉換器為基礎而構造的CMOS A/D 轉換器, 其采樣速率為40 kHz,參考電壓為2.5 V,輸入電壓范圍為0~2.5 V,輸出為8 位串行數據。 正弦信號經TLC549 模數轉換器后輸出為僅保留正弦信號正半周期的數字信號。 FPGA 采用算法對轉換后的數字信號進行頻率和幅度的測量,其框圖如圖2 所示。

圖2 FPGA 數據采集模塊框圖Fig. 2 Structure diagram of the data acquisition module based on FPGA
本文采用等精度測頻法進行正弦信號頻率的測量。 等精度測頻法是以直接測頻法為基礎發展而來的,它沒有對被測信號計數產生的±1 周期誤差,因此在整個被測信號范圍內都能達到相同的測量精度[4-5]。 等精度測頻法在測量頻率時,其實際閘門與被測信號進行了同步。 在測量過程中,使用兩個計數器分別對標準信號和被測信號同時進行計數。 首先將預置閘門置為高電平,此時計數器不計數,只有當被測信號產生上升沿時,兩個計數器才同時開始計數。 一段時間后,將預置閘門拉低,此時計數器不停止計數,僅當檢測到被測信號上升沿時才停止計數[6]。 假設在實際閘門中計數標準信號有Ns個上升沿,被測信號有Nx個上升沿,標準信號頻率為fs,則被測信號的頻率f 可表示為式(1)。

本文通過對外部時鐘頻率50 MHz 信號進行分頻獲得100 Hz 的時鐘信號,作為等精度測頻法的標準信號。同時,為了對實際閘門內被測信號的上升沿進行計數, 需要對ADC采樣獲得的信號進行零點檢測,獲得頻率與正弦信號頻率相同的脈沖信號作為等精度測頻法的被測信號, 如圖2 所示。在實際閘門為高電平期間,使用兩個計數器,分別對標準信號和被測信號進行計數。
通過對標準信號進行計數,設定預置閘門高電平時間即開啟時間為500 ms。在預置閘門變為高電平后檢測到第一個被測信號上升沿時,實際閘門變為高電平。 在實際閘門為高電平期間,使用兩個計數器,分別對標準信號和零點個數進行計數。 預置閘門變為低電平后檢測到被測信號上升沿時,實際閘門變為低電平,此時計數器停止計數,從而實現了實際閘門的動態控制。 等精度測頻法的時序波形圖如圖3 所示, 圖中adc_data 為ADC 轉換數據,detected 為零點檢測信號,pose_detected 為反映零點檢測信號上升沿的脈沖信號,pre_gate 為 預 置 閘 門,start 為 實 際 閘 門,pregate_count 為 標 準信號計數輸出,z_count 為被測信號計數輸出。

圖3 等精度測頻法的時序波形圖Fig. 3 Timing waveform of equal precision frequency measuring method
在幅度測量方面,FPGA 內部對ADC 轉換輸出數據進行采集,多次分段比較求段內正弦信號幅度的最大值,并將多個最大值的平均值作為最終的幅度測量結果。
FPGA 將采集到的頻率數據和幅度數據發送給51 IP核,通過計算求取正弦信號的頻率和幅度。 如果將頻率數據和幅度數據以并行的形式單獨發送給IP 核, 將需要大量的端口,51 IP 核的端口遠遠不夠, 所以采用將數據以8 bits 的形式分次進行發送,在IP 核內重新恢復為原值后進行計算,這樣就節省了51 IP 核的端口。 數據發送的仿真結果如圖4所示。信號data_part 由51IP 核向FPGA 發送,表明IP 核準備接收的數據,其值為兩位二進制數。當data_part 值為‘00’時,FPGA 向51 IP 核發送被測信號的計數值(z_count,為14 位二進制數)的低8 位;data_part 值為‘01’時,發送z_count 的高六位, 并且51 IP 核將z_count 進行還原;data_part 值為‘10’時,發送標準信號的計數值pregate_count;data_part 值為‘11’時,發送幅度數據amp_data;wave_data 為51 IP 核接收到的來自FPGA 的數據。由此可見,在51 IP 核的控制下實現了對FPGA 所采集的頻率數據和幅度數據的分時傳送。

圖4 數據發送的仿真圖Fig. 4 Simulation diagram of data sending
本文使用Oregano Systems 公司開發的免費51 IP 核,其設計描述采用全同步方式, 指令集與工業標準8051 單片機構架完全兼容,并針對SOC 設計流程的要求進行了優化。 該軟核具有如下特點:可綜合的RTL 風格、完全同步設計、單時鐘、 可通過調整和修改VHDL 代碼進行功能擴展、 具有128字節的片內RAM、最高可支持64KB 的ROM 和RAM,并且集成了UART、定時器、中斷和4 組8 位的I/O 口[3,7]。 使用Quartus II 中自身集成的MegaWizard Plug-In Manager 工具生成51 IP 核所需的外擴RAM 和ROM, 并使用FPGA 自帶的PLL(鎖相環)調整時鐘頻率,產生51 IP 核所需的工作時鐘。PLL 輸出的時鐘頻率、相位均可調且精度很高,完全可以為51 IP 核提供時鐘信號。 51 IP 核向FPGA 數據采集模塊發送控制信號, 同時接收來自FPGA 的頻率數據和幅度數據,FPGA 與51 IP 核的連接示意圖如圖5 所示。
rec_ready:當其為高電平脈沖時,表明51 IP 核開始接收來自FPGA 的頻率數據;

圖5 FPGA 與51 IP 核的連接示意圖Fig. 5 Connection diagram of FPGA and 51 IP core
rec_done:當其為高電平脈沖時,表明51IP 核數據接收完成, 此時數據采集模塊將上次采集到的所有數據清零,準備進行下一次計數;
data_part:包括 高低兩位(data_part_h 和data_part_l),用來表明當前51 IP 核需要接收的數據類型;
amp_test:幅度測量使能信號,當其為高電平時,FPGA 進行幅度數據采集;
test_finish:由數據采集模塊向51IP 核發送,它與IP 核的外部中斷0 相連,數據采集完成后,該信號由高電平變為低電平, 說明數據采集模塊完成了頻率和幅度數據的采集工作,此時,51 IP 核進入外部中斷,開始改變data_part 值,并接收數據采集模塊發送的數據,接收完成后,產生rec_done 高電平脈沖;
wave_data: 數據采集模塊根據data_part 的值向51IP 核發送采集的8 位數據。
數據接收采用外部中斷的形式, 當51 IP 核向FPGA 發送的rec_ready 信號為高電平脈沖時,表明51 IP 核開始準備接收來自FPGA 的采集數據, 當數據采集模塊采集完成后,產生完成信號,此時51 IP 核進入外部中斷INT0,依次改變data_part 的值并接收所對應的數據。
基于FPGA 的正弦信號測量系統采用Altera 公司的Cyclone II EP2C8Q208C8N 芯片并嵌入Oregano Systems 公司開發的8051 IP 核來實現。 由安捷倫信號發生器產生正弦信號作為輸入信號, 選取若干測試點進行頻率和幅度的測量,輸入信號及其測量結果如表1 和表2 所示。 由測試結果可見,該系統能夠實現正弦信號頻率和幅度的測量,且測量結果可靠,性能穩定。

表1 頻率的測量結果Tab. 1 Test results of the frequency

表2 幅度的測量結果Tab. 2 Test results of the amplitude
本系統采用FPGA 內部嵌入8051 IP 核的方法, 使用Quartus II 軟件平臺進行設計輸入,Modelsim 軟件平臺進行功能仿真,并在Altera 開發板上進行實現。 測試結果表明該系統實現了對正弦信號頻率和幅度的精確測量。
[1] 徐麗燕. 正弦信號測試儀的設計[J]. 計算機測量與控制,2009,17(12):2564-2567.
[2] 杜英,郝茂森. 基于DDS和FPGA的頻率特性測試儀[J]. 現代電子技術,2014,37(4):112-117.
[3] 王瑞,游志宇,杜楊,等. MC8051單片機IP核的FPGA實現與應用[J]. 電子設計工程, 2009,17(1):57-60.
[4] 夏振華. 等精度頻率計的實現[J]. 電子設計工程,2010,18(6):177-182.
[5] 李國利,劉旭明,翟力欣. 基于FPGA與單片機的等精度頻率計的設計[J]. 電子設計工程,2013,21(22):171-173.
[6] 方易圓,鄧琛. 等精度頻率計的FPGA設計[J]. 測控技術,2012,31(10):1-4.
[7] 萬曉華,鐘夏,陳建勛. 8051 IP 核的應用開發系統研究[J].微計算機信息,2008,24(6):102-104.