【Verilog刷题篇】硬件工程师进阶1|序列检测


前言硬件工程师近年来也开始慢慢吃香,校招进大厂年薪总包不下30-40w的人数一大把!而且大厂人数并没有饱和! - 本期是【Verilog刷题篇】硬件工程师进阶1|序列检测,有不懂的地方可以评论进行讨论!推荐给大家一款刷题、面试的神器,我也是用这一款神器进行学习Verilog硬件代码的!~链接如下:刷题面试神器跳转链接也欢迎大家去牛客查看硬件工程师招聘职位的各类资料,并进行提前批投递面试!小白新手可以通过该神器进行日常的刷题、看大厂面经、学习计算机基础知识、与大牛面对面沟通~ 刷题的图片已经放在下面了~Q1:输入序列连续的序列检测

问题描述:请编写一个序列检测模块,检测输入信号a是否满足01110001序列,当信号满足该序列,给出指示信号match。

模块的接口信号图如下:

【Verilog刷题篇】硬件工程师进阶1|序列检测

模块的时序图如下:

【Verilog刷题篇】硬件工程师进阶1|序列检测

输入描述: clk:系统时钟信号 rst_n:异步复位信号,低电平有效 a:单比特信号,待检测的数据

刺鸟创客 刺鸟创客

一款专业高效稳定的AI内容创作平台

刺鸟创客 110 查看详情 刺鸟创客

输出描述: match:当输入信号a满足目标序列,该信号为1,其余时刻该信号为0

案例代码:

代码语言:j*ascript代码运行次数:0运行复制
`timescale 1ns/1nsmodule sequence_detect(input clk,input rst_n,input a,output reg match);    parameter zero = 4'd0;       parameter one = 4'd1;       parameter two = 4'd2;       parameter three = 4'd3;       parameter four = 4'd4;       parameter five = 4'd5;       parameter six = 4'd6;       parameter seven = 4'd7;     parameter    eight=4'd8;       reg [3:0] cu_st;    always@(posedge clk or negedge rst_n)        begin            if(!rst_n)begin                cu_st<=zero;                match<=1'b0;end            else begin                case(cu_st)                    zero:if(a==1'b0)begin                                cu_st<=one;                                match<=1'b0;end                                            else begin                                 cu_st<=zero;                                 match<=1'b0; end                    one:if(a==1'b1)begin                                cu_st<=two;                                match<=1'b0;end                                            else begin                                 cu_st<=one;                                 match<=1'b0; end                    two:if(a==1'b1)begin                                cu_st<=three;                                match<=1'b0;end                                            else begin                                 cu_st<=one;                                 match<=1'b0; end                    three:if(a==1'b1)begin                                cu_st<=four;                                match<=1'b0;end                                            else begin                                 cu_st<=one;                                 match<=1'b0; end                    four:if(a==1'b0)begin                                cu_st<=five;                                match<=1'b0;end                                            else begin                                 cu_st<=zero;                                 match<=1'b0; end                    five:if(a==1'b0)begin                                cu_st<=six;                                match<=1'b0;end                                            else begin                                 cu_st<=two;                                 match<=1'b0; end                    six:if(a==1'b0)begin                                cu_st<=seven;                                match<=1'b0;end                                            else begin                                 cu_st<=two;                                 match<=1'b0; end                    seven:if(a==1'b1)begin                                cu_st<=eight;                                match<=1'b0;end                                            else begin                                 cu_st<=one;                                 match<=1'b0; end                    eight:if(a==1'b1)begin                                cu_st<=three;                                match<=1'b1;end                                            else begin                                 cu_st<=one;                                 match<=1'b1; end                    default:begin cu_st<=zero;                        match<=1'b0;end                endcase                                            end        end endmodule
Q2: 含有无关项的序列检测

问题描述:请编写一个序列检测模块,检测输入信号a是否满足011XXX110序列(长度为9位数据,前三位是011,后三位是110,中间三位不做要求),当信号满足该序列,给出指示信号match。

程序的接口信号图如下:

【Verilog刷题篇】硬件工程师进阶1|序列检测

程序的功能时序图如下:

【Verilog刷题篇】硬件工程师进阶1|序列检测

输入描述: clk:系统时钟信号 rst_n:异步复位信号,低电平有效 a:单比特信号,待检测的数据

输出描述: match:当输入信号a满足目标序列,该信号为1,其余时刻该信号为0

案例代码:

代码语言:j*ascript代码运行次数:0运行复制
`timescale 1ns/1nsmodule sequence_detect(input clk,input rst_n,input a,output reg match);    reg [8:0] a_temp;    always@(posedge clk or negedge rst_n)        begin            if(!rst_n)                a_temp<=9'b0;            else                a_temp<={a_temp[7:0],a};                    end    always@(posedge clk or negedge rst_n)        begin            if(!rst_n)                match<=1'b0;            else if(a_temp[8:6]==3'b011&&a_temp[2:0]==3'b110)                match<=1'b1;            else                match<=1'b0;                end               endmodule
Q3:不重叠序列检测

问题描述:请编写一个序列检测模块,检测输入信号(a)是否满足011100序列, 要求以每六个输入为一组,不检测重复序列,例如第一位数据不符合,则不考虑后五位。一直到第七位数据即下一组信号的第一位开始检测。当信号满足该序列,给出指示信号match。当不满足时给出指示信号not_match。

模块的接口信号图如下:

【Verilog刷题篇】硬件工程师进阶1|序列检测

模块的时序图如下:

【Verilog刷题篇】硬件工程师进阶1|序列检测

输入描述: clk:系统时钟信号 rst_n:异步复位信号,低电平有效 a:单比特信号,待检测的数据

输出描述: match:当输入信号a满足目标序列,该信号为1,其余时刻该信号为0 not_match:当输入信号a不满足目标序列,该信号为1,其余时刻该信号为0

案例代码:

代码语言:j*ascript代码运行次数:0运行复制
`timescale 1ns/1nsmodule sequence_detect(input clk,input rst_n,input data,output reg match,output reg not_match);reg [5:0]cs;reg [5:0]ns;reg [5:0]count;always@(posedge clk or negedge rst_n)   if(!rst_n)   count<=0;   else if (count>=5)     count<=0;    else    count<=count+1;   always@(posedge clk or negedge rst_n)if(!rst_n)begin   ns<=0;   cs<=0;   endelse    cs<=ns;parameter IDLE=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6;parameter NOT_MATCH=7;always@(*)  case(cs)    IDLE:ns = (data==0)? s1:NOT_MATCH;    s1:ns =   (data==1)? s2:NOT_MATCH;    s2:ns =   (data==1)? s3:NOT_MATCH;    s3:ns =   (data==1)? s4:NOT_MATCH;    s4:ns =   (data==0)? s5:NOT_MATCH;    s5:ns =   (data==0)? s6:NOT_MATCH;    s6:ns =   (data==0)? s1:NOT_MATCH;    NOT_MATCH:ns = (data==0&&count == 5)? s1:NOT_MATCH;endcasealways@(posedge clk or negedge rst_n)  if(!rst_n)begin    match<=0;    not_match<=0;    end    else if (count == 5)begin                if(ns==s6)begin        match<=1;        not_match<=0;     end    else begin            match<=0;       not_match<=1;        end    end     else begin        match <= 1'b0;        not_match <= 1'b0;    end            endmodule
Q4:输入序列不连续的序列检测

问题描述:请编写一个序列检测模块,输入信号端口为data,表示数据有效的指示信号端口为data_valid。当data_valid信号为高时,表示此刻的输入信号data有效,参与序列检测;当data_valid为低时,data无效,抛弃该时刻的输入。当输入序列的有效信号满足0110时,拉高序列匹配信号match。

模块的接口信号图如下:

【Verilog刷题篇】硬件工程师进阶1|序列检测

模块的时序图如下:

【Verilog刷题篇】硬件工程师进阶1|序列检测

输入描述: clk:系统时钟信号 rst_n:异步复位信号,低电平有效 data:单比特信号,待检测的数据 data_valid:输入信号有效标志,当该信号为1时,表示输入信号有效

输出描述: match:当输入信号data满足目标序列,该信号为1,其余时刻该信号为0

案例代码:

代码语言:j*ascript代码运行次数:0运行复制
`timescale 1ns/1nsmodule sequence_detect(input clk,input rst_n,input data,input data_valid,output reg match);    parameter [3:0] data_ref = 4'b0110;    reg [3:0] data_in;    always @(posedge clk or negedge rst_n)        if(!rst_n) data_in <= 4'b0000;        else if(data_valid) data_in <= {data_in[2:0],data};    always @(posedge clk or negedge rst_n) begin        if(!rst_n) match <= 1'b0;        else if((data_in[2:0] == 3'b011) && (!data))  match <= 1'b1;        else match <= 1'b0;    end    endmodule
Q5:信号发生器

问题描述:请编写一个信号发生器模块,根据波形选择信号w*e_choise发出相应的波形:w*e_choice=0时,发出方波信号;w*e_choice=1时,发出锯齿波信号;w*e_choice=2时,发出三角波信号。

模块的接口信号图如下:

【Verilog刷题篇】硬件工程师进阶1|序列检测

模块的时序图如下:

【Verilog刷题篇】硬件工程师进阶1|序列检测

输入描述: clk:系统时钟信号 rst_n:异步复位信号,低电平有效 w*e_choise:2比特位宽的信号,根据该信号的取值不同,输出不同的波形信号

输出描述: w*e:5比特位宽的信号,根据w*e_choise的值,输出不同波形的信号

案例代码:

代码语言:j*ascript代码运行次数:0运行复制
`timescale 1ns/1nsmodule signal_generator(input clk,input rst_n,input [1:0] w*e_choise,output reg [4:0]w*e);    reg [4:0] cnt;    reg k;    always @(posedge clk or negedge rst_n) begin        if(!rst_n) begin            cnt <= 5'd0;            w*e <= 5'd0;        end        else begin            case(w*e_choise)                2'd0:begin                    if(cnt == 5'd19) begin                        cnt <= 5'd0;                        w*e <= 5'd0;                    end                    else if(cnt>=5'd9 && cnt<5'd19)begin                        cnt <= cnt + 1'b1;                        w*e <= 5'd20;                    end                    else begin                        cnt <= cnt + 1'b1;                        w*e <= 5'd00;                    end                end                2'd1:begin                    if(w*e >= 5'd20)                        w*e <= 5'd0;                    else                        w*e <= w*e + 1'b1;                end                2'd2:begin                    if(w*e == 5'd0) begin                        k <= 1'b0;                        w*e <= w*e + 1'b1;                    end                    else if(w*e == 5'd20) begin                        k <= 1'b1;                        w*e <= w*e - 1'b1;                    end                    else if(k == 1'b0 && w*e < 5'd20)                        w*e <= w*e + 1'b1;                    else if(k == 1'b1 && w*e > 5'd0)                        w*e <= w*e - 1'b1;                    else                        w*e <= w*e - 1'b1;                end                default:begin w*e <= w*e;end            endcase        end    end  endmodule
总结:小白跟大牛都在用的平台硬件工程师近年来也开始慢慢吃香,校招进大厂年薪总包不下30-40w的人数一大把!而且大厂人数并没有饱和! - 本期是【Verilog刷题篇】硬件工程师从0到入门3|组合逻辑复习+时序逻辑入门,有不懂的地方可以评论进行讨论!

以上就是【Verilog刷题篇】硬件工程师进阶1|序列检测的详细内容,更多请关注其它相关文章!


# 年了  # 濮阳网站建设公司哪有  # 承德推广网站建设哪家好  # 业务推广与营销  # 重庆巴南区酒业网站建设  # 茂名网站快速推广  # 西湖企业网站建设  # 济南营销推广网招聘  # 小众网站海淘推广方案  # 荆州网络营销推广运营  # 海南婚庆网站建设价格  # 硬件  # 来也  # 本期  # 更强  # 不懂  # 已有  # 英特尔  # 的人  # 低电平  # 进阶 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 刊·见 | 捕捉人工智能领域最新动态?收藏Applied Artificial Intelligence  人工智能大胆预测:银河系至少有2万个地球,36种外星文明  面向AI大模型,腾讯云首次完整披露自研星脉高性能计算网络  AI在教育中的角色:AI如何改变我们的学习方式  全场景智能车:智能无处不在|芯驰亮相世界人工智能大会  Win11 AI 助手 Windows Copilot 被吐槽:套皮的 Edge 浏览器  美的推出 AI 双视精准避障的自动集尘扫拖机器人 V12,售价仅为2999元  OpenAI大神Karpathy最新分享:为什么OpenAI内部对AI Agents最感兴趣  美图第二届影像节发布七款AI影像创作工具  上海发布大模型政策 打造AI“模”都  普林斯顿大学推出 Infinigen AI 模型,生成真实自然环境 3D 场景  微软bing聊天推出AI购物工具 可进行比价并查看历史最低价  再度重仓 AI 赛道,SaaS 巨头 Salesforce 扩大 AIGC 风投基金规模  华为发布大模型时代AI存储新品  先进技术在防止全球数据丢失方面的作用  360发布AI数字人广场,可同孙悟空、爱因斯坦等古今中外角色对话  科学家称,面对人工智能,人类未来或只有灭亡与虚拟永生两个选择  学而思网校推出首个基于自研大模型的《人工智能第一课》  人工智能改变网络安全和用户体验的三种方式  深度学习模型综述:用于3D MRI和CT扫描的应用  联通发布鸿湖图文AI大模型1.0,可实现以文生图  AI和ML推动联网设备的增长  AI生成新闻网站数量激增,正在疯狂赚取广告收入  黄仁勋:5年前,我们对AI抱有巨大期望  为什么很多人对纽约《人工智能招聘法》感到生气?  田渊栋团队新研究:微调  谷歌推出 AI 反洗钱工具,可将金融机构内部风险预警准确率提高2至4倍  测试框架-安全和自动驾驶  人工智能在交通领域的革新:智能解决方案彻底改变交通方式  美版贴吧8000小组自爆停摆!拒绝数据被谷歌OpenAI白嫖,CEO被网友骂翻:背刺第三方应用  AI+音乐如何“生成”动听旋律?一起揭秘世界人工智能大会开场曲  谷歌StyleDrop在可控性上卷翻MidJourney,前GitHub CTO用AI颠覆编程  彬州市第三届青少年机器人创新大赛成功举办  Bing Chat 和 Bing Search 正式引入深色模式  ChatGPT会成为你家新的语音助手吗?  数字彩排、虚拟建厂!这家顶级洗衣机工厂敲开“工业元宇宙”之门  华为小艺AI助手将实现强大的大模型能力  微软Bing聊天机器人电脑端即将支持语音提问  华为云发布华为云盘古模型3.0和升腾AI云服务,亮点亮相2025华为开发者大会  元宇宙技术带你穿梭“大运河”,江苏书展上的数字阅读馆吸睛小读者  鸿蒙生态带来了哪些新的流量可能性,包括AI、服务分发和原生智能等方面?  “技术+实践+生态”三箭齐发,京东方抢占物联网高地  报告称 70% 程序员已使用各种 AI 工具编程  2025 WAIC|美团无人机发布第四代新机型  比尔盖茨:AI确实存在风险,但可控  AI工具助力公司实施每周4.5天工作制,带来巨大效益  羚客系统即将升级,推出全新的AI数字化工具  特斯拉人形机器人将于 7 月亮相上海 2025 世界人工智能大会  2025世界人工智能大会成功召开  OpenAI宣布在伦敦设立海外分部,要招揽“世界级人才” 

 2025-04-26

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.