【正文】
感謝 XX 大學(xué)電氣工程及自動(dòng)化學(xué)院的老師們?cè)谶@四年里 對(duì)我 在專業(yè)學(xué)習(xí)上 給予 的幫助,更感謝他們?cè)谖业臑槿颂幨律辖o予的教誨。 我發(fā)自內(nèi)心的感謝她在學(xué)業(yè)指導(dǎo)及各方面所給予我的幫助,并且十分慶幸自己能夠在人生的這個(gè)重要階段遇到了她。在此期間, XXX 老師給我了很多的寶貴意見和建議, 無論是材料的搜集,論文的撰寫、修改和最后的定稿都傾注了劉老師的心血。 XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU的相位測(cè)量儀的設(shè)計(jì) 30 致 謝 在 論文 完成之際,我 的心中充滿了成功的喜悅。該設(shè)計(jì)充分發(fā)揮了各模塊的特點(diǎn)及其優(yōu)勢(shì) , 使 系統(tǒng)的整體性能得到提高,而且能夠很好地滿足該設(shè)計(jì)的任務(wù)要求。該設(shè)計(jì)充分地利用了 FPGA的高集成度、豐富的 I/O 口資源、可現(xiàn)場(chǎng)在線編程、系統(tǒng)穩(wěn)定可靠等優(yōu)點(diǎn);而且,單片機(jī)具有很好的運(yùn)算處理控制能力。該程序的流程框圖如圖 412 所示。 入 口出 口裝 入 乘 數(shù) 和 被 乘 數(shù) 到 內(nèi) 存做 乘 法 T θ 3 6 0 0裝 入 除 數(shù) 和 被 除 數(shù) 到 內(nèi) 存做 除 法二 進(jìn) 制 數(shù) 據(jù) 轉(zhuǎn) 換 為 壓 縮 B C D 碼壓 縮 B C D 碼 轉(zhuǎn) 換 為 單 字 節(jié) B C D 碼存 入 數(shù) 據(jù) 到 顯 示 緩 沖 區(qū) 7 8 H 7 E H 圖 410 計(jì)算相位差的程序流程圖 顯示程序流程 計(jì)算出來的頻率值和 相位差值要顯示出來我們才能看見,故此還需要顯示模塊,即單片機(jī)通過顯示模塊將信息處理并送到顯示電路顯示出來,它的程序流程圖如圖 411所示。由于在 FPGA 中已經(jīng)計(jì)算出兩路信號(hào)的時(shí)間差,所以在單片機(jī)中要按照公式 3600)/( ?? TT?? 來計(jì)算出兩路信號(hào)的相位差,單位是 176。 XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU的相位測(cè)量儀的設(shè)計(jì) 26 入 口發(fā) 送 周 期 選 通 信 號(hào) f e n = 1 、 d s e l = 0讀 入 周 期 數(shù) 據(jù) 并 存 入 緩 沖 區(qū)禁 止 F P G A 釋 放 數(shù) 據(jù) f e n = 0發(fā) 送 時(shí) 間 差 選 通 信 號(hào) f e n = 1 、 d s e l = 1讀 入 時(shí) 間 差 數(shù) 據(jù) 并 存 入 緩 存 區(qū)禁 止 F P G A 釋 放 數(shù) 據(jù) f e n = 0出 口 圖 48 讀取周期、時(shí)間差數(shù)據(jù)的流程圖 計(jì)算頻率流程 MCU 從 FPGA 讀取信號(hào)的周期數(shù)據(jù)后,按照公式 Tf /100 00 00 0? 計(jì)算信號(hào)的頻率,單位是 HZ,其流程圖如圖 49 所示。 開 始系 統(tǒng) 初 始 化從 F P G A 讀 取 周 期 和 時(shí) 間 差 數(shù) 據(jù)計(jì) 算 頻 率 和 相 位 差鍵 盤 處 理送 數(shù) 顯 示 圖 47 主程序流程圖 讀取數(shù)據(jù)流程 單片機(jī)從 FPGA 中讀取兩種數(shù)據(jù):一種是待測(cè)信號(hào)的周期 T,另一種是待測(cè)信號(hào)的相位差所對(duì)應(yīng)的時(shí)間差 ?T ,它們都是 19 位 無符號(hào)的二進(jìn)制數(shù)據(jù)。 MCU 的匯編語言程序設(shè)計(jì) MCU 的主程序流程 XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU的相位測(cè)量儀的設(shè)計(jì) 25 單片機(jī)從 FPGA 中讀取被測(cè)信號(hào)的周期和相位差所對(duì)應(yīng)的時(shí)間差數(shù)據(jù),并在單片機(jī)內(nèi)部進(jìn)行相關(guān)的計(jì)算,然后送給顯示模塊,實(shí)現(xiàn)被測(cè)信號(hào)的頻率和相位差的顯示。 else data=null。 always (dataa or datab or dsel or fen) begin if(fen=1) when (dsel=0) data=dataa。 input [1:0] dsel,fen。 output data。二選XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU的相位測(cè)量儀的設(shè)計(jì) 24 一數(shù)據(jù)選擇器的選擇信號(hào)來自 FPGA 和 MCU 之間的握手信號(hào) FEN 和 DSEL,為了實(shí)現(xiàn)這個(gè)功能,系統(tǒng)中還應(yīng)該包含 3個(gè) 19位的數(shù)據(jù)寄存器,分別存放數(shù)據(jù) dataa、datab、 data。 end endmodule 5. 利用一個(gè)二選一數(shù)據(jù)選擇器完成有選擇的將數(shù)據(jù) dataa 或 datab 送到 FPGA的輸出端 data。 always (posedge cp or posedge en) begin if(en) out_data=0。 input cp,en。 output [18:0] out_data。 end endmodule 4. 利用兩個(gè) 19位寄存器分別存放得到的待測(cè)信號(hào)的周期數(shù)據(jù) dataa和相位差對(duì)應(yīng)的時(shí)間差數(shù) 據(jù) datab,以便二選一數(shù)據(jù)選擇器進(jìn)行數(shù)據(jù)調(diào)用。 always(posedge clk) begin if (reset) out=0。 output [18:0] out。 圖 44 19位計(jì)數(shù)器模塊 module count19(out,reset,clk)。end end endmodule 3. 19 位的加 1 計(jì)數(shù)器完成對(duì) clk 的計(jì)數(shù),以便分別得到待測(cè)信號(hào)的周期數(shù)據(jù)dataa 和相位差對(duì)應(yīng)的時(shí)間差 數(shù)據(jù) datab。end else if (reset) begin q=0。 reg q。 input d,cp,set,reset。設(shè)置 Q為輸出端口信號(hào),滿足 Q=1 時(shí),表示信號(hào) A 超前信號(hào) B;反之,當(dāng) Q=0 時(shí),信號(hào) A 滯后信號(hào) B。 其主要模塊有: 1. 對(duì)輸入的 40MHZ 時(shí)鐘脈沖進(jìn)行四分頻,得到我們所需要的 10MHZ 信號(hào)。 FPGA芯 片內(nèi)部的邏輯電路框圖如圖 42所示。 c l k ac l a ( e n a )c l k b ( 滯 后 )c l r( c l k a ) X O R ( c l k b )c l k b ’ ( 超 前 )( c l k a ) X O R ( c l k b ’ )d a 計(jì) 數(shù)清 零d a ( 同步 于c l k f )該 時(shí) 刻 傳 送 周 期 數(shù) 據(jù) , 從 d a到 d a t a a 且 以 c l r 取 反 后 的 信號(hào) 為 使 能 信 號(hào) 該 時(shí) 刻 傳 送 時(shí) 間 差 數(shù) 據(jù) , 從 d a 到 d a t a b該 時(shí) 刻 傳 送 時(shí) 間 差 數(shù) 據(jù) , 從 d a 到 d a t a b圖 41 FPGA的工作時(shí)序圖 XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU的相位測(cè)量儀的設(shè)計(jì) 21 FPGA 芯片內(nèi)部電路框圖 根據(jù)以上設(shè)計(jì)思路,我們可以得出, FPGA 的數(shù)據(jù)采集電路可以分為以下幾個(gè)模塊: 時(shí)鐘信號(hào)分頻模塊、測(cè)量控制信號(hào)發(fā)生模塊、被測(cè)信號(hào)有關(guān)時(shí)間檢測(cè)模塊、數(shù)據(jù)寄存器模塊、 19位加 1 計(jì)數(shù)器模塊、二選一數(shù)據(jù)選擇器模塊。 FPGA 的工作時(shí)序 FPGA 的工作時(shí)序如圖 41 所示 。 表 33 共陰極 LED數(shù)碼管的段碼表 顯示數(shù)碼 0 1 2 3 4 5 6 7 8 9 段碼 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 顯示數(shù)碼 A B C D E F . 熄滅 段碼 77H 7CH 39H 5EH 79H 7EH 40H 80H 00H XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU的相位測(cè)量儀的設(shè)計(jì) 20 4 系統(tǒng) 軟件設(shè)計(jì) 系統(tǒng)的軟件設(shè)計(jì)包括 FPGA 的 Verilog HDL 程序設(shè)計(jì)以及 MCU 的匯編語言程序設(shè)計(jì)。在系統(tǒng)的顯示模塊中, 74LS164 的連接方式為:輸出引腳 Q0Q7分別接在 LED 數(shù)碼管的 a、 b、 c、 d、 e、 f、 g和 dp引腳,并且 Q7接下一個(gè) 74LS164 芯片的 A、B 兩端,時(shí)鐘信號(hào) CLK 連接單片機(jī)的 TXD 端,第一個(gè)芯片的 A、 B 端接單片機(jī)的RXD 端。實(shí)踐證明,該顯示模塊具有較高的可靠性,其電路圖如圖 36所示 。這種顯示方式不僅 可以得到較為簡單的硬件電路,而且可以得到穩(wěn)定的數(shù)據(jù)輸出顯示。這種顯示方式的優(yōu)點(diǎn)是 占用機(jī)時(shí)少,顯示穩(wěn)定可靠 [4]。本設(shè)計(jì)采用的是 LED 數(shù)碼管靜態(tài)顯示方式。 表 32 P3口 的 復(fù)用功能 端口引腳 復(fù)用功能 RXD:串行輸入口 TXD:串行輸出口 0INT (外部中斷 0中斷請(qǐng)求 輸入端) 1INT (外部中斷 1中斷請(qǐng)求輸入端) T0(定時(shí)器 0的外部輸入) T1(定時(shí)器 1的外部輸入) WR (外部數(shù)據(jù)存儲(chǔ)器寫選通) RD (外部數(shù)據(jù)存儲(chǔ)器 讀 選通) XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU的相位測(cè)量儀的設(shè)計(jì) 20 1 2 3 4 5 6ABCD654321DCBAT i t l eN um be r R e v i s i onS i z eBD a t e : 11 M a y 20 12 S he e t of F i l e : D : \ P r ot e l _9 9 _S E _c n\ E xa m pl e s \ M yD e s i gn 1 .dd b D r a w n B y :C130 P FC230 P FCR12 M H ZGNDR1R2C22 μ FSV C CGNDS1S2GND39 D 038 D 137 D 236 D 335 D 434 D 533 D 632 D 721 A 822 A 923 A 1024 A 1125 A 1226 A 1327 A 1428 A 1510 R X D11 T X D30 A L E123456789R P 2 10 k Ω 8123456789J3123456789J1V C CV C CV C C10 k Ω 810 k Ω 8D S E LT e x tP 00P 01P 02P 03P 04P 05P 06P 07P 20P 21P 22P 23P 24P 25P 26P 27R X DT X DA L E / PP S E NP 10P 11P 12P 13P 14P 15P 16P 17I N T 1I N T 2T1T0 E A / V PX1X2R E S E T R D W DA T 89 C 5 1P P X1X2U1 圖 35 MCU電 路圖 顯示模塊 設(shè)計(jì) 在單片機(jī)系統(tǒng)中,通常使用八段單字節(jié)數(shù)碼顯示器來顯示各種數(shù)據(jù)或符號(hào)。 P3口 為 8 位準(zhǔn)雙向 I/O口,內(nèi)部具有上拉電阻,它是雙功能復(fù)用口,每個(gè)引腳可驅(qū)動(dòng) 4個(gè) TTL 負(fù)載。 它與地址總線高 8 位復(fù)用,一般作為外部擴(kuò)展時(shí)的高 8 位地址總線使用。用作輸入時(shí),先將引腳置 1,由內(nèi)部上拉電阻將其提高到高電平。 P2 口: 21 ~ 28 腳為 ~ 輸入 /輸出引腳。 P1 口: 1~8腳為 ~ 輸入 /輸出引腳。 P0 口為雙向 8位 三態(tài) I/OXX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU的相位測(cè)量儀的設(shè)計(jì) 19 口,它既可作為通用 I/O 口,又可作為外部擴(kuò)展時(shí)的數(shù)據(jù)總線及低 8位地址總線的分時(shí)復(fù)用口。 系統(tǒng)硬件 電路中 FPGA 和MCU 進(jìn)行數(shù)據(jù)交換時(shí)占用了 P0口、 P2 口、和 、 、 ,其引腳功能如下所示。 1 2 3 4 5 6ABCD654321DCBAT i t l eN um be r R e v i s i onS i z e