⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 confirmpulse.v

📁 基于QUARTUSII软件 实现FPGA(ATERA CYCLONE II系列)与SD卡SD模式通信源码
💻 V
字号:
/***************************************************************************************
实现功能简述
本模块主要功能是产生一个确定时钟周期长度(最长为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)
 		counten <= 1'b0;
	else
  		begin
  		if ( start == 1'b1 )
  			counten <= 1'b1;
  		else if ( start == 1'b0 && count > pulsewide )
  			counten <= 1'b0;
  		end
	end

//延时计数器,保证延时 pulsewide 个时钟周期
always @ ( posedge clk )
	begin
	if (!reset)
  		count <= 8'b00000000;
	else
  		begin
  		if ( counten == 1'b0 )
  			count <= 8'b00000000;
  		else if ( counten == 1'b1 && count <= pulsewide )
  			count <= count + 1'b1;
 		else if ( counten == 1'b0 && start == 1'b0 )
  			count <= 8'b00000000;
  		end
	end

//输出定宽脉冲
always @ ( negedge clk )
	begin
	if ( reset == 1'b0 || count >= pulsewide )
 		pulse <= 1'b0;
	else if ( counten == 1'b1 )
  		pulse <= 1'b1;
	end

endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -