在基于System verilog的序列检测器一文中,我们通过状态机进行了实现,今天,博主介绍另外一种序列检测的实现方式:移位寄存器。 我们仍然以10010这个序列为例,主要的设计思想如下: 1.设置一个5位的移位寄存器,以及一个计数器; 2.每个时钟周期,该移位寄存器进行一次左移,并将最新的bit输入最低位,计数器自增1; 3.每个周期,都将移位寄存器的值和10010进行比较,若相同,且计数器的值大于等于4(这么做主要为了避免10010010被检测出两次),则说明检测到该序列,此时计数器的值归零。
RTL实现`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/02/23 19:53:01
// Design Name:
// Module Name: top
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module top(
input logic clk,
input logic rst,
input logic bit_in,
input logic valid, //标志当前bit有效
output logic detected
);
logic [4:0] shift_reg;
logic [31:0] count;
//shift_reg
always_ff@(posedge clk,posedge rst)
if(rst)
shift_reg[4:0]
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?