第八次课-8章状态机精选全文
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
state<=s0; endcase end endmodule
z<=0;
三、基于状态机的设计要点
1.起始状态的选择
起始状态是指电路复位后所处的状态,选择一 个合理的起始状态将使整个系统简洁高效。有的 EDA软件会自动为基于状态机的设计选择一个最佳 的起始状态。
2.状态转换的描述
一般使用case语句来描述状态之间的转换, 用case语句表述比用if-else语句更清晰明了。
有限状态机类型 有限状态机的Verilog描述 有限状态机的设计要点
一、两种有限状态机
二、有限状态机的Verilog描述
描述对象:
当前状态、下一状态、输出逻辑
描述方式: 单过程、双过程、三过程
单过程描述方式: 放在一个过程中描述,相当于采用时
钟信号同步,克服输出产生毛刺。但输出 逻辑相对于双过程,要延迟一个时钟周期。
end end
s3: begin if(x==0)
begin state<=s0; z<=0;
end else begin
state<=s4; z<=1; end end
s4: begin if(x==0)
begin state<=s0; end else begin state<=s4; z<=1; end end default:
双过程描述方式: 一个过程 由时钟信号触发的时序过程
(当时钟发生跳变时,状态机状态发生变 化。一般用case语句检查状态机的当前状态; 另一过程是组合过程,对于摩尔型,输出 只与当前状态有关,因此只需用case语句即 可,对米里型,因与当前状态和输入都有 关,因此可用case 语句和 if组合进行描述。
always @(posedge clk) begin
if(reset) begin
state<=s0;z<=0; end else
casex(state) s0: begin
if(x==0) begin
state<=s0; z<=0; end
else begin
state<=s1; z<=0gin if(x==0)
begin state<=s0; z<=0;
end else begin
state<=s2; z<=0; end end
s2: begin if(x==0)
begin state<=s0; z<=0;
end else
begin state<=s3; z<=0;
有限状态机(FSM)设计
用状态机设计一个二进制序列检测器,其功 能是检测一个4位二进制序列“1111”,即输入序列 中如果有4个或4个以上连续的“1”出现,输出为1, 其它情况下,输出为0。
其输入输出如下所示:
输入x:000 101 010 110 111 101 111 110 101 输出z:000 000 000 000 000 100 001 110 000
第8章 有限状态机(FSM)设计
有限状态机(FSM,Finite State Machine) 是时序电路设计中经常采用的一种方式,尤其 适于设计数字系统的控制模块。具有速度快、 结构简单、可靠性高等优点。
在 FPGA 电 路 中 实 现 状 态 机 , 用 Verilog 的 case、if-else等语句能很好地描述基于状态机的 设计。使其在运行时间、速度和占用资源方面 优于由CPU实现的方案。
有限状态机(FSM)设计
“1111”序列检测器状态转换图
“1111”序列检测器的Verilog描述
module fsm_seq(x,z,clk,reset,state); input x,clk,reset; output z; output[2:0] state; reg[2:0] state; reg z; parameter s0='d0,s1='d1,s2='d2,s3='d3,s4='d4;
z<=0;
三、基于状态机的设计要点
1.起始状态的选择
起始状态是指电路复位后所处的状态,选择一 个合理的起始状态将使整个系统简洁高效。有的 EDA软件会自动为基于状态机的设计选择一个最佳 的起始状态。
2.状态转换的描述
一般使用case语句来描述状态之间的转换, 用case语句表述比用if-else语句更清晰明了。
有限状态机类型 有限状态机的Verilog描述 有限状态机的设计要点
一、两种有限状态机
二、有限状态机的Verilog描述
描述对象:
当前状态、下一状态、输出逻辑
描述方式: 单过程、双过程、三过程
单过程描述方式: 放在一个过程中描述,相当于采用时
钟信号同步,克服输出产生毛刺。但输出 逻辑相对于双过程,要延迟一个时钟周期。
end end
s3: begin if(x==0)
begin state<=s0; z<=0;
end else begin
state<=s4; z<=1; end end
s4: begin if(x==0)
begin state<=s0; end else begin state<=s4; z<=1; end end default:
双过程描述方式: 一个过程 由时钟信号触发的时序过程
(当时钟发生跳变时,状态机状态发生变 化。一般用case语句检查状态机的当前状态; 另一过程是组合过程,对于摩尔型,输出 只与当前状态有关,因此只需用case语句即 可,对米里型,因与当前状态和输入都有 关,因此可用case 语句和 if组合进行描述。
always @(posedge clk) begin
if(reset) begin
state<=s0;z<=0; end else
casex(state) s0: begin
if(x==0) begin
state<=s0; z<=0; end
else begin
state<=s1; z<=0gin if(x==0)
begin state<=s0; z<=0;
end else begin
state<=s2; z<=0; end end
s2: begin if(x==0)
begin state<=s0; z<=0;
end else
begin state<=s3; z<=0;
有限状态机(FSM)设计
用状态机设计一个二进制序列检测器,其功 能是检测一个4位二进制序列“1111”,即输入序列 中如果有4个或4个以上连续的“1”出现,输出为1, 其它情况下,输出为0。
其输入输出如下所示:
输入x:000 101 010 110 111 101 111 110 101 输出z:000 000 000 000 000 100 001 110 000
第8章 有限状态机(FSM)设计
有限状态机(FSM,Finite State Machine) 是时序电路设计中经常采用的一种方式,尤其 适于设计数字系统的控制模块。具有速度快、 结构简单、可靠性高等优点。
在 FPGA 电 路 中 实 现 状 态 机 , 用 Verilog 的 case、if-else等语句能很好地描述基于状态机的 设计。使其在运行时间、速度和占用资源方面 优于由CPU实现的方案。
有限状态机(FSM)设计
“1111”序列检测器状态转换图
“1111”序列检测器的Verilog描述
module fsm_seq(x,z,clk,reset,state); input x,clk,reset; output z; output[2:0] state; reg[2:0] state; reg z; parameter s0='d0,s1='d1,s2='d2,s3='d3,s4='d4;