基于MCU和FPGA的数字式相位测量仪的设计 毕业设计论文.doc_第1页
基于MCU和FPGA的数字式相位测量仪的设计 毕业设计论文.doc_第2页
基于MCU和FPGA的数字式相位测量仪的设计 毕业设计论文.doc_第3页
基于MCU和FPGA的数字式相位测量仪的设计 毕业设计论文.doc_第4页
基于MCU和FPGA的数字式相位测量仪的设计 毕业设计论文.doc_第5页
免费预览已结束,剩余31页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

东华理工大学长江学院毕业设计(论文) 中 文 题:基于MCU和FPGA的数字式相位测量仪的设计 英 文 题:Design of Digital Phase Measuring Instrument Based on MCU and FPGA二零零九年六月东华理工大学长江学院毕业设计(论文) 扉页 EAST CHINA INSTITUTE OF TECHNOLOGYCHANGJIANG INSTITUTEGRADUATION PROJECT (PAPER)TITLE: Design of Digital Phase Measuring Instrument Based on MCU and FPGASPECIALIZED: Electronic and Information EngineeringCLASS AND GRADE: 053143 STUDENT NUMBER: 05314321 STUDENT NAME: Zhang yali INSTRUCTS TEACHER: Gao Langqin DATE: 2009-6东华理工大学长江学院毕业设计(论文) Abstract III东华理工大学长江学院毕业设计(论文) 摘要 摘 要该设计采用单片机与FPGA相结合的电路实现方案,很好地发挥了FPGA运算速度快、资源丰富、编程方便的特点,并利用了单片机较强的运算、控制功能,使得整个系统模块化、硬件电路简单、使用操作方便。文章主要介绍设计方案的论证、系统硬件和软件的设计,给出了详细的系统硬件电路图和系统软件的设计过程。实践表明,该相位测量仪具有较好的性能。关键词: 单片机; 设计方案; 相位测量仪东华理工大学长江学院毕业设计(论文) 目录 Abstract The combination of MCU and FPGA is adopted in the design. The system exerts FPGA、characteristics of high operating speed,rich resource and convenient programming. The powerful operation and control IuncLions oI MCU are adopted, Lhus Lhe system is modularized,Lhe hardware is simple and Lhe operation is easy. The demonstration oI Lhe design strategy, design oI hardware and software are mainly intro-duced in Lhe paper. The detailed hardware circuits and main program oIsystem software are given. The practice shows LhaL Lhe phase measuringinstrument is good in performance and it has been successfully used in Lhe contest oI electronic design Ior national students.Keywords: MCU; Design strategy; Phase measuring instrument东华理工大学长江学院毕业设计(论文) 绪论 东华理工大学长江学院毕业设计(论文) 目录 目 录1绪论11.1课题背景及研究意义11.2 本系统的简单介绍11.2.1系统设计基本要求12总体设计方案论证22. 1以MCU为核心的实现方案22. 2以MCU与FPGA相结合的实现方案43系统硬件设计53.1 系统硬件电路总图53. 2系统硬件电路原理说明53.3.1输入电路部分63.3.2 FPGA电路部分63.3.3 MCU电路部分64系统软件设计74. 1软件设计要完成的任务74.2 FPGA部分的软件设计74.2.1 FPGA要完成的任务74. 3 MCU部分的软件设计84.3.1 MCU控制FPGA的电路框图84.3.2 MCU控制FPGA的软件设计思路84.3.3 MCU控制FPGA各程序流程图84. 4 MCU控制显示模块的软件设计114.4.1单片机控制显示114.4.2单片机控制显示程序流程图114.4.3键盘显示程序流程图125程序135.1 FPGA的VHDL源程序135.2 单片机的汇编语言设计及源程序17结束语28致谢29参考文献30东华理工大学长江学院毕业设计(论文) 绪论 311 绪 论1.1 课题背景及研究意义随着科学技术的突飞猛进的发展,电子技术广泛的应用于工业、农业、交通运输、航空航天、国防建设等国民经济的诸多领域中,而电子测量技术又是电子技术中进行信息检测的重要手段,在现代科学技术中占有举足轻重的作用和地位。低频数字式相位测试仪在工业领域中是经常用到的一般测量工具,比如在电力系统中电网并网合闸时,要求两电网的电信号相同,这就要求精确的测量两工频信号之间的相位差。还有测量两列同频信号的相位差在研究网络、系统的频率特性中具有重要意义。1.2 本系统的简单介绍1.2.1 系统设计基本要求(1)被测信号频率范围是20Hz20 kHz;(2)相位测量仪的输入阻抗100 k;(3)允许两路输入正弦信号峰一峰值可分别在15V范围内变化;(4)相位测量绝对误差2;(5)具有频率测量及数字显示功能;(6)相位差数字显示,相位差读数为0359. 9,分辨率为0. 1。本设计采用AT89C51单片机和FPGA为核心,利用单片机进行数据处理并显示结果,软件采用VHDL和汇编语言实现,构成低频信号频率相位测量仪。设计一个数字式相位测量仪,如图1-1所示 东华理工大学长江学院毕业设计(论文) 系统软件设计 相位测量数字显示A输入东华理工大学长江学院毕业设计(论文) 总体设计方案论证 B输入东华理工大学长江学院毕业设计(论文) 系统硬件设计 图1-1 相位测量仪示意图东华理工大学长江学院毕业设计(论文) 总体设计方案论证 2 总体设计方案论证从功能角度来看,数字式相位测量仪(以后简称测量仪)需要完成正弦信号的频率测量,以及两个同频正弦信号相位差的测量。测量仪有2路输入被测信号,他们是2个同频率的正弦信号,被测信号的频率范围为20 Hz20 kHz,幅度分别为U(15)V,且两者幅度不一定相等。不妨令被测信号周期为T,相位差为,相位差对应的时间差是则有比例关系式 T: 360 =T: (2-1)由此可以推导得到 (2-2) 式(2-2)说明,相位差与T有着一一对应关系,可以通过测量时间差T及信号周期T,计算得到相位差相位差的测量本质是时间差T及信号周期T的测量。时间的测量有多种方法,由一般常识可知,MCU应用系统一般能较好地实现各种不同的测量及控制功能,但有时达不到设计要求的设计指标,然而FPGA运算速度快、资源丰富、编程方便的特点,往往能满足一些设计要求比较高的技术指标。. 因此,在进行电子系统设计时,用MCU实现系统功能,FPGA完成系统指示。2. 1 以MCU为核心的实现方案2.1.1 测量工作原理两路待测信号经整形后变成了矩形波信号I、V,且可以认为I和V是同频率的不同相位的波形MCUINTi待测电路1 I显示鉴相器整形电路键盘整形电路待测电路2 V 图2-1以MCU为核心的相位测量仪原理框图以上所讨论的单片机系统可以实现对频率的测量和对相位差的测量功能。但是,该系统不一定能满足设计课题要求的技术指标,经分析计算得知,以MCU为核心的测量仪,当单片机的外接晶振为12 MHz时,计数器/定时器的计数误差为正负一个机器周期,即士1 s,由此而产生由此而产生的相位绝对误差为7. 2,若外接晶振为24 MHz时,相位差绝对误差为=3.6所以,以MCU为核心的设计方案当被测信号频率较高时很难满足设计要求。而且,在同一个单片机应用系统中实现频率和相位差的测量,设计程序也相当复杂 2. 2 以MCU与FPGA相结合的实现方案设计思路:如图2-1所示:让FPGA实现数据的采集,即将待测信号的频率f 、两路输入信号的相位差所对应的时间差T分别转换为二进制数据,供MCU读取使用。MCU从FPGA获取数据,并经过CPU计算、转换等有关处理后,得到信号的频率和相位差并送进LED数码管显示.待测信号1待测信号2AT89C51FPGA显 示 器整 形 电路整 形 电路 图2-2以MUC和FPGA相结合的实现方案框图因为设计任务要求,相位差测量绝对误差2,而用FPCA设计的计数器在测量T时有一个字的误差,对被测信号频率f = 20 kHz而言,下式成立 2: =360:50s则有 = 0. 278 s 这就是说,FPCA在采集相位差对应的时间差时,至少要能分辩出0. 278 s的时间间隔,为了兼顾MCU计算和时标信号获得的方便,我们采用周期=0. 1s,即频率f。 = 10 MHz的时钟脉冲作为时标信号。 当选定f。= 10 MHz后,就可以确定FPCA采用的二进制数据的位数。对于被测信号频率f = 20 Hz而言,计数器的计数值N,对应取最大值,因为f = 20 Hz时,周期T = 50 ms,在50ms内对。计数,计数值为:N1=50 ms /0.1s=500 000然而 218=262 144; 219=524 288,所以有 218500 000219则FPGA的二进制数据位数确定为19bit MCU从FPCA要获得两种数据,这两种数据都是19 bit无符号二进制数,一种是被测信号周期T对应的二进制数据(单位是0. 1s);另一种是两个被测信号的相位差对应的时间差(单位也是0. 1 s。这样,MCU与FPCA之间需要有握手信号,设置两个握手信号DSEL, FEN。实际上DSEL和FEN是MCU发给FPCA的控制信号,以便通过19根I/0线分时传送两个19 bit数据。由此采用了MCU与FPCA相结合的方案。 MCU要完成的任务有3个方面:一是从FPGA中获得19位的二进制数据,并控制FPGA的工作;二是对所获得的数据进行处理(完全有软件实现);三是将经过处理后的数据送给LED数码管显示。另外,由于送LED数码管显示的数据有相位差和频率两种,所以,应设置一个按键开关,以便实现显示内容的切换。东华理工大学长江学院毕业设计(论文) 系统硬件设计 3 系统硬件设计3.1 系统硬件电路总图图3-1系统总体电路原理3.2 系统电路原理说明我们采用MCU与FPGA相结合的方案来完成低频数字相位测量仪的设计,单片机与FPGA相结合的方案,将硬件系统分为数据采样处理机单片机最小系统两个部分。这种方案发挥了单片机控制运算能力强的特点,同时也充分的利用了FPGA数据采样速度快、资源丰富的有点。将数据采集交FPGA完成,可以准确地采集到两个同频率正弦信号的相位差所对应的时间差以及信号的周期,从而提高了系统的可靠性。由于单片机具有较强的运算、控制能力,因此,我们使用单片机最小系统完成读取FPGA的数据,并根据所读取的数据计算待测信号的频率和相位差。这种方案的框图如图3-2所示3.3 硬件电路分为以下三部分:3.3.1 输入电路部分 输人电路就是被测信号的整形电路,其任务是把任意波形(一般是正弦波)变换成矩形波。一般采用过零电压比较器或斯密特触发器。 3.3.2 FPGA电路部分FPGA配置存储器选用EPC1441。 EPC1441是OTP( one time program )型串行PROM,采用PDIP8封装,有440 800 x 1位,3. 3 V/5 V供电。需要注意的是,通用编程器对EPC1441编程时,要在EPC1441的脚、脚之间接一个300 pF的电容器。输入电路和FPGA时间差测量电路如图4所示,FPGA周期测量电路与FPGA时间差测量电路相似3.3.3 MCU电路部分这部分电路由单片机、晶振电路、按键电路、显示模块等组成。单片机的P0 、P2以及P1.0 、P1.1、P1.2端口接收FPGA传送来的对应于被测信号周期、相位差的19 bit二进制数据,并在单片机内部完成对这19 bit二进制数据的处理及相关运算。单片机完成对FPGA的控制,使FPGA按照单片机的要求通过19根I/0线分时发送被测信号的周期数据、相位差对应的时间差数据。MCU与FPGA的握手信号为FEN,DSEL,分别接在P1. 3和P1.5引脚。单片机通过串口UART将待显示信息(频率和相位差)送给LED显示模块完成显示。东华理工大学长江学院毕业设计(论文) 系统软件设计 4 系统软件设计4.1 软件设计要完成的任务整机电路原理图中看出,在整个软件设计的过程中,可以把它分为二大部分:(一)FPGA部分的设计(二)MCU部分的设计4.2 FPGA部分的软件设计4.2.1 FPGA要完成的任务:由硬件部分叙述可知,在系统中,FPGA对整形后的两路待测信号(clka、clkb)进行数据采集。 (1)对输入的40MHz始终脉冲clk进行4分频,得到系统所需要的10MHz时标信号clkf。(2)19bit的加1计数器da,完成对clkf的计数,以便分别得到与相位差对应的时间差数据datab和待测信号的周期数据datas。由前面的分析可知,datab和dataa都是19bit的二进制数据,时间单位为0.1us。为了实现第(2)点的功能,应该要产生:计数器清零信号;计数器使能信号;其他控制信号的逻辑电路。根据系统设计方案知,FPGA与MCU之间的数据传送采用19根I/O口线(19bit),而dataa及datab均是19bit的二进制数据,因此,设计一个二选一的数据选择器,以便有选择的将dataa或者datab送到FPGA的输出端口data。显然,该二选一的数据选择器的选择信号应该是来自FPGA与MUC之间的握手信号(fen和dsel),这就表明FPGA的工作受控于MCU。为了实现这一功能,设计了3个19bit的数据寄存器分别存放dataa、datab、data。利用D触发器的特点实现clka也clkb的信号超前/滞后检测。设置pre为输出断口信号,当pre=1时表示clka超前clkb;当pre=0时表示clka滞后clkb。4.3 MCU部分的软件设计4.3.1 MCU控制FPGA电路框图MCU控制FPGA框图图如下:ClkaClkbFPGA板 fenClk dsel89c5140MHz石英晶体震荡器19bitA信号B信号图4-1 FPGA 与单片机的连接控制框图4.3.2 MCU控制FPGA的软件设计思路是:单片机不断地从FPGA读取信号的周期和A、B信号相位差所对应的时间差,读取数据后进行有关计算,并通过转换后,送出给显示模块,实现频率和相位差的显示。4.3.3 MCU控制FPGA各程序流程图单片机主程序流程图如图所示:开始初始化从FPGA读A信号周期和AB信号下降沿时间差计算A信号频率和AB信号相位差送数据显示图4-2单片机主程序流程图单片机在获取FPGA 的数据时,开始的是一般的读取指令MOV指令,分别从单片机的P0口、P2口和P1口的低3位读入数据,组合为一个19为的二进制数据,通过控制口线P1.3、P1.5控制FPGA释放数据。经过多次测试,采用这种方式获得了比较好的效果。单片机读取FPGA数据的流程图如图所示:选通A信号周期时间 打开门 FPGA释放数据P0、P1、P2分别读据并存入周期数据缓冲区关门 FPGA禁止释放数据选通AB信号时间差 打开门FPGA释放数据P0、P1、P2分别读据并存入时间差数据缓冲区关门 FPGA禁止释放数据返回 图4-3读取FPGA数据的流程图单片机从FPGA读取信息后,对信息进行计算,算出信号A的频率,其流程图如图所示:调用除法,计算1千万/A周期调用二进制BCD转换程序调用压缩BCD码转换成单字节BCD码程序存入数据到显示缓存返回 图4-4计算A的频率程序流程图由于A、B信号是两路频率相同、相位不同的正弦波信号,因此经过整形电路后形成频率相同,时间上不重合的两路信号,这样,FPGA可以计算出两路信号的时间差,从而可以计算出A、B信号的相位差,其程序流程图如图所示:调用乘法,计算3600t=N调用除法,计算N/A周期调用二进制BCD转换程序调用压缩BCD码转换为单字节BCD码程序存入数据到显示缓存返回 图4-5 计算AB相位差程序流程图4.4 MCU控制显示模块的软件设计4.4.1 单片机控制显示MCU电路的功能是负责读取FPGA采集到的数据,并根据这些数据计算待测正弦波信号的频率及两路同频率正弦波信号之间的相位差,同时通过功能键切换,显示出待测信号的频率和相位差。单片机从FPGA读取信息后,需要将信号送到输出端显示出来。在系统的显示软件模块中,74LS164的连接方式是:74LS164的输出Q0Q7分别接LED数码管的dp、g、f、e、d、c、b、a,并且Q7连接下一个74LS164的A、B端,时钟CLK连接单片机的TXD端,第一片芯片的AB端连接单片机的RXD端,74LS164芯片的主控复位端接高电平VCC。4.4.2 单片机控制显示程序流程图 从FPGA读取信息后,将信号送到输出端显示出来,即单片机通过显示子程序将信息送到显示电路显示出来,显示程序流程图如图所示:显示开始 2FH.0=0?显示频率,赋频率的初始地址显示相位差,赋相位初始地址 显示处理 查表显示指针减10?退出显示Y N Y N 图4-6显示程序流程图4.4.3 键盘子程序流程图为了由6位LED数码管能分别显示频率或相位差,并能由人选择控制,设计一个案件开关来完成切换,键盘子程序流程图如图所示入口有键按下(P1.7=0)?N 东华理工大学长江学院毕业设计(论文) 软件延时10ms消抖 N有键按下(P1.7=0)?CPL 2FH.0出口图4-7 键盘子程序流程图东华理工大学长江学院毕业设计(论文) 东华理工大学长江学院毕业设计(论文) 程序 5 程序5.1 FPGA的VHDL源程序 FPGA的开发是在MAX+plusII开发软件平台下及EDA实验开发装置上完成的。其VHDL源程序代码入下; Phase measuring meter VHDL,programLibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.allentity test2 is port(dsel:in std_logic; clka:in std_logic; clkb:in std_logic En,resl:in std_logic Clkac,clkabc:out std_logic;clkac:out std_logicdataac:out std_logic_vector(18 downto 0);databc:out std_logic_vector(18 downto 0);calc,calbc:out std_logic;dac:out std_logic_vector(18 downto 0);clrac:out std_ogic;enac:out std_logic;loadac:out std_logic;data:out std_logic_vector(18 downto 0);End entuty szxwy;Archiecture art of szxwy isSignal clkf:std_logic;Signal dataa:std_logic-vector(10 dwnto 0);Signal datab:std_logic-vector(10 dwnto 0);Signal clb:std_logic;Signal da:std_logic-vector(10 dwnto 0);Signal clra:std_logic;Signal ena:std_logic;Signal loada:std_logic;Begin-信号分频模块Fpq:block is Begin Process(clk) is Variable temp:integer range 0 to 4; Varible cl:std_logic; Begin If rising_edge(clk)then If temp=3 then Temp:=0 cl:=1:ElseTemp:=temp+1:Cl:=0;End if:End if:Clke=cl;Clkfc=clkf; -仿真观测输出用End process;End block fpq: -控制信号产生模块Kzxh:block isSignal clka.clkb:std_logic;Signal cla:std_logic;BeginClka=not clkaa:Clkb=not clkbb;Clkac=clka; -仿真观测输出用Clkbc=clkb; -仿真观测输出用Process(clka)is Begin If rising_edge(clka) then Cla=not cla; End if; Ena=cla Loada=not cla; Clac=cla; -仿真观测输出用 Enac=ena; -仿真观测输出用 Loada=loada; -仿真观测输出用End process;Process(clkb) isBeginIf rising_edge(clkb) thenClb=not clb;End if;Clbc=clb: -仿真观测输出用End process;Process (clka,cla) isBeginIf clka=0 and cla=0 thenClra=1ElseClra=0;End if;Clrac=claa; -仿真观测输出用End process;End block kzxh;-时间检测模块Sjjc:block isBeginProcess(ena.cla.clkf)isBeginIf clra=1thenDa=000000000000000Slsif rising_edge(clkf) thenIf ena=1 thenDa=da+1;End if;End if;Dac=da; 仿真观测输出用End process;End block sjjc;-数据锁存模块Sjsc:block isBeginProcess(clb) is -时间差数据进程BeginIf clbevent anf clb=0 thenDarab=da;End if:Darabc=darab; -仿真观测输出用End process;Process(loada)is -提高周期数据进程BeginIf rosing_efge(loada) thenDataa=da;End ifDataacdatadatanull;End case;End if;End process;End bloclk scxz;End architecure art;东华理工大学长江学院毕业设计(论文) 参考文献 东华理工大学长江学院毕业设计(论文) 汇编语言源程序 5.2 MCU的汇编语言程序设计及源程序SZXWY,ASM用汇编语言编写单片机程序源程序如下:DATAH EQU 40h ; 19位周期T的数据存放内存单元DATAL EQU 41HDATA2L EQU 42H ;时间差DATA2H EQU 43H ;19位相位差对应的时间差的数据存放内存单元DATA3 EQU 44HDATA33 EQU 45HAD0 EQU 30HAD1 EQU 31HAD2 EQU 32HAD3 EQU 33HAD4 EQU 34HAD5 EQU 35HAD6 EQU 36HADA EQU 4FHADB EQU 5FHADC EQU 4DHADE EQU 5DHDSEL BIT P1.3FEN BIT P1.5KEY1 BIT P1.7KEY2 BIT P1.6ALA BIT P3.5DISPIT BIT 2FH.0*主程序: ORG 00H LJMP 100H ORG 100HMIAN: MOV 2FH,301HMIAN1: NOP LCALL DUSHUJU ;读FPGA数据 LCALL ZHUBEIZHOUQI 装入频率除法数据 CLR 2FH.3 JNB 2FH.3,DIVDD1 LJMP CHCHUDIVDD1:LCALL DIVD1 ;计算频率 MOV 6FH,4FH MOV 6EH,4EH MOV 6DH,4DH MOV 6CH,4CH MOV 35H,4FH MOV 34H,4EH MOV 33H,4DH MOV 32H,4DH LCALL BCDST ;二进制转换为BCD码 MOV R0,#30H MOV R1,#3FH MOV R7,#04H MOV 30H,#0 MOV 31H,#0 MOV 32H,#0 MOV 33H,#0 MOV 34H,#0 MOV 35H,#0 MOV 36H,#0 LCALL BCD_2BCD MOV 70H,#18 MOV 71H,30H MOV 72H,31H MOV 73H,32H MOV 74H,33H MOV 75H,34H MOV 76H,35HMIANWC:LCALL X3600 ;装入相位计算数据 LCALL MULNM MOV 4AH,5AH ;将以X3600位初始地址单元的积送入除法缓冲区 MOV 4BH,5BH MOV 4CH,5CH MOV 4DH,5DH MOV 4EH,5EH MOV 4FH,5FH MOV 5FH,DATAL ;装入被侧周期时间 MOV 5EH,DATAH MOV 5DH,DATA3 LCALL DIVDI ;得到相位差值 MOV 35H,4FH MOV 34H,4EH MOV 33H,4DH MOV 32H,#0 LCALL BCDST ;二进制转换为BCD码 MOV R0,#30H MOV R1,#3FH MOV R7,#04H MOV 30H,#0 MOV 31H,#0 MOV 32H,#0 MOV 33H,#0 MOV 34H,#0 MOV 35H,#0 MOV 36H,#0 LCALL BCD_2BCD MOV 78H,#16 MOV 79H,30H MOV 7AH,31H MOV 7BH,32H MOV 7CH,33H MOV 7DH,34H MOV 7EH,35HCHCHU:LCALL DISPKEYCOD: JB P1.7,MAIN11 LCALL DELAY1 JNB P1.7,$ CPL 2FH.0 LCALL DELAY2MIAN11: LCALL DELAY1 LCALL DELAY1 LCALL DELAY1 LJMP MIAN1*CPU从FPGA到数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论