采用fpga实现发电机组频率测量计的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
采用fpga实现发电机组频率测量计的设计
1 引言
在现代社会中,电资源成为人们生活当中不可缺少的一部分,而发电机和电动机在电力系统中扮演着非常重要的角色。在很多场合,需要对电机组和电网的频率进行测量。目前,频率测量的电路系统很多,这里介绍一种数字电路测频:基于fpga的发电机组的频率测量计。
随着电子技术的不断发展和进步,以eda为代表的数字电路设计发生很大变化。在设计方法上,已经从“电路设计—硬件搭试—焊接”的传统设计方式到“功能设计—软件模拟—下载调试”的电子自动化设计模式。在这种状况下,以硬件描述语言(hardware descrtption language)和逻辑综合为基础的自顶向下的电子设计方法得到迅速发展。verilog hdl语言是目前应用最广泛的硬件描述语言,它是在c 语言的基础上发展起来的,语法较为自由灵活、拥有广泛的学习群体、资源比较丰富,且轻易学简单易懂。本文发电机组频率测量计的设计是在verilog hdl语言的基础上展开的,源程序经过altera 公司的quartusⅱ5.0软件完成了综合、仿真(功能仿真和时序仿真),fpga(field programmable gate array,现场可编程门阵列) 选用的是cyclone系列的ep1c3t144c6器件。
2 频率测量电路
2.1频率测量的总体电路
采用电压互感器取来自于发电机组端电压或电网电压的测频输入信号,经削波、滤波处理后,变成幅度基本不变的稳定波形,经放大电路将信号放大整形,再用电压比较电路将具有正负幅值的方波变成只有正幅值的方波信号。然后,通过光电耦合器使fpga的数字系统与输入信号隔离。fpga数字系统利用标准的1hz信号对隔离后的方波信号的脉冲个数进行计数,得到信号的频率数,该频率数经数码管显示。由于发电机组的频率与发电机组端电压有关系,可以从频率的变化得到发电机组端电压的变化。从系统总体框图如图1所示,从中可以看出,该fpga 数字系统与输入通道隔离,因而大大提高了系统硬件的抗干扰能力。
图1 系统总体框图
2.2频率测量的原理
频率测量的原理是计算每秒钟待测信号的脉冲个数,也就是利用标准的1hz (周期为1s) 脉宽信号对输入的待测信号的脉冲进行计数,1秒计数结束后对采集到脉冲个数送到数码管显示。
测频控制器有3个输入信号:samplefreq为标准的脉冲信号,reset是复位控制信号,start是开始测量信号;3个输出信号:endmeasure是结束测量信号(计数复位和转换复位),gate是答应计数信号(即门控信号),enableconvert是开始转换信号。控制流程是先对频率计复位,再开始测量,在samplefreq信号的上升沿,gate 信号使能使计数器开始工作,到samplefreq的下一个上升沿,gate反转成低电平使计数器停止计数,同时enableconvert使转换器开始转换二进制数(转换时间低于1s)。转换结束后,十进制数经过7段显示译码器译码,然后在数码管中显示所测信号的频率。由于enableconvert信号的使用使数码管数据显示稳定,不会
出现闪烁。进行下次测量之前要对频率计进行复位,使数码管的数字显示清零,为下次显示做预备。
本文设计的数字频率计有六个模块组成:测频控制模块(control)、十分频模块(divfreq)、二进制计数器模块(counter)、锁存器模块(latch)、二进制到十进制的转换器模块(bit2bcd)、7段显示译码器模块(led_encoder)。
3 频率测量计的设计
本次设计采用verilog hdl语言,运用自顶向下的设计理念。将系统按功能按层次化分,首先定义顶层功能模块,并在顶层功能模块内部的连接关系和对外的接口关系进行了描述, 而功能块的逻辑功能和具体实现形式则由下一层模块来描述。整个设计分两步:第一步利用quartus ⅱ5.0图形块输入方式设计顶层模块,顶层图形块如图2所示;第二步在顶层模块中为每个图形块生成硬件描述语言(verilog hdl),然后在生成的verilog hdl设计文件中,对低层功能模块的功能进行描述设计。
图2 顶层图形块
3.1 测频控制模块设计
这是三输入三输出模块,测频控制模块波形仿真如图3所示,如用verilog hdl描述为:
module control (clk,reset,start,enableconvert,gate,endmeasure);
input reset,start,clk;
output enableconvert,gate,endmeasure;
reg enableconvert,gate,endmeasure;
always @ (posedge clk posedge reset)
begin
if (reset)
begin
endmeasure <= 1'b1 ;
enableconvert <=1'b0 ;
gate <= 1'b0 ;
end
else
begin
endmeasure <= 1'b0 ;
if (start)
begin
gate <= ~gate ;
enableconvert <= gate ;
end
end
end
endmodule
图3 测频控制器波形仿真时序图
3.2 二进制到十进制的转换器模块设计
本设计,需要转换时钟convertfreq信号对转换模块进行时序控制,由于要在1s 内完成转换,则转换时钟convertfreq的频率应该选用高频频信号,即转换时钟convertfreq的频率是标准时钟samplefreq信号10分频得到的。
为了对本设计进行波形仿真,取输入的10位二进制数bin[9..0]为10’b0000011001(十进制为25)。图4为二进制到十进制的转换器的仿真时序图:
图4 二进制到十进制的转换器的仿真时序图
4 仿真和调试
通过上述的描述,从各个模块独立的角度对其进行了仿真,结果表明设计符合要求。为了保证系统的整体可靠性,对整个系统做了仿真,仿真时序图如图5所示: