基于Verilog-HDL的轴承振动噪声电压峰值检测
换器转换成数字电压后,数据存储模块便依A/D转换的次数做相应次的比较,最终将噪声电压的峰并保持下来。VDOUT为数字式的峰值输出电压。
仅有图5的逻辑功能框图还不能方便地用Verilog-HDL来描述。为此将其进一步细化为图6所示的形式。图6中虚线框内的功能由XC9572(Xilinx公司的产品)实现。图6中,Vin为模拟电压的输入,VDOUT为数字峰值电压的输出,VDOUT、RB1、RB21均与接口电路相接,R
B1、RB2受微机的控制。
2.2时序图
图7为图6所示逻辑电路的时序图。按照轴承检测的工艺,当系统复位RB2、启动脉冲RB1到来后,经0.7s的延时,便产生1个宽度为1s的门脉冲G_P。在此期间,A/D转换器连续转换的数据送入数据缓冲器GET_DATA,之后进行数字信号的峰值检测和保持。A/D转换器在此采用MAX120。该转换器的分辨率为12bit,转换时间为1.6μs。
2.3逻辑仿真
在硬件电路实现之前,用Verilog-HDL对图6所示的逻辑电路进行了仿真,图8即为仿真结果。从仿真结果中可以看出,系统复位后,D_OUT(VDOUT)输出为0,在1s门脉冲G_P有效期间,GET_DATA接收时钟GET_DATA_CLK。此间来自A/D转换器的数字电压(分别为FROM_ADC=10、15、18、17、4、6、2)相继输入至GET_DATA。由于这期间的最大值为FROM_ADC=18,故有D_OUT=18。在门脉冲G_P无效期间,即使有数据FROM_ADC=11输入,仍有D_OUT=0。
2.4Verilog-HDL主模块
限于篇幅,这里只将本系统所涉及到的Verilog-HDL的主模块部分列出:
ModulePK_SEL(BUSY,RB1,RB2,FROM_ADC,D_OUT,P_OUT);
inputBUSY,RB1,RB2;
outputP_OUT;
input[11:0]FROM_ADC;
output[11:0]D_OUT;
wire[11:0]TO_COM;
wireGET_DATA_CLK;
//产生秒脉冲
CNT100F_4kHz(RB1,BUSY,F_4k);//分频
CNT100F_37Hz(RB1,F_4k,F_37);//分频
DELAY_P1START_DLY(RB2,RB1,F_7,DLY_05S);//延时0.7s
DELAY_P2GENE_SPB(RB2,DLY_05S,F_7,SPB);//延时1s
GETE_GENEGENE_GP(G_P,DLY_05S&RB2,SPB);//1s的门脉冲
AssignP_OUT=G_P;
//ADC数据最大值的比较和检测
assignGET_DATA_CLK=~BUSY&G_P;
DFF12GET_DATA(GET_DATA_CLK,FROM_ADC,TO_COM,~SPB&R 《基于Verilog-HDL的轴承振动噪声电压峰值检测(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/177037.html
仅有图5的逻辑功能框图还不能方便地用Verilog-HDL来描述。为此将其进一步细化为图6所示的形式。图6中虚线框内的功能由XC9572(Xilinx公司的产品)实现。图6中,Vin为模拟电压的输入,VDOUT为数字峰值电压的输出,VDOUT、RB1、RB21均与接口电路相接,R
B1、RB2受微机的控制。
2.2时序图
图7为图6所示逻辑电路的时序图。按照轴承检测的工艺,当系统复位RB2、启动脉冲RB1到来后,经0.7s的延时,便产生1个宽度为1s的门脉冲G_P。在此期间,A/D转换器连续转换的数据送入数据缓冲器GET_DATA,之后进行数字信号的峰值检测和保持。A/D转换器在此采用MAX120。该转换器的分辨率为12bit,转换时间为1.6μs。
2.3逻辑仿真
在硬件电路实现之前,用Verilog-HDL对图6所示的逻辑电路进行了仿真,图8即为仿真结果。从仿真结果中可以看出,系统复位后,D_OUT(VDOUT)输出为0,在1s门脉冲G_P有效期间,GET_DATA接收时钟GET_DATA_CLK。此间来自A/D转换器的数字电压(分别为FROM_ADC=10、15、18、17、4、6、2)相继输入至GET_DATA。由于这期间的最大值为FROM_ADC=18,故有D_OUT=18。在门脉冲G_P无效期间,即使有数据FROM_ADC=11输入,仍有D_OUT=0。
2.4Verilog-HDL主模块
限于篇幅,这里只将本系统所涉及到的Verilog-HDL的主模块部分列出:
ModulePK_SEL(BUSY,RB1,RB2,FROM_ADC,D_OUT,P_OUT);
inputBUSY,RB1,RB2;
outputP_OUT;
input[11:0]FROM_ADC;
output[11:0]D_OUT;
wire[11:0]TO_COM;
wireGET_DATA_CLK;
//产生秒脉冲
CNT100F_4kHz(RB1,BUSY,F_4k);//分频
CNT100F_37Hz(RB1,F_4k,F_37);//分频
DELAY_P1START_DLY(RB2,RB1,F_7,DLY_05S);//延时0.7s
DELAY_P2GENE_SPB(RB2,DLY_05S,F_7,SPB);//延时1s
GETE_GENEGENE_GP(G_P,DLY_05S&RB2,SPB);//1s的门脉冲
AssignP_OUT=G_P;
//ADC数据最大值的比较和检测
assignGET_DATA_CLK=~BUSY&G_P;
DFF12GET_DATA(GET_DATA_CLK,FROM_ADC,TO_COM,~SPB&R 《基于Verilog-HDL的轴承振动噪声电压峰值检测(第2页)》