当前位置: 首页 > news >正文

【IC设计】牛客网-序列检测习题总结

文章目录

  • 状态机基础知识
  • VL25 输入序列连续的序列检测
  • VL26 含有无关项的序列检测
  • VL27 不重叠序列检测
  • VL28 输入序列不连续的序列检测
  • 参考资料

状态机基础知识

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

VL25 输入序列连续的序列检测

`timescale 1ns/1ns
module sequence_detect(input clk,input rst_n,input a,output reg match);//这题就是普通的状态机,需要注意的是://  @当输入不能跳转到下一个状态时,可以复用前面的序列//  @这题是的Moore状态机,输出只和当前状态有关//定义状态空间(状态参数、状态寄存器)parameter IDLE = 0 ;parameter S0   = 1 ;parameter S1   = 2 ;parameter S2   = 3 ;parameter S3   = 4 ;parameter S4   = 5 ; parameter S5   = 6 ;parameter S6   = 7 ;parameter S7   = 8 ;reg [3:0] curr_state,next_state;// 1.打一拍更新现态always@(posedge clk or negedge rst_n) beginif(~rst_n) begincurr_state <= IDLE;end else begincurr_state <= next_state;endend// 2.组合逻辑根据现态和输入生成次态always@(*) begincase(curr_state)IDLE :  next_state = (a == 0) ? S0 : IDLE ;S0   :  next_state = (a == 1) ? S1 : S0   ;S1   :  next_state = (a == 1) ? S2 : S0   ;S2   :  next_state = (a == 1) ? S3 : S0   ;S3   :  next_state = (a == 0) ? S4 : S0   ;S4   :  next_state = (a == 0) ? S5 : S1   ;S5   :  next_state = (a == 0) ? S6 : S1   ;S6   :  next_state = (a == 1) ? S7 : S1   ;S7   :  next_state = (a == 0) ? IDLE:S2   ;default: next_state = IDLE;endcaseend// 3.Moore型FSM,根据当前状态生成输出always@(posedge clk or negedge rst_n) beginif(~rst_n) beginmatch <= 0;end else if(curr_state == S7) beginmatch <= 1;end else beginmatch <= 0;endend
endmodule

VL26 含有无关项的序列检测

两种方法:
法一、用寄存器维护一个存储序列的寄存器
法二、用状态机来做
这里我用寄存器来做。

`timescale 1ns/1ns
module sequence_detect(input clk,input rst_n,input a,output reg match);reg [8:0] curr_seq;// 1.维护存储序列的寄存器always@(posedge clk or negedge rst_n) beginif(~rst_n) begincurr_seq <= 9'bxxx_xxx_xxx;end else begincurr_seq <= {curr_seq[7:0],a};endend// 2.判断序列是否模式匹配always@(posedge clk or negedge rst_n) beginif(~rst_n) beginmatch <= 0;end else if(curr_seq[2:0] == 3'b110 && curr_seq[8:6] == 3'b011) beginmatch <= 1;end else beginmatch <= 0;endend
endmodule

VL27 不重叠序列检测

通过计数器进行分组序列检测,每组判断一次
注意点:

  • 计数器计算到6时才进行判断
  • 在分组中一旦错误,直接FAIL
  • 注意需要处理FAIL的状态跳转
  • 注意寄存器的初始值,要计数6个就1~6,初值为0
module sequence_detect(input clk,input rst_n,input data,output reg match,output reg not_match
);//分组序列检测//注意点://@计数器计算到6时才进行判断//@在分组中一旦错误,直接FAIL//@注意需要处理FAIL的状态跳转//@注意寄存器的初始值,要计数6个就1~6,初值为0// 定义状态空间和状态寄存器parameter IDLE = 0 ,S1   = 1 ,S2   = 2 ,S3   = 3 ,S4   = 4 ,S5   = 5 ,S6   = 6 ,FAIL = 7 ;reg [2:0] curr_state,next_state;reg [2:0] cnt;// 利用计数器进行分组always@(posedge clk or negedge rst_n ) beginif(~rst_n) begincnt <= 'b0;end else beginif(cnt == 3'd6) cnt <= 'b1;else cnt <= cnt + 1;endend// 1.次态更新现态always@(posedge clk or negedge rst_n) beginif(~rst_n) begincurr_state = IDLE;end else begincurr_state = next_state;endend// 2.组合逻辑生成次态always@(*) begincase(curr_state)IDLE : next_state = (data==0) ? S1 : FAIL ;S1   : next_state = (data==1) ? S2 : FAIL ;S2   : next_state = (data==1) ? S3 : FAIL ;S3   : next_state = (data==1) ? S4 : FAIL ;S4   : next_state = (data==0) ? S5 : FAIL ;S5   : next_state = (data==0) ? S6 : FAIL ;S6   : next_state = (data==0) ? S1 : FAIL ;FAIL : next_state = (cnt == 6 && data ==0) ? S1 : FAIL;default : next_state = IDLE ; endcaseend // 3.根据现态生成输出,波形match没有打拍直接组合逻辑输出always@(*) beginif(~rst_n) beginmatch <= 0;not_match <= 0;end else if(cnt == 6 ) beginif(curr_state == S6) beginmatch <= 1;not_match <= 0;end else beginmatch <= 0;not_match <= 1;endendelse beginmatch     <= 0;not_match <= 0;endend
endmodule

VL28 输入序列不连续的序列检测

`timescale 1ns/1ns
module sequence_detect(input clk,input rst_n,input data,input data_valid,output reg match
);//输入数据不连续的序列检测,在状态跳转时需要考虑data_validparameter IDLE = 5'b00001;parameter S1   = 5'b00010;parameter S2   = 5'b00100;parameter S3   = 5'b01000;parameter S4   = 5'b10000;parameter STATE_WIDTH = 5;reg [STATE_WIDTH - 1 : 0] cs;reg [STATE_WIDTH - 1 : 0] ns;always@(posedge clk or negedge rst_n) beginif(!rst_n) begincs <= IDLE;endelse begincs <= ns;endendalways@(*) begincase(cs)IDLE : beginif( data_valid ) beginns = data == 0 ? S1 : IDLE ; end else beginns = cs;endendS1   : beginif( data_valid ) beginns = data == 1 ? S2 : S1;end else beginns = cs;endendS2   : beginif( data_valid ) beginns = data == 1 ? S3 : S1;end else beginns = cs;endendS3   : beginif( data_valid ) beginns = IDLE;end else beginns = cs;endendendcaseendalways@(posedge clk or negedge rst_n) beginif(!rst_n) beginmatch <= 0;endelse beginif(cs == S3 && data == 0 && data_valid == 1) beginmatch <= 1;endelse beginmatch <= 0;endendend
endmodule

参考资料

  1. 正点原子领航者配套PPT
  2. 牛客网Verilog刷题

相关文章:

【IC设计】牛客网-序列检测习题总结

文章目录 状态机基础知识VL25 输入序列连续的序列检测VL26 含有无关项的序列检测VL27 不重叠序列检测VL28 输入序列不连续的序列检测参考资料 状态机基础知识 VL25 输入序列连续的序列检测 timescale 1ns/1ns module sequence_detect(input clk,input rst_n,input a,output re…...

python爬虫登录到海康相机管理页面

简述 1.最近接到个任务是在管理页面更改相机的某个参数&#xff0c;下载官方的sdk貌似没有提供这个接口&#xff0c;所以只能自己写爬虫登录发请求了。 1.主要步骤 1.1 发送get请求获取到salt&#xff0c;sessionID&#xff0c;challenge等信息 http://admin:123456192.168.…...

9.Docker网络

文章目录 1、Docker网络简介2、常用基本命令3、网络模式对比举例3.1、bridge模式3.2、host模式3.3、none模式3.4、container模式3.5、自定义网络 1、Docker网络简介 作用&#xff1a; 容器间的互联和通信以及端口映射容器IP变动时候可以通过服务名直接进行网络通信而不受到影…...

Windows VS2022 C语言使用 sqlite3.dll 访问 SQLite数据库

今天接到一个学生C语言访问SQLite数据库的的需求: 第一步,SQLite Download Page下载 sqlite3.dll 库 下载解压,发现只有两个文件: 于是使用x64 Native Tools Command Prompt 终端 生成 sqlite3.lib 和 sqlite3.exp文件 LIB -def:sqlite3.def -out:sqlite3.lib -machin…...

java库和包的概念

在Java中&#xff0c;"库"和"包"是两个不同的概念&#xff0c;但它们之间存在着密切的关联。 库&#xff08;Library&#xff09; 定义&#xff1a;库是一组已经编写好的代码和资源&#xff0c;用于解决特定的问题或提供特定的功能。它可以包含一个或多个…...

mysql内存结构

一&#xff1a;逻辑存储结构&#xff1a;表空间->段->区->页->行、 表空间&#xff1a;一个mysql实例对应多个表空间&#xff0c;用于存储记录&#xff0c;索引等数据。 段&#xff1a;分为数据段&#xff0c;索引段&#xff0c;回滚段。innoDB是索引组织表&…...

Python | Leetcode Python题解之第111题二叉树的最小深度

题目&#xff1a; 题解&#xff1a; class Solution:def minDepth(self, root: TreeNode) -> int:if not root:return 0que collections.deque([(root, 1)])while que:node, depth que.popleft()if not node.left and not node.right:return depthif node.left:que.appen…...

c++二进制输出

输入一个数&#xff0c;输出n个数&#xff0c;数可以是0或1&#xff1b;输入&#xff1a;4输出&#xff1a;0010&#xff1b;提示&#xff1a;本题要用到rand(),srand(time(0));代码如下&#xff1a;#include<bits/stdc.h> #include<windows.h> using namespace s…...

5. C++网络编程-UDP协议的实现

UDP是无连接的。 UDP Server网络编程基本步骤 创建socket&#xff0c;指定使用UDP协议将socket与地址和端口绑定使用recv/send接收/发送数据 由于UDP是无连接的&#xff0c;直接侦听就行使用close关闭连接 这个UDP接收数据的时候用的API是recvfrom,发送数据是sendto 客户端 …...

Altium Designer 中键拖动,滚轮缩放,并修改缩放速度

我的版本是AD19&#xff0c;其他版本应该都一样。 滚轮缩放 首先&#xff0c;要用滚轮缩放&#xff0c;先要调整一下AD 设置&#xff0c;打开Preferences&#xff0c;在Mouse Wheel Configuration 里&#xff0c;把Zoom Main Window 后面Ctrl 上的对勾取消掉&#xff0c;再把…...

python从入门到精通04

一、编写英文月份词典 month_num int(input("请输入您想要查询的月份&#xff1a;")) month_list [January,February,March,April,May,June,July,August,September,October,November,December] print("您查询的月份单词是&#xff1a;", month_list[mon…...

tomcat三级指导

版本 ./catalina.sh linux version.bat win 1.确认是否使用了tomcat管理后台 我们先找到配置文件&#xff1a;tomcat主目录下/conf/server.xml 可以查看到连接端口&#xff0c;默认为8080 然后查看manager-gui管理页面配置文件&#xff0c;是否设置了用户登录 配置文件…...

不知道是该怎么引用多个函数片段?具体示例如代码

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…...

P3128 [USACO15DEC] Max Flow P题解(树上差分,最近公共祖先,图论)

前言&#xff1a; 题目链接&#xff1a;P3128 [USACO15DEC] Max Flow P - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 讲解&#xff1a; 这一题含金量真算高的&#xff0c;包含了建树&#xff08;用了图论的知识&#xff09;&#xff0c;求最近公共祖先&#xff08;倍增法…...

在Linux上面部署ELK

注明&#xff1a;一下的软件需要自己准备 一、准备环境&#xff1a; 1.两台elasticsearch主机4G内存 2.两台elasticsearch配置主机名node1和node2(可以省略) #vim /etc/hostname #reboot 3. 两台elasticsearch配置hosts文件 #vim /etc/hosts 192.168.1.1 node1 192…...

Langchain-Chatchat的markdownHeaderTextSplitter使用

文章目录 背景排查步骤官方issue排查测试正常对话测试官方默认知识库Debug排查vscode配置launch.json命令行自动启动condadebug知识库搜索测试更换ChineseRecursiveTextSplitter分词器 结论 关于markdownHeaderTextSplitter的探索标准的markdown测试集Langchain区分head1和head…...

掩码生成蒸馏——知识蒸馏

摘要 https://arxiv.org/pdf/2205.01529 知识蒸馏已成功应用于各种任务。当前的蒸馏算法通常通过模仿教师的输出来提高学生的性能。本文表明&#xff0c;教师还可以通过指导学生的特征恢复来提高学生的表示能力。从这一观点出发&#xff0c;我们提出了掩码生成蒸馏&#xff08…...

【C#实战】Newtonsoft.Json基类子类解析

情景再现 假设你有如下类&#xff1a; public class Item {public int Id;public string Name; }public class Weapon: Item {public int CurrentAmmo; }public class Inventory {public List<Item> Items; } 其中你序列化的是Inventory类&#xff0c;Items列表里混杂着…...

表达式求值的相关语法知识(C语言)

目录 整型提升 整型提升的意义 整型提升规则 整型提升实例 算术转换 赋值转换 操作符的属性 C语言的语法并不能保证表达式的执行路径唯一&#xff01;&#xff01;&#xff01; 问题表达式 整型提升 C的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这…...

开发中遇到Electron自定义窗口的问题

开发中遇到Electron自定义窗口的问题 使用VUE3 Electron 开发一个音乐软件&#xff0c;自定义导航栏的放大、缩小和关闭。 其中使用ipcRenderer进行联系Electron&#xff0c;进行放大、缩小和关闭操作。 遇到问题 遇到__dirname is not defined in ES module scope //在V…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...