集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: lcytms

Verilog HDL 夏宇闻--数字系统设计的核心知识

[复制链接]
 楼主| lcytms 发表于 2017-7-20 10:01:41 | 显示全部楼层
带流水线输出的 Mealy 状态机

下一个状态 = F(当前状态,输入信号);   
输出信号 = G(当前状态,输入信号);

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
fpga_feixiang 发表于 2017-7-20 12:11:58 | 显示全部楼层
Verilog HDL 夏宇闻--数字系统设计的核心知识
 楼主| lcytms 发表于 2017-7-21 09:23:26 | 显示全部楼层
本帖最后由 lcytms 于 2017-7-21 09:24 编辑

简单的状态机设计举例

        状态转移图表示
        RTL级可综合的 Verilog 模块表示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-7-21 09:26:03 | 显示全部楼层
有限状态机的图形表示

图形表示:状态、转移、条件和逻辑开关

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
小舍YZ 发表于 2017-7-21 09:34:23 | 显示全部楼层
        组合逻辑:输出只是输入逻辑电平的函数(有延时),与电路的原始状态无关。

        时序逻辑:输出不只是输入的逻辑电平的函数,还与电路所处的状态有关。
                        同步时序逻辑是在同一时钟跳变节拍的前提下,如输入条件满足,则进入下一状态,否则仍留在原来的状态的状态机。
赞,,,,,,,,,,,,,,,谢谢分享。。。。。。。。。。。。。。。。。
 楼主| lcytms 发表于 2017-7-21 09:35:22 | 显示全部楼层
有限状态机的Verilog描述

        定义模块名和输入输出端口;
        定义输入、输出变量或寄存器;
        定义时钟和复位信号;
        定义状态变量和状态寄存器;
        用时钟沿触发的always块表示状态转移过程;
        在复位信号有效时给状态寄存器赋初始值;
        描述状态的转换过程:符合条件,从一个状态到另外一个状态,否则留在原状态;
        验证状态转移的正确性,必须完整和全面。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
fpga_feixiang 发表于 2017-7-21 13:23:17 | 显示全部楼层
谢谢楼主分享
 楼主| lcytms 发表于 2017-7-24 09:27:05 | 显示全部楼层
表示方法之一

module  fsm (Clock, Reset, A,  K2, K1);
input Clock, Reset, A; //定义时钟、复位和输入信号
output K2, K1; //定义输出控制信号的端口
reg K2, K1;    //定义输出控制信号的寄存器
reg [1:0] state ;  //定义状态寄存器

parameter   Idle  = 2’b00,  Start = 2’b01,  
            Stop = 2’b10,   Clear = 2’b11;
//定义状态变量参数值
   always @(posedge Clock)
     if (!Reset)
       begin    //定义复位后的初始状态和输出值
          state <= Idle;  K2<=0; K1<=0;
       end

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-7-24 09:28:34 | 显示全部楼层
表示方法之一(续)

else
  case (state)
   Idle:  begin
            if (A)  begin
                         state <= Start;
                             K1<=0;
                    end
              else       state <= Idle;
           end
   Start: begin
             if (!A)   state <= Stop;
               else    state <= Start;
          end

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-7-24 09:30:16 | 显示全部楼层
表示方法之一(续)

   Stop:  begin   //符合条件进入新状态,否则留在原状态
            if (A)  begin
                      state <= Clear;
                          K2<= 1;
                    end
              else   state <= Stop;
           end
   Clear: begin
            if (!A)  begin  
                        state <= Idle;
                            K2<=0;  K1<=1;
                     end
              else   state <= Clear;
          end
   endcase
endmodule
&#160;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-17 21:29 , Processed in 0.097249 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表