ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

hdlbits day11

2022-05-21 22:32:43  阅读:163  来源: 互联网

标签:cnt 字节 高电平 hdlbits STOP 低电平 day11 DATA


5.17、Fsm serial

在许多(较旧的)串行通信协议中,每个数据字节都与一个起始位和一个停止位一起发送,以帮助接收器从位流中划定字节。一种常见的方案是使用 1 个起始位 (0)、8 个数据位和 1 个停止位 (1)。当没有传输任何内容(空闲)时,该线路也处于逻辑 1。

设计一个有限状态机,当给定比特流时,它将识别何时正确接收到字节。它需要识别起始位,等待所有 8 个数据位,然后验证停止位是否正确。如果停止位未按预期出现,则 FSM 必须等到找到停止位后再尝试接收下一个字节。

 1)这里开始的标记是低电平,结束的标记是高电平,在开始和结束之间传输的 bit 位为8即一个字节,这是正确接收的条件,当满足该条件后会在 stop 位后面的时钟沿给出 done 的输出标记。如果不满足该条件,比如起始 start 条件不满足,则会一直等待知道接收到低电平信号才开始;又如 start 开始后,中间的位数超过了8 bit,即8 bit 后一直是低电平信号,不出现高电平的 stop 信号,则 receiver 继续等待知道出现高电平位才结束,但这是一个错误接收,不会给出 done 的输出标记。波形图如下所示。

2)设计了五个状态,分别是 IDLE, START, DATA, STOP, ERROR。这里控制状态转移的有输入信号 in 和自定义的计数器 cnt,计数器用于计数 start 和 stop 之间的位数是数据是否满足1 byte。cnt的条件判断只用在 DATA 状态中,在 DATA 状态时,cnt 实行计数,当 cnt 为8时表示真正的数据够了,此时再比较输入 in,如果 in 为高电平则数据接收正常,跳转至 STOP,否则表示出现错误,进入 ERROR。跳出 ERROR 的条件是输入in出现高电平。这里需要注意 STOP 状态可以直接跳转至 START 状态,即 in 为高电平后紧接着出现低电平情况,如果输入 in 为连续的几个高电平,则 STOP 会进入 IDLE 等待低电平到来。另外这里的 START 状态应该可以合并到 DATA 状态中实现状态机化简,可以试试。

标签:cnt,字节,高电平,hdlbits,STOP,低电平,day11,DATA
来源: https://www.cnblogs.com/blog-address/p/16295458.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有