All pastes #256956 Raw Edit

Miscellany

public text v1 · immutable
#256956 ·published 2006-11-24 21:03 UTC
rendered paste body
module lampa(clk, rst, en, sw1, sw2, a, b);
    input clk;
    input rst;
    input en;
    input sw1;
    input sw2;
    output reg [2:0] a;
    output reg [2:0] b;

parameter P		= 2'b00;
parameter PS	= 2'b01;
parameter Z		= 2'b10;
parameter S		= 2'b11;

reg[15:0] timer;
reg[1:0] this;
reg[1:0] next;

always @(posedge clk)
	if(rst)
		this <= P;
	else if(en)
			this <= next;
	else
			this <= this;

always @(*)
if(timer==0)
	case(this)
		P:
			next <= PS;
		PS:
			next <= Z;
		Z:
			next <= S;
		S:
			next <= P;
		default:
			next <= P;
	endcase
else
	next <= next;

always @(posedge clk)
if(timer==0)
	case(this)
		(P|Z):
			if(sw1|sw2)
				timer <= 10;
			else
				timer <= 5;
		(PS|S):
			timer <= 2;
	endcase
else
	timer <= timer - 1;

always @(*)
	case(this)
		P:begin
			a <= 3'b100;
			b <= 3'b001;
			end
		PS:begin
			a <= 3'b110;
			b <= 3'b010;
			end
		Z:begin
			a <= 3'b001;
			b <= 3'b100;
			end
		S:begin
			a <= 3'b010;
			b <= 3'b110;
			end
	endcase

endmodule