鄭志旺, 李錦明, 方 帆
(1. 中北大學(xué) 儀器與電子學(xué)院, 山西 太原 030051; 2. 中國人民解放軍32382部隊(duì), 北京 100072)
隨著基于頻率信號(hào)的測(cè)試技術(shù)的廣泛應(yīng)用, 對(duì)于頻率計(jì)的高精確度測(cè)量需求, 尤其是小信號(hào)的頻率測(cè)量[1-4]需求也逐漸增加. 目前, 國內(nèi)外寬頻小信號(hào)頻率計(jì)的設(shè)計(jì)成本、 售價(jià)都相對(duì)較高, 并且具有體積、 重量較大, 不方便攜帶等特點(diǎn)[5-7], 為了提高寬頻小信號(hào)的等精度頻率頻率計(jì)的精度、 穩(wěn)定性、 簡(jiǎn)易性等, 本文基于FPGA和Nios II軟核來設(shè)計(jì)等精度頻率測(cè)量系統(tǒng). 采用等精度測(cè)量頻率的算法, 能夠保證不同頻率下測(cè)量值的相對(duì)誤差是等精度的, 并且通過信號(hào)調(diào)理電路的處理, 可以測(cè)量幅值范圍10 mV~3.3 V的頻率信號(hào). 本系統(tǒng)可以充分利用FPGA邏輯模塊的高速并行計(jì)算的特性和Nios II軟核人機(jī)交互的控制優(yōu)勢(shì), 從而降低硬件系統(tǒng)的復(fù)雜性.
頻率計(jì)在FPGA上實(shí)現(xiàn)的基本原理是在一段閘門時(shí)間T內(nèi), 對(duì)待測(cè)信號(hào)的上升沿計(jì)數(shù)計(jì)為fx_cnt, 同時(shí)對(duì)基準(zhǔn)時(shí)鐘信號(hào)的上升沿計(jì)數(shù)計(jì)為fs_cnt, 設(shè)待測(cè)信號(hào)頻率為fx, 基準(zhǔn)時(shí)鐘信號(hào)頻率為FS[8-9]. 由頻率、 上升沿計(jì)數(shù)個(gè)數(shù)、 閘門時(shí)間的關(guān)系可以得到
(1)
(2)
由式(1)和式(2)聯(lián)立可得待測(cè)信號(hào)頻率為
(3)
傳統(tǒng)頻率計(jì)的閘門時(shí)間T由基準(zhǔn)時(shí)鐘FS同步產(chǎn)生, 時(shí)間T是基準(zhǔn)時(shí)鐘周期的整數(shù)倍, 此時(shí)對(duì)基準(zhǔn)時(shí)鐘上升沿的計(jì)數(shù)值fs_cnt沒有誤差[10-11].但是, 門控信號(hào)的上升沿與待測(cè)信號(hào)的上升沿可能不是對(duì)齊的, 傳統(tǒng)頻率計(jì)的測(cè)量原理如圖1 所示, 兩次相同閘門時(shí)間內(nèi)待測(cè)信號(hào)上升沿的計(jì)數(shù)結(jié)果可能不一致, 計(jì)數(shù)值fx_cnt可能存在±1的誤差, 測(cè)得頻率值的相對(duì)誤差為
圖1 傳統(tǒng)頻率計(jì)測(cè)量原理圖
(4)
由式(4)可知, 測(cè)量結(jié)果的相對(duì)誤差隨著待測(cè)信號(hào)頻率的減小而增大, 在量程范圍內(nèi)不能保證精度不變.
等精度頻率計(jì)閘門時(shí)間T由待測(cè)信號(hào)fx同步產(chǎn)生, 時(shí)間T是待測(cè)信號(hào)時(shí)鐘周期的整數(shù)倍[12-15], 此時(shí)對(duì)待測(cè)信號(hào)上升沿的計(jì)數(shù)值fx_cnt沒有誤差, 基準(zhǔn)時(shí)鐘信號(hào)脈沖的計(jì)數(shù)值存在±1的誤差, 此時(shí)測(cè)量結(jié)果的相對(duì)誤差為
(5)
由式(5)可知, 測(cè)量結(jié)果的相對(duì)誤差不隨頻率的變化而改變, 能夠在量程范圍內(nèi)保持統(tǒng)一的精度. 當(dāng)測(cè)量的閘門時(shí)間設(shè)定為1 s時(shí), 基準(zhǔn)時(shí)鐘信號(hào)的頻率為100 MHz時(shí), 理論的測(cè)量精度能夠達(dá)到10-8, 等精度頻率計(jì)的測(cè)量原理圖如圖2 所示.
圖2 等精度頻率計(jì)測(cè)量原理圖
系統(tǒng)硬件的主要組成部分有FPGA主控模塊、 信號(hào)調(diào)理模塊、 串口通信模塊、 LCD顯示器驅(qū)動(dòng)模塊等. 由于待測(cè)信號(hào)的幅值大小是不確定的, 所以首先需要對(duì)待測(cè)信號(hào)進(jìn)行整形, 通過頻率信號(hào)調(diào)理模塊電路, 將待測(cè)信號(hào)波形整形為3.3 V的矩形波, 并保持其頻率不發(fā)生改變, 從而方便FPGA對(duì)待測(cè)信號(hào)進(jìn)行準(zhǔn)確的計(jì)數(shù).
通過FPGA主控模塊實(shí)現(xiàn)對(duì)兩路整形后信號(hào)的頻率、 占空比、 相位差的測(cè)量, 并在FPGA上搭建嵌入式片上系統(tǒng)Nios II軟核來實(shí)現(xiàn)人機(jī)交互功能和測(cè)量結(jié)果的顯示, 編寫運(yùn)行在Nios II軟核上的C語言程序, 驅(qū)動(dòng)LCD屏幕顯示測(cè)量的結(jié)果, 同時(shí)FPGA通過串口通信電路將測(cè)量結(jié)果發(fā)送到PC端的上位機(jī)完成顯示, 系統(tǒng)的總體設(shè)計(jì)框圖如圖3 所示.
圖3 系統(tǒng)總體設(shè)計(jì)框圖
信號(hào)調(diào)理電路的主要功能是對(duì)待測(cè)信號(hào)的幅值和波形進(jìn)行自動(dòng)調(diào)整, 在保持待測(cè)信號(hào)頻率不發(fā)生改變的情況下, 將不同幅值的正弦波、 方波信號(hào)整形為幅值是3.3 V的方波信號(hào), 從而方便FPGA對(duì)待測(cè)信號(hào)進(jìn)行檢測(cè), 信號(hào)調(diào)理電路的系統(tǒng)框圖如圖4 所示, 其中包括增益電路和比較器電路.
圖4 信號(hào)調(diào)理電路系統(tǒng)框圖
自增益電路由可控增益放大器VCA810, 寬帶放大器OPA690, 單電源比較器AD8561, 通用運(yùn)算放大器TL082組成, 通過調(diào)節(jié)AD8561模塊電路中的電位器設(shè)定比較電壓為1.65 V, 當(dāng)VCA810輸出電壓小于1.65 V時(shí), 通過反饋電路控制VCA810來增大放大倍數(shù); 同理, VCA810輸出電壓大于1.65 V時(shí), 減小其放大倍數(shù), 最終將VCA810輸出波形的幅值控制在1.65 V, 再經(jīng)過OPA690放大輸出幅值為3.3 V的波形.
整形模塊的主要芯片選用TLV3501, 它是一款延遲為4.5 ns的超高速比較器, 它將自增益電路輸出的波形整形為3.3 V的方波, 然后輸出給FPGA進(jìn)行計(jì)數(shù)等工作, 完成對(duì)測(cè)量范圍內(nèi)不同幅值的正弦波、 方波的頻率測(cè)量.
LCD顯示模塊采用帶有RGB接口的LCD屏幕, 并使用SDRAM作為LCD的數(shù)據(jù)緩存, FPGA與LCD、 SDRAM的電路連接示意圖如圖5 所示.
圖5 LCD顯示模塊示意圖
系統(tǒng)中設(shè)計(jì)了由FPGA控制發(fā)送的串口通信電路, 用于將測(cè)量得到的數(shù)據(jù)發(fā)送到PC端的LabVIEW上位機(jī)進(jìn)行結(jié)果的計(jì)算和顯示. 串口通信芯片選用CH340, 它將TTL電平轉(zhuǎn)換為USB電平, 這樣能夠通過PC的USB端口進(jìn)行數(shù)據(jù)的收發(fā), 并且該芯片支持的通訊波特率為50 bit/s~2 Mbit/s, 能夠滿足顯示設(shè)計(jì)的需求, 串口通信模塊與FPGA的連接示意圖如圖6 所示.
圖6 串口通信模塊與FPGA的連接示意圖
Altera FPGA的程序使用Verilog語言在Quartus II開發(fā)環(huán)境上進(jìn)行編寫. FPGA內(nèi)部模塊結(jié)構(gòu)圖如圖7 所示, 主要由頻率測(cè)量、 占空比測(cè)量、 相位差測(cè)量、 數(shù)據(jù)包傳輸、 LCD顯示、 串口通信等模塊組成. 將經(jīng)過信號(hào)調(diào)理電路整形的頻率信號(hào)接到FPGA的計(jì)數(shù)輸入管腳, 然后進(jìn)入到頻率測(cè)量、 占空比測(cè)量、 相位差測(cè)量等模塊, 完成計(jì)數(shù)、 計(jì)算等測(cè)量工作, 再將測(cè)得的結(jié)果打包傳輸?shù)酱谕ㄐ拍K和LCD顯示模塊, 然后通過串口通信模塊將結(jié)果傳輸?shù)缴衔粰C(jī)進(jìn)行顯示, 通過LCD顯示模塊控制LCD屏幕, 來實(shí)現(xiàn)LCD屏幕顯示結(jié)果等功能.
圖7 FPGA內(nèi)部模塊結(jié)構(gòu)圖
通??刂芁CD屏幕顯示FPGA測(cè)量的結(jié)果方法有兩種: 一是在FPGA中通過邏輯電路直接控制LCD, 但是控制程序較為復(fù)雜; 二是FPGA將數(shù)據(jù)發(fā)送給單片機(jī), 由單片機(jī)控制LCD顯示結(jié)果, 但是所需芯片的數(shù)量增加, 導(dǎo)致電路板占用面積增大, 硬件設(shè)計(jì)更復(fù)雜. 本設(shè)計(jì)在FPGA內(nèi)部搭建Nios II軟核用于控制LCD, 避免了以上兩種方法的缺點(diǎn), 既能簡(jiǎn)化硬件電路, 又能降低軟件程序設(shè)計(jì)的難度, 發(fā)揮了FPGA邏輯電路和Nios II軟核處理器優(yōu)勢(shì)互補(bǔ)的特性, 有效縮短了開發(fā)周期.
3.1.1 等精度測(cè)頻模塊
等精度頻率測(cè)頻模塊的主要功能有產(chǎn)生門控信號(hào)、 基準(zhǔn)時(shí)鐘脈沖計(jì)數(shù)、 待測(cè)信號(hào)脈沖計(jì)數(shù)等. 基準(zhǔn)時(shí)鐘是FPGA內(nèi)部的PLL所產(chǎn)生的100 MHz時(shí)鐘. 根據(jù)等精度頻率測(cè)量的原理可知閘門時(shí)間T是由待測(cè)信號(hào)同步產(chǎn)生的, 時(shí)間T是待測(cè)信號(hào)周期的整數(shù)倍, 在實(shí)際的FPGA計(jì)數(shù)過程中, 首先產(chǎn)生周期為1 s的預(yù)置閘門信號(hào), 同時(shí)對(duì)待測(cè)信號(hào)和基準(zhǔn)時(shí)鐘信號(hào)的上升沿進(jìn)行計(jì)數(shù), 當(dāng)1 s的預(yù)置閘門時(shí)間結(jié)束后, 在待測(cè)信號(hào)的下一個(gè)上升沿完成計(jì)數(shù), 然后即可計(jì)算出測(cè)得的頻率值.
3.1.2 占空比測(cè)量模塊
當(dāng)待測(cè)信號(hào)是方波時(shí)可以測(cè)量方波的占空比, 占空比測(cè)量模塊的基本原理是在待測(cè)信號(hào)的多個(gè)連續(xù)周期內(nèi)對(duì)基準(zhǔn)時(shí)鐘進(jìn)行計(jì)數(shù), 采用這種多周期測(cè)量占空比的方法能夠提高測(cè)量的精度. 高電平期間的累計(jì)計(jì)數(shù)值為high_cnt, 低電平期間的累計(jì)計(jì)數(shù)值為low_cnt, 則待測(cè)信號(hào)的占空比為
(6)
3.1.3 相位差測(cè)量模塊
當(dāng)a、 b兩個(gè)通道輸入的待測(cè)信號(hào)是頻率相同的方波時(shí), 可以測(cè)量?jī)蓚€(gè)通道的方波的相位差. 先將兩個(gè)通道的方波進(jìn)行異或, 得到一個(gè)相位差信號(hào), 同理, 使用多周期計(jì)數(shù)的方法計(jì)算出的相位差信號(hào)的高電平的時(shí)間就是兩個(gè)方波的時(shí)間間隔, 即可計(jì)算出兩路方波信號(hào)的相位差.
3.1.4 數(shù)據(jù)包傳輸模塊
將頻率測(cè)量模塊、 占空比測(cè)量模塊、 相位差測(cè)量模塊測(cè)得的計(jì)數(shù)值打包成一個(gè)224位的數(shù)據(jù), 傳輸給Nios II和串口通信模塊, 再進(jìn)行相應(yīng)的計(jì)算后完成最終結(jié)果的顯示. 打包后的數(shù)據(jù)格式示意圖如圖8 所示, 通過freq_a、 freq_b可以計(jì)算出a、 b通道的頻率值, 通過high_cnt_a、 low_cnt_a、 high_cnt_b、 low_cnt_b可以計(jì)算出a、 b通道的占空比, 通過interval_ab可以計(jì)算出a、 b通道波形的相位差. 串口通信模塊將數(shù)據(jù)包中的224位數(shù)據(jù), 通過串口依次發(fā)送給上位機(jī), 上位機(jī)接收并解析數(shù)據(jù)后顯示測(cè)量結(jié)果.
圖8 傳輸數(shù)據(jù)格式示意圖
3.2.1 Qsys系統(tǒng)上搭建Nios II處理器
Nios II是Qsys系統(tǒng)集成工具上的一個(gè)軟核處理器, 主要使用Nios II來接收FPGA邏輯模塊發(fā)送的測(cè)量結(jié)果并驅(qū)動(dòng)LCD顯示測(cè)量結(jié)果. 基于Nios II軟核的LCD顯示模塊的系統(tǒng)框圖如圖9 所示, FPGA內(nèi)數(shù)據(jù)包傳輸模塊將測(cè)量得到的結(jié)果通過PIO將數(shù)據(jù)傳輸?shù)絈sys系統(tǒng), Nios II處理器通過PIO讀取數(shù)值并進(jìn)行計(jì)算, 再把結(jié)果寫入到SDRAM中, 由SDRAM橋控制模塊從SDRAM中讀取顯示數(shù)據(jù), 并寫入到FIFO中, 最后LCD控制模塊將顯示數(shù)據(jù)讀出并寫入到LCD屏幕完成測(cè)量結(jié)果的顯示.
圖9 Nios II顯示模塊系統(tǒng)框圖
3.2.2 Nios II上程序的編寫
FPGA硬件平臺(tái)搭建完畢后, Nios II處理器的程序使用C語言編寫, 程序設(shè)計(jì)流程圖如圖10 所示, 首先進(jìn)行LCD初始化、 GUI初始化等工作, 然后通過讀avalon總線PIO的地址上的數(shù)據(jù) 來獲取片內(nèi)邏輯電路輸出的數(shù)據(jù), 讀取最近7次閘門時(shí)間內(nèi)測(cè)量得到的結(jié)果, 去除最大值和最小值, 對(duì)剩余的5個(gè)數(shù)據(jù)取平均值作為最終的測(cè)量結(jié)果, 以進(jìn)一步減小測(cè)量的誤差, 最后調(diào)用GUI庫來完成測(cè)量結(jié)果在LCD屏幕上的顯示.
圖10 Nios II程序設(shè)計(jì)流程圖
首先進(jìn)行模擬電路部分的測(cè)試, 對(duì)待測(cè)頻率信號(hào)進(jìn)行自增益放大, 使輸出幅值可以達(dá)到比較器正常的工作要求, 整形后輸出幅值為3.3 V的方波信號(hào), 可以保證FPGA計(jì)數(shù)的準(zhǔn)確性.
系統(tǒng)整體測(cè)試時(shí), 先使用信號(hào)發(fā)生器產(chǎn)生不同幅值和不同頻率的方波、 正弦波信號(hào), 然后連接到測(cè)試樣機(jī)的信號(hào)輸入端, 使用測(cè)試樣機(jī)分別進(jìn)行多組數(shù)據(jù)的頻率測(cè)量, 最后進(jìn)行測(cè)試結(jié)果的誤差分析.
分別測(cè)試不同頻率、 不同幅值的方波信號(hào), 在方波信號(hào)幅值為10 mV、 200 mV、 2 V的條件下, 分別輸入頻率為50 Hz、 1 kHz、 100 kHz、 10 MHz、 30 MHz、 50 MHz的信號(hào), 測(cè)試結(jié)果如表1 所示. 正弦波信號(hào)頻率的測(cè)試方法同上, 在正弦信號(hào)幅值為10 mV、 200 mV、 2 V的條件下, 分別輸入頻率為50 Hz、 1 kHz、 500 kHz、 15 MHz、 50 MHz的信號(hào), 測(cè)試結(jié)果如表2 所示.
表1 方波信號(hào)頻率測(cè)試結(jié)果的相對(duì)誤差
表2 正弦波信號(hào)頻率測(cè)試結(jié)果的相對(duì)誤差
由表1 可知, 在方波信號(hào)頻率固定不變的情況下, 幅值為10 mV、 200 mV、 2 V時(shí), 計(jì)算得到測(cè)量結(jié)果的相對(duì)誤差基本相同; 在方波信號(hào)幅值固定不變的情況下, 頻率為50 Hz、 1 kHz、 100 kHz、 10 MHz、 30 MHz、 50 MHz時(shí), 測(cè)量結(jié)果的相對(duì)誤差也基本相同, 均保持在10-6范圍內(nèi). 由表2 可知, 在待測(cè)信號(hào)為正弦波時(shí), 信號(hào)強(qiáng)度不同、 頻率不同的情況下測(cè)量頻率值的相對(duì)誤差仍在10-6范圍內(nèi), 能夠?qū)崿F(xiàn)等精度測(cè)量頻率.
本文對(duì)小信號(hào)頻率的測(cè)量做了優(yōu)化, 設(shè)計(jì)了基于FPGA和Nios II軟核處理器的寬頻小信號(hào)等精度測(cè)頻系統(tǒng). 對(duì)不同幅值、 不同頻率的待測(cè)信號(hào)進(jìn)行了測(cè)量, 并對(duì)測(cè)量數(shù)據(jù)進(jìn)行了分析, 結(jié)果表明, 系統(tǒng)能夠精確的測(cè)量電壓幅值最小為10 mV 的小信號(hào)的頻率, 測(cè)量結(jié)果的相對(duì)誤差為10-6. 頻率計(jì)使用FPGA作為核心主控, 由邏輯電路完成多路頻率測(cè)量等并行任務(wù), 由Nios II軟核處理器完成LCD驅(qū)動(dòng)顯示等人機(jī)交互工作, 充分發(fā)揮了邏輯電路和軟核處理器優(yōu)勢(shì)互補(bǔ)的特點(diǎn), 提高了開發(fā)效率, 降低了硬件電路的復(fù)雜性, 本系統(tǒng)在便攜式頻率測(cè)量方面具有實(shí)際應(yīng)用價(jià)值.