按一次按键,输出一个脉冲,脉冲宽度由计数器决定。
按一次按键,输出一个脉冲,脉冲宽度由计数器决定。
背景:通过脉冲来控制镜头光圈电机的打开和闭合,每来一个脉冲镜头光圈打开相应的角度,在调试阶段,先用现有的FPGA开发板来进行手动的脉冲产生,但是由于直接按键的时间不好控制,所以对按键的脉冲进行整形,变成为一次按键,产生一个固定宽度的脉冲,该脉冲的宽度由程序中的计数器决定。
DE2-70开发板,QuartusII 11.0,modelsim 6.6c开发环境。
先上modelsim仿真波形图:
整体结构图:
各部分程序:
in模块
module in(iKEY,rst,clr,out);
……
always@(posedge iKEY or posedge rst or posedge clr)
begin
if(clr)
out<=0;
else if(rst)
out<=0;
else if(iKEY)
out<=1;
end
endmodule
int_dly功能块
module int_dly(clk,clr,en,out,stop);
……
always@(posedge clk)
begin
if(clr||(!en))
begin
out<=0;
stop<=0;
cnt<=24'h00_0000;
end
if(en)
begin
cnt<=cnt+24'h00_0001;
out<=1;
end
if(cnt>=24'h00_040)
begin
out<=0;
stop<=1;
cnt<=24'h00_0000;
end
end
endmodule