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序列
lattice diamond fpga 状态机的理解的更多相关文章
- 【心得】Lattice Diamond 后端约束实战小结
[博客导航] [导航]FPGA相关 IOB约束 参考<插入IO寄存器和位置约束---lattice&diamond>,推荐的方法是: 1.在strategy设置[Map Desig ...
- Lattice系列FPGA入门相关0(Lattice与Altera、Xilinx对比及入门)
需求说明:Lattice系统FPGA入门 内容 :Lattice与Altera.Xilinx对比 来自 :时间的诗 1.Lattice与Altera.Xilinx对比 latt ...
- Lattice Diamond 和 ispLEVER 的不同之处
Lattice Diamond 和 ispLEVER.有一些不同,尤其是如何管理工程的不同,包括以下几点: 1.ispLEVER 有多种工程类型,不同的程序文件类型需要不同的类型的工程:但是Diamo ...
- Lattice Diamond 学习之编译、检查和设置约束
在新建工程以及完成代码的输入之后.则就要进行编译,并检测错误. 一. Generate Hierarchy(产生层次结构). 1. 点击Generate Hierarchy 图标或者Design -- ...
- Unity Animator动画状态机 深入理解(一)
接触Unity以来就已经有了Animator,Animation用的少,不过也大概理解他俩之间的一个区别于联系. 图中其实就是Animator和Animation之间的区别于联系了,啊!你肯定会告诉我 ...
- Lattice Diamond安装
1.下载:到Lattice官网 http://www.latticesemi.com/ 注册一个lattice的账号后就可以去下载Diamond,登陆后如下图,根据自己系统情况选择对应的版本,我用的是 ...
- lattice diamond 3.7安装破解
第一步安装:执行.EXE文件,一直下一步,最后license选择没有USB什么的那个(具体记不清了). 第二步破解:安装完成后在环境变量中将license路径指定到license文件即可(LM_LIC ...
- 【FPGA篇章四】FPGA状态机:三段式以及书写方法
欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章 状态机是fpga设计中极其重要的一种技巧,状态机通过不同的状态迁移来完成特定的逻辑操作,掌握状态机的写法可以使fpga的开发事半功倍. 状态 ...
- Unity Animator动画状态机 深入理解(三)二维混合树
介绍二维之前,先说说一维吧~ 这个是通过旋转角度速度快慢来表现身体的大转和中转~ 通过一个-133~133的数值来进行控制. 注:后面的那个对钩是镜像的意思. 其实二维混合树并没有想象中的那么难.先来 ...
随机推荐
- java多线程系列:ThreadPoolExecutor
ThreadPoolExecutor自定义线程池 开篇一张图(图片来自阿里巴巴Java开发手册(详尽版)),后面全靠编 好了要开始编了,从图片中就可以看到这篇博文的主题了,ThreadPoolExec ...
- 浅谈REST API
浅谈REST API 说明: 本文部分内容根据其它网络文章编写,如有版权问题请及时通知. 背景 发迹于互联网的REST,在国内国外混得可谓是风生水起,如今又进入电信行业的视野,连TMF都将其作为战略项 ...
- Java面向对象的三大特性 继承
继承是类与类的一种关系,是“is a"关系 子类拥有父类的属性和方法,private除外 class 子类 extends 父类 方法的重写 调用方法时会优先调用子类的方法 重写时,返 ...
- 【Python之os模块】使用
目录 1. os.path 2. os.work 主要介绍在平时遇到的os模块的使用方法: 1. os.path 1.1 os.path.sep # 系统路径分隔符 # ============= ...
- elasticsearch 基础特点
1.Elasticsearch对复杂分布式机制的透明隐藏特性 Elasticsearch是一套分布式的系统,分布式是为了应对大数据量,隐藏了复杂的分布式机制 分片机制(我们之前随随便便就将一些docu ...
- Mysql-7-mysql函数
1.数学函数 用来处理数值数据方面的运算,主要的数学函数有:绝对值函数,三角函数,对数函数,随机函数.使用数学函数过程中,如果有错误产生,该函数会返回null值. 数学函数 功能介绍 组合键 abs( ...
- 洛谷P4878 [USACO05DEC]layout布局
题目描述 正如其他物种一样,奶牛们也喜欢在排队打饭时与它们的朋友挨在一起.\(FJ\) 有编号为 \(1\dots N\) 的 \(N\) 头奶牛 \((2\le N\le 1000)\).开始时,奶 ...
- Migrations中的更新语句写法,摘要
public override void Up() { AlterColumn("dbo.Dispositions", "Property1", c => ...
- BestCoder Round #86 1002
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5805 题意:删除数列中一个数,找出相邻之差绝对值最大,求依次删除最大值的和 解法:删除边缘位置的数字需要注 ...
- 强制更新客户端Silverlight XAP 文件
在发布小程序更新的时候访问的总是原来的程序,猜想应该是缓存的原因.在网上查找方法 <div id="silverlightControlHost"> <objec ...