秋招手撕代码:用移位寄存器实现的序列检测器(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、波形
在这里插入图片描述

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 51单片机驱动继电器模块点灯

    51单片机驱动继电器模块点灯51单片机驱动继电器模块点灯的使用ESP32与ESP8266简介ESP8266接口视图ESP32功能框图基于arduino的ESP32/ESP8266开发环境搭建基于arduino的ESP32/ESP8266开发环境烧录固件官方FLASH下载软件烧录固件总结

  • MQTT服务器搭建和测试[通俗易懂]

    MQTT服务器搭建和测试[通俗易懂]目前MQTT代理的主流平台有下面几个:Mosquitto:https://mosquitto.org/ VerneMQ:https://vernemq.com/ EMQTT:http://emqtt.io/本文将使用Mosquitoo进行测试,进入到安装页面,下载自己电脑的系统所适配的程序注意:安装的目录最好不要带有空格测试第一步:启动brokerwindows下使用命令提示符,进入mosquitto安装目录输入命令:mosquitto-cmosquitto.con

  • 通过pycharm使用git和github的步骤(图文详解)[通俗易懂]

    通过pycharm使用git和github的步骤(图文详解)[通俗易懂]目录:导读一、在Pycharm工具中配置集成Git和GitHub。二、推送项目到版本库三、从版本库克隆项目四、通过文件名颜色识别文件状态。五、如何向Git和GitHub仓库中添加文件?六、如何修改Git仓库中的文件?七、如何删除Git仓库中的文件?八、创建分支九、总结一、在Pycharm工具中配置集成Git和GitHub。1.集成Git。打开Pycharm,点击File–>Settins–>VersionControl–>Git.

  • ant安装教程

    ant安装教程                   ant安装教程一.安装ant1.点击http://ant.apache.org/bindownload.cgi进入ant官网,下载对应的安装包。2.将下载的.zip压缩包解压到对应文件夹二.配置环境变量右键点击“计算机–&gt;属性–&gt;高级系统设置–&gt;高级–&gt;环境变量”进入环境变量界面ANT_HOME…

  • GoogLeNet v1结构「建议收藏」

    GoogLeNet v1结构「建议收藏」GooLeNetInception块GooLeNetGooLeNet是google2014年推出的深度神经网络模型,原论文名称为:Goingdeeperwithconvolutions,在沐神的书上也被叫做含并⾏连结的⽹络(主要由于Inception块中的结构)。该模型在2014年ILSVRC2014比赛中竞赛中夺得冠军,14年之后也在不断发展,这里就介绍一下初始的版本。Inception块GooLeNet思想有点类似于VGG,先构建块,网络主要通过块的堆叠实现,不过这里的块与VGG块不同,称

  • c语言整数取位_c语言的位运算符号

    c语言整数取位_c语言的位运算符号案例:#include <stdio.h>#include <stdint.h>int main(void){ int8_t i8 = 100; int16_t i16 = 666; int32_t product = i8*i16; printf(“product=%d\n”,product); return 0;}结果:…

发表回复

您的电子邮箱地址不会被公开。

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