All pastes #259049 Raw Edit

Someone

public text v1 · immutable
#259049 ·published 2006-11-27 01:32 UTC
rendered paste body
`timescale 1ns / 1ps

module vezerlo_logika(CLK, CY, btn_reset, btn_pausego, btn_start, szamlal, EN);
    input CLK;
	 input CY; //carry a számláló leállásáról
	 input btn_reset;
	 input btn_pausego;
	 input btn_start;
	 output reg [1:0] szamlal; //értéke 0 alapállapotban, 1, ha folyamatban van a számlálás, 2, ha pause-t kapott
		//és 3, ha befejeződött.
	 //LED8 világít, ha az érték 0; LED1 világít, ha az érték 1 vagy 2. ha az érték 3, egyik sem világít.
	 output reg EN; //vezérli az egyes helyiértékű számlálót.
	 
	 always @ (posedge CLK)
	 begin
		if (btn_reset) begin //reset. a specifikáció szerint alapállapotba viszi, márpedig alapállapotban nem számol.
			szamlal = 2'd0; 
			EN = 0;
		end //s0-ba
		
		else begin
			case (szamlal)
				0: begin
					if (btn_start) begin //start. ha már nem alapállapotban van, nem csinál semmit.
						szamlal = 2'd1;
						EN = 1;
					end //s1-be
					end
		
				1: begin
					if (btn_pausego) begin //pause.
						szamlal = 2'd2;
						EN = 0;
					end //s2-be
					if (CY) begin //a számlálás befejeződött
						szamlal = 2'd3;
						EN = 0;
					end //s3-ba
					end
					
				2: begin
					if (btn_pausego) begin //continue.
						szamlal = 2'd1;
						EN = 1;
					end //s2-ből s1-be vissza
					end
			endcase
		end
		
	end
//állapotgép. s0 -> START button -> s1, -> pause button -> s2, -> pause button -> s1, lefut -> s3, reset button -> s0	

endmodule