手撕代码:1011001序列检测(2bit输入)乐鑫科技笔试题

1、题目
模块持续每拍并行输入2bit数,请实现对(1011001)2的序列检测功能,输入数据的顺序为高位2bit先输入,当检测到该序列时,输出一拍高电平脉冲信号。请用Verilog完整描述该模块。
2、状态机
我设计的是一个mealy状态机
在这里插入图片描述
3、veriloig代码

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2021/06/10 09:21:26
// Design Name: 
// Module Name: sequence_check_2bit
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module sequence_check_2bit(
input clk,
input rst_n,
input [1:0]data_in,
input din_en,
output reg valid_flg
    );
	
reg [1:0]state;
parameter s0_idle=2'b00,
          s1=2'b01,//10
		  s2=2'b10,//1011
		  s3=2'b11;//101100

always @(posedge clk or negedge rst_n)
if(!rst_n)
	begin
		state<=s0_idle;
		valid_flg<=0;
	end
else
		begin
			case(state)
				s0_idle:
					if(din_en==1&&data_in==2'b10)
						begin state<=s1;valid_flg<=0;end
					else begin state<=s0_idle;valid_flg<=0;end
				s1:
				//10
				if(din_en)
					begin
						case(data_in)
						2'b00: begin state<=s0_idle;   end
						2'b01: begin state<=s0_idle;   end
						2'b10: begin state<=s1;        end
						2'b11: begin  state<=s2;       end
						endcase
					end
				else begin state<=s1;valid_flg<=0;end
				s2:
				//1011
				if(din_en)
					begin
						case(data_in)
						2'b00:begin state<=s3;  end
						2'b01:begin state<=s0_idle;  end
						2'b10:begin state<=s1;  end
						2'b11:begin state<=s0_idle;  end
						endcase
					end
				else begin state<=s2;valid_flg<=0;end
				s3:
				//101100
				if(din_en)
					begin
						case(data_in)
						2'b00:begin state<=s0_idle;valid_flg<=0;   end
						2'b01:begin state<=s0_idle;valid_flg<=0;   end
						2'b10:begin state<=s1;     valid_flg<=1;   end
						2'b11:begin state<=s0_idle;valid_flg<=1;   end
					    endcase
					end
				else begin state<=s3;valid_flg<=0;end
				default:begin  state<=s0_idle;valid_flg<=0;end
				endcase
		
		end
	
endmodule

testebench

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2021/06/10 09:57:36
// Design Name: 
// Module Name: sequence_check_2bit_tst
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module sequence_check_2bit_tst();

reg      clk;
reg      rst_n;
reg [1:0]data_in;
reg      din_en;
wire     valid_flg;

sequence_check_2bit u_sequence_check_2bit(
.clk      (clk      ),
.rst_n    (rst_n    ),
.data_in  (data_in  ),
.din_en   (din_en   ),
.valid_flg(valid_flg)
);
initial
	begin
		clk=1;
		rst_n=0;
		data_in=2'b00;
		din_en=0;

		#20 rst_n=1;
		    din_en=1;
		#20 data_in=2'b00;
		#20 data_in=2'b10;
		#20 data_in=2'b10;
		#20 data_in=2'b11;
		#20 data_in=2'b00;
		#20 data_in=2'b00;
		#20 data_in=2'b10;
		#20 data_in=2'b11;
		#20 data_in=2'b00;
		#20 data_in=2'b11;
		#20 data_in=2'b10;
		#20 data_in=2'b11;
		#20 data_in=2'b00;
		#20 data_in=2'b10;		
	    #20 din_en=0;
		   rst_n=0;
	
	end
always #10 clk=~clk;
	

	
endmodule

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
乐鑫科技是一家专注于物联网芯片和解决方案的公司,它在C语言方面开展了一场笔试。C语言是一种广泛使用的、通用的高级编程语言,它为开发者提供了底层控制硬件的能力。 在乐鑫科技的C语言笔试中,可能会包含以下内容:基本语法、据类型、运算符、控制结构、函组、指针、结构体等。基本语法是最基础的部分,包括如何定义变量、如何使用注释、如何编写函等。据类型是C语言中的基本类型,包括整型、浮点型、字符型等,掌握不同据类型的使用规则至关重要。运算符包括赋值运算符、算术运算符、关系运算符等,它们用于对进行操作和比较。控制结构包括条件语句(如if语句)和循环语句(如for循环),它们可以根据条件控制程序的执行流程。函是C语言中的一个重要概念,它用于封装独立的功能模块,提高代码的可读性和重用性。组是一组具有相同据类型的元素的集合,指针则提供了直接访问内存地址的能力,结构体则用于组合多个不同类型的据。 通过乐鑫科技的C语言笔试,考察者将能够了解到考生对C语言的掌握程度和编程能力。C语言是一门重要的编程语言,在物联网行业尤为重要,因此掌握C语言的基本知识和技能对于乐鑫科技的求职者来说是非常有帮助的。希望通过这场笔试,考生们能够展示出自己的才华和能力,为进一步的面试和招聘机会铺平道路。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IC媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值