stamp_seller.v

来自「一个自动售邮票的控制电路。 用两个发光二极管分别模拟售出面值为六角和八角的邮票」· Verilog 代码 · 共 184 行

V
184
字号
	//  Module Declaration
	module stamp_seller
	(
	// {{ALTERA_ARGS_BEGIN}}
	RESET, DEAL, CLK, IN_PUT, Coin_In_LED0, Coin_In_LED1, Coin_Out_LED
	// {{ALTERA_ARGS_END}}
	);
	// Port Declaration
	// {{ALTERA_IO_BEGIN}}
	input RESET;
	input DEAL;
	input CLK;
	input [3:0] IN_PUT;
	output Coin_In_LED0;
	output Coin_In_LED1;
	output [4:0] Coin_Out_LED;
	// {{ALTERA_IO_END}}
	reg    Coin_In_LED0,Coin_In_LED1;
	reg    [4:0]Coin_Out_LED;
	reg    [3:0]STATE;
	parameter S0=4'b0000,  S1=4'b0001,  S2=4'b0010,  S3=4'b0011,
	S4=4'b0100,  S5=4'b0101,  S6=4'b0110,  S7=4'b0111,
	S8=4'b1000,  S9=4'b1001,  S10=4'b1010, S11=4'b1011,
	S12=4'b1100, S13=4'b1101, S14=4'b1110, S15=4'b1111;
	always @( posedge CLK )
	begin
	STATE=IN_PUT;
	if(!DEAL)
	begin
	case(STATE)
	S0,S1:
	begin
	Coin_In_LED0<=1;
	Coin_In_LED1<=1;
	Coin_Out_LED[4:0]<=5'b11111;
	STATE<=S0;
	end
	S2,S3:
	begin
	Coin_In_LED0<=1;
	Coin_In_LED1<=1;
	Coin_Out_LED[4:0]<=5'b11110;
	STATE<=S0;
	end
	S4,S5:
	begin
	     Coin_In_LED0<=1;
	     Coin_In_LED1<=1;
	     Coin_Out_LED[4:0]<=5'b11010;
	     STATE<=S0;
	end
	S6:
	begin    
	     Coin_In_LED0<=0;    
	     Coin_In_LED1<=1;    
	     Coin_Out_LED[4:0]<=5'b11111;    
	     STATE<=S0;    
    end    
	  S7:    
	   begin    
	     Coin_In_LED0<=1;    
	     Coin_In_LED1<=1;    
	     Coin_Out_LED[4:0]<=5'b11001;    
	     STATE<=S0;    
	   end    
	  S8:    
	   begin    
	     Coin_In_LED0<=0;    
	     Coin_In_LED1<=1;    
	     Coin_Out_LED[4:0]<=5'b11011;    
	     STATE<=S0;    
	   end    
	  S9:    
	   begin    
	     Coin_In_LED0<=1;    
	     Coin_In_LED1<=0;    
	     Coin_Out_LED[4:0]<=5'b11101;    
	     STATE<=S0;    
	   end    
	  S10:    
	   begin    
	     Coin_In_LED0<=0;    
	     Coin_In_LED1<=1;    
	     Coin_Out_LED[4:0]<=5'b11010;    
	     STATE<=S0;    
	   end    
	  S11:    
	   begin    
	     Coin_In_LED0<=1;    
	     Coin_In_LED1<=0;    
	     Coin_Out_LED[4:0]<=5'b11100;    
	     STATE<=S0;    
	   end    
	  S12:    
	   begin    
	     Coin_In_LED0<=0;    
	     Coin_In_LED1<=1;    
	     Coin_Out_LED[4:0]<=5'b10110;    
	     STATE<=S0;    
	   end    
	  S13:    
	   begin    
	     Coin_In_LED0<=1;    
	     Coin_In_LED1<=0;    
	     Coin_Out_LED[4:0]<=5'b11000;    
	     STATE<=S0;    
	   end    
	  S14:    
	   begin    
	     Coin_In_LED0<=0;    
	     Coin_In_LED1<=1;    
	     Coin_Out_LED[4:0]<=5'b10101;    
	     STATE<=S0;    
	   end    
	  S15:    
	   begin    
	     Coin_In_LED0<=1;    
	     Coin_In_LED1<=0;    
	     Coin_Out_LED[4:0]<=5'b10111;    
	     STATE<=S0;    
	   end    
	  default:    
	   begin    
	     Coin_In_LED0<=1;    
	     Coin_In_LED1<=1;    
	     Coin_Out_LED[4:0]<=5'b11111;    
	     STATE<=S0;    
	   end    
	   endcase    
	end    
	else if(!RESET)    
	 begin    
	  case(STATE)    
	  S0,S1:    
      begin    
	     Coin_Out_LED[4:0]<=5'b11111;    
	   end      
	S2,S3:    
	   begin    
	     Coin_Out_LED[4:0]<=5'b11110;    
	   end    
	  S4,S5:    
	   begin    
	     Coin_Out_LED[4:0]<=5'b11010;    
	   end    
	  S6,S7:    
	   begin    
	     Coin_Out_LED[4:0]<=5'b11001;    
	   end    
	  S8,S9:    
	   begin    
	     Coin_Out_LED[4:0]<=5'b10101;    
	   end    
	  S10,S11:    
	   begin    
	     Coin_Out_LED[4:0]<=5'b10100;    
	   end    
	  S12,S13:    
	   begin    
	     Coin_Out_LED[4:0]<=5'b10000;    
	   end    
	  S14,S15:    
	   begin    
	     Coin_Out_LED[4:0]<=5'b01111;    
	   end    
	  default:    
	   begin    
	     Coin_In_LED0<=1;    
	     Coin_In_LED1<=1;    
	     Coin_Out_LED[4:0]<=5'b11111;    
	     STATE<=S0;    
	   end    
	   endcase    
	  STATE<=S0;    
	   end    
	 else    
	 begin    
	  Coin_In_LED0<=1;    
	  Coin_In_LED1<=1;    
	  Coin_Out_LED[4:0]<=5'b11111;    
	  STATE<=S0;    
	 end    
	end
	endmodule

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?