nbhkdz.com冰点文库

Verilog 脉冲发生器程序

时间:2014-10-30


Verilog 脉冲发生器程序 2014-08-12 14:35:17| 分类: 默认分类 |举报|字号 订阅 /****************************************************************************** ********* 实现功能简述 本模块主要功能是产生一个确定时钟周期长度(最长为 256 个时钟周期)的脉冲信号,可以 自己设定脉冲长度,输出的脉冲信号与时钟上升沿同步 脉冲宽度 = pulsewide + 1 时钟周期; 输入一个启动信号后, 可以产生一个固定时钟周期长度的脉冲信号, 与启动信号的长短无关! 脉冲宽度可调! 1、可以调整输出脉冲宽度 2、只要输入一个启动信号,不论启动信号宽度——需要能够触发设计,就输出脉冲 3、再输出一个完整的脉冲过程中,不论输入多少个启动信号,都只会输出一个脉冲 4、不论启动脉冲的宽度多大,输出的脉冲宽度恒定 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++ ******************************************************************************* ********/ module confirmpulse ( clk, reset, start, pulse, pulsewide ); input clk, reset, start; input [7:0] pulsewide; output pulse; reg pulse; reg counten; reg [7:0] count; //计数器启动标记,表示一次延时计数开始 always @ ( posedge clk ) begin if ( reset == 'b0 ) counten <= 'b0; else begin if ( start == 'b1 ) counten <= 'b1; else if ( start == 'b0 && count > pulsewide ) counten <= 'b0; end

end //延时计数器,保证延时 pulsewide 个时钟周期 always @ ( posedge clk ) begin if ( reset == 'b0 ) count <= 'b00000000; else begin if ( counten == 'b0 ) count <= 'b00000000; else if ( counten == 'b1 && count <= pulsewide ) count <= count + 1; else if ( counten == 'b0 && start == 'b0 ) count <= 'b00000000; end end //输出定宽脉冲 always @ ( negedge clk ) begin if ( reset == 'b0 || count >= pulsewide ) pulse <= 'b0; else if ( counten == 'b1 ) pulse <= 'b1; end endmodule


赞助商链接

FPGA_可编程单脉冲发生器设计

8.3 可编程单脉冲发生器 可编程单脉冲发生器是一种脉冲宽度可编程的信号发生器.../* 延时模块 P_DLY 的 Verilog-HDL 描述 */ module pulse ( CLK, RB, ...