秋招手撕代码:用移位寄存器实现的序列检测器(verilog)「建议收藏」

秋招手撕代码:用移位寄存器实现的序列检测器(verilog)「建议收藏」之前一直想当然的认为序列检测器就应该用状态机来实现,后面在qq群里看到有人面试的时候被问,除了用状态机实现序列检测外,还能使用什么方法实现序列检测?后面查找了资料,发现可以使用序列检测器,自己就动手写了一个。1、代码思路:将输入的数据存储在移位寄存器中,如果寄存器中的序列是我们要检测的序列就输出1.2、代码`timescale1ns/1ps/////////////////////////////////////////////////////////////////////////////

大家好,又见面了,我是你们的朋友全栈君。

之前一直想当然的认为序列检测器就应该用状态机来实现,后面在qq群里看到有人面试的时候被问,除了用状态机实现序列检测外,还能使用什么方法实现序列检测?后面查找了资料,发现可以使用序列检测器,自己就动手写了一个。
1、代码思路:
将输入的数据存储在移位寄存器中,如果寄存器中的序列是我们要检测的序列就输出1.
2、代码

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2021/08/03 00:11:26
// Design Name: 
// Module Name: sequence_move
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 假设是检查11001
//

module sequence_move(
input clk,
input rst_n,
input data_in,
output data_out
    );
reg [4:0]d_r;
assign data_out=(d_r==5'b11001)?1:0;

always@(posedge clk)
if(!rst_n)
	d_r<=5'd0;
else d_r<={d_r[3:0],data_in};	
endmodule

3、仿真文件

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2021/08/03 00:19:41
// Design Name: 
// Module Name: sequence_move_tst
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//
module sequence_move_tst();
reg clk      ;
reg rst_n    ;
reg data_in  ;
wire data_out;
sequence_move U_sequence_move(
.clk      (clk     ),
.rst_n    (rst_n   ),
.data_in  (data_in ),
.data_out (data_out)
);
initial
begin
clk=1;
rst_n=0;
data_in=0;
#20 rst_n=1;
#20 data_in=1;
#20 data_in=0;
#20 data_in=0;
#20 data_in=1;
#20 data_in=1;
#20 data_in=0;
#20 data_in=0;
#20 data_in=1;
#20 data_in=1;
#20 data_in=0;
#20 data_in=0;
#20 data_in=1;
#20 rst_n=0;

end
always #10 clk=~clk;
endmodule

4、波形
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160392.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm模板设置时间_pycharm编辑配置

    pycharm模板设置时间_pycharm编辑配置pycharm模板设置模板的作用过程模板的作用可以在新建文件时把预先设定好的内容添加到文件的开始位置。过程打开pycharm选择菜单中的file下的Settimgs3.选中FileandCodeTemplates4.我们这里设置PythonScript…

    2022年8月26日
    4
  • 《视频直播技术详解》系列之一:开篇[通俗易懂]

    《视频直播技术详解》系列之一:开篇[通俗易懂]此系列为七牛云的原创,仅转载备份,以供查看。随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革。手机设备拍摄视频能力和网络的升级催生了大家对视频直播领域的关注,吸引了很多互联网创业者或者成熟企业进入该领域。七牛云作为一家以基础服务能力见长的云计算公司,于6月底发布了一个针对视频直播的实时流网络LiveNet和完整的直播云解决方案,很多

    2022年7月23日
    17
  • SpiderData 2019年1月31日 DApp数据排行榜[通俗易懂]

    SpiderData 2019年1月31日 DApp数据排行榜[通俗易懂]SpiderData 2019年1月31日 DApp数据排行榜

    2022年4月21日
    53
  • 电脑安装winpe_北京科兴中维新冠疫苗最新消息

    电脑安装winpe_北京科兴中维新冠疫苗最新消息在WinPE安装操作系统,最好用虚拟光驱打开安装镜像文件,或者把镜像文件解压后直接安装。最好不要用工具盘里所带的一键安装,复制等等功能,因为这些功能往往会安装一些其他的附带功能,不是清洁版的。转载于:https://www.cnblogs.com/cuihongyu3503319/p/4657993.html…

    2025年5月28日
    2
  • nginx启动、重启、关闭

    方式一:传统方法一、启动  cdusr/local/nginx/sbin./nginx二、重启  更改配置重启nginx  kill-HUP主进程号或进程号文件路径或者使用cd/usr/local/nginx/sbin./nginx-sreload  判断配置文件是否正确 nginx-t-c/usr/local/nginx/conf/nginx.conf或者cd…

    2022年4月4日
    45
  • ajax解决跨域问题_ajax支持跨域请求

    ajax解决跨域问题_ajax支持跨域请求CORS跨域方案//弊端:存在浏览器兼容的问题需要被请求方的服务端设置:Access-Control-Allow-Origin注意:Access-Control-Allow-Origin不可设置为,设置为可访问的域名。*服务端配置,不同语言,不同写法,仅借鉴header(“Access-Control-Allow-Origin:“http://cdn….

    2022年8月24日
    10

发表回复

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

关注全栈程序员社区公众号