本文介绍: 本专栏内容主要是记录本人学习Verilog过程中的一些知识点刷题网站用的是牛客网根据题意 定义一个五位的中间变量lock 每次始终上升沿来临时 判断当前寄存器的低四位+新数据是否等于10111 如果等于 则下一时刻lock应被清空 否则lock等于当前lock的低四位+新数据elseendelseendendmodule
专栏前言

专栏内容主要是记录本人学习Verilog过程中的一些知识点刷题网站用的是牛客

根据题意 定义一个五位的中间变量lock 每次始终上升沿来临时 判断当前寄存器的低四位+新数据是否等于10111 如果等于 则下一时刻lock应被清空 否则lock等于当前的lock的低四位+新数据

`timescale 1ns/1ns

module sequence_test1(
	input wire clk  ,
	input wire rst  ,
	input wire data ,
	output reg flag
);
//*************code***********//
	reg [4:0] lock ; 

	always @ (posedge clk or negedge rst) begin
		if (~rst) lock <= 'd0 ; 
		else 
			if ({lock[3:0], data} == 5'b10111) lock <= 'd0 ; 
			else lock <= {lock[3:0], data} ;
	end

	always @ (posedge clk or negedge rst) begin
		if (~rst) flag <= 'd0 ; 
		else 
			if ({lock[3:0], data} == 5'b10111) flag <= 1'd1 ; 
			else flag <= 'd0 ;
	end

//*************code***********//
endmodule

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注