相位测量技术毕业设计.docx
《相位测量技术毕业设计.docx》由会员分享,可在线阅读,更多相关《相位测量技术毕业设计.docx(36页珍藏版)》请在冰豆网上搜索。
相位测量技术毕业设计
引言
随着相位测量技术广泛应用于国防、科研、生产等各个领域,对相位测量的要求也逐步向高精度、高智能化方向发展,在低频范围内,相位测量在电力、机械等部门有着尤其重要的意义,对于低频相位的测量,用传统的模拟指针式仪表显然不能够满足所需的精度要求,随着电子技术以及微机技术的发展,数字式仪表因其高精度的测量分辨率以及高度的智能化、直观化的特点得到越来越广泛的应用。
基于这些要求,本设计采用了功能强大的可编程逻辑器件(FPGA)为主要的硬件载体,使用HDL语言完成主要的逻辑控制和数字处理,因所有的控制和数字处理都在FPGA内部完成.成本低,工作可靠,外围电路简单.
1设计所须设计软件简介
1.1Mathlab7.1
MATLAB是矩阵实验室(MatrixLaboratory),最初主要用于方便矩阵的存取,其基本元素是无需定义维数的矩阵。
经过十几年的完善和扩充,现在已发展成为线性代数课程的标准工具,也成为其它许多领域课程的使用工具。
在工业环境中,MATLAB可用来解决实际的工程和数学问题,其典型应用有:
通用的数值计算,算法设计,各种学科如自动控制、数字信号处理、统计信号处理等领域的专门问题求解。
MATLAB是MathWorks公司推出的一套高性能的数值计算和可视化软件,经过多年大量的、坚持不懈的改进,现在MATLA已经更新至5.x版,其中,4.x在Windows操作系统下工作,5.x在Windows95操作系统下工作。
MATLAB集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境。
在这个环境下,对所要求解的问题,用户只需简单地列出数学表达式、其结果便以人们十分熟悉的数值或图形方式显示出来。
MATLAB语言易学易用,不要求用户有高深的数学和程序语言知识,不需要用户深刻了解算法及编程技巧。
MATLAB既是一种编程环境,又是一种程序设计语言。
这种语言与C、FORTRAN等语言一样,有其内定的规则,但MATLAB的规则更接近数学表示。
使用更为简便,可使用户大大节约设计时间,提高设计质量。
本设计中,主要是使用其dspbuilder产生正弦波的波形文件.
1.2QuartusII7.2
Quartus®IIdesign高级和复杂的,用于system-on-a-programmable-chip(SOPC)的设计环境。
QuartusIIdesign提供完善的timingclosure和LogicLock™基于块的设计流程。
QuartusIIdesign是唯一一个包括以timingclosure和基于块的设计流为基本特征的programmablelogicdevice(PLD)的软件。
QuartusII设计软件改进了性能、提升了功能性、解决了潜在的设计延迟等,在工业领域率先提供FPGA与mask-programmeddevices开发的统一工作流程。
AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
AlteraQuartusII(3.0和更高版本)设计软件是业界唯一提供FPGA和固定功能HardCopy器件统一设计流程的设计工具。
工程师使用同样的低价位工具对StratixFPGA进行功能验证和原型设计,又可以设计HardCopyStratix器件用于批量成品。
系统设计者现在能够用QuartusII软件评估HardCopyStratix器件的性能和功耗,相应地进行最大吞吐量设计。
Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力
本设计中,Quartus是主要的程序设计工具,在这强大的平台上完成程序入,仿真,综合和下载.
1.3Multisim9
Multisim是加拿大图像交互技术公司(InteractiveImageTechnoligics简称IIT公司)推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。
它包含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。
工程师们可以使用Multisim交互式地搭建电路原理图,并对电路行为进行仿真。
Multisim提炼了SPICE仿真的复杂内容,这样工程师无需懂得深入的SPICE技术就可以很快地进行捕获、仿真和分析新的设计,这也使其更适合电子学教育。
通过Multisim和虚拟仪器技术,PCB设计工程师和电子学教育工作者可以完成从理论到原理图捕获与仿真再到原型设计和测试这样一个完整的综合设计流程。
本设计中,主要是用来仿真外围的模拟电路,,减少硬件设计差错,加速设计进度
2系统设计参数和系统模块划分
2.1设计的技术主要指标
1.频率范围:
20Hz~20kHz。
2.相位测量仪的输入阻抗≥100kΩ。
3.允许两路输入正弦信号峰-峰值可分别在1V~5V范围内变化。
4.相位测量绝对误差≤2°。
5.具有频率测量及数字显示功能。
6.相位差数字显示:
相位读数为0o~359.9o,分辨力为0.1.
2.2系统模块划分
系统总共分成三大模块(f_p_top包含了两个模块,频率测量模块和相位测量模块),分别是DDS模块,频率测量模块和相位差测量模块.由于每个模块为独立的模块都能独立地完成各自的电路功能,所以设计和测试都较为方便,可移植性强.各模块的功能如下:
DDS模块的功能:
它在时钟的控制上,在用户输入的频率之师的控制之下,通过查找表方式,产生两列,幅度为20到20kHz的正弦信号,并且相位连续可调,范围0~360度,最小部件为0.1度,
频率测量模块的功能:
它在时钟控制下,能够正确的检查出频率范围从10到99kHz的输入信号的频率,并且每0.2秒刷新一次.
相位差测量模块的功能:
它在时钟的控制下,能够正确的检查出量列输入信号之间的相位差,工作范围20~20kHz.最小分辨率为0.1度.
系统顶层的RTL框图如下:
图3-1系统顶层的RTL框图
3方案论证与设计
3.1相位测量方案
3.1.1相位测量方案选择
方案一:
将被测的两路正弦波信号经比较器整形成方波信号,利用异或门电路进行鉴相处理,将得到的脉冲序列经过RC平滑滤波取出其直流分量,该直流电平的幅值与两路信号的相位差成正比,将此信号送入A/D转换器由单片机进行运算处理从而计算出相位差值。
方案二:
采用脉冲填充计数法,将正弦波信号整成方波信号,其前后沿分别对应于正弦波的正相过零点与负相过零点,对两路方波信号进行异或操作之后输出脉冲序列的脉宽可以反映两列信号的相位差,以输入信号所整成的方波信号作为基频,由可编程逻辑器件对获取的计数值进行处理得到两路信号的相位差。
3.1.2相位差测量模块实现
模块包括了提取相位差提取模块,相位计数模块,时钟分频模块,相位差处理模块差模块组成.
实现框图下:
图3-2相位差测量模块RTL框图
3.1.2相位差提取模块设计
该模块由于时序要求比较苛刻:
所以是使用原理图输入法进行设计,原理图如下:
图3-3相位差提取模块RTL框图
输入两路同频率的正弦波信号,其波形表达式分别为:
(3-1)
(3-2)
其中
、
为电压瞬时值,
、
为电压的幅值,
为角频率,
、
为初始相角,当两路信号的频率相同时,相角差
是一个与时间无关的常数
此两路正弦波信号经过放大整形成两路占空比为50%的正方波信号f1、f2,经过异
图3-4相位差提取模块仿真波形图
或门输出一个脉冲序列SING_S,与晶振产生的基准脉冲波SING_T进行与操作得到调制后的波形Q,在一定的时间范围内对B、C中脉冲的个数进行
计数得
、
,则其相位差计算公式为:
(3-3)
当SING_S的上升来临时,输入高电平,一直维持到SING_T的上升沿来临.这样就把两列信号的相位差提取出来.
3.1.3相位测量计数模块的设计
设计程序见附录1
相位测量计数器的RTL框图如下:
图3-5相位测量计数器的RTL框图
其中包括了一个累加器,两个数据选择器,和五个寄存器,其工作原理如下:
当信号输入端(SING)为高电平时,内部计数器对时钟(CLK_S)进行计数,当信号输入端为低电平,立即停止计数,并把计数的结果送到输出口,这样可以计算出输入高电平的时间:
(3-4)
仿真波形如下:
图3-6相位测量计数器仿真波形
由上图可知,设计满足要求.
3.1.4相位差算术运算处理单元设计
由于本设计是使用高频时钟对基准时钟和相位差的脉宽进行计数,处理得到相位差,在前的相位计数中,我们得知:
所以相位差为:
(3-6)
(3-7)
(3-8)
所以本模块只要进行以上的计算机就可以了.设计RTL框图如下:
图3-7相位差算术运算处理单元RTL框图
设计程序见附录1
最后的测试结果可以直接送到数码管动模块直接显示,中间无需太多的数据运算,节约了开销优化了系统的时序特性.通过仿真,设计完全满足要求.
仿真波形如下:
图3-8相位差算术运算处理单仿真图形
由上图可知,设计满足要求.
3.2频率测量方案
3.2.1频率测量方案选择
方案一:
用专用频率计模块来测量频率,如ICM7216芯片,其内部带放大整形电路,可以直接输入正弦信号,外部振荡部分选用一块高精度晶振和两个低温度系数电容构成10MHz振荡电路,其转换开关具有0.01s,0.1s,1s,10s四种闸门时间,量程可以自动切换,待计数过程结束时显示测频结果。
方案二:
利用可编程计数器来实现频率的测量,将被测信号转换为方波信号输入可编程逻辑器件内部,利用可编程逻辑器件内部的计数器进行计数,阀门时间周期为0.2秒,高电平时计数,低电平时更新数据.由于方案二,设计简洁,易于实现,本设计采用方案二.
3.2.2频率测量模块设计实现
频率测量有很多方法,可分为两大类,一类是单位时间内测量脉冲周期的方法:
这种方法的好处是能够用标准的基准单位时间对高频时钟进行脉冲测量,此方法简单方便容易实现.但是由于使用了基准的单位时间,所以测量脉冲时,如果被测量的高频时钟的周期比较接近基准时间的周期,这种测量方法的精度会数数下降,精度难以得以保障.所以这种方法只适合于测量高频时钟.或者说这种方法只适合与基准时钟的被测试中大得多的情况下,第二类测量频率的方法是,是使用高频时钟对被测信号的单个时钟周期进行高频计数.这种方法的好处是使用高频时钟对被测信号进行测量,所以说对于低频被测信号有较高的精度,但设计较为复杂.这个设计的最大缺陷是,当被测信号频率较高时,特别是被测信号接近于高频时钟的频率时.精度无法得以保障.所以它只是可以测量.
由于本设计中所测量的频率范围为20~20KMz.所以被测信号属于低频信号.本设计就采用了第一种测量频率的方法.寄达内时间内测量被测信号的周期的方法:
设计程序见附录2.
其中本模块的输入信号基准时钟信号CLK_0_2,周期为0.2秒,SING被测信号,REST为复位信号,F_10K到F_10为测量结果.当输入的基准时钟信号为高时,内部计数器进行记数,发生输入时钟无效时内部计数器进行清零,并把计数的结果送到输出端口.
本设计的模块设计简单,明了易于阅读和修改.它的RTL框图如下:
图3-9频率测量模块RTL框图
由此可见本设计满足设计要求,而且所用的逻辑单元也较少,因为使用了分级计数的方法,避开了诸多的数字运算的过程.输出的数字可以送往数码管,通过数码管驱动可以把结果直接显示出来.仿真图形如下:
图3-10频率测量模块仿真波形
3.3显示部分设计方案
3.3.1显示部分设计方案选择
方案一:
采用八位共阴极LED数码管进行显示,利用单片机串行口的移位寄存器工作方式,外接MAX7219串行输入共阴极显示驱动器,每片可驱动8个LED数码管。
方案二:
采用点阵字符型LCD液晶显示,可以显示数字与阿拉伯字母等字符,随着半导体技术的发展,LCD的液晶显示越来越广泛的应用于各种显示场合,但成本高,驱动复杂。
比较这两种方案,数码管显示驱动简单,设计中用到的要显示的数字少,显示界面友好,综合考虑,选用LED来实现显示功能.
图3-11显示模块原理图
3.3.2数码管驱动模块的实现
由于本设计采用了可编程逻辑器件内部的驱动模块进行驱动,所以外围电路无
需别的驱动芯片,只要接上一个保护电阻就可以直接接到可编程逻辑器件的I/O口上实现十分方便方便,
PCB如下:
图3-12显示模块PCB
3.4输入信号整形模块设计方案
由于本设计中,所用到的信号的幅度都比较大,而且正弦波主要是由自身的波形发生器产生的,所以能保证一定的幅度,所以不对信号进行放大,而直接进行隔离,和整形的处理.Protel99se电路原理图设计如下:
图3-13输入信号整形模块原理框图
PCB如下:
图3-14输入信号整形模块PCB图
前级的射随器的作用是起到隔离和提高负载的作用,因为使用了运算放大器,所以它的隔离效果很好,输入阻抗也很高.基本满足是设计的要求.
后面得过零比较器使用芯片lm399来实现,由于该芯片性能较好,能够较好地提取正弦波的过零点,所以使用过零点这种判断方法,是因被正弦波再过零点的时候,斜率具有极大值,所以及时量列正弦波幅度略有不同,也不会对测量的结果造成太大的影响.所以芯片上输出口的上拉电阻主要是控制高低电平输出的大小,因为可编程逻辑器件的内部对高低电平的判断的信噪比要求并不是很高,所以只要接上一个上拉电阻就可以的,当然本设计有一个不方便之处就是一双电源供电在电源设计上比较麻烦,考虑到精度的要求,不使用双电源供电,使用单电源供电.
3.5DDS正弦波波形发生器设计
3.5.1DDS正弦波波形发生器设计方案的总体设计
DDS(直接数字合成技术)在波形应用中发生有较为广泛的应用,它由以下优点:
占用资源较少何时现简单方便等特点.的设计中应采用的较高高性能的可编程逻辑器件来实现,内部有较多的存单元门.所以能够构建较大的DDS查找表,由于本设计所要求的精是零点一度,所以所用的查找表的大小为3,600个存储字,每个字的长度为八位,由于本设计要产生两个正弦波,所以使用两个查找表.设计框图如下:
图3-15DDS正弦波波形发生器原理框图
本DDS设计中,包括了,两个相位累加计数器,两个幅度查找表,一个频率设置寄存器,和一个相位是预制寄存器,还有三个同步寄存器.
3.5.2相位累加器频率的设计
它是DDS的设计的核心,它在时钟中的控制之下,进行相位累加,输出的相位地址输入到查找表中从而能读出波形幅度.
相位累加器的存储单元设计:
在本次设计中,查找表的大小每3,600个,所以是相位累加器的输出地址的倍数为12位(
=4096)因为设计中只用到了3,600,所以相位累加器设置一个最大计数值(3599).
在本设计中,所要求产生频率为20~20KHz的正弦波,所以最高频率是最低频率的1000倍,所以用相位累加器的位10位(
=1021大于1000)位作为相位累加器的预置位.
在本设计中,的一尊查找表所需要输出的地址的倍数每12位,频率是所需要的倍数为10位,所以相位累加器的倍数每20位.
相位累加器实现了RTL框图如下:
图3-16相位累加器实现了RTL框图
从上图可以看到,设计中使用了一个比较计,一个加法器,一个10位的相位预制寄存器,还有一个22位的计数寄存器.设计明了简单,便于实现,因为使用的逻辑一较少.而每一级都插有了寄存器.所以它的运行速度机会能达到200MHz达到设计的要求.占用系统资源也较少工作可靠.因为这些都在可编程逻辑内部来实现,所以比起单片机来说,它设计简单方便几乎没有外接输出输入口,电路设计的硬件实现简单方便易于升级修改.成本较低,同时模块化方便检测,便于移植.程序的可读性和维护性更强.
3.5.3正弦波查找表设计
由于正弦波波形较为复杂,用QuartusII内部的hex文件的编辑器无法自动完成输入,而且节点数较多,如果使用手功输入,要花费大量的时间,而且很难保证数据正确.所以本设计中,采用了强大的数据处理能力MATLAB7.1内嵌工具DSPBuilder来自动生成波形文件.再把所生成的hex文件大道工程中去,来完成了正弦波查找表的初始化的设计.由于要存储3,600个点.所以所需要的的地址数为12位(
=4096),存储深度为八位.
实现框图如下:
图3-17正弦波查找表设计波形产生图
由于DSPBuilder拥有强大的数据处理能力,友好的操作界面,在DSPBuilde中仿真的波形下:
图3-18正弦波查找表设计仿真波形图
由于DSPBuilder拥有强大的数据处理能力,友好的操作界面,使查找表初始文件的产生,变得简单,易于操作和实现,而且它拥有强大的可视化工具,使产生的波形文件得以直观化的验证.确保数据准确无误.
正弦波查找表在可编程逻辑器件内部的实现:
在QuartusII内部,就内嵌的原理图输入方法,使用原理图输入方法直观可靠,不用考虑代码风格,直接使用可编程逻辑器件内部的片状的ROM,使设计变得简单可靠,不浪费内部的逻辑单元,使器件工作可靠,设计成本降低.并且,时序得以优化,功耗也有所降低.
由仿真波形可知,设计满足要求,并且所出现的毛刺都小于一纳秒,所以在设计当中,编程逻辑器件不会发现如此之小毛刺,所以设计满足要求.
3.5.4同步计数器的设计
从前面的相位预置字模块的设计中看到,由于相位与子模块的存在,输出地址被延迟了三个时钟周期,所以必须在没有预置的标准输出信号中延迟三个个时钟周期使两个查找表同步.由于输出地址为12位.所以同步计数器的位数也位12位.
3.5.5相位预置寄存器的设计
由于本设计要求能够进行相位预置并且并且最小的步进为0.1度.所以只需要对原来的输出地址为进行被预置相位进行相加即可.设计的程序如下:
moduledss_p_add(CLK,REST,ADDR,SET_P,OUT);
inputCLK,REST;
input[11:
0]ADDR,SET_P;
output[11:
0]OUT;
reg[11:
0]OUT;
reg[13:
0]out1,out2;
always@(posedgeCLKorposedgeREST)
if(REST)
begin
out1<=1'b0;
out2<=1'b0;
end
else
begin
out1<=ADDR+SET_P;
OUT<=out2;
if(out1>=3600)
begin
out2<=out1-3600;end
else
begin
out2<=out1;end
end
endmodule
3.6D/A模块设计
3.6.1数模转换芯片的选择
由于本设计所要产生的正弦波的频段为低频.所以对转换芯片的时序要求并不是很高,所以采用传统的数模转换芯片DAC8032进行设计,原理图如下:
图3-19D/A模块工作原理图
PCB如下:
图3-20D/A模块PCB图
由于设计中没有用到其它的特别的功能,所以把所有的使能端都接有效电平,只要芯片的数据输入口的数据稳定后,芯片就会自动地进行数模转换,并不要进行什么特别的设置和时序控制,设计简单可行,输出波形稳定.
3.6.2运算放大器选择
同样,由于本设计所要产生的波形被正弦波,这些频率较低属于低频频段,所以无需太多苛刻的要求,故采用运算放大器lm324进行放大.
Multisim9电路原理图设计如下:
图3-21运算放大器Multisim9电路原理图
Multisim9仿真波形如下:
图3-22运算放大器Multisim9电路仿真波形图
由上图可知,从ADC0832的电流信号的电压放大到0到3V,同时负载能力大大加强.
第一位射随器,起到隔离和提高负载能力的作用,它没有电压放大的作用,后极为同相放大器,调整其反馈电阻可以调节其放大系数,应满足不同输出电压的需要.
本设计采用的时并行DA变换电路。
并行数模变换芯片采用DAC0832,IO40~IO47分别接芯片的D0~D7,芯片片选信号和W1、W2两个写接地,变换后的电流模拟量经过运放LM324转成电压,再用LM324放大约0V~+3V范围内。
输出电压为:
(3-9)
3.7键盘模块的设计
3.7.1键盘软件设计
设计程序见附录3.
本驱动主要用一个状态机来实现数码管的驱动,它能够驱动八个动态数码管,刷新率通过外面的分频器来进行设定,一般单管的刷新率为40~80之间较为合适.
本设计中使用触摸按钮进行设计,因为触摸按钮存抖动,会产生误操作所以必须对其进行消抖,所以必须进行消抖处下理.消抖处理有两种方法,的一种是使用硬件消抖,第二种方法是使用软件消抖,由于本设计使用的是可编程逻辑器件,内部有大量的可供使用的逻辑单元,再加上使用软件消抖更灵活更方便,占用资源也较少.所以本设计使用的是软件消抖.设计方图下:
键盘输入模块中包括了:
一个带使能端了计数器,六个二输入与门,还有六个计数器,工作原理如下:
当有键盘被按下,计数器是被使能,对时钟进行记数,当中记数值大于计数器的模值时,计数器溢出为有效.并输入到和输入与非门的一端,这时,被按下的键盘是相应的计数器将会接收到一个上升沿并进行加一或减一操作.进行加减界面的操作模式的算说主要有模式算存储器来控制,当模式开关被按下时,模式寄存器进行反转,输入到个计数器中,完成模式选择操作.
图3-23键盘模块RTL设计框图
3.7.2键盘输入硬件电路的设计
图3-24键盘模块原理图
由于本设计采用了软件消抖的机制,所以该键盘模块无需插入消抖机制,所以设计简单明了,设计成本的操作方便.故障少易于调试和维修.
3.8FPGA下载电路设计
芯片的下载是指将芯片的配置文件输入到FPGA器件中,从而完成对芯片的编程,使芯片实现指定功能。
Altera公司为不同系列器件提供了不同的编程与配置方式,常用的下载方式有BitBlaster下载、ByteBlaster并行下载以及ByteBlasterMV并行下载。
本设计选用了ByteBlasterMV并行下载方式,实际上Altera公司的器件在实际应用中大都采用这种下载方式,这种下载方式支持两种数据下载模式:
主动串行同步(AS)模式和JTAG模式.本设计选用了JTAG模式。
在使用JTAG模式进行下载时,ByteBlasterMV并行下载电缆两端的接口信号不同于AS模式下的接口信号,在进行编程/配置时所用到的数据信号是TCK,TDO,TMS以及TDI,图4-8即为本设计中用户板上JTAG模式下进行配置的原理图。
JTAG与AS方式还有一个区别,通过AS方式,必须先将配置文件先下