lcytms
发表于 2017-7-20 10:01:41
带流水线输出的 Mealy 状态机
下一个状态 = F(当前状态,输入信号);
输出信号 = G(当前状态,输入信号);
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 模块表示
lcytms
发表于 2017-7-21 09:26:03
有限状态机的图形表示
图形表示:状态、转移、条件和逻辑开关
小舍YZ
发表于 2017-7-21 09:34:23
组合逻辑:输出只是输入逻辑电平的函数(有延时),与电路的原始状态无关。
时序逻辑:输出不只是输入的逻辑电平的函数,还与电路所处的状态有关。
同步时序逻辑是在同一时钟跳变节拍的前提下,如输入条件满足,则进入下一状态,否则仍留在原来的状态的状态机。
赞,,,,,,,,,,,,,,,谢谢分享。。。。。。。。。。。。。。。。。:lol
lcytms
发表于 2017-7-21 09:35:22
有限状态机的Verilog描述
定义模块名和输入输出端口;
定义输入、输出变量或寄存器;
定义时钟和复位信号;
定义状态变量和状态寄存器;
用时钟沿触发的always块表示状态转移过程;
在复位信号有效时给状态寄存器赋初始值;
描述状态的转换过程:符合条件,从一个状态到另外一个状态,否则留在原状态;
验证状态转移的正确性,必须完整和全面。
fpga_feixiang
发表于 2017-7-21 13:23:17
谢谢楼主分享
lcytms
发表于 2017-7-24 09:27:05
表示方法之一
modulefsm (Clock, Reset, A,K2, K1);
input Clock, Reset, A; //定义时钟、复位和输入信号
output K2, K1; //定义输出控制信号的端口
reg K2, K1; //定义输出控制信号的寄存器
reg 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
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
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
页:
1
2
3
4
[5]
6
7
8
9
10
11