首页 > 其他分享 >【VERILOG】输入脉冲下降沿触发输出一组双脉冲 (附带testbench)

【VERILOG】输入脉冲下降沿触发输出一组双脉冲 (附带testbench)

时间:2024-07-19 16:25:51浏览次数:9  
标签:reset 输入脉冲 pulseturn clk VERILOG testbench data reg out

`timescale 1ns/1ps

module pulseturn(
				clk,
				reset_n,
				in,
				out
);

	input 		clk;
	input 		in;
	input 		reset_n;
	output 	reg	out;
	
	reg [7:0]	cnt;
	reg [1:0]   data_in;
	
	assign pos_edge = ~data_in[1]&data_in[0];
	assign neg_edge = data_in[1]&~data_in[0];
	
	always@(posedge clk or negedge reset_n )
	if(reset_n == 1'b0)
		begin 	
			data_in <= 2'b0;
		end
	else
		begin
			data_in <= {data_in[0],in};
		end
	
	
	
	
	always@(posedge clk or negedge reset_n )
	if(reset_n == 1'b0)
		begin 	
				out 	<= 1'b0;
				cnt 	<= 8'd0;
		end
	else if(neg_edge == 1'b1 )
		begin
				cnt <= 8'd0;
		end
	else 
		begin
				cnt <= cnt +1'b1;
		end
		
		
	always@(posedge clk or negedge reset_n)
	if(cnt == 8'd49)
		begin
			out <=1'b1;
		end
	else if(cnt == 8'd99)
		begin
			out <=1'b0;
		end
	else if(cnt == 8'd149)
		begin
			out <=1'b1;
		end
	else if(cnt == 8'd199)
		begin
			out <=1'b0;
		end
				
endmodule

testbench

module pulseturn_tb;

reg  clk,reset_n,in;

reg [7:0] cnnt;
wire out;
pulseturn  pulseturn(
				.clk(clk),
				.reset_n(reset_n),
				.in(in),
				.out(out)
);


initial begin
		clk <= 0;
		reset_n <= 0;
		in <= 0;
		cnnt = 8'd0;
		#10 reset_n <= 1;
	forever #10
		clk <= ~clk;
	end	



	always@(posedge clk)
	begin
		cnnt <= cnnt+1'b1;
	
	end
	
	always@(posedge clk )
	if(cnnt == 8'd5)
		begin
			in <=1'b1;
		end
	else if(cnnt == 8'd30)
		begin
			in <=1'b0;
		end


endmodule

测试波形

在这里插入图片描述

标签:reset,输入脉冲,pulseturn,clk,VERILOG,testbench,data,reg,out
From: https://blog.csdn.net/hcoolabc/article/details/140521072

相关文章

  • verilog实现ram16*8 (vivado)
    moduleram_16x2(inputclk,//时钟信号inputwe,//写使能inputen,//使能信号input[3:0]addr,//地址线input[1:0]datain,//输入数据线outputreg[1:0]dataout//输出数据线);//定义存储器数组......
  • Verilog 组合电路常见错误和always块的使用原则
    一、组合电路常见错误1、变量在多个always块中连续赋值regy;rega,b,clear;always@*if(clear)y=1'b0;always@*y=a&b;//每个always块是电路的一部分,y在两个电路上输出,不能综合2、不完整的敏感信号列表always@(a,b)y=a&b;//如果忘记......
  • 基于FPGA的MSK调制解调系统verilog开发,包含testbench,同步模块,高斯信道模拟模块,误
    1.算法仿真效果本程序系统是《m基于FPGA的MSK调制解调系统verilog开发,并带FPGA误码检测模块和matlab仿真程序》的的升级。 升级前原文链接 增加了完整的AWGN信道模型的FPGA实现,可以在testbench里面设置SNR,分析不同SNR对应的FPGA误码率情况。 vivado2019.2仿真结果如下(......
  • SpinalHDL之VHDL 和 Verilog 生成
    本文作为SpinalHDL学习笔记第十六篇,记录使用SpinalHDL代码生成Verilog/VHDL代码的方法。SpinalHDL学习笔记总纲链接如下:SpinalHDL学习笔记_spinalhdlblackbox-CSDN博客目录:1.从SpinalHDL组件生成VHDL和Verilog2.生成的VHDL和Verilog3.VHDL和Verilog属性......
  • systemverilog的关联数组
    关联数组定义在SystemVerilog中,关联数组(AssociativeArrays)是一种非常灵活的数据结构,它可以使用任意类型的键(key)来索引数组中的元素。这使得关联数组特别适合于实现类似哈希表(hashtables)或字典(dictionaries)的功能,其中键可以是字符串、数字或其他复杂类型。data_typearray......
  • 基于FPGA的A律压缩解压缩verilog实现,包含testbench
    1.算法仿真效果VIVADO2019.2仿真结果如下(完整代码运行后无水印):   RTL图如下所示:   2.算法涉及理论知识概要       A律压缩是一种广泛应用于语音编码的非均匀量化技术,尤其在G.711标准中被欧洲和中国等国家采纳。该技术的核心目的是在有限的带宽下高效传输......
  • I2S采集卡&播放器 Verilog实现
    1.杜老师的建议购买采集卡播放器使用采集卡可以验证生成的i2s时序是否正确使用播放器可以观察正确的i2s时序带使能的计数器自己能播自己能录2.几个音频的专业术语音调实际上就是频率音色音调的决定因素:谐波的结构:声音中的谐波极其相对强度和分布是音色的主要......
  • verilog行为建模(二):命名事件和行为描述
    目录1.命名事件(namedevent)2.行为描述举例3.RTL描述举例微信公众号获取更多FPGA相关源码:1.命名事件(namedevent)在行为代码中定义一个命名事件可以触发一个活动。命名事件不可综合。moduleadd_mult(out,a,b);input[2:0]a,b;output[3:0]o......
  • Verilog图片仿真
            今天给大家分享自己使用的一段仿真代码,是我调整好的,拿去就可以直接使用!!!        我们做fpga有时候会接触一些图像相关的算法,我们不能每一次都是编译成功下载验证看效果吧,我也是找了好久,终于找到一个没啥毛病的,我对于这个模块还是做了一些调整,满足我们......
  • 【Emacs Verilog mode保姆级的使用指南】
    ......