//1-paragraph method to decribe FSM
//Describe state transition, state output, state input condition in only 1 always block
//Westor Wang, Dec. 2006
//Verilog Training -- How to write FSM better module state1 (
input nrst,
input clk,
input i1,
input i2,
output reg o1,
output reg o2,
output reg err
); reg [:] NS; //NextState parameter [:] //one hot with zero idle
IDLE = 'b000,
S1 = 'b001,
S2 = 'b010,
ERROR = 'b100; //1 always block to describe state transition, state output, state input condition
always @ (posedge clk or negedge nrst)
if (!nrst)
begin
NS <= IDLE;
{o1,o2,err} <= 'b000;
end
else
begin
NS <= 'bx;
{o1,o2,err} <= 'b000;
case (NS)
IDLE: begin
if (~i1) begin{o1,o2,err}<='b000;NS <= IDLE; end
if (i1 && i2) begin{o1,o2,err}<='b100;NS <= S1; end
if (i1 && ~i2) begin{o1,o2,err}<='b111;NS <= ERROR;end
end
S1: begin
if (~i2) begin{o1,o2,err}<='b100;NS <= S1; end
if (i2 && i1) begin{o1,o2,err}<='b010;NS <= S2; end
if (i2 && (~i1)) begin{o1,o2,err}<='b111;NS <= ERROR;end
end
S2: begin
if (i2) begin{o1,o2,err}<='b010;NS <= S2; end
if (~i2 && i1) begin{o1,o2,err}<='b000;NS <= IDLE; end
if (~i2 && (~i1))begin{o1,o2,err}<='b111;NS <= ERROR;end
end
ERROR: begin
if (i1) begin{o1,o2,err}<='b111;NS <= ERROR;end
if (~i1) begin{o1,o2,err}<='b000;NS <= IDLE; end
end
endcase
end endmodule

一段式fsm的更多相关文章

  1. 三段式fsm

    1.状态转移的always中CS,同步ouput的always中NS. 2.3段fsm vs 2段fsm:output逻辑是组合逻辑和同步时序逻辑(消除里不稳的和毛刺). 3.3段fsm vs 1段f ...

  2. 二段式fsm

    1.推荐在敏感表下的默认状态为X,这样描述的好处有2个: 好处1:仿真易观察bug. 好处2:综合对不定态X的处理是"Don't Care",即任何没有定义的状态寄存器向量都会被忽 ...

  3. (转帖) 有限狀態機FSM coding style整理 (SOC) (Verilog)

    来源:http://www.codesoso.net/Record/101092_95120_21.html 来源:http://www.cnblogs.com/oomusou/archive/201 ...

  4. FPGA学习笔记(七)——FSM(Finite State Machine,有限状态机)设计

    FPGA设计中,最重要的设计思想就是状态机的设计思想!状态机的本质就是对具有逻辑顺序和时序规律的事件的一种描述方法,它有三个要素:状态.输入.输出:状态也叫做状态变量(比如可以用电机的不同转速作为状态 ...

  5. 有限狀態機FSM coding style整理 (SOC) (Verilog)

    AbstractFSM在數位電路中非常重要,藉由FSM,可以讓數位電路也能循序地執行起演算法.本文將詳細討論各種FSM coding style的優缺點,並歸納出推薦的coding style. In ...

  6. fsm三种建模思路比较

    ==================================================================================================== ...

  7. 三段式状态机 [CPLD/FPGA]

    状态机的组成其实比较简单,要素大致有三个:输入,输出,还有状态. 状态机描述时关键是要描述清楚前面提高的几个状态机的要素,即如何进行状态转移:每个状态的输出是什么:状态转移是否和输入条件相关等. 有人 ...

  8. i2c状态机方法设计-verilog

    2010-09-05 21:04:00 verilog语言基础学的差不多了.接着就是看看华为的语言编写规范.状态机设计方法是fpga的重要设计方法.所以我要记上一笔. 只要会FSM方法,用fpga编写 ...

  9. paper:synthesizable finite state machine design techniques using the new systemverilog 3.0 enhancements 之 standard verilog FSM conding styles(二段式)

    1.Two always block style with combinational outputs(Good Style) 对应的代码如下: 2段式总结: (1)the combinational ...

随机推荐

  1. 字典转json

    1.字典转json -(NSString*)dictionaryToJson:(NSDictionary *)dic { NSError *parseError = nil; NSData *json ...

  2. 回顾Quick Sort(Javascript 实现)

    Introduction QuickSort的时间复杂度渐近函数虽然不能达到MergeSort般的O(nlgn),但因其良好的时间常量以及平均运行时间而被广泛使用. 下图解释了QuickSort的过程 ...

  3. AJPFX关于VIM的常用快捷键

    Ajax技术的核心是XMLHttpRequest对象(简称XHR),var xhr = new XMLHttpRequest();function createXHR(){if (typeof XML ...

  4. [转]Java 8 Optional类深度解析(null处理)

    原文链接:http://www.importnew.com/6675.html 本文由 ImportNew - 高俊阳 翻译自 javacodegeeks.欢迎加入翻译小组.转载请见文末要求. 身为一 ...

  5. 【javascript】2017-9-12 腾讯笔试小Q升序算法

    刚做完笔试,腾讯笔试系统真的不友好,作为一个前端,我只会用js写编程题,然而,然而腾讯笔试系统连js输入函数都没给,还不准跳出页面,那个调试结果一直显示错误,我一直找不到错误在哪,心累. 只做了一道笔 ...

  6. PHP识别二维码功能,php-zbarcode 安装

    php-zbarcode是PHP识别二维码的扩展. 下面是安装方法,安装前要先安装ImageMagick.zbar. php-zbarcode 下载地址 安装ImageMagick: yum inst ...

  7. leetcode_1052. Grumpy Bookstore Owner

    1052. Grumpy Bookstore Owner https://leetcode.com/problems/grumpy-bookstore-owner/ 题意:每个时刻i会有custome ...

  8. Android(java)学习笔记143:Android中View动画之 XML实现 和 代码实现

    1.Animation 动画类型 Android的animation由四种类型组成: XML中: alph 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动 ...

  9. python自动化基础问题解析

      (1)自动化代码中用到的设计模式: po模式(page object): 1.PO提供了一种业务流程与页面元素操作分离的模式,这使得测试代码变得更加清晰. 2.页面对象与用例分离,使得我们更好的复 ...

  10. CentOS 7.0关闭防火墙

    .关闭firewall: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止fir ...