低頻數字相位測量儀_第1頁
低頻數字相位測量儀_第2頁
低頻數字相位測量儀_第3頁
低頻數字相位測量儀_第4頁
低頻數字相位測量儀_第5頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、個人收集整理僅供參考學習、設計任務和技術要求1.1設計內容設計制作一個低頻數字相位測量儀,要求使用單片機和 FPGA來共同實現,FPGA完成測量時間差,而單片機完成數據的讀取、鍵盤控制和顯示等功能。1.2設計要求1)2)3)4)5)6)7)8)頻率范圍:20Hz20kHz。lOOkQ。相位測量儀的輸入阻抗:仝允許兩路輸入正弦信號峰峰值可分別在 15V變化。相位測量絕對誤差W 2°。 具有頻率測量及數字顯示功能。相位差數字顯示,分辨力為0.1主芯片:Altera 的 FLEX10K10。要求擴展鍵盤和顯示接口電路,可以進行鍵盤控制以及顯示等功能。二、系統設計方案2.1方案論證根據系統的

2、設計要求,本系統可分為三大基本組成部分:1. 數據采集電路數據采集電路主要是運用FP GA/C PLD采集兩個同頻待測正弦信號的頻率和相位差所對應的時間差。2. 數據運算控制電路數據運算控制電路主要是運用單片機讀取FPGA/CPLD采集到的數據,并根據這些數據計算待測正弦信號的頻率及兩路同頻正弦信號之間的相位差。3. 數據顯示電路數據顯示電路是通過功能鍵切換用LCD液晶模塊顯示出待測信號的頻率和相位差。4. 整形電路由于FPGA對脈沖信號比較敏感,而被測信號是周期相同、相位不同的兩路正弦波信號, 為了準確地測出兩路正弦波信號的相位差及其頻率,我們需要對輸入波形進行整形,使正弦 波變成方波信號,

3、并輸入FPGA進行處理。2.1所示。整個系統的總體原理框圖如圖21圖2.1系統原理框圖2.2程序設計框圖圖22程序設計流程圖三、硬件電路圖的設計與分析3.1 FPGA數據采集電路圖3.1數據采集電路FPGA數據采集電路的功能就是實現將待測正弦信號的周期、相位差變為19位的數字量。根據系統的總體設計方案,FPGA數據采集電路的輸入輸出信號有:CLK 系統工作時鐘信號輸入端;A, B兩路被測信號輸入端;EN 單片機發出的傳送數據使能信號;RSEL 單片機發出的傳送數據類型信號;DATA18.O FPGA到單片機的數據輸出口。FPGA數據采集電路測量正弦波信號頻率的原理是:在正弦波信號整形后得到的方

4、波信號的一個周期為T秒的數據采樣信號進行計數,其計數結果乘以1/T,就是被測正弦波信號的頻 率,單位為Hz。測量正弦波信號周期原理是:在正弦波信號整形后得到的方波信號的一個周期內對周期為T秒的數據采樣信號進行計數,其計數結果乘以T秒,就是被測正弦波信號的周期,單位為秒。測量兩個同頻正弦波信號的相位差,關鍵是要測出兩個同頻正弦波信號起點之間的時間差t,若 t測出,則根據護厶tx 360° /t即可求出相位差 0,因此其測量原理與測量正弦波信號 周期的原理相似。本設計采用20MHz的高頻晶體振蕩源,由 FPGA內部的分頻模塊對 20MHz信號進行二 分頻,得到10MHz的數據采樣信號,其

5、采樣周期為0.1US。為了實現中低頻測量精度的要求,我們可采用10MHz的信號來循環計數被測信號的周期和兩個同頻正弦波信號的相位差所對應的時間差值,時間單位為0.1US。也就是說,計數周期和相位差所對應的時間差值的精度是0.1US。利用被測信號來刷新采樣計數,在20Hz時,刷新頻率可以精確到10Hz, 20kHz時達到10kHz,可以實現高頻多測量,低頻少測量的效果,時間 計數精確可靠,為后面單片機的數據處理提供了穩定、可靠的數據源。3.2單片機數據運算控制單片機數據運算控制電路的功能就是負責讀取FPGA/CPLD采集到的數據,并根據這些數據計算待測正弦信號的頻率及同頻正弦信號之間的相位差,同

6、時通過功能鍵切換,顯示出待 測信號的頻率和相位差。為了達到系統所要求的精度,在計算時為了保證不丟失數據,我們采用了擴大數據倍數,定點取數的方法。在計算頻率?和相位差 0時,?和 0分別擴到了 10000000倍和10倍,即?=10000000/t, 0=360 X 10 XA t/t。然后定點取數值,在單片機完成的計算中,當t=Tmax=T20kHz, tf Tmax時,數據位數f 20位,因此采用了多字節乘法,保證了數據的計 算準確。單片機數據運算控制電路的軟件設計思路是,單片機不斷地從FPGA讀取信號的周期和b信號相位差所對應的時間差,讀取數據后進行有關計算,并通過轉換后,送出給顯示模塊,

7、 實現頻率和相位差的顯示。a、3.3數據顯示電路整個系統硬件電路中,顯示電路用 LCD液晶顯示,需要單片機提供三個控制管腳,分別 是P3.5, P3.6, P3.7。用兩個按鍵切換頻率和相位差數據,分別是 P1.6, P 1.7。其中按鍵部分 是用查詢去抖的方式完成,LCD顯示模塊運用串口方式,這樣節省了I/O 口,三個控制管腳分別控制忙碌狀態、串口片選、數據傳輸口。如圖3.2。18互IT互17wmriTQrquctrriEEi5;SftftS:a>S£sa(i* HJH-7RjmIMP10液晶顯示器>oTSE53»a圖3.2數據顯示電路四、程序設計與調試4.1

8、 FPGA采集電路設計FPGA數據采集電路可設計成五個模塊, 他們分別是:時鐘信號分頻模塊 FPQ,測量控制 信號發生模塊KZXH ,被測信號有關時間檢測模塊 SJJC,數據鎖存模塊SJSC和輸出選擇模塊 SCXZ,整個系統組成框圖如圖 4.1。1、 時鐘信號分頻模塊 FPQ的作用是:將輸入的20MHz的信號分頻成10MHz 時鐘信號CLKF。2、測量控制信號發生模塊 KZXH的作用是:根據兩路被測信號整形后的方波信號 和CLKBB,產生有關測控信號,包括時間檢測使能信號 ENA,時間檢測清零信號 存頻率數據控制信號 LOADA,鎖存兩路被測信號相位差數據控制信號的測控基準CLKAACLRA,

9、鎖CLB。3、 被測信號頻率和相位差數據檢測模塊SJJC的作用是:在控制信號ENA和CLRA的控制下,對測控基準時鐘信號CLKF進行計數和清零,以便獲取有關頻率和相位差數據。4、 數據鎖存模塊SJSC的作用是:在LOADA的上升沿將頻率數據鎖存在DATAA中,在CLB的下降沿時將相位差數據鎖存在DATAB中。EN和5、輸出選擇模塊 SCXZ的作用是:根據單片機發出的控制信號數據傳送使能信號 輸出數據類型選擇信號 RSEL,將被測信號頻率數據或相位差數據輸出。FPqy wmr'i i】vcc *'CLKCLKFIlAKZXW -ENfl:"W廠' VWHCLRf

10、l/WOT"-'wc -LOADACLB110 CLK CLKFSJJCGLRR DR1Sh.OENAOAi ie. 0DnTAAiie.0DRTHBle.eIL OftenCLBSJSCscxz0ATAn18. . ODflTBBElS. . O DHTnClS. . 01 .8 ''、DATA卩Sijj:1I1IRSEL 匚:13ENRSCLEM圖4.1 FPGA整個系統框圖4.2單片機程序設計單片機在獲取FPGA的數據時,開始的是一般的讀取指令MOV指令,從單片機的 P0,P2, P3 口分別讀入數劇,組合為一個19位的二進制數據,通過控制口線P1.6、

11、P1.7控制FPGA 釋放數據。經過多次測試,采用這種方式獲得了比較好的效果。單片機讀取FPGA數據的程序流程圖如4.2。單片機從FPGA讀取信息后,對信息進行計算,算出信號a的頻率,其流程圖如 4.3。由于a、b信號是兩路同頻不同相的正弦波信號,因此經過整形電路后形成頻率相同,時間上不重合的兩路信號,這樣,FPGA可以計數出兩路信號的時間差從而可以計算出a、b信4.4。號的相位差,其流程圖如圖4.2圖4.4圖4.3即單片機通過顯示子程序將信息送到顯示最后單片機需要將信號送到輸出端顯示出來, 電路顯示出來,程序流程圖如4.5圖4.54.3結果與分析1)FPGA數據采集電路波形仿真如圖4.6所示

12、I Ik IM Ti(n* M 26tft_4.0eh2iBVai vBGOul7 Outeout85u(B#-©< Clk ApeiA CLRA eg QB 匸 d«>(lQ 01 於 KlwiirTFMP d> cii mxtaa11/ m2 血 u 3«WA iV |l«ft 40* w fjc旳Q/ 細也ifM 0| a耐強1詛忖0& ic 5|DA o/鵲僭呂IDaT"1 MipWWWMMWMMMMWWMMWimWWlMlMMlMWMM D 1 I I II IIHOOOQA,HOOOQAuwumRmmuim

13、innnnmuuinmwnmmmmumfmmiQODOA00006OOOQA00006OODOAHCHHU!M 00099 iHOOXO HQODCD HOOOOiV : i:4t 5IQATAB MOODKOOtPft rows OOOQAmooA 1 ooms I mopA IEXP mnognrmz -1gm_ jmGGCDnmLqpg iC麗h jh0皿 nrinmnme 噸 irnoooEDpw cooQOQOooro Qgro sooosoooor innnnrinrinrifYYmrmryTdo 030000000 d* i «nTOooooor 皿1 oooosDOD

14、OSCGOOGDOKMX jBooo圖4.6 FPGA波形仿真圖分析:仿真波形的CLK的周期是0.25US, A、B信號的周期都是5us, CLK經過2分頻后, 在A、B的一個周期內對 CLK的方波脈沖計數應該是10,也就是16進制的0A。見圖中的DATAA恰好是0A,A、B信號是反相的,因此相位差計數應該是整個周期的一半,即圖中的 DATAB為5。RSEL、EN為使能控制信號,當 EN為高電平時才輸出數據,RSEL是控制輸出頻率和相位差數據的,當其為低電平時輸出頻率數據,為高電平時輸出相位差數據,見圖 中的DATA為最后的輸出信號。2)單片機部分。在本系統的設計中,為了達到系統所要求的精度,

15、必須保證數據計算處理時不丟失數據, 我們采用了擴大數據倍數,定點取數的方法,在計算頻率?和相位差 0時,?和 0分別擴大到了 10000000倍和10倍,即?=10000000/t, 0=360 X 10X t/t,然后定點取數值,在單 片機完成的計算中,當 t= Tmax= T20kHz , tTmax時,數據位數f 20位,因此采用了多字 節乘法,保證了數據的計算準確。3)測量結果如表4.3表4.3圖4.8數字式移相信號發生器電路圖序號A B實際頻率AB實際相位差測量頻率測量相位差120HZ180度20HZ179.5 度2200HZ180度198HZ177.0 度32000HZ90度199

16、5HZ88.6 度420000HZ90度19988HZ86.2 度分析:由于整形電路的存在,輸入的脈沖是高頻信號, 難免會產生誤差,但本系統用FPGA 采集數據,因此誤差不大。4)系統擴展思路本次設計可以添加一個數字式移相信號發生器,用以產生相位測量儀所需的輸入正弦信 號,這樣,輸出頻率可以預置。具體框圖如4.8五、總結FPGA進行數據低頻數字相位檢測儀是一個檢測低頻信號相位差和頻率的系統,主要用 采集,通過單片機的運算控制,最終在LCD液晶模塊上顯示結果。通過這次課程設計,我們收獲了許多。首先,我們對 FPGA有了更深的認識,在以前的課程設計中,我們主要采用人工布線的 方法進行電子電路設計,

17、這種方法不但麻煩,還容易出錯,一旦出現錯誤特別不容易檢查, 最后只好重新連線,浪費了很多時間。而通過這次用VHDL語言進行電路設計,不僅設計起來方便,而且通過波形仿真還可以驗證結果是否正確,以及檢查在哪出現錯誤。最后將程序 下載到一個芯片中就可以完成設計內容。因此使用起來特別方便。并且對一些高頻信號來說 誤差較小。其次,在對單片機控制程序的編寫我們采用了匯編語言,由于采集的數據比較大,對其 運算時用到了多字節乘除法,和BCD碼的轉換。其中,我們都采用子程序來編寫,這樣不但思路清晰,還有利于我們分工合作,節省了很多時間。不過程序代碼很長。我們發現如果用C語言編程會十分方便,因為許多運算的程序如果

18、用C編寫只需要一條語句,而用匯編卻用了一個很長的子程序。所以,通過這次試驗我們也體會到了C語言的方便之處,這也是我們將要學習的地方。最后,鍵盤和顯示部分,由于我們只用到兩個鍵,所以編程時采用查詢方式,十分簡單。 顯示模塊是液晶顯示,不僅可以顯示數字,還可以顯示符號和漢字,通過使用這個模塊,我 們又學到了一個新的模塊的用法,同時也增強了學習新東西的能力。這次實習,我們受益匪淺,并且對本專業更加喜歡,所以我們會在以后的學習中更加努 力,爭取學到更多的知識。參考文獻2004:248-265.1 譚會生-EDA技術綜合應用實例與分析西安電子科技大學出版社2 潘松-EDA技術實用教程第二版科學出版社-2

19、005: 293-298.附錄、程序清單1 .單片機程序DATA2H EQU 43HDATA3 EQU 44HDATA33 EQU 45HAD0EQU30HAD1EQU31HAD2EQU32HAD3EQU33HAD4EQU34HAD5EQU35HAD6EQU36HADAEQU4FHADBEQU5FHADCEQU4DHADEEQU5DHDSELBITP1.7DSNBITP 1.6KEY1BITP 3.3KEY2BITP 3.4EBIT P 3.7SIDBITP 3.6CSBITP 3.5ORG 4000HLJMP STARTORG 4100HSTART: LJMP MAINMAIN: NOPLC

20、ALLDU;從FPGA賣入頻率和相位差分別對應的數據LCALL ZHUN1;調用除法準備周期LCALLDIVVV;調用除法程序MOV32H,#0HMOV33H,4DHMOV34H,4EHMOV35H,4FH;32H,33H,34H,35H存放頻率數據,32H是高位LCALLBCDST;將頻率數據轉化為 BCD碼,便于顯示MOV67H,3DHMOV68H,3EH;頻率BCD碼存放在 67H,68H,69H中,67H疋高位MOV69H,3FHLCALL ZHUN2;調用乘法準備周期LCALLMULLL;調用乘法程序MOV4AH,5AHMOV4BH,5BHMOV4CH,5CHMOV4DH,5DHMO

21、V4EH,5EHMOV4FH,5FH;將進行乘法之后的數據暫存MOV5FH,DATALMOV5EH,DATAHMOV5DH,DATA3;再取頻率初始數據LCALLDIVVV;調用除法程序MOV32H,#0MOV33H,4DHMOV34H,4EHMOV35H,4FH;33H,34H,35H存放相位差數據 33H是高位LCALLBCDST;調用BCD碼轉換程序MOV70H,3EHMOV71H,3FH;相位差 BCD碼存放在70H,71H中,70H疋咼位K1:JNBKEY1,KK1K2:JNBKEY2,KK2LJMP MAINKK1:LCALL DELAYJNB KEY1,K11LJMP K2K11

22、:LCALL XIAN1LJMP K2KK2:LCALL DELAYJNB KEY2,KK3LJMP MAIN;鍵盤掃描,看兩個鍵是哪個鍵按下從而 切換頻率和相位差KK3:LCALL XIAN2LJMP MAINDU:CLR DEN;讀數據子程序CLRDSELSETBDENMOVA, POMOVDATAL,AMOVA, P2MOVDATAH,ASETBDS1MOVA, P3ANLA,#00000111BMOVDATA3,ACLRDENSETBDENSETBDSELMOVA, P0MOVDATA2L,AMOVA, P2MOVDATA2H,AMOVA, P3ANLA,#00000111BMOVDA

23、TA33,ACLRDSELCLRDENRET;讀頻率數據 放到44H 41H, 40H中;讀相位差數據 放到45H, 43H, 42H中;除法準備周期;2N BYTE/N BYTE=N BYTE,HERE N=3IN 31H ;(4A,4B,4C,4D,4E,4FH)/(5D,5E,5FH)=(4D,4E,4F) ZHUN1:M0V 5FH,DATALMOV5EH,DATAHMOV5DH,DATA3MOV4FH,#80HMOV4EH,#96HMOV4DH,#98HMOV4CH,#00HMOV 4BH,#00H;10000000MOV 4AH,#00HRETNOP ;N BYTES X M BY

24、TES=N+M BYTES HERE N=3; M=3 ;(4D,4E,4FH)*(5D,5E,5FH)=(5A-5FH);乘法準備周期ZHUN2:MOV 4DH,DATA33MOV4EH,DATA2HMOV4FH,DATA2LMOV5DH,#00HMOV5EH,#0EHMOV5FH,#10HRETNOPNOPNOP;3600DECR0,AR0DECR1DJNZR2,SUBMB1;2N BYTE/NBYTE=NBYTE,HEREN=3IN31H;(4A,4B,4C,4D,4E,4FH)/(5D,5E,5FH)=(4D,4E,4FH)SHIL1:MOV R2,AD0MOV R0,#ADASHIL

25、1B:CLR CSHILL:MOV A,R0RLC AMOV R0,ADEC R0DJNZ R2,SHILLRETSUBMB:MOV R2,AD0MOV R0,#ADAMOV R1,#ADBSUBMBB:CLR CSUBMB1:MOV A,R0SUBB A,R1MOVRETNOPNOPNOPRETEND2 . EDA程序清單-控制信號模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY KZXH ISP ORT(A:IN STD_LOGIC;B:IN STD_LOGIC;ENA:OUT STD_LOGIC;CLRA:OUT STD_LOGIC;LO

26、ADA:OUT STD_LOGIC;CLB:OUT STD_LOGIC);END ENTITY KZXH;ARCHITECTURE SJCJ OF KZXH ISSIGNAL CLKA,CLKB:STD_LOGIC;SIGNAL CLA:STD_LOGIC;SIGNAL CB:STD_LOGIC;BEGINCLKA<=NOT A;CLKB<=NOT B;P ROCESS(CLKA)BEGINIF CLKA'EVENT AND CLKA='1' THENCLA<=NOT CLA;END IF;ENA<=CLA;LOADA<=NOT CLA;

27、END P ROCESS; P ROCESS(CLKB) BEGINIF CLKB'EVENT AND CLKB='1' THENCB<=NOT CB;END IF;CLB<=CB;END P ROCESS;P ROCESS(CLKA,CLA)BEGINIF CLKA='0' AND CLA='0' THENCLRA<='1'ELSECLRA<='0'END IF;END P ROCESS;END ARCHITECTURE SJCJ;-分頻模塊LIBRARY IEEE;USE IEE

28、E.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY FPQ ISP ORT(CLK:IN STD_LOGIC;CLKF:OUT STD_LOGIC);END ENTITY FPQ;ARCHITECTURE SJCJ OF FPQ ISBEGINP ROCESS(CLK)VARIABLE TEMP :INTEGER RANGE 0 TO 2;VARIABLE CL:STD_LOGIC;BEGINIF CLK'EVENT AND CLK='1' THENIF TEMP=1 THENTEMP :=0; CL

29、:= '1'ELSETEMP :=TE MP+1;CL:='0'END IF;END IF;CLKF<=CL;END P ROCESS;END ARCHITECTURE SJCJ;-時間檢測模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SJJC ISP ORT(CLKF:IN STD_LOGIC; CLRA:IN STD_LOGIC;DA:OUT STD_LOGIC_VECTOR(18 DOWNTO 0);END ENTITY SJJC;A

30、RCHITECTURE SJCJ OF SJJC ISBEGINP ROCESS(ENA,CLRA,CLKF)VARIABLE DDA:STD_LOGIC_VECTOR(18 DOWNTO 0);BEGINIF CLRA='1' THENDDA:=(OTHERS=>'0');ELSE IF CLKF'EVENT AND CLKF='1' THENIF ENA='1'THENDDA:=DDA+1;END IF;END IF;END IF;DA<=DDA;END P ROCESS;END ARCHITECTURE SJCJ;-時間鎖存模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SJSC ISP ORT(DA:IN STD_LOGIC_VECTOR(18 DOWNTO 0);LOADA: IN STD_LOGIC;CLB:IN STD_LOGIC;DATAA:OUT STD_LOGIC_VECTOR(18 DOWNTO 0);DATAB:OUT STD_LOGIC_VECTOR(18 DOWNTO 0); END ENTITY SJSC;ARCHITECTURE SJCJ OF

溫馨提示

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

評論

0/150

提交評論