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的数值来进行控制. 注:后面的那个对钩是镜像的意思. 其实二维混合树并没有想象中的那么难.先来 ...
随机推荐
- Logstash过滤插件
filter初级 Logstash安装 ### 设置YUM源 # rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch # t ...
- 测试之美 Part 1
1. 本人曾经在一次电话面试中被问到,为什么你作为一个测试人员,还要别人来告诉你要在哪些平台上去测试,你完全可以自己去定夺.下面的这段话是来自<测试之美>,我觉得很有逻辑的反驳了那位面试官 ...
- docker常用到的一些命令
docker ps 1. docker ps -a(显示所有的容器,包括未运行的) 2.docker ps -q (只显示ip) 3. docker ps -f(根据条件过滤显示的内容) docker ...
- HDU1425 A Chess Game
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1524 思路:题目就是给你一个拓扑图,然后指定点的位置放棋子,然后两人轮流移动棋子(题目中的边的关系),直到 ...
- vue项目中将后台返回的创建时间(时间戳格式)转换成日期格式
第一步:下载安装依赖包 npm install -save moment 第二步: 在main.js文件引入 1. import moment from 'moment' 其中还包含 2. //全局过 ...
- crawlspider的源码学习
Spider基本上能做很多事情了,但是如果你想爬取全站的话,可能需要一个更强大的武器.CrawlSpider基于Spider,但是可以说是为全站爬取而生.CrawlSpiders是Spider的派生类 ...
- lintcode-dfs实现二叉树的层序遍历
class Solution { /** * @param root: The root of binary tree. * @return: Level order a list of lists ...
- jdb应用
场景: 外网可以登录远程主机,但是因为安全限制,不能在外网直接访问docker应用的端口,因此不能远程调试.远程主机shell内部可以连接docker应用,也没有图形界面,没有log,考虑使用原始的j ...
- CodeForces - 589A
题目链接:http://codeforces.com/problemset/problem/589/A Polycarp has quite recently learned about email ...
- pat1061. Dating (20)
1061. Dating (20) 时间限制 50 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Sherlock Holmes ...