【正文】
計(jì)簡(jiǎn)單的計(jì)算得到待測(cè)信號(hào)的頻率,并顯示之。use 。 END PROCESS。139。ENTITY zhangfengying _Counters IS PORT( Sig_X_In : IN std_logic。 BEGIN IF(xhdl_initial)THEN CNTR1_CLK50M =00000000000000000000000000000000。 ELSE CNTR1_CLK50M = CNTR1_CLK50M+00000000000000000000000000000001。) AND (CPU_RD = 39。ENTITY _Test_Freq_Metor_Top IS PORT ( Sig_X_In : IN std_logic。 Test_Syn_Sec_Pulse = Test_Syn_Sec_Pulse_xhdl3。 CPU_RD : IN std_logic。 BEGIN IF (xhdl_initial) THEN CLK_50M = 39。 ELSE WAIT。 CPU_Addr = 39。 END PROCESS。139。 WHILE (TRUE) LOOP WAIT FOR 100 * xhdl_timescale。 SIGNAL Test_Asyn_Sec_Pulse : std_logic。ARCHITECTURE translated OF test IS CONSTANT xhdl_timescale : time := 1 ns。 SIGNAL Test_Asyn_Sec_Pulse_xhdl2: std_logic。library IEEE。139。)。 SIGNAL CNTR2_SigX : std_logic _vector(31 DOWNTO 0)。library IEEE。 SIGNAL Syn_Sec_Pulse_Out_xhdl1 : std_logic。 IF (t 00000010111110101111000010000000) THEN t = t + 00000000000000000000000000000001。 等精度測(cè)頻原理中為什么能實(shí)現(xiàn)“等精度”,這個(gè)“等精度”是相對(duì)于哪個(gè)信號(hào)而言的“等精度”?答:是相對(duì)于待測(cè)信號(hào)的等精度。計(jì)數(shù)器模塊:用來(lái)數(shù)出同步秒脈沖的時(shí)間內(nèi)CLK_50M震動(dòng)的次數(shù),比如說(shuō)N1,同時(shí)也可以數(shù)出同步秒脈沖時(shí)間內(nèi)待測(cè)信號(hào)的振動(dòng)次數(shù),比如說(shuō)N2,那么待測(cè)信號(hào)的頻率將會(huì)是:N2/N150000000。其工作過(guò)程是:?jiǎn)纹瑱C(jī)預(yù)置一定寬度(如1s)的閘門(mén)脈沖信號(hào),加至D觸發(fā)器以形成同步閘門(mén)信號(hào)T;被測(cè)信號(hào)頻率分兩路加入,一路加至D觸發(fā)器作為CP時(shí)鐘,和預(yù)置閘門(mén)一起作用,在Q端形成同步閘門(mén)[見(jiàn)圖22中T的波形],并分別加到主門(mén)1和主門(mén)2上,將主門(mén)2同時(shí)打開(kāi);這時(shí),被測(cè)頻率通過(guò)主門(mén)1進(jìn)入計(jì)數(shù)器1,對(duì)進(jìn)入的周期數(shù)進(jìn)行計(jì)數(shù),得計(jì)數(shù)值;同時(shí),晶振標(biāo)準(zhǔn)頻率通過(guò)主門(mén)2進(jìn)入計(jì)數(shù)器,得計(jì)數(shù)值,其波形如圖22所示,由圖可得:因此: 誤差分析 由以上工作過(guò)程和波形圖可以看出,對(duì)被測(cè)信號(hào)的計(jì)數(shù)是與閘門(mén)同步的,故不存在量化()誤差。 學(xué)習(xí)用仿真工具調(diào)試硬件模塊的方法以及用單片機(jī)訪問(wèn)FPGA的方法。顯示設(shè)備可由led或是12864等簡(jiǎn)單、便宜的顯示設(shè)備組成,通過(guò)CPU的控制把測(cè)得的數(shù)據(jù)(兩個(gè)計(jì)數(shù)其中的值或是被測(cè)信號(hào)的頻率)顯示出來(lái)。 3*、將Verilog代碼改寫(xiě)為VHDL的代碼。 SIGNAL reg_Asyn_Sec_Pulse : std_logic。use 。139。 CPU_Addr :IN std_logic。 END PROCESS。039。 ELSE reg_CPU_RD_Data = reg_SigX_N 。 CPU_RD_Data : OUT std_logic _vector(31 DOWNTO 0)。 Test_Syn_Sec_Pulse_xhdl3 = Syn_Sec_Pulse 。 END COMPONENT。 xhdl_initial := FALSE。039。 WAIT FOR 5000 * xhdl_timescale。$finish39。039。 END IF。 SIGNAL CLK_50M : std_logic。library IEEE。 Test_Syn_Sec_Pulse : OUT std_logic)。 ELSE