面试题记录1

题目:
给定一个输入序列01101001101101101找出序列为1101并统计其个数。请用有限状态机(FSM)实现。

解题:
代码:

module sequence_detector(input wire clk,    // 时钟信号input wire reset,  // 复位信号input wire seq_in, // 输入序列output reg [3:0] count // 计数器
);// 状态编码parameter S0 = 4'b0000, // 初始状态S1 = 4'b0001, // 检测到 '1'S11 = 4'b0011, // 检测到 '11'S110 = 4'b0110, // 检测到 '110'S1101 = 4'b1101; // 检测到 '1101'reg [3:0] current_state, next_state;// 状态转移:根据时钟上升沿或复位信号进行状态转移always @(posedge clk or posedge reset) beginif (reset) begincurrent_state <= S0;count <= 0;end else begincurrent_state <= next_state;endend// 下一个状态逻辑:根据当前状态和输入序列计算下一个状态always @(*) begincase (current_state)S0: beginif (seq_in == 1)next_state = S1;elsenext_state = S0;endS1: beginif (seq_in == 1)next_state = S11;elsenext_state = S0;endS11: beginif (seq_in == 0)next_state = S110;elsenext_state = S11;endS110: beginif (seq_in == 1)next_state = S1101;elsenext_state = S0;endS1101: beginif (seq_in == 1)next_state = S11;elsenext_state = S0;enddefault: next_state = S0;endcaseend// 输出逻辑:当达到状态S1101时增加计数器always @(posedge clk or posedge reset) beginif (reset) begincount <= 0;end else if (current_state == S1101) begincount <= count + 1;endendendmodule

仿真模块:

// 测试模块
module tb_sequence_detector;// 测试信号reg clk;reg reset;reg seq_in;wire [3:0] count;// 实例化序列检测器sequence_detector uut (.clk(clk),.reset(reset),.seq_in(seq_in),.count(count));// 时钟信号生成always #5 clk = ~clk;initial begin// 初始化信号clk = 0;reset = 0;seq_in = 0;// 复位reset = 1;#10;reset = 0;// 提供输入序列 01101001101101101seq_in = 0; #10;seq_in = 1; #10;seq_in = 1; #10;seq_in = 0; #10;seq_in = 1; #10;seq_in = 0; #10;seq_in = 0; #10;seq_in = 1; #10;seq_in = 1; #10;seq_in = 0; #10;seq_in = 1; #10;seq_in = 1; #10;seq_in = 1; #10;seq_in = 0; #10;seq_in = 1; #10;seq_in = 1; #10;seq_in = 0; #10;seq_in = 1; #10;// 结束仿真#50;$finish;end
endmodule

结果正确:
在这里插入图片描述
解析:
1、状态定义:
定义FSM的不同状态来表示已经检测到的序列部分。
S0:初始状态
S1:检测到一个1
S11:检测到11
S110:检测到110
S1101:检测到1101(目标序列)
2、状态转移:根据输入位和当前状态确定下一个状态。
3、计数逻辑:每当FSM到达目标状态S1101时,增加计数器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1450864.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

JasperReport-报表中文不显示问题解决

在用Jaspersoft Studio进行报表设计的时候默认采用的字体是SansSerif&#xff0c;通过jasperreport的JAVA SDK进行报表输出时就会出现中文不显示问题。另外即便在Jaspersoft Studio设置的是中文字体&#xff0c;通过JAVA端生成也可能出现中文不显示。原因是SDK包中没有包含中文…

Github 2024-06-13开源项目日报Top10

根据Github Trendings的统计,今日(2024-06-13统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目3非开发语言项目2Shell项目1TypeScript项目1Swift项目1PHP项目1Blade项目1JavaScript项目1从零开始构建你喜爱的技术 创建周期:2156…

【单片机毕业设计选题24003】-基于STM32和阿里云的家庭安全监测系统

系统功能: 此设计采用STM32单片机采集环境温湿度,烟雾浓度和一氧化碳浓度显示在OLED上&#xff0c;并将这些信息上报至阿里云平台。 1. 上电连接手机热点后自动连接阿里云&#xff0c;可通过阿里云平台收到系统上报的温湿度&#xff0c;烟雾 浓度&#xff0c;一氧化碳数据以…

日常销售数据分析为什么重要?三个维度全面分析日常销售数据

在当今电子商务的浪潮席卷全球的时代&#xff0c;网店如雨后春笋般涌现&#xff0c;并且竞争日趋激烈。在这样一个充满挑战与机遇的环境中&#xff0c;如何洞察市场动向&#xff0c;把握消费者需求&#xff0c;实现销售业绩的稳步增长&#xff0c;成为每一位电商运营者必须面对…

Jenkins For Windows编译构建C#项目环境搭建(完整版)

安装Jenkins 下载Windows安装包 官方下载地址 选择稳定版&#xff0c;这里下载的是最新版&#xff0c;如需下载指定版本点击 以前的发行版 配置java环境 下载 java jdk 17 jdk17官方下载链接 这里下载的是msi版本的安装包 安装jdk17 双击运行安装包&#xff0c;一直下…

Java | Leetcode Java题解之第150题逆波兰表达式求值

题目&#xff1a; 题解&#xff1a; class Solution {public int evalRPN(String[] tokens) {int n tokens.length;int[] stack new int[(n 1) / 2];int index -1;for (int i 0; i < n; i) {String token tokens[i];switch (token) {case "":index--;stack…

【分布式技术专题】「OceanBase深度解析」 探索OceanBase产品矩阵与核心设计

探索OceanBase产品矩阵与核心设计 OceanBase的六大特性高扩展高可用多租户&#xff08;资源隔离&#xff09;OceanBase架构和功能OceanBase广泛的数据源支持 OceanBase的六大特性 OceanBase以其卓越的产品平台整合方案&#xff0c;充分展现了六大核心特性的卓越与全面。这一方…

PID算法的离散化和参数调节方式的介绍

目录 概述 1 背景介绍 2 数字式 PID 控制算法 2.1 位置式 PID 2.2 增量式 PID 2.3 两种算法比较 3 控制器参数整定 3.1 凑试法 3.2 临界比例法 3.3 经验法 4 参数调整规则的探索 概述 本文主要介绍离散化PID算法的实现原理&#xff0c;以方便对其进行数字化的处理&a…

人工智能将成为数学家的“副驾驶”

人工智能将成为数学家的“副驾驶” 数学传统上是一门独立的科学。1986年&#xff0c;安德鲁怀尔斯为了证明费马定理&#xff0c;退到书房里呆了7年。由此产生的证明往往很难让同事们理解&#xff0c;有些至今仍有争议。但近年来&#xff0c;越来越多的数学领域被严格地分解为各…

Python-json模块

一、相关概念 # 序列号 和反序列号 # 序列号&#xff1a;把内存中的数据类型转成一种特定格式&#xff0c;这种格式&#xff08;json/pickle&#xff09;可以用于存储&#xff0c;或者传输给其他平台 import json # 内存中是数据类型 ----> 序列化 ----> 特定格式&…

RK3568技术笔记六 新建 Ubuntu Linux 虚拟机

VMware 安装完成后&#xff0c;启动 VMware 软件。启动后在 VMware 主界面点击“创建新的虚拟机”。如下图所示&#xff1a; 开始对新建的虚拟机进行设置。选择“自定义”&#xff0c;然后点击“下一步”。如下图所示&#xff1a; 使用默认配置&#xff0c;单击“下一步”。如下…

Python和OpenCV图像分块之图像边长缩小比率是2

import cv2 import numpy as npimg cv2.imread("F:\\mytupian\\xihuduanqiao.jpg") # 低反光 cv2.imshow(image, img) # # 图像分块 # dst np.zeros(img.shape, img.dtype) ratio 2 #图像边长缩小比率是2&#xff0c;也就是一张图片被分割成四份 height, wi…

破解发展难题 台山这家合作社以农业社会化服务助推乡村振兴

风吹稻田千层浪&#xff0c;眼下&#xff0c;台山四九镇的早稻长势喜人&#xff0c;沉甸甸的稻穗迎风而动&#xff0c;已进入破口抽穗的关键期&#xff0c;即将在6月底陆续迎来丰收。在台山市明华汇种养专业合作社管理的稻田里&#xff0c;合作社负责人梁明喜正仔细观察着稻苗的…

docker一些常用命令以及镜像构建完后部署到K8s上

docker一些常用命令以及镜像构建完后部署到K8s上 1.创建文件夹2.删除文件3.复制现有文件内容到新建文件4.打开某个文件5.查看文件列表6.解压文件&#xff08;tar格式&#xff09;7.解压镜像8.查看镜像9.删除镜像10.查看容器11.删除容器12.停止运行容器13.构建镜像14.启动容器15…

MySQL主从复制(六):数据库是否可用

select 1判断 场景示例&#xff1a; -- 设置innodb并发度为3&#xff0c;从而限制并发查询 set global innodb_thread_concurrency3;-- 创建表t CREATE TABLE t (id int(11) NOT NULL,c int(11) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB;-- 插入1行数据 insert into t v…

shell文本三剑客 awk 和 grep

awk 前言 AWK是一种优良的文本处理工具。它不仅是 Linux中也是任何环境中现有的功能最强大的数据处理引擎之一。 Linux中最常用的文本处理工具有grep&#xff0c;sed&#xff0c;awk。行内将之称为文本三剑客&#xff0c;就功能量和效率来看&#xff0c;awk是当之无愧的文本三…

【新手必看】修复Windows11蓝牙连接问题的7个方法!

在Windows11电脑操作中&#xff0c;用户经常会到蓝牙功能&#xff0c;如果蓝牙连接出现问题了&#xff0c;就会导致用户无法成功使用蓝牙。但是&#xff0c;许多新手用户不清楚要怎么操作才能解决蓝牙连接问题&#xff1f;会有不同的因素导致蓝牙连接出现问题&#xff0c;接下来…

eclipse 老的s2sh(Struts2+Spring+Hibernate) 项目 用import导入直接导致死机(CPU100%)的解决

1、下载Apache Tomcat - Apache Tomcat 8 Software Downloads 图中是8.5.100的版本&#xff0c;下面的设置用的是另一个版本的&#xff0c;其实是一样。 2、先将Server配好&#xff0c;然后再进行导入操作。 2、选择jdk 当然&#xff0c;这里也可以直接“Download and instal…

openlayers 绘图功能,编辑多边形,select,snap组件的使用(五)

本篇介绍一下openlayers的select&#xff0c;snap的使用 1 需求 点击开始绘制按钮开始绘制多边形&#xff0c;可以连续绘制多个多边形点击撤销上步按钮&#xff0c;撤销上一步绘制点绘制多个多边形&#xff08;或编辑多边形时&#xff09;&#xff0c;鼠标靠近之前的已绘制完…

将HTML转化为PDF,一键操作轻松实现高效文件转换,轻松应对多种需求场景

在信息时代的浪潮中&#xff0c;文件格式的转换已经成为我们日常工作、学习和生活中不可或缺的一部分。无论是网页内容的保存、报告的整理还是简历的发送&#xff0c;我们经常需要将HTML文档转换为PDF格式&#xff0c;以确保文件内容的完整性和可读性。然而&#xff0c;传统的转…