本發明屬于校準技術,具體涉及一種基于fpga實現的觸發電平自動校準方法。
背景技術:
信號觸發功能是數據采集領域的一個重要功能,其在信號采集的精準定位、信號數據的準確分析、信號波形的穩定顯示等方面扮演重要角色。而觸發信號的靈敏實現中,電壓比較電路是其主要功能環節,電壓比較器的穩定性、靈敏性直接關系到整形后觸發信號質量的好壞。因通常的輸入信號大多為正弦信號,其信號上升沿、下降沿較為平緩,不利于fpga等數字信號處理器件進行信號的識別判別,所以,輸入信號需先經電壓比較電路進行觸發信號的方波整形處理,然后再輸送到fpga或其他處理單元進行觸發信號的識別處理。方波信號具備快速的信號上升和滾降特性,fpga等處理器件能夠靈敏的識別處理。圖1為電壓比較器在觸發應用中的工作原理。
如圖1所示,正弦波輸入信號在經與直流比較電壓信號在電壓比較器中比較處理后,輸出方波整形信號,對于輸入信號中大于直流比較電壓的信號段,經電壓比較器輸出后輸出為高電平,對于輸入信號中小于等于直流比較電壓的信號段,經電壓比較器輸出后輸出為低電平。當直流比較電壓在輸入信號幅值范圍內時,輸出一個正脈寬和負脈寬占比一定的方波信號;當直流比較電壓低于輸入信號幅值最小值時,比較輸出只有高電平;當直流比較電壓高于輸入信號幅值最大值時,比較輸出只有低電平。
在正常信號觸發的使用應用中,系統初始化狀態下一般要默認為觸發電平在輸入信號幅值的中心位置處,也即電壓比較器輸出為正脈寬和負脈寬接近相等的方波信號,所以對于比較電壓,在初始化時是一個固定值。而在通常的設計實現過程中,我們通過數模轉換器dac來實現直流比較電壓的設置,dac通過fpga等可編程邏輯器件進行電壓數字編碼的設置,輸出一定幅值的直流信號,所以對于初始直流比較電壓而言,需要在fpga中預置一個初始電壓數字編碼,以完成直流電壓的初始化生成。在通過電壓比較器進行觸發信號的產生、調試過程中,如圖2所示,其一般的確定方法為:通過信號源產生想要的輸入波形信號,在電壓比較器的輸出端,在測試探點處通過示波器進行觸發信號的觀測,通過fpga進行dac直流電壓設置的控制,改變dac直流設置,產生不同的直流電壓,觀測示波器觸發信號改變的情況,不斷的調節dac設置從而確定相對輸入信號的觸發電平中心位置值。
觸發電平的以上測試確定方法雖然能夠滿足大部分的使用應用情況,但卻存在以下缺點,通過人為觀測的方式確定觸發電平,存在人為因素觀測誤差,且可能不同的人有不同的略小差別結果,存在人為操作偏差,無法避免。對于已經調試好的電路在產品中封裝好后,無法再次進行調試,當由于產品的使用存在電路老化等產生比較電路電壓偏差時,無法直接進行人為再測試、再修正。對于不同的工作環境,可能存在電源電壓偏差問題,無法直接進行測試修正。對于輸入信號中存在直流分量的情況,封裝產品也無法直接進行人為測試修改。也即,對于產品一旦封裝好,觸發部分觸發電平的修正修改將不再能夠通過以上測試方法進行,如存在以上誤差情況,將不能得到及時的改進處理,有可能致使觸發工作存在一定的偏差或發生錯誤。
技術實現要素:
針對現有技術中存在的上述技術問題,本發明提出了一種基于fpga實現的觸發電平自動校準方法,設計合理,克服了現有技術的不足,具有良好的效果。
為了實現上述目的,本發明采用如下技術方案:
一種基于fpga實現的觸發電平自動校準方法,包括如下步驟:
步驟1:對于給定的觸發系統,根據測試準確性要求,設同步計數時鐘頻率為h1,輸入被測信號頻率為h2,根據同步計數時鐘頻率h1推算出被測信號一個信號周期的計數值為num,采用同步計數時鐘h1計數一個整形后方波信號正脈寬的計數值為np、負脈寬的計數值為nn,設cpu中dac的初始序列值為x1,設fpga中dac漸進步進為δx,設np為0,nn為0,cpu通過總線在fpga中設置dac輸出直流信號的序列值x為x1,然后進入步驟2;
步驟2:fpga依序列值x設置dac輸出直流信號,通過同步計數時鐘h1對輸入fpga中的整形觸發信號進行計數操作預判斷;
若:判斷結果是輸入整形觸發信號在持續的高電平邏輯‘1’狀態下計數值np≥num,則停止計數,進入步驟3;
或判斷結果是輸入整形觸發信號在持續的低電平邏輯‘0’狀態下計數值nn≥num,則停止計數,進入步驟4;
或判斷結果是計數過程中監測到輸入整形觸發信號由低電平邏輯‘0’到高電平邏輯‘1’的狀態轉變,則設np為0,nn為0,進入步驟5;
步驟3:將dac直流信號序列值x遞增δx,即x=x+δx;設np為0,nn為0,返回步驟2;
步驟4:將dac直流信號序列值x遞減δx,即x=x-δx;設np為0,nn為0,返回步驟2;
步驟5:以同步計數時鐘h1持續計數np,直到監測到輸入整形觸發信號由高電平邏輯‘1’到低電平邏輯‘0’的狀態轉變,則停止np計數,進入步驟6;
步驟6:以同步計數時鐘h1持續計數nn,直到監測到輸入整形觸發信號由低電平邏輯‘0’到高電平邏輯‘1’的狀態轉變,則停止nn計數,進入步驟7;
步驟7:對于預置的理論計數差值ny以及計數允許偏差值nc,如果滿足|np-nn-ny|≤nc,則進入步驟9;否則進入步驟8;
步驟8:如果np-nn-ny<0,則將dac直流信號序列值x遞減δx,即x=x-δx,否則將dac直流信號序列值x遞增δx,即x=x+δx;設np為0,nn為0,返回步驟2;
步驟9:fpga將x定為滿足ny和nc的最佳序列,同時總線中斷通知cpu,cpu響應中斷,并讀取fpga中的x值,作為之后的信號觸發dac初始序列值x1的基準值,校準過程完成。
優選地,在步驟1中,所述測試準確性要求,是指輸入被測信號的頻率h2小于或者等于同步計數時鐘頻率h1的十分之一。
優選地,在步驟1中,所述推算出的被測信號一個信號周期的計數值num為:
優選地,在步驟5中,以同步計數時鐘h1持續計數np的方法為:在h1時鐘的上升沿時,且當輸入整形觸發信號為高電平邏輯‘1’時,np=np+1;在步驟6中,以同步計數時鐘h1持續計數nn的方法為:在h1時鐘的上升沿時,且當輸入整形觸發信號為低電平邏輯‘0’時,nn=nn+1。
優選地,在步驟7中,所述的理論計數差值ny以及計數允許偏差nc是通過cpu在fpga中設置的基準判別值,其中,理論計數差值ny的確定方法為:
優選地,在步驟1中,所述dac漸進步進δx應為大于0,且小于dac滿量程范圍十分之一的正整數。
本發明所帶來的有益技術效果:
本發明方法通過軟硬件對工作環節的有機分解、協調運行,使整個處理過程融合一體,不但大大提高了測試的速度和準確性,還避免了人為觀測方式的觀測誤差和操作偏差。同時,對于已封裝好的產品,有效克服了人為觀測方法不能進行再調試、再修正的缺陷,解決了因使用環境差異、產品老化退化、注入信號差異等引起觸發基準電平偏差而再校準的問題,使得存在誤差情況時能夠得到及時的修正處理,從而避免測試誤差情況的發生;本方法自動判別的處理方式,也在一定程度上減少了人力測試資源的投入,降了成本提高了效率。
附圖說明
圖1為電壓比較器工作原理圖。
圖2為觸發信號調試工作原理圖。
具體實施方式
下面結合附圖以及具體實施方式對本發明作進一步詳細說明:
本發明方法的基本原理是:通過電壓比較電路將輸入的正弦波信號整形處理成方波信號,然后在fpga中進行方波信號正脈寬和負脈寬計數,并進行計數判別處理,以及dac觸發比較電路比較電平的判別調節,最終確定適合要求的觸發電平值,通過上位機cpu進行保存及再使用。
因fpga在做本地接口總線通訊時常用50mhz時鐘來同步數據傳輸,所以本校準方法也使用50mhz時鐘來進行自動校準的邏輯同步,如圖2所示,我們采用50mhz時鐘來計數一個方波信號正脈寬的計數個數np和負脈寬的計數個數nn,當每周期內np和nn計數的個數越多,則自動校準方法實現測量的結果越準確,為了測試結果的準確性,這里要求輸入信號的頻率不大于同步時鐘的十分之一,也即5mhz。當然,50mhz同步時鐘只是本示例的一個個例,對于本發明算法,只要在fpga硬件器件允許的最大時鐘范圍內,均滿足算法要求,并不受限于50mhz。
對于輸入的被測信號,因已知計數時鐘為50mhz,所以可以首先推算出被測信號一個信號周期的大致計數值num,當實現一個觸發的初始化狀態時,上位機cpu首先通過總線預置周期估值num、dac初始序列x和漸進步進δx,dac會產生一個相應直流信號,并與輸入信號經電壓比較器進行比較輸出,當持續計數值np大于等于num時,說明dac輸出的直流電壓信號低于輸入信號幅值最小值,fpga停止計數并np、nn清零,將初始化序列x遞增δx,經dac轉換后得到新的直流比較電壓,然后再進行新一輪的np、nn計數。記下每次的np、nn、x值,直到np與nn之差由大變小,再到增大時,取np與nn之差最小的那次x序列值即可作為自動校準的信號中值觸發電平值。
當然,當第一次測試到持續計數的nn大于等于num時,說明dac輸出的直流電壓信號高于輸入信號幅值最大值,此時將初始化序列x遞減δx處理,并經dac轉換后得到新的直流比較電壓,然后再進行新一輪的np、nn計數。記下每次的np、nn、x值,直到np與nn之差由大變小,再到增大時,取np與nn之差最小的那次x序列值即可作為自動校準的信號中值觸發電平值。
當然,當第一次測試得到np、nn都不等于零時,如np大于nn,則將初始化序列x遞增δx處理,如np小于nn,則將初始化序列x遞減δx處理,進行新一輪的np、nn計數。記下每次的np、nn、x值,直到np與nn之差由大變小,再到增大時,取np與nn之差最小的那次x序列值即可作為自動校準的信號中值觸發電平值。
在本實施例中,求取的是中值觸發電平值,即整形觸發信號的正脈寬占空比α為50%的情況,也即計數差值ny為0的情況。對于實際的其他應用情況,根據具體工作要求,α可取不同的百分比。而對于取np與nn之差最小的那次x序列值的判別,可根據具體的計數允許偏差值nc的給予進行判別。ny和nc的取值可依具體設計要求進行相應的更改,以達到獲取最佳觸發電平狀態的效果。
當fpga獲取最佳序列x后,可中斷通知上位機cpu,cpu響應中斷,并讀取fpga中的x值,作為之后的信號中值觸發電平值,以便在后續使用。該自動校準過程可由上位機控制,隨需要進行觸發電平中值校準處理,可節省大量的人為測試工作量,也減少了人為誤差。況且,能夠在產品封裝完好的情況下進行,避免了之前使用示波器點測的諸多不便因素。可隨著使用環境的不同隨時進行自動校準處理,避免了很多因環境因素造成的不穩定性因素或測試誤差。每次自動校準后,初始化序列x可保存于cpu的硬盤中,以便下次再調用使用。當然,也可將保存的x作為下次自動校準處理的預設值,這樣只需測量出偏差即可,進行循環測試的次數還少,可節省大量自動校準時間。
當然,上述說明并非是對本發明的限制,本發明也并不僅限于上述舉例,本技術領域的技術人員在本發明的實質范圍內所做出的變化、改型、添加或替換,也應屬于本發明的保護范圍。