按一次按键,输出一个脉冲,脉冲宽度由计数器决定。

按一次按键,输出一个脉冲,脉冲宽度由计数器决定。

背景:通过脉冲来控制镜头光圈电机的打开和闭合,每来一个脉冲镜头光圈打开相应的角度,在调试阶段,先用现有的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

 

posted @ 2012-12-28 11:07  翟小灰  阅读(924)  评论(2编辑  收藏  举报