赞
踩
*
**
module seq_circuit( input C , input clk , input rst_n, output wire Y ); reg [1:0] current_stage ; reg [1:0] next_stage ; reg Y_reg; //输出 //第一段 : 初始化当前状态和下一个状态 always @(posedge clk or negedge rst_n)begin if(!rst_n)begin current_stage <= 2'b00 ; next_stage <= 2'b00 ; end else begin current_stage <= next_stage ; end end //第二段 : 翻译状态转换图 always @ (*)begin case(current_stage) 2'b00:begin next_stage = (C==1 ? 2'b01 : 2'b00); end 2'b01:begin next_stage = (C==1 ? 2'b01 : 2'b11); end 2'b11:begin next_stage = (C==1 ? 2'b10 : 2'b11); end 2'b10:begin next_stage = (C==1 ? 2'b10 : 2'b00); end endcase end //第三段 : 控制输出 always @ (*)begin if(!rst_n)begin Y_reg <= 1'b0; end else begin casex({current_stage,C}) 3'b00_x : Y_reg <= 1'b0 ; 3'b01_x : Y_reg <= 1'b0 ; 3'b11_x : Y_reg <= 1'b1 ; 3'b10_1 : Y_reg <= 1'b1 ; 3'b10_0 : Y_reg <= 1'b0 ; endcase end end assign Y = Y_reg ; endmodule
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。