实验八 利用有限状态机进行时序逻辑的设计
一.实验目的:
1.掌握利用有限状态机实现一般时序逻辑分析的方法。 2.掌握用Verilog编写可综合的有限状态机的标准模板。 3.掌握用Verilog编写状态机模块的测试文件的一般方法。 二.实验设备:
安装Modelsim-6.2b的PC机。 三.实验内容:
设计一个简单的状态机,功能是检测一个5位的二进制序列“10010”。
四.实验代码
module seqdet(x,z,clk,rst,state); input x,clk,rst; output z;
output [2:0]state; reg [2:0]state; wire z;
parameter IDLE='d0,A='d1,B='d2,C='d3,D='d4,E='d5,F='d6,G='d7; assign z=(state==E&&x==0)?1:0; always @(posedge clk) if(!rst) begin
state<=IDLE; end else
casex(state)
IDLE:if(x==1) begin
state<=A; end A:if(x==0) begin
state<=B; end
B:if(x==0) begin
state<=C; end else begin
state<=F; end C:if(x==1) begin
state<=D; end else
begin
state<=G; end D:if(x==0) begin
state<=E; end else
begin
state<=A; end E:if(x==0) begin
state<=C; end else begin
state<=A; end F:if(x==1) begin
state<=A; end else begin
state<=B; end G:if(x==1) begin
state<=F; end
default:state<=IDLE; endcase endmodule
`timescale 1ns/1ns module seqdet_Top; reg clk,rst;