lattice diamond fpga 状态机的理解
比如序列检测101,需要三个状态 :so,s1,s2。
思路:(1)s0状态有两种情况0或1,若为0时在自身打圈,是1时进入s1状态。
(2)s1状态有两种0或1,若为1自身打圈,因为1可以作为下次检测101的起始,有用信号,相当于s0自动进入s1所以自身打圈。若是s1是0则进入下个状态s2,。
(3)s2为0时则s0,s1,s2:1,0,0。由于00不能再利用故从头再来进入s0状态。若s2为1那么101检测完毕输出想要的结果即可,因为1可以利用作为下次检验101中的0,因此进入检验0的状态,
所以进入s1状态检验下次是否为0。。以上每个状态的0或1均考虑清楚了。
编写verilog hel程序即可;
/************************************************
>>>>>>>>>>>>>>>>copyright notice<<<<<<<<<<<<<<<<<
module serial_detect
author:shiguanghua
description:serial state detect 使用状态机来写代码
date:2016.7.6 15:47
************************************************/
module serial_detect
(
input clk_in,
input rst_in,
input data_in,
output led1,
output reg led2
);
parameter CUNT_NUM=12500000;
reg clk_1hz=0;
reg[24:0] cnt=0;
always @(posedge clk_in or negedge rst_in)
begin
if(!rst_in)
begin cnt<=0; clk_1hz<=0; end
else if(cnt>=CUNT_NUM-1) begin
cnt<=0; clk_1hz<=~clk_1hz; end
else cnt<=cnt+1;
end
parameter s0=0,s1=1,s2=2;
reg[1:0] state=0;
always @(posedge clk_1hz or negedge rst_in)
begin
if(!rst_in) begin state<=s0; led2<=0;end
else
case(state)
s0: begin
if(data_in==0) begin state<=s0;led2<=0; end
else begin state<=s1;led2<=0; end
end
s1: begin
if(data_in==1) begin state<=s1; led2<=0;end
else begin state<=s2; led2<=0; end
end
s2: begin
if(data_in==1)begin state<=s1;led2<=1;end
else begin state<=s0;led2<=0;end
end
default: state<=s0;
endcase
end
assign led1=clk_1hz;
endmodule
下面练习下检测1011序列
最新文章
- 谈谈一些有趣的CSS题目(八)-- 纯CSS的导航栏Tab切换方案
- DataScientist————汇总篇
- 文件处理命令:awk
- Javascript笔记----实现Page页面右下角置顶按钮.
- ThreadLocal原理与模拟
- SAP资产变动明细
- linux系统设置-防火墙
- 【WCF--初入江湖】07 分布式事务
- STL学习系列二:Vector容器
- Oracle相关的知识点
- WCF技术剖析之三十:一个很有用的WCF调用编程技巧[下篇]
- linux下执行sh文件报错:oswatcher_restart.sh: line 13: ./startOSW.sh: Permission denied
- javascript (十三) 函数
- 四:redis的sets类型 - 相关操作(有序和无序集合)
- .Net程序员学用Oracle系列(30):零碎补充、最后总结(The End)
- Apache Kafka - 介绍
- 实现IOC功能的简单Spring框架
- python的数据库链接
- Mysql通过sql语句添加约束和查看约束
- jzoj5805
热门文章
- 新安装的 ubuntu 下 make menuconfig 报错
- 微信H5支付----报undened index openid
- oracle例程
- Spring MVC 简述:从MVC框架普遍关注的问题说起
- 「模拟赛20180307」三元组 exclaim 枚举+树状数组
- SCOJ4427 / TOPOI 4404: Miss Zhao&#39;s Graph 解题报告
- iconfont的应用
- maven插件: shade, assembly
- 练习二十:python计算皮球下落速度练习题
- HDU 5908 Abelian Period 可以直接用multiset