【正文】
另外如果想讓本系統(tǒng)的精度更高,必須獲得更穩(wěn)定的使能信號(hào) ena 和清零信號(hào) clr,可以先利用施密特觸發(fā)電路產(chǎn)生 ena 送給 FPGA,再由 FPGA 內(nèi)部 產(chǎn)生 clr信號(hào)。 end endmodule 6. 該模塊中還應(yīng)該含有計(jì)數(shù)器清零信號(hào)、計(jì)數(shù)器使能信號(hào)和其它控制信號(hào)的外圍電路。 input [18:0] in_data。 output q。 XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU 的相位測(cè)量?jī)x的設(shè)計(jì) 21 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 : 23 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 :Q0Q3Q2Q1Q4Q5Q6Q7A B C L K M R74 L S 16 4Q0Q3Q2Q1Q4Q5Q6Q7A B C L K M R74 L S 16 4Q0Q3Q2Q1Q4Q5Q6Q7A B C L K M R74 L S 16 4+ 5V + 5V+ 5V+ 5VR X DT X D . . . . . . . . . . . .RRRR8 2 K Ω 8 2 K Ω8 2 K ΩabfcgdeD P Y1234567abcdefg8dpdpLEDabfcgdeD P Y1234567abcdefg8dpdpLEDabfcgdeD P Y1234567abcdefg8dpdpLED 圖 36 顯示模塊電路圖 單片機(jī) 從 FPGA 中讀取信息并進(jìn)行處理后,再將信號(hào)送到輸出端顯示出來(lái)。 P2 口為 8 位準(zhǔn)雙向 I/O口,內(nèi)部具有上拉電阻,可直接連接外部 I/O 設(shè)備,每個(gè)引腳可以驅(qū)動(dòng) 4 個(gè) TTL負(fù)載。它要構(gòu)成最小系統(tǒng)時(shí)只要將單片機(jī)接上外部的晶體 、時(shí)鐘電路和復(fù)位電路即可。當(dāng)FPGA 配置存儲(chǔ)器中下載配置文件后,該適配板只需要接入 +5V 電源就可以正常工作與用戶應(yīng)用系統(tǒng)中。 施密特觸發(fā)器在單門限電壓比較器的 基礎(chǔ)上引入了正反饋網(wǎng)絡(luò)。 FPGA 在采集相位差對(duì)應(yīng)的時(shí)間差 ?T 時(shí),至少要能分辨出 s? 的時(shí)間間隔。 XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU 的相位測(cè)量?jī)x的設(shè)計(jì) 11 MCU 要完成的任務(wù)有 3 個(gè):一是從 FPGA 中獲得 19 位的二進(jìn)制數(shù)據(jù),并控制FPGA 的工作;二 是對(duì)時(shí)所獲得的數(shù)據(jù)進(jìn)行處理(完全由軟件實(shí)現(xiàn));三是將處理后的數(shù)據(jù)送給 LED 數(shù)碼管顯示。其中, 讓 FPGA 實(shí)現(xiàn) 兩個(gè)待測(cè)信號(hào)相位差所對(duì)應(yīng)的時(shí)間差 的采集 ,而 MCU 則負(fù)責(zé)讀取 FPGA 采集到的數(shù)據(jù),并根據(jù)這些數(shù)據(jù)計(jì)算待測(cè)信號(hào)的相位差,同時(shí) 把得到的信號(hào)頻率和相位差送到 LED 數(shù)碼管顯示 [3]。 ( 2) 若 GATE=1, iTR =1,則由 iTNI 引腳的外部信號(hào)控制定時(shí)器 /計(jì)數(shù)器的啟動(dòng)和停止。因此,相位差的測(cè)量本質(zhì)上就是時(shí)間的測(cè)量,而時(shí)間的測(cè)量就要用到電子計(jì)數(shù)器 [5]。單片機(jī)的發(fā)展是為了滿足不斷增長(zhǎng)的自動(dòng)檢測(cè)、控制的要求,具體體現(xiàn)在傳感器的接口、各種工業(yè)對(duì)象的電氣接口、功率驅(qū)動(dòng)接口、人機(jī)接口、通信網(wǎng)絡(luò)接口等。 而相位差的測(cè)量又不同于傳統(tǒng)的電壓、電流信號(hào)或物位、溫度量的測(cè)量。 對(duì)相位測(cè)量的要求也逐步向高精度、高智能化方向發(fā)展 。 FPGA 是 20 世紀(jì) 90 年代發(fā)展起來(lái)的大規(guī)??删幊踢壿嬈骷?,隨著 EDA( 電子設(shè)計(jì)自動(dòng)化 ) 技術(shù)和微電子技術(shù)的進(jìn)步, FPGA 在超高速、 實(shí)時(shí)測(cè)控方面有非常廣闊的應(yīng)用前景;并且 FPGA 具有高集成度、高可靠性, 幾乎可將整個(gè)設(shè)計(jì)系統(tǒng)下載于同一芯片中,從而大大縮小了電路的體積 [2]。 不妨令兩個(gè)同頻率的正弦信號(hào)為)s i n()( )s i n()( 0222 0111 ?? ?? ?? ?? tAtA tAtA mm, 則相位差020xx201 )()( ??????? ?????? tt , 由此可以看出,相位差在數(shù)值上等于初相位之差, θ 是一個(gè)角度。 MCU 芯片內(nèi)部的硬件定時(shí)器 /計(jì)數(shù)器有 3個(gè)特點(diǎn):定時(shí)器 /計(jì)數(shù)器可以與 CPU 并行工作;定時(shí)器 /計(jì)數(shù) 器可以采用中斷方式與系統(tǒng)協(xié)調(diào)工作;定時(shí)器 /計(jì)數(shù)器可以由軟件或硬件控制啟動(dòng)或停止。 XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU 的相位測(cè)量?jī)x的設(shè)計(jì) 8 圖 24 主程序流程圖 圖 25 SUB1 流程圖 以 MCU 和 FPGA 相結(jié)合的實(shí)現(xiàn)方案 系統(tǒng)主要由現(xiàn)場(chǎng)可編程門陣列 FPGA 和 MCU 組成, 其原理框圖 如圖 26 所示。實(shí)際上, DSEL 和 FEN 是 MCU發(fā)給 FPGA 的控制信號(hào),設(shè)置情況如下: a. DSEL=0 且 FEN=1 時(shí), MCU 從 FPGA 中讀取 19 位的周期數(shù)據(jù)。的要求。 在相位差測(cè)量過(guò)程中,不允許兩路被測(cè)信號(hào)在整形后 發(fā)生相對(duì)相移,或者應(yīng)該使得兩路被測(cè)信號(hào)在整形輸入電路中引起的附加相移是相同的。時(shí)鐘自舉電路提供了一個(gè)時(shí)鐘乘法器,可以很容易的實(shí)現(xiàn)時(shí)域邏輯乘法,并減少資 源的使用。 該器件采用 Atmel 高密度非易失存儲(chǔ)器制造技術(shù),與工業(yè)標(biāo)準(zhǔn)的 MCS51 指令集和輸出管腳相兼容。 P1口: 1~8 腳為 ~ 輸入 /輸出引腳。這種顯示方式不僅 可以得到較為簡(jiǎn)單的硬件電路,而且可以得到穩(wěn)定的數(shù)據(jù)輸出顯示。設(shè)置 Q 為輸出端口信號(hào),滿足 Q=1 時(shí),表示信號(hào) A超前信號(hào) B;反之,當(dāng) Q=0 時(shí),信號(hào) A滯后信號(hào) B。 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 (dataa or datab or dsel or fen) begin if(fen=1) when (dsel=0) data=dataa。該設(shè)計(jì)充分地利用了 FPGA的高集成度、豐富的 I/O 口資源、可現(xiàn)場(chǎng)在線編程、系統(tǒng)穩(wěn)定可靠等優(yōu)點(diǎn);而且,單片機(jī)具有很好的運(yùn)算處理控制能力。在此期間, XXX 老師給我了很多的寶貴意見(jiàn)和建議, 無(wú)論是材料的搜集,論文的撰寫、修改和最后的定稿都傾注了劉老師的心血。 開 始系 統(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 位 無(wú)符號(hào)的二進(jìn)制數(shù)據(jù)。 always (posedge cp or posedge en) begin if(en) out_data=0。end else if (reset) begin q=0。 表 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è)量?jī)x的設(shè)計(jì) 20 4 系統(tǒng) 軟件設(shè)計(jì) 系統(tǒng)的軟件設(shè)計(jì)包括 FPGA 的 Verilog HDL 程序設(shè)計(jì)以及 MCU 的匯編語(yǔ)言程序設(shè)計(jì)。 它與地址總線高 8 位復(fù)用,一般作為外部擴(kuò)展時(shí)的高 8位地址總線使用。按下按鍵 S,電源對(duì) C充電,使 RESET端快速達(dá)到高電平,松開按鍵, C向芯片的內(nèi)阻放電,恢復(fù)為低電平,從而使單片機(jī)可靠復(fù)位。 FPGA 的時(shí)鐘信號(hào) clk 采用 40MHZ 四引腳石英晶體多謝振蕩器信號(hào)源,由 FPGA 內(nèi)部的分頻模塊對(duì) 40MHZ 信號(hào)進(jìn)行四分頻,得到 10MHZ 的數(shù)據(jù)采樣時(shí)標(biāo)信號(hào),采樣周期為 S。電路中使用兩個(gè)施密特觸發(fā)器對(duì)兩路被測(cè)輸入信號(hào)進(jìn)行整行,在圖中,比較器LM339 連接成施密特觸發(fā)器的形式,為了保證輸入電路在相位差測(cè)量的時(shí)候不會(huì)有誤差,必須保證兩個(gè)施密特觸發(fā)器的兩個(gè)門限電平對(duì)應(yīng)相等, 這可以通過(guò)調(diào)節(jié)電位器 8R 來(lái)使得兩個(gè)施密特觸發(fā)器的門限 電平對(duì)應(yīng)相等 [3]。 這種設(shè) 計(jì)方案發(fā)揮了 單片機(jī)控制運(yùn)算能力強(qiáng)的特點(diǎn),同時(shí)也充分的利用了FPGA 數(shù)據(jù)采樣速度快、資源豐富的特點(diǎn)。但是,該系統(tǒng)不一定該設(shè)計(jì)所要求的技術(shù)指標(biāo)。信號(hào) A、 B 進(jìn)入 FPGA 后,經(jīng)過(guò)其處理獲得以二進(jìn)制形式表示的信號(hào)頻率以及相位差所對(duì)應(yīng)的時(shí)間差。 該方案實(shí)現(xiàn)的電路圖如圖 23所示,該電路由整形電路、門電路、單片機(jī)等部分組成,由定時(shí)器 /計(jì)數(shù)器 0T 、 1T 分別測(cè)量周期和時(shí)間差。而 FPGA 具有集成度高, I/O 資源豐富,穩(wěn)定可靠, 工作速度快, 可現(xiàn)場(chǎng)在線編程等優(yōu)點(diǎn) ,往往能滿足一些設(shè)計(jì)要求比較高的技術(shù)指標(biāo)。 現(xiàn)在 采用單片機(jī) 與 FPGA 相結(jié)合的電路實(shí)現(xiàn)方案 ,很好地發(fā)揮了 FPGA 運(yùn)算速度快、資源豐富、編程方便的特點(diǎn) ,并利用了單片機(jī)較強(qiáng)的運(yùn)算、控制功能 ,使得整個(gè)系統(tǒng)模塊化、硬件電路簡(jiǎn)單、使用操作方便 。 相位測(cè)量?jī)x的用途極為廣泛,可以測(cè)量?jī)呻妷?、兩電流及電壓電流之間的相位,是電力部門、工廠和礦山、石油化工、冶金系統(tǒng)正確把握電力使用情況的理想儀表。 該設(shè)計(jì) 采用單片機(jī)與 FPGA 相結(jié)合的電路實(shí)現(xiàn)方案 ,很好地發(fā)揮了 FPGA 的 運(yùn)算速度快、資源豐富、編程方便的特點(diǎn) ,并利用了單片機(jī)的較強(qiáng)運(yùn)算、控制功能 ,使得整個(gè)系統(tǒng)模塊化、硬件電路簡(jiǎn)單、使用操作方便 。 相位的數(shù)字測(cè)量方法基本分為硬件電路測(cè)量和 A/D 采樣后利用軟件計(jì)算兩種。 。 ( 2) 測(cè)周期的方法測(cè)量信號(hào)頻率 對(duì)信號(hào) Ⅰ 進(jìn)行二分頻,分頻后高電平的寬度正好對(duì)應(yīng)信號(hào) Ⅰ 的周期,我們將此高電平信號(hào)作為 MCU 內(nèi)部定時(shí)器的硬件啟動(dòng) /停止信號(hào),便可測(cè)得周期 T ,再由公式 Tf 1? ,計(jì)算得到頻率 f 。 系統(tǒng)主程序是一個(gè)順序執(zhí)行的循環(huán)程序, 其流程 圖如圖 24所示。 ( 2) MCU 的工作情況 MCU 要從 FPGA 中獲得兩種數(shù)據(jù),這兩種數(shù)據(jù)都是 19位無(wú)符號(hào)二進(jìn)制數(shù)。此時(shí)的相位絕對(duì)誤差為 176。由于 FPGA 對(duì)脈沖信號(hào)比較敏感, 為了準(zhǔn) 確的測(cè)量出 兩路正弦信號(hào)的相位差及其頻率,需要對(duì)輸入波形進(jìn)行整形,使輸入信號(hào)變成矩形波信號(hào),并送給 FPGA 進(jìn)行處理。 3. 增強(qiáng)型嵌入式結(jié)構(gòu) 每個(gè) EAB 有以 256 1 512 1024 2048 2位任意組合的 RAM,可做單口 RAM,也可以設(shè)計(jì)成雙口 RAM。 FPGA 和 MCU的握手信號(hào) FEN 和 DSEL 分別接在 和 引腳,即 Pin4 和 Pin6。 P0口: 32 ~ 39 腳 為 ~ 輸入 /輸出引腳。靜態(tài)顯示系統(tǒng)中,每位顯示器都有自己的鎖存器、譯碼器和驅(qū)動(dòng)器,它的每一次顯示輸出后可以保持不變,僅在待顯示數(shù)據(jù)需要改變時(shí),才更新其顯示內(nèi)容。 二分頻器二分頻器D Qc p≥ 1e nc l rc pe nc pd a t a bd a t a bc pe n二選一數(shù)據(jù)選擇器四 分 頻 器d a t a寄 存 器 1寄 存 器 21 9 位 加 1 計(jì) 數(shù) 器p r ee n ac l rc l k ac l k bf e n d s e lc l k fc l kAB4 0 M H Z圖 42 FPGA 芯片內(nèi)部邏輯電路框圖 XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU 的相位測(cè)量?jī)x的設(shè)計(jì) 22 FPGA中主要模塊設(shè)計(jì) 在該設(shè)計(jì)中, FPGA 主要完成對(duì)整形后的兩路待測(cè)信號(hào)( A、 B)進(jìn)行數(shù)據(jù)采集。 reg [18:0] out。 input dataa,datab。 XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和