秋招手撕代码:用移位寄存器实现的序列检测器(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)
上一篇 2022年7月16日 上午9:36
下一篇 2022年7月16日 上午9:46


相关推荐

  • 与MiniMax斗智斗勇III:PC端用Claude Code接入MiniMax模型

    与MiniMax斗智斗勇III:PC端用Claude Code接入MiniMax模型

    2026年3月12日
    2
  • python发邮件脚本详解_Python发邮件脚本

    python发邮件脚本详解_Python发邮件脚本收集的一个 Python 发邮件脚本 实现在不搭建邮件服务器的环境下 通过调用其它邮箱发送邮件 vimmail py 内容如下 usr bin envpython coding UTF 8 importos sysreload sys sys setdefaulten utf8 importgetopt MIM

    2025年7月23日
    6
  • 基于大模型DeepSeek的企业典型AI应用

    基于大模型DeepSeek的企业典型AI应用

    2026年3月14日
    3
  • java GC算法「建议收藏」

    java GC算法「建议收藏」一般来说,程序使用内存的方式遵循先向操作系统申请一块内存,使用内存,使用完毕之后释放内存归还给操作系统。然而在传统的C/C++等要求显式释放内存的编程语言中,记得在合适的时候释放内存是一个很有难度的工作,因此Java等编程语言都提供了基于垃圾回收算法的内存管理机制:垃圾内存回收算法常见的垃圾回收算法有引用计数法(ReferenceCounting)、标注并清理(MarkandSweep…

    2022年6月17日
    30
  • Linux解压zip格式压缩包

    Linux解压zip格式压缩包Linux中zip格式的压缩与解压一、安装yuminstall-yunzip二、使用(一)、压缩常见用法有zip-q-r1.zip1.txt将当前目录下的1.txt压缩为1.zip。选项-q表示忽略执行过程,-r表示递归处理,将指定目录下的所有文件和子目录一并处理zip-q-r1.zip../1.txt将上级目录中的1.txt压缩为1.zip(二)、解压假设当前目录有一个压缩包为1.zip常见的用法有unzip1.zip直接解压到当前目录下

    2022年5月10日
    49
  • ReLU激活函数的特点

    ReLU激活函数的特点ReLU RectifiedLin 修正线性单元 函数 1 公式 可以看出这是个非常简单的函数 大于 0 部分不变 小于 0 的值全部压缩成 0 2 优点 作为激活函数 计算简单 更加高效 速度快神经元得到一个值 可以直接看这个值的大小 然后直接得出结果 不用多余的加减乘除计算 ReLU 函数也被认为具有生物学合理性单侧抑制 小于 0 全部抑制 宽兴奋边界 大于 0 的部分达到无穷都可以 没有限制 即兴奋程度可以很高 有很好的稀疏性 能让小于 0 的全部变为 0 增大了稀疏性 稀疏性越大 是指

    2026年3月17日
    2

发表回复

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

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