惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
爱范儿
爱范儿
The Cloudflare Blog
Y
Y Combinator Blog
B
Blog RSS Feed
Stack Overflow Blog
Stack Overflow Blog
博客园 - 叶小钗
G
Google Developers Blog
J
Java Code Geeks
P
Proofpoint News Feed
美团技术团队
Engineering at Meta
Engineering at Meta
腾讯CDC
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
WordPress大学
WordPress大学
博客园 - 聂微东
雷峰网
雷峰网
有赞技术团队
有赞技术团队
L
LangChain Blog
N
Netflix TechBlog - Medium
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 【当耐特】

博客园 - yf.x

超声波测距#倒车雷达#DE10-Lite 按键计数器#DE10-Lite 按键消抖#DE10-Lite 流水呼吸灯v2#DE10-Lite 流水呼吸灯-v1#DE10-Lite 呼吸灯-#DE10-Lite 流水灯#DE10-Lite#Verilog HDLBits_review 2015fsm 补码FSM-HDLbits 串行数据流输出其中的数据位-HDLbits 输出PS2数据流-HDLbits PS2数据流检测状态机-HDLbits 独热码状态机-HDLbits 旅鼠4-HDLbits 旅鼠游戏3-HDLbits 旅鼠游戏2-HDLbits 旅鼠游戏--HDLbits 水库水位控制问题-HDLbits 康威生命游戏-hdlbits
串行数据接收判断-HDLbits
yf.x · 2025-12-19 · via 博客园 - yf.x

要求判断一段串行数据是否接收成功,(done=1).数据帧的起始位是0,中间八位数据,结束位是1.

从空闲状态开始,也就是初始状态是1,当接收到0,进入启动状态,然后每个数据位是1个状态,接收到1进入停止位,接收到0进入

错误状态,直到接收到1,返回初始状态。(这里往往会把错误状态忽略)

module top_module(
input clk,
input in,
input reset, // Synchronous reset
output done
);
parameter IDLE=0,START=1,DATA0=2,DATA1=3,DATA2=4,DATA3=5,DATA4=6,
DATA5=7,DATA6=8,DATA7=9,STOP=10,ERROR=11;
reg[3:0]state,next_state;

always @(*)
case(state)
IDLE:next_state=in?IDLE:START;
START:next_state=DATA0;
DATA0:next_state=DATA1;
DATA1:next_state=DATA2;
DATA2:next_state=DATA3;
DATA3:next_state=DATA4;
DATA4:next_state=DATA5;
DATA5:next_state=DATA6;
DATA6:next_state=DATA7;
DATA7:next_state=in?STOP:ERROR;
STOP:next_state=in?IDLE:START;
ERROR:next_state=in?IDLE:ERROR;
default:next_state=IDLE;
endcase

always @(posedge clk)
if(reset)
state<=IDLE;
else
state<=next_state;

assign done=state==STOP;
endmodule