【正文】
以進行校準。(4)等精度測頻方法測量精度與預置門寬度和標準頻率有關,與被測信號的頻率無關。在預置門時間和常規(guī)測頻閘門時間相同而被測信號頻率不同的情況下,等精度測量法的測量精度在整個測量范圍內保持恒定不變,而常規(guī)的直接測頻法 (在低頻時用測周法,高頻時用測頻法),其精度會隨著被測信號頻率的下降而下降。 FPGA模塊邏輯設計本設計頻率測量方法的主要測量控制框圖如圖34所示。圖中預置門控信號GATE是由單片機發(fā)出,GATE的時間寬度對測頻精度影響較少,可以在較大的范圍內選擇,只要FPGA中32 位計數器在計40 M信號不溢出都行,但是由于單片機的數據處理能力限制,實際的時間寬度較少,一般可在10~,即在高頻段時,閘門時間較短;低頻時閘門時間較長。這樣閘門時間寬度Tc依據被測頻率的大小自動調整測頻,從而實現量程的自動轉換,擴大了測頻的量程范圍;實現了全范圍等精度測量,減少了低頻測量的誤差。圖34中Count1和Count2是2個可控的32 位高速計數器,EN是他們的計數允許信號端,高電平有效?;鶞暑l率信號從Count1的時鐘輸入端BCLK輸入,設其頻率為Fs;待測信號經前端放大、限幅和整形后,從與Count2相似的32 位計數器Count2的時鐘輸入端CLK輸入,測量頻率為Fx,START為計數結束標志位,當START由高電平變?yōu)榈碗娖綍r,計數結束。XUANZE是一個可控數據選擇器,當輸入(SS2,SS1,SS0)=0、3時輸出標準頻率計數器的值,當輸入(SS2,SS1,SS0)=7時輸出被測頻率計數器的計數值。圖44 等精度頻率計數框圖測量開始后,首先單片機發(fā)出一個清零信號CLR,使2個32 位的計數器和D觸發(fā)器置0,然后單片機再發(fā)出允許測頻命令,即使預置門控信號GATE為高電平,這時D觸發(fā)器要一直等到被測信號的上升沿通過時,Q端才被置1,即使兩個EN同時為1,將啟動兩個計算器,系統(tǒng)進入計算允許周期。這時,計數器Count2和Count1分別對被測信號和標準頻率信號同時計數。當Tpr秒過后,預置門控信號被單片機置為低電平,但此時2個32 位的計數器仍然沒有停止計數,一直等到隨后而至的被測信號的上升沿到來時,才通過D觸發(fā)器將這2個計數器同時關閉。設在某一次預置門控時間Tpr中對被測信號計數值為Nx,對標準頻率信號的計數值為Nb,則根據閘門時間相等,可得出公式(1): Fx/Nx=Fs/Ns則:Fx=(Fs/Ns)*Nx本設計采用Xilinx公司Spartan_3S200AN FPGA, 應用標準化的硬件描述語言VHDL有非常豐富的數據類型,他的結構模型是層次化的,利用這些豐富的數據類型和層次化的結構模型,對復雜的數字系統(tǒng)進行邏輯設計,逐步完善后進行自動綜合生成符合要求的、在電路結構上可實現的數字邏輯,再下載到可編程邏輯器件中,即可完成計數器的設計任務。下面是本次設計的VHDL描述源程序:library IEEE。use 。use 。use 。entity PLG is Port ( BCLK : in STD_LOGIC。 標準頻率時鐘信號 CLK : in STD_LOGIC。 待測頻率時鐘信號 CLR : in STD_LOGIC。 清零和初始化信號GATE : in STD_LOGIC。 預置門控制信號 SS : in STD_LOGIC_VECTOR (2 downto 0)。 數據輸出控制START : out STD_LOGIC。 結束標志DATA : out STD_LOGIC_VECTOR (7 downto 0))。 數據輸出end PLJ。 architecture Behavioral of PLJ is Signal BJSQ :STD_LOGIC_VECTOR (31 downto 0)。 Signal JSQ :STD_LOGIC_VECTOR (31 downto 0)。 Signal EN: STD_LOGIC。begin START = EN 。 DATA = BJSQ(7 downto 0)when SS=000 else BJSQ(15 downto 8)when SS=001 else BJSQ(23 downto 16)when SS=010 else BJSQ(31 downto 24)when SS=011 else JSQ(7 downto 0)when SS=100 else JSQ(15 downto 8)when SS=101 else JSQ(23 downto 16)when SS=110 else JSQ(31 downto 24)。 BZN: process (BCLK,CLR,EN) begin if CLR=39。139。 then JSQ = (others = 39。039。)。 elsif CLK39。event and CLK=39。139。 then if EN=39。139。 then BJSQ = BJSQ+1。 end if。 end if。 end process。 ZN: process (CLK,CLR,EN) begin if CLR=39。139。 then JSQ = (others = 39。039。)。 elsif CLK39。event and CLK=39。139。 then if EN =39。139。 then JSQ = JSQ+1。 end if。 end if。 end process。 process(CLK ,CLR) begin if CLR=39。139。 then EN =39。039。 elsif CLK39。event and CLK=39。139。 then EN=GATE。 end if。 end process。end Behavioral。 單片機的匯編語言編程圖41表示單片機主程序流程圖。各種測試功能流程如下:系統(tǒng)初始化后,主程序不斷查詢鍵盤,當開始鍵按下后,程序轉到測頻子程序執(zhí)行測頻功能。那么讀入開始鍵之后馬上跳轉到測頻子程序,測頻子程序先置測頻控制位CLR(),將FPGA內的計數器清零,然后通過健盤將預置門的時間值讀入單片機,打開預置門進行測頻計數,等預置門時間到后,關斷預置門,CFPGA關斷預置門后將給單片機一個結束信號,單片機讀到結束信號后,通過置 [SS2,SS1,SS0」的八個狀態(tài),分八次將測頻結果的64位數據讀入單片機,空閑狀態(tài)程序始終掃描鍵盤,等待輸入,并在LED上顯示CPUREADY的字樣,執(zhí)行完某一功能后程序又會回到鍵盤掃描狀態(tài)上來。主程序流程圖:開始初始化存預置門時間調測頻子程序調顯示子程序 結束是是否否否是