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

推荐订阅源

量子位
F
Fortinet All Blogs
小众软件
小众软件
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Azure Blog
Microsoft Azure Blog
J
Java Code Geeks
有赞技术团队
有赞技术团队
D
DataBreaches.Net
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
A
About on SuperTechFans
I
InfoQ
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
H
Hackread – Cybersecurity News, Data Breaches, AI and More
罗磊的独立博客
C
Check Point Blog
大猫的无限游戏
大猫的无限游戏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
MyScale Blog
MyScale Blog

博客园 - 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