頻率計參考論文_第1頁
頻率計參考論文_第2頁
頻率計參考論文_第3頁
頻率計參考論文_第4頁
頻率計參考論文_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1.2 電子測量儀器現狀1.2.1 頻率計的發展現狀在電子測量領域中,頻率測量的精確度是最高的,可達1010E-13數量級。因此,在生產過程中許多物理量,例如溫度、壓力、流量、液位、PH值、振動、位移、速度、加速度,乃至各種氣體的百分比成分等均用傳感器轉換成信號頻率,然后用數字頻率計來測量,以提高精確度。目前最主要的方法是基于單片機和FPGA或CPLD利用EDA技術設計實現等精度頻率測量,這使設計過程大大簡化,縮短了開發周期,減小了電路系統的體積,同時也有利于保證頻率計較高的精度和較好的可靠性。而實現等精度的算法主要是,在計數法和測周期法基礎上發展起來的新型等精度頻率測量算法,主要原理是預置閘

2、門信號頻率時隨著被測信號頻率的改變而改變,從而實現了等進度的測量。1.4 FPGA簡介1.4.1 FPGA概述FPGA是現場可編程門陣列(Field Programmable Gate Array)的簡稱,與之相應的CPLD是復雜可編程邏輯器件(Complex Programmable Logic Device)的簡稱,兩者的功能基本相同,只是實現原理略有不同,所以有時可以忽略這兩者的區別,統稱為可編程邏輯器件或CPLD/PGFA。CPLD/PGFA幾乎能完成任何數字器件的功能,上至高性能CPU,下至簡單的74電路。它如同一張白紙或是一堆積木,工程師可以通過傳統的原理圖輸入或硬件描述語言自由的

3、設計一個數字系統。通過軟件仿真可以事先驗證設計的正確性,在PCB完成以后,利用CPLD/FPGA的在線修改功能,隨時修改設計而不必改動硬件電路。使用CPLA/FPGA開發數字電路,可以大大縮短設計時間,減少PCB面積,提高系統的可靠性。這些優點使得CPLA/FPGA技術在20世紀90年代以后得到飛速的發展,同時也大大推動了EDA軟件和硬件描述語言HDL的進步6。1.4.2 FPGA的發展現狀先進的ASIC生產工藝已經被用于FPGA的生產,越來越豐富的處理器內核被嵌入到高端的FPGA芯片中,基于FPGA的開發成為一項系統級設計工程。隨著半導體制造工藝的不斷提高,FPGA 的集成度將不斷提高,制造

4、成本將不斷降低,其作為替代ASIC 來實現電子系統的前景將日趨光明。隨著EDA 技術在全球范圍內的飛速發展,業界都在翹首以待基于Linux 環境的EDA 技術成為電路設計領域的主流。首先,由于Linux 費用很低,源代碼開放,這使得EDA 軟件的前期開發費用很低,而且運行維護的成本也很低,同時大大方便了工程師的設計工作。而Linux 工作站的費用也要比Unix 工作站便宜很多。此外,Linux的成本大約是Unix以及Windows 的1/151/10,但是效能并不比后者差,甚至運行速度要更快一些。現在業界普遍的看法就是預計在未來的5年內,Linux 將成為EDA 的主角。可以預見,Linux

5、的普及只是時間問題11。另一方面,隨著現場可編程邏輯器件越來越高的集成度,加上對不斷出現的I/O標準、嵌入功能、高級時鐘管理的支持,使得設計人員開始利用現場可編程邏輯器件來進行系統級的片上設計。Altera公司目前正積極倡導SOPC(System On a Progrmmable Chip,系統可編程芯片)。“片上可編程系統”(SOPC)得到迅速發展,主要有以下幾個原因:1)密度在100萬門以上的現場可編程邏輯芯片已經面市;2)第4代現場可編程邏輯器件的開發工具已經成形,可對數量更多的門電路進行更快速的分析和編譯,并可使多名設計人員以項目組的方式同步工作; 3)知識產權(IP)得到重視,越來越

6、多的設計人員以“設計重用”的方式對現有軟件代碼加以充分利用,從而提高他們的設計效率并縮短上市時間。Altera公司為了實現SOPC的設計,不僅研制開發出新器件,而且還研制出新的開發工具對這些新器件提供支持,并且與新芯片及軟件相配合的是帶知識產權的系統級設計模塊解決方案,它們的參數可由用戶自己定義。芯片、軟件及知識產權功能集構成了Altera完整的可編程解決SOPC方案Excalibur解決方案,如圖1-1給出了利用這一方案實現SOPC的流程圖12。2 頻率計的原理和設計2.1 頻率計的測頻原理2.1.1 等精度測頻法傳統的測頻方法有直接測頻法和測周法,在一定的閘門時間內計數,門控信號和被測信號

7、不同步,計數值會產生一個脈沖的誤差。等精度測頻法采用門控信號和被測信號同步,消除對被測信號計數產生的一個脈沖的誤差。等精度頻率測量方法消除了量化誤差,可以在整個測試頻段內保持高精度不變,其精度不會因被測信號頻率的高低而發生變化。利用FPGA強大的邏輯處理功能使被測信號和標準信號在閘門時間內同步測量,為了提高精度,將電子計數功能轉為測周期,采用多周期同步測量技術,實現等精度測量。在測量過程中分別對被測信號和標準信號同時計數。測量的具體方法是:首先給出閘門開啟信號(預置閘門信號),此時計數器并不開始計數,而是等被測信號的上升沿到來時計數器才開始計數,然后預置閘門信號關閉信號(下降沿),計數器并不立

8、即停止計數,而是等到被測信號上升沿來到時才停止計數,完成一次測量過程,過程如圖2-1所示。圖2-1 等精度測頻原理Fig.2-1 Principle of equal precision frequency measuring預置閘門信號和實際閘門信號不相等,但兩者差值不會相差被測信號的一個周期。但從圖2-1中可得實際閘門控制信號與被測信號同步,因此消除了的脈沖誤差,并且此測頻方法不僅對被測信號進行計數,而且去標準信號也計數,所以稱為多周期同步測頻法。2.1.2 等精度測頻誤差分析計數器對標準信號的計數是,被測信號的計數是,標準信號的頻率為,被測信號的頻率: (2-1)由式(2-1)可知,若忽

9、略標頻的誤差,則等精度測頻可能產生的相對誤差為: (2-2)其中為被測信號頻率的準確值。在測量中,由于計數的起停時間都是由該信號的上升測觸發的,無字誤差。而對的計數最多相差一個數的誤差,即,其測量頻率為: (2-3)將式(2-1)和(2-2)代入式(2-3),并整理得: (2-4)從公式(2-4)可以看出等精度算法產生的誤差和被測信號的頻率無關,僅與閘門時間和標準信號頻率有關,從而實現整個頻率段的等精度測量。2.2 等精度頻率計的Verilog實現等精度頻率計的結構圖如圖2-2所示。等精度頻率計總共分為4個部分:32位的乘法器、32位的除法器、根據輸入信號產生預置閘門信號模塊和計算頻率值模塊。

10、首先是根據輸入信號產生預置閘門信號,再根據預置閘門信號產生實際閘門信號;在實際閘門信號的控制下分別對基準100MHz方波信號和輸入信號計數,在實際閘門信號的結束時停止計數并將計數值鎖存到寄存器,根據式(2-1)調用32位的乘法器和32位的除法器計算頻率值。圖2-2 等精度頻率計結構圖Fig.2-2 Equal precision frequency meter structure2.2.1預置閘門信號產生模塊根據輸入信號產生預置閘門信號模塊的實現方法是:首先對輸入信號計數,當計數值在3到9之間時產生預置閘門信號。目的是舍去前3個輸入信號再產生預置閘門信號,防止輸入信號剛接入系統時不穩定對測量結

11、果產生影響。預置閘門信號的周期是輸入信號周期的5倍。下面給出產生預置閘門信號模塊的Verilog代碼。/*根據輸入信號產生門信號*/module Suit_Freq(input rst_n,/復位信號input in_signal,/輸入信號output reg pre_gate/預置閘門信號);/*對輸入信號計數*/reg7:0 cnt_in_signal;/計數器always(posedge in_signal or negedge rst_n)beginif(!rst_n)cnt_in_signal<=8'd0;else if(cnt_in_signal>9)cnt_

12、in_signal<=8'd0;elsecnt_in_signal<=cnt_in_signal+1'b1;end/*根據輸入信號產生預置閘門信號丟掉輸入信號前4個脈沖*/always(posedge in_signal or negedge rst_n)beginif(!rst_n)pre_gate<=1'b0;else if(cnt_in_signal>3)&&(cnt_in_signal<9)pre_gate<=1'b1;elsepre_gate<=1'b0;endendmodule產生預置

13、閘門信號模塊的功能仿真波形如圖2-3所示,rst_n是復位信號,in_signal是輸入信號,pre_gate是根據in_signal產生的預置閘門信號。由仿真波形可見pre_gate的周期是in_signal的5倍。圖2-3 預置閘門信號模塊仿真波形Fig.2-3 Preset gate signal module simulation waveform2.2.2 32位乘法器模塊32位乘法器模塊的實現方法是:根據二進制乘法的原理,從乘數的最低位開始判斷,如果乘數位為0則輸出32位寄存器左移一位;如果乘數位為1則暫存64位寄存器的高32位加上被乘數再左移一位,直到計算完畢最后將暫存64位寄存

14、器的低32位輸出7。例如十進制數3乘以5結果為十進制的15,其相應的二進制數乘法為0011乘以0101,二進制乘法過程為:從乘數0101的最低位開始判斷,0101的最低位為1,則輸出寄存器加上被乘數0011再左移一位為00011000;接著判斷乘數的第二位為0則輸出寄存器左移一位為00001100;然后判斷乘數的第三位為1,則輸出寄存器加上0011再左移一位為00011110;最后判斷乘數的最高位為0,則輸出寄存器左移一位為00011111結果為十進制的15和十進制的乘法得到的結果一致。32位乘法器的程序流圖如圖2-4所示。圖2-4 乘法器程序流圖Fig.2-4 Multiplier prog

15、ram flow diagram下面給出32位乘法器的Verilog代碼。/*乘法器32*32*/module multiplication(input clk,input rst_n,input start,/起始信號input31:0 ain,/乘數input31:0 bin,/被乘數output reg31:0 yout,/結果輸出output reg done/計算完成標志);parameter BW=32;parameter _2BW=64;/*產生計算完成信號*/always (posedge clk or negedge rst_n)if(!rst_n) done<=1&#

16、39;b0;else if(i=BW) done<=1'b1;else if(i5) done<=1'b0;/*計算*/reg5:0 i;regBW-1:0 areg;/regBW-1:0 breg;/reg_2BW-1:0 yout_r;always (posedge clk or negedge rst_n)beginif(!rst_n)beginareg <=0;breg <=0;yout_r <=64'd0;i<=6'd0;endelse if(start) beginif(i>6'd0 &&am

17、p; i<=BW)/修改此處的位寬beginif(aregi-1) yout_r <= 1'b0,yout_r_2BW-1:BW+breg,yout_rBW-1:1;else beginyout_r <= yout_r>>1;endendelse if(i=BW+1)beginyout<=yout_rBW-1:0;areg<=ain;breg<=bin;yout_r<=64'd0;i<=0;endi<=i+1'b1;endendendmodule32位乘法器的時序仿真波形如圖2-5所示,第一個信號是100

18、MHz的系統時鐘clk。第二個信號是復位信號rst_n。第三個信號是乘數ain。第四個信號是被乘數bin。第五個信號是開啟計算信號start,高電平有效。第六個信號是計算完成標志信號done,done的上升沿標志著計算完畢。第七個信號是計算結果yout,每個計算過程需要32個時鐘周期。由圖2-5可見當ain=100000000,bin=5時計算結果yout=500000000,當ain=6,bin=7時計算結果yout=42。圖2-5 乘法器仿真波形Fig.2-5 Multiplier simulation waveform2.2.3 32位除法器模塊32位除法器模塊的實現方法是:將32位的被

19、除數和除數分別放在兩個64位的暫存寄存器temp_a的低32位和temp_b的高32位。然后對temp_a每左移1位就將其高32位和temp_b的高32位比較,如果前者大于或等于后者則temp_a=temp_a-tempb+1;如果前者小于后者則temp_a不變。直到temp_a向左移完32位,取出temp_a的低32位即為商,temp_a的高32位即為余數。例如兩個4位的十進制數7除以3,結果為商2余1。其相應的二進制除法過程為:0111和0011分別放在兩個8位的暫存寄存器temp_a的低4位和temp_b的高4位,即temp_a=00000111和temp_b=00110000。然后te

20、mp_a左移一位為00001110,將其高4位0000與temp_b的高4位0011進行比較,因為前者小于后者,所以temp_a不變;繼續將temp_a左移一位為00011100,因為0001小于0011,所以temp_a=00011100;繼續將temp_a左移一位為001110,因為0011等于0011,所以temp_a=temp_a-temp_b+1=00111000-00110000+1=00001001;再將temp_a左移一位為00010010,因為0001小于0011,所以temp_a=00010010,temp_a已經向左移完4位,所以取出temp_a的低4位0010即為商2,

21、temp_a的高4位0001即為余數1。與十進制除法的結果一致。32位除法器的程序流圖如圖2-6。下面給出32位除法器的Verilog代碼。/*32/32除法器*/module Diviser ( input clk, input rst_n, input31:0 a, /被除數input31:0 b, /除數output reg 31:0 result, /商output reg 31:0 remainder,/余數 output reg calc_done /計算完成標志,高脈沖);parameter BW=32;parameter _2BW=64;regBW-1:0 tempa; reg

22、BW-1:0 tempb; reg_2BW-1:0 temp_a; reg_2BW-1:0 temp_b; reg 5:0 counter; /*鎖存輸入值 */always (a or b) begin tempa <= a; tempb <= b; end 圖2-6 除法器的程序流圖Fig.2-6 Program flow diagram of the divider/*鎖存輸入值*/always (posedge clk or negedge rst_n) if(!rst_n) begin temp_a <= 32'd0; /修改此處的位寬temp_b <

23、= 32'd0; /修改此處的位寬calc_done <= 1'b0; end else if(counter > BW-1) begin counter <=6'd0; calc_done <= 1'b1; result <= temp_aBW-1:0; remainder = temp_a_2BW-1:BW;temp_a = 32'h0,a; /修改此處的位寬temp_b = b,32'h0; /修改此處的位寬end else begin temp_a=temp_a_2BW-2:0,1'b0;if(tem

24、p_a_2BW-1:BW >= temp_b_2BW-1:BW) temp_a <= temp_a - temp_b + 1'b1; else temp_a <= temp_a; counter <= counter + 1'b1; calc_done <= 1'b0; end endmodule32位除法器的時序仿真波形如圖2-7所示。第一個信號是100MHz的系統時鐘clk。第二個信號是復位信號rst_n。第三個信號是被除數a。第四個信號是除數b。第五個信號是計算完成標志信號calc_done,calc_done的上升沿標志著計算完畢。

25、第六個信號是商result,第七個信號是余數remainder,每個計算過程需要32個時鐘周期。由圖2-6可見,當a=56765,b=23443時,商result=2,余數remainder =9879;當a=10000,b=500時,商result=20,余數remainder=0;當a=12000,b=3890時,商result=3,余數remainder=330。圖2-7 除法器仿真波形Fig.2-7 Divider simulation waveform2.2.4 計算頻率值模塊計算頻率值模塊首先根據預置閘門信號產生實際閘門信號,然后在實際閘門信號的控制下分別對標準的100MHz的基準

26、信號和輸入信號計數,得到的計數值分別為count_standard和count_insignal。計算頻率模塊的程序流圖如圖2-8所示,相應的Verilog代碼詳見附錄E。頻率計的時序仿真如圖2-9所示,第一個信號是100MHz的系統時鐘clk。第二個信號是復位信號rst_n。第三個信號是預置門信號pre_gate。第四個信號是輸入的10000KHz的被測信號。第五個信號是實際閘門信號real_gate。第七個信號是鎖存信號latch_falg。第八個信號是對輸入信號的計數器count_insignal。第九個信號是對標準信號的計數器count_standard。第十個信號是鎖存輸入信號計數器

27、的鎖存器Nx。第十一個信號是鎖存標準信號計數器值得鎖存器Ns,第十二個信號是輸出頻率值frequency。由圖2-8可見,預置閘門信號pre_gate控制產生實際閘門信號real_gate,在實際閘門信號real_gate的上升沿到來時,開啟對輸入信號和對標準信號的計數,當實際閘門信號的下降沿到來時產生一個高脈沖的鎖存信號latch_falg,在latch_falg的控制下將count_insignal和count_standard的計數值分別所存在Nx和Ns里用于頻率計算,鎖存完值后,并將count_insignal和count_standard清零。圖2-8 計算頻率值代碼流圖Fig.2-8 Frequency calculation flow diagram圖2-9 頻率計時序仿真Fig.2-9 The timing sequence simulation frequency為了能夠在SOPC Builder里面將頻率計集成到可編程系統上,必須還要利用Avalon總線協議對其進行封裝。下面給出其封裝的代碼。/*畢業設計頻率計 Avalon封裝*/module Freq_Count_Avalon

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論