verilog HDLBits刷题[Finite State Machines]“Fsm hdlc”---Sequence recognition
1、题目Synchronous HDLC framing involves decoding a continuous bit stream of data to look for bit patterns that indicate the beginning and end of frames (packets). Seeing exactly 6 consecutive 1s (i.e., 01111110) is a flag that indicate frame boundaries. To avoid the data stream from accidentally containing flags, the sender inserts a zero after every 5 consecutive 1s which the receiver must detect and discard. We also need to signal an error if there are 7 or more consecutive 1s.Create a finite state machine to recognize these three sequences:0111110: Signal a bit needs to be discarded (disc).01111110: Flag the beginning/end of a frame (flag).01111111...: Error (7 or more 1s) (err).When the FSM is reset, it should be in a state that behaves as though the previous input were 0.Here are some example sequences that illustrate the desired operation.Discard 0111110:2、分析借助豆包初始复位默认前一个输入比特为0持续统计数据流中连续 1 的个数每收到 1 个 1连续 1 计数 1收到 0连续 1 计数立刻清零回到初始状态三类触发信号定义disc连续5 个 1后紧跟 1 个 00 11111 0该 0 需要丢弃disc 拉高 1 周期flag连续6 个 1后紧跟 1 个 00 111111 0代表帧边界flag 拉高 1 周期err出现7 个及以上连续 1持续报错只要连续 1≥7err 持续拉高直到出现 0 清零时序要求disc、flag检测到对应序列后延迟 1 个时钟周期输出时钟同步寄存输出err进入 7 个 1 错误态时立刻实时输出无延迟同步复位复位后所有输出清零、回到初始状态。设计思路状态划分状态含义S0前一位是 0连续 1 个数 0复位初始态S1~S6连续 1 的个数分别为 1~6S7连续 1≥7错误状态状态跳转规则任意状态收到in1状态 1任意状态收到in0直接跳回 S0连续 1 清零S7 收到 1 则保持 S7收到 0 回到 S0 解除报错。输出拆分设计errMoore 组合输出仅由当前状态决定S7 立刻置 1消除滞后disc/flagMealy 时序寄存输出延迟一拍匹配评测参考波形时序。刚开始思路混乱设置状态为IDEL连续5个1连续6个1连续7个1并借助计数器但是计数器的处理没处理成功。问了ai确实设置状态为每一bit最好。3、代码module top_module( input clk, input reset, // Synchronous reset 同步复位 input in, // 串行比特输入流 output reg disc,// 5个1后接0丢弃该0标志 output reg flag,// 6个1后接0帧边界标志 output reg err // 7个及以上连续1错误标志 ); // 状态宏定义状态编号 当前已接收连续1的个数 localparam S0 0; // 连续1个数0上一比特为0复位初始态 localparam S1 1; // 连续1个1 localparam S2 2; // 连续2个1 localparam S3 3; // 连续3个1 localparam S4 4; // 连续4个1 localparam S5 5; // 连续5个1比特填充检测点 localparam S6 6; // 连续6个1帧标志检测点 localparam S7 7; // 连续≥7个1错误状态 reg [2:0] curr_state; // 当前状态寄存器 reg [2:0] next_state; // 下一状态组合逻辑变量 // 时序逻辑状态寄存器更新同步复位 // 时钟上升沿更新当前状态复位强制回到初始S0 always (posedge clk) begin if(reset) begin curr_state S0; end else begin curr_state next_state; end end // 组合逻辑状态跳转逻辑 always (*) begin next_state S0; // 默认赋值避免组合逻辑生成锁存器 case(curr_state) S0: next_state in ? S1 : S0; // 来1→1个1来0保持清零 S1: next_state in ? S2 : S0; S2: next_state in ? S3 : S0; S3: next_state in ? S4 : S0; S4: next_state in ? S5 : S0; S5: next_state in ? S6 : S0; // 5个1再来1→6个1来0清零 S6: next_state in ? S7 : S0; //6个1再来1→进入错误态来0清零 S7: next_state in ? S7 : S0; //≥7个1持续保持错误来0退出报错 default: next_state S0; //异常状态兜底清零 endcase end // 组合逻辑err实时输出 // Moore输出仅由当前状态决定进入S7立刻报错无延迟 always (*) begin err (curr_state S7) ? 1b1 : 1b0; end // 时序逻辑disc、flag寄存输出延迟1拍 // disc、flag需要延迟1个时钟周期输出和参考波形对齐 always (posedge clk) begin //复位时两个标志强制清零 if(reset) begin disc 1b0; flag 1b0; end else begin disc 1b0; flag 1b0; case(curr_state) // 当前是5个1下一比特为0下一拍拉高disc S5: if(in 1b0) disc 1b1; // 当前是6个1下一比特为0下一拍拉高flag S6: if(in 1b0) flag 1b1; default:; endcase end end endmodule

相关新闻

计算机毕业设计之成绩管理系统

计算机毕业设计之成绩管理系统

本文首先实现了高校成绩管理系统设计与实现管理技术的发展随后依照传统的软件开发流程,最先为系统挑选适用的言语和软件开发平台,依据需求分析开展控制模块制做和数据库查询构造设计,随后依据系统整体功能模块的设计,制作系统的功…

2026/10/14 6:03:50 阅读更多 →
基于树莓派Pico与RP2040的DALI-2主控制器设计与实现

基于树莓派Pico与RP2040的DALI-2主控制器设计与实现

1. 项目概述:从“灯”到“光网络”的进化 如果你接触过智能家居或者商业照明,大概率听说过DALI。DALI,全称是数字可寻址照明接口,它早已不是个新名词。但当我第一次看到“Pico-DALI2”这个项目标题时,我的兴趣立刻被点…

2026/10/9 11:25:10 阅读更多 →
OpenDog V3四足机器人架构深度解析与实现路径

OpenDog V3四足机器人架构深度解析与实现路径

OpenDog V3四足机器人架构深度解析与实现路径 【免费下载链接】openDogV3 项目地址: https://gitcode.com/gh_mirrors/op/openDogV3 在机器人技术快速发展的今天,四足机器人正从实验室走向实际应用,面临着运动控制复杂性、机械结构可靠性、系统集…

2026/9/30 22:03:59 阅读更多 →

最新新闻

一条富碱性多肽的进阶之路:序列解析、合成纯化与核定位验证

一条富碱性多肽的进阶之路:序列解析、合成纯化与核定位验证

1. 从一条氨基酸序列反推蛋白身份:这条肽的“户口本”是这样查的拿到 PDGF A-Chain (194-211) 这个编号,加上后面那一串 GRPREGSKKRKRKRLKPT,我的第一反应不是急着做实验,而是先把它当成一个“嫌疑人”来审:它到底来自…

2026/10/14 6:04:23 阅读更多 →
Spring Boot微服务架构设计与实战指南

Spring Boot微服务架构设计与实战指南

1. 为什么Spring Boot成为微服务首选框架十年前我刚接触企业级应用开发时,EJB的复杂配置让人望而生畏。直到Spring Boot出现,用约定优于配置的理念彻底改变了Java开发方式。现在回想第一次用Spring Boot启动项目的场景:没有XML配置&#xff0…

2026/10/14 6:04:23 阅读更多 →
bl knowledge search 报 400 RagAgentGroupNotExist 怎么解决?阿里云百炼知识库检索与 agent 记忆节点使用步骤与常见报错排查

bl knowledge search 报 400 RagAgentGroupNotExist 怎么解决?阿里云百炼知识库检索与 agent 记忆节点使用步骤与常见报错排查

给 agent 补知识,阿里云百炼的 CLI(bl)里有两条路:bl knowledge 建知识库、包一层检索服务让它查;bl memory 按用户记节点。两条路的 ID 体系不一样,混用会撞上一个措辞很像服务端故障的 HTTP 400。 这篇按…

2026/10/14 6:04:23 阅读更多 →
微电网群协同调度中的目标级联法原理与Matlab实现

微电网群协同调度中的目标级联法原理与Matlab实现

1. 项目背景与核心价值微电网群协同调度是当前分布式能源领域的热点研究方向。传统集中式优化方法在面对多主体、高维度的微网群系统时,往往面临通信压力大、隐私保护难、计算复杂度高等问题。目标级联法(Analytical Target Cascading, ATC)通…

2026/10/14 6:04:23 阅读更多 →
汽车线束开发中的BOM图纸与检验记录管理

汽车线束开发中的BOM图纸与检验记录管理

汽车线束从设计到样品、再到量产,BOM材料清单、图纸和检验记录需要保持关联。连接器替换或支路调整后,如果相关文件没有同步更新,资料评审就可能遗漏要求。建立清晰的版本和关联关系,有助于工程与采购对齐信息。首先,为…

2026/10/14 6:04:23 阅读更多 →
PS5进阶玩家手册:系统设置、SSD扩容、网络调优与串流实战

PS5进阶玩家手册:系统设置、SSD扩容、网络调优与串流实战

接手的这台“AnyPS5”时,我第一反应是:这名字起得挺大。光是PS5相关的外设、存储、网络、串流、保养,随便列一列就够写好几篇长文。后来想明白了,所谓“Any PS5”,并不是什么第三方工具或改装固件,而是玩家…

2026/10/14 6:03:23 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →