跳到主要内容

20.序列识别

同步HDLC帧格式化涉及解码连续的数据比特流,寻找指示帧(数据包)开始和结束的比特模式。如果看到连续6个1(即,01111110)则是一个表示帧边界的“标志”(flag)。为了避免数据流中意外包含“标志”,发送方在每个连续的5个1之后插入一个0,接收方必须检测到这个0并丢弃。同时,如果出现连续7个或更多1,我们也需要发出错误信号。

创建一个有限状态机来识别这三个序列:

  • 0111110:信号需要丢弃一个比特(disc)。
  • 01111110:标志一帧的开始或结束(flag)。
  • 01111111...:错误(连续7个或更多1)(err)。

当有限状态机被重置时,它应该处于一个状态,该状态表现得如同上一个输入为0一样。

以下是一些展示期望操作的示例序列。

alt text

实现这个状态机。

模块声明

module top_module(
input clk,
input reset, // Synchronous reset
input in,
output disc,
output flag,
output err);

做题区