题解 | #不重叠序列检测#

不重叠序列检测

https://www.nowcoder.com/practice/9f91a38c74164f8dbdc5f953edcc49cc

`timescale 1ns/1ns
module sequence_detect(
	input clk,
	input rst_n,
	input data,
	output reg match,
	output reg not_match
	);

reg [3:0] state;
reg [3:0] nstate;
parameter S0 = 4'b0000;
parameter S1 = 4'b0001;
parameter S2 = 4'b0010;
parameter S3 = 4'b0011;
parameter S4 = 4'b0100;
parameter S5 = 4'b0101;
parameter S6 = 4'b0110;
parameter S7 = 4'b0111;
parameter S8 = 4'b1000;
parameter S9 = 4'b1001;
reg flag;
reg nflag;
reg m;
reg [2:0]cnt;
parameter max=6-1;
// 计时
always @(posedge clk or negedge rst_n) begin
    if (!rst_n) begin
        cnt <= S1;  // 初始化状态
    end else if(cnt>=max)
        cnt<=3'b0;
		else 
		cnt<=cnt+1;
    end

// 状态寄存器更新逻辑
always @(posedge clk or negedge rst_n) begin
    if (!rst_n) begin
        state <= S1;  // 初始化状态
    end else begin
        state <= nstate;
    end
end

// 状态转移逻辑
always @(*) begin
    nstate = state;  // 默认不变状态
    flag = 0;  // 默认情况下不设置flag

    case (state)
        S1: begin
            if (data == 0)
                nstate = S2;
            else
                nstate = S0;
        end
        S2: begin
            if (data == 1)
                nstate = S3;
            else
                nstate = S0;
        end
        S3: begin
            if (data == 1)
                nstate = S4;
            else
                nstate = S0;
        end
        S4: begin
            if (data == 1 )
                nstate = S5;
            else
                nstate = S0;
        end
        S5: begin
            if (data == 0)
                nstate = S6;
            else
                nstate = S0;
        end
        S6: begin
            if (data == 0 ) begin
                nstate = S1;
				flag=1;
			end else
                nstate = S0;
        end
        
        
        S0: begin
            nflag=1;
			if(cnt==max)
			nstate=S1;
			else
			nstate=S0;
        end
		/*: begin
            if (a == 0) begin
                nstate = S9;
                
            end else begin
                nstate = S1;
            end
        end
		S9: begin
            
                flag=1;
                nstate = S1;
            end*/
    
    endcase
end

// 输出逻辑
always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        not_match <= 1'b0;
     else  
       not_match <= m;
     
		
    
end
//打一拍符合时序

always @(posedge clk or negedge rst_n) begin
   if (!rst_n) 
      m <= 1'b0;
     else if (nflag && cnt==max)
       m <= nflag;
  
end
always @(posedge clk or negedge rst_n) begin
   if (!rst_n) begin
      match <= 1'b0;
    end else begin
       match <= flag;
    end
end
endmodule

全部评论

相关推荐

想干测开的tomca...:让我来压力你!!!: 这份简历看着“技术词堆得满”,实则是“虚胖没干货”,槽点一抓一大把: 1. **项目描述是“技术名词报菜名”,没半分自己的实际价值** 不管是IntelliDoc还是人人探店,全是堆Redis、Elasticsearch、RAG这些时髦词,但你到底干了啥?“基于Redis Bitmap管理分片”是你写了核心逻辑还是只调用了API?“QPS提升至1500”是你独立压测优化的,还是团队成果你蹭着写?全程没“我负责XX模块”“解决了XX具体问题”,纯把技术文档里的术语扒下来凑字数,看着像“知道名词但没实际动手”的实习生抄的。 2. **短项目塞满超纲技术点,可信度直接***** IntelliDoc就干了5个月,又是RAG又是大模型流式响应又是RBAC权限,这堆活儿正经团队分工干都得小半年,你一个后端开发5个月能吃透这么多?明显是把能想到的技术全往里面塞,生怕别人知道你实际只做了个文件上传——这种“技术堆砌式造假”,面试官一眼就能看出水分。 3. **技能栏是“模糊词混子集合”,没半点硬核度** “熟悉HashMap底层”“了解JVM内存模型”——“熟悉”是能手写扩容逻辑?“了解”是能排查GC问题?全是模棱两可的词,既没对应项目里的实践,也没体现深度,等于白写;项目里用了Elasticsearch的KNN检索,技能栏里提都没提具体掌握程度,明显是“用过但不懂”的硬凑。 4. **教育背景和自我评价全是“无效信息垃圾”** GPA前10%这么好的牌,只列“Java程序设计”这种基础课,分布式、微服务这些后端核心课提都不提,白瞎了专业优势;自我评价那堆“积极认真、细心负责”,是从招聘网站抄的模板吧?没有任何和项目挂钩的具体事例,比如“解决过XX bug”“优化过XX性能”,纯废话,看完等于没看。 总结:这简历是“技术名词缝合怪+自我感动式凑数”,看着像“背了后端技术栈名词的应届生”,实则没干货、没重点、没可信度——面试官扫30秒就会丢一边,因为连“你能干嘛”都没说清楚。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务