【正文】
PIN55 PIN57 PIN59 PIN61 PIN62 PIN82 引腳定義 DATA0 DATA1 DATA2 DATA3 DATA4 DATA5 DATA6 DATA7 P2 口 AT89C51 FPGA引腳名稱 P130 P128 P126 P124 P100 IO38 IO36 IO34 FPGA引腳號(hào) PIN130 PIN128 PIN126 PIN124 PIN100 PIN83 PIN77 PIN75 引腳定義 DATA8 DATA9 DATA10 DATA11 DATA12 DATA13 DATA14 DATA15 P1 口 AT89C51 FPGA引腳名稱 P31 P54 P56 P58 NC P60 FPGA引腳號(hào) PIN31 PIN54 PIN56 PIN58 空端口 PIN60 引腳定義 DATA16 DATA17 DATA18 RSEL 無 EN CLKa CLKb FPGA適配板 FEN DSEL CLK A T 8 9 C 5 1 AIN BIN 40MHZ 石英晶體多諧振蕩器 XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU的相位測量儀的設(shè)計(jì) 17 基于 MCU的 數(shù)據(jù)處理模塊 設(shè)計(jì) 這部分電路由單片機(jī)、晶振電路、按鍵電路等組成。 P1 口的、 接入兩個(gè)輕觸按鍵,結(jié)合軟件編程 來實(shí)現(xiàn)頻率與相位差顯示切換功能。 FPGA 和 MCU的握手信號(hào) FEN 和 DSEL 分別接在 和 引腳,即 Pin4 和 Pin6。 該模塊使用的單片機(jī)型號(hào)為 AT89C51,它是美國 Atmel 公司生產(chǎn)的 8位單 片機(jī)。由于將多功能 8位 CPU和閃爍存儲(chǔ)器組合在一個(gè)芯片中,Atmel 的 AT89C51 是一種高效率的微處理器,為很多嵌入式控制系統(tǒng)提供了一種靈活方便且物美價(jià)廉的方案。它要構(gòu)成最小系統(tǒng)時(shí)只要將單片機(jī)接上外部的晶體 、時(shí)鐘電路和復(fù)位電路即可。該設(shè)計(jì)采用的是上電自動(dòng)復(fù)位和按鍵手動(dòng)復(fù)位電路,如圖 33所示。即可上電復(fù)位,又可 按鍵復(fù)位,一般 R1選 470Ω , R2選 ,C選 22μ F[1]。其中晶振可選用振蕩頻率為 12MHZ 的石英晶體,電容器一般選用 30PF 左右。該電路的工作原理是:單片機(jī)通過向 FPGA 發(fā)送數(shù)據(jù)傳送指令,使 FPGA 按照單片機(jī)的要求發(fā)送數(shù)據(jù),同時(shí) 通過單片機(jī)的串口,將待顯示的數(shù)據(jù)信息發(fā)送給顯示電路顯示。 P0 口: 32 ~ 39 腳 為 ~ 輸入 /輸出引腳。作為通用 I/O 口時(shí),需要外接上拉電阻,輸出數(shù)據(jù)可以得到鎖存,最為輸出口,每個(gè)引腳可以驅(qū)動(dòng) 8個(gè) TTL負(fù)載。 P1口為 8 位準(zhǔn)雙向 I/O 口,內(nèi)部具有上拉電阻,一般作通用 I/O口使用 ,它的每一位都可以分別定義為輸入線或輸出線,作為輸入時(shí),鎖存器必須置 1,每個(gè)引腳可以驅(qū)動(dòng) 4 個(gè) TTL 負(fù)載。 P2口為 8 位準(zhǔn)雙向 I/O口,內(nèi)部具有上拉電阻,可直接連接外部 I/O設(shè)備,每個(gè)引腳可以驅(qū)動(dòng) 4個(gè) TTL負(fù)載。若負(fù)載為低電平, 則通過內(nèi)部上拉電阻向外輸出電流。 P3 口 : 10~ 17 腳為 ~ 輸入 /輸出引腳。作為通用 I/O 口時(shí),功能與 P1 口相同,常用第二功能,作為第二功能使用時(shí),各位的作用如表 32 所示。應(yīng)為它具有顯示清晰、亮度高、使用電壓低、壽命長等特點(diǎn),所以被廣泛應(yīng)用與各種顯示電路中。靜態(tài)顯示系統(tǒng)中,每位顯示器都有自己的鎖存器、譯碼器和驅(qū)動(dòng)器,它的每一次顯示輸出后可以保持不變,僅在待顯示數(shù)據(jù)需要改變時(shí),才更新其顯示內(nèi)容。 該顯示電路由 8個(gè)共陰極 7段 LED 數(shù)碼管和 8片串入 /并出的 74LS164 芯片組成。這種連接方式不僅占用單片機(jī)端口少,而且可以充分利用單片機(jī)芯片內(nèi)部的串行口資源,可以很容易的掌握其編程規(guī)律,簡化軟件編程。 XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU的相位測量儀的設(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)送到輸出端顯示出來。共陰極 7段 LED 數(shù)碼管的段碼編碼如表 33 所示。 FPGA 的 Verilog HDL 程序設(shè)計(jì) FPGA 主要完成對(duì)數(shù)據(jù)的采集,它可以準(zhǔn)確的采集到兩個(gè)同頻正弦信號(hào)的相位差所對(duì)應(yīng)的時(shí)間差以及信號(hào)的周期 。由時(shí)序圖可以看出 , FPGA 在待測信號(hào)的兩個(gè)響鈴的周期內(nèi)獲取一次數(shù)據(jù),在待測輸入信號(hào)的第一個(gè)周期內(nèi)完成數(shù)據(jù)采集,并在后接的下一個(gè)待測輸入信號(hào)的在周期內(nèi)完成數(shù)據(jù)傳輸送以及清零,在設(shè)計(jì)時(shí),我采用了同步信號(hào)來實(shí)現(xiàn)同步清零和同步數(shù)據(jù)傳送,這樣可以增強(qiáng) 系統(tǒng)的抗干擾能力,提高系統(tǒng)的穩(wěn)定性和可靠性。 其中時(shí)鐘信號(hào)分頻模塊的作用是 將輸入的信號(hào)分頻成我們所需的信號(hào)頻率;測量控制信號(hào)發(fā)生模塊的作用是根據(jù)兩路被測信號(hào)整形后的矩形波信號(hào) 產(chǎn)生有關(guān)測控信號(hào),包括時(shí)間檢測使能信號(hào) ENA,時(shí)間檢測清零信號(hào)等;被測信號(hào)有關(guān)時(shí)間檢測模塊的作用是 在控制信號(hào) ENA 和 CLR 的控制下,對(duì)測控基準(zhǔn)時(shí)鐘信號(hào)CLKF 進(jìn)行計(jì)數(shù)和清零,以便于獲取有關(guān)的頻率和相位差數(shù)據(jù);數(shù)據(jù)寄存器模塊的作用是暫存 19位數(shù)據(jù) dataa、 datab 和 data; 19 位的加 1 計(jì)數(shù)器模塊的作用是完成對(duì) clkf 的計(jì)數(shù),以便分別得到待測信號(hào)的周期數(shù)據(jù) dataa 和相位差對(duì)應(yīng)的時(shí)間差數(shù)據(jù) datab;二選一數(shù)據(jù)選擇器模塊的做作用是有選擇的將數(shù)據(jù) dataa或 datab送到 FPGA的輸出端 data。 二分頻器二分頻器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的相位測量儀的設(shè)計(jì) 22 FPGA 中主要模塊設(shè)計(jì) 在該設(shè)計(jì)中, FPGA 主要完成對(duì)整形后的兩路待測信號(hào)( A、 B)進(jìn)行數(shù)據(jù)采集。 2. 利用 D 觸發(fā)器的特點(diǎn)進(jìn)行信號(hào)的超前 /滯后檢測。 圖 43 D觸 發(fā)器模塊 module D_FF(q,d,cp,set,reset)。 output q。 always(posedge cp or posedge set) begin if (set) begin q=1。end else begin q=d。它們都是 19位的二進(jìn)制數(shù)據(jù),時(shí)間單位為 S。 XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU的相位測量儀的設(shè)計(jì) 23 input reset,clk。 reg [18:0] out。 else out=out+1。 圖 45 19位寄存器模塊 module reg19(out_data,in_data,cp,en)。 input [18:0] in_data。 reg [18:0] out_data。 else out_data=in_data。 FPGA 和 MCU 之間的數(shù)據(jù)傳輸是通過 19根 I/O 口線輸送的。 圖 46 2選 1數(shù)據(jù)選擇模塊 module mux2_1(data,dataa,datab,fen,dsel)。 input dataa,datab。 reg out。 when (dsel=1) data=datab。 end endmodule 6. 該模塊中還應(yīng)該含有計(jì)數(shù)器清零信號(hào)、計(jì)數(shù)器使能信號(hào)和其它控制信號(hào)的外圍電路。這兩種數(shù)據(jù)都是 19 位無符號(hào)的二進(jìn)制數(shù)據(jù),其程序流程圖如圖 47 所示。讀入哪一種數(shù)據(jù)由兩者之間的握手信號(hào) fen和 dsel 控制,其程序流程圖如圖 48所示。 入 口裝 入 被 除 數(shù) 1 0 0 0 0 0 0 0 和 除 數(shù) T 到 內(nèi) 存做 除 法 1 0 0 0 0 0 0 0 / T 二 進(jìn) 制 數(shù) 據(jù) 轉(zhuǎn) 換 為 壓 縮 B C D 碼壓 縮 B C D 碼 轉(zhuǎn) 換 為 單 字 節(jié) B C D 碼把 數(shù) 據(jù) 存 入 到 顯 示 緩 沖 區(qū) 7 0 H 7 6 H出 口 圖 49 計(jì)算頻率的流程圖 XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU的相位測量儀的設(shè)計(jì) 27 計(jì)算相位差流程 因?yàn)?A 、 B兩路信號(hào)是同頻率,不同相位的正弦波信號(hào),所以經(jīng)過整形電路整形后得到頻率相同、時(shí)間上不重合的兩路信號(hào) 。 ,其程序流程框圖如圖 410 所示。 XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU的相位測量儀的設(shè)計(jì) 28 賦 頻 率 顯 示 區(qū) 首 地 址 7 0 H 給 R 0無 效 數(shù) 字 0 消 隱 處 理賦 相 位 差 顯 緩 區(qū) 首 地 址 7 8 H 給 R 0查 表 求 斷 碼查 表 串 行 顯 示待 顯 示 數(shù) 據(jù) 送 完 了 ?2 F H . 0 = 0 ?入 口出 口NYNY 圖 411 顯示程序流程圖 鍵盤程序流程 為了完成以上功能,電路中還必須有必要的輔助設(shè)計(jì),即需要設(shè)計(jì)一個(gè)按鍵子程序來完成人為的有選擇的控制 LED 數(shù)碼管顯示的內(nèi)容(顯示頻率或相位差)。 軟件延時(shí)10ms消抖CPL 有鍵按下(=0)?有鍵按下(=0)?入口出口YYNN 圖 412 鍵盤程序流程圖 XX 大學(xué)本科生畢業(yè)設(shè)計(jì) 基于 FPGA 和 MCU的相位測量儀的設(shè)計(jì) 29 5 系統(tǒng)設(shè)計(jì)總結(jié) 本設(shè)計(jì)是利用 FPGA和 MCU相結(jié)合的方案來實(shí)現(xiàn)相位測量儀的設(shè)計(jì),其中 MCU完成的是系統(tǒng)功能,而用 FPGA 來實(shí)現(xiàn)系統(tǒng)的指標(biāo)。 該系統(tǒng)包含了 信號(hào)整形模塊、 以 EPF10K10LC844芯片為核心的 FPGA 數(shù)據(jù)采集模塊、以 AT89C51 芯片為控制核心單片機(jī) 處理 模塊、 靜態(tài) LED 顯示模塊。 另外如果想讓本系統(tǒng)的精度更高,必須獲得更穩(wěn)定的使能信號(hào) ena 和清零信號(hào) clr,可以先利用施密特觸發(fā)電路產(chǎn)生 ena 送給 FPGA,再由 FPGA 內(nèi)部 產(chǎn)生 clr信號(hào)。本論文在研究和撰寫過程中得到 XXX 老師的精心指導(dǎo)和大力協(xié)助。 她 的指導(dǎo) 不僅使我拓寬了 知識(shí)面,更使我在發(fā)現(xiàn)問題、分析問題、解決問題等各方面的能力都有一個(gè)明顯的提高。老師淵博的知識(shí)、嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng)、誨人不倦的教育情懷和對(duì)事業(yè)的忠誠,都將使我受益終身。在論文的完成過程中,還得到其他學(xué)院多位老師