⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 write_state.v

📁 DesignWave 2005 8 Verilog Example
💻 V
字号:
/* -------------------------------------------------------------
	Synthesis & Fitter tool = "QuartusII5.0WE"

	FileName = write_state.v

	M.YOSHIDA				15.MAY.2005		REV	1.0
------------------------------------------------------------- */
//	Define Declaration
`define		MAIN_WRITE		3'b001
`define		IDLE			4'b0000
`define		CMD				4'b0001
`define		WAIT1			4'b0010
`define		WAIT2			4'b0011
`define		WAIT3			4'b0100
`define		WRITE1			4'b0101
`define		WRITE2			4'b0110
`define		WRITE3			4'b0111
`define		WRITE4			4'b1000

//	Module Declaration
module	write_state	(	clk,				//	Synchronous clock input
						rstn,				//	Negative reset input
						main_state,
						state
				);

    //	port declaration
	input						clk, rstn;
	input	[2:0]				main_state;

	output	[3:0]				state;

    //	reg & wire declaration
	reg		[3:0]				state;
	reg		[3:0]				next_state;

	/*	------------	State Machine Declaration	------------	*/
	//	State Register
	always	@( posedge clk or negedge rstn )	begin
		if( !rstn ) begin
		//	reset state
			state	<=	`IDLE;
		end
		else begin
		//	next_state
			state	<=	next_state;
		end
	end

	//	------------	State controller	------------
	always	@( state or main_state ) begin

		case( state )

			//	IDLE State
			`IDLE:		begin
							if( main_state == `MAIN_WRITE )	begin
							//	move next state
								next_state		<=	`CMD;
							end
							else	begin
							//	hold state
								next_state		<=	`IDLE;
							end
						end

			//	CMD State
			`CMD:		begin
							next_state		<=	`WAIT1;
						end

			//	WAIT1 State
			`WAIT1:		begin
							next_state		<=	`WAIT2;
						end

			//	WAIT2 State
			`WAIT2:		begin
							next_state		<=	`WAIT3;
						end

			//	WAIT3 State
			`WAIT3:		begin
							next_state		<=	`WRITE1;
						end

			//	WRITE1 State
			`WRITE1:	begin
							next_state		<=	`WRITE2;
						end

			//	WRITE2 State
			`WRITE2:	begin
							next_state		<=	`WRITE3;
						end

			//	WRITE3 State
			`WRITE3:	begin
							next_state		<=	`WRITE4;
						end

			//	WRITE4 State
			`WRITE4:	begin
							next_state		<=	`IDLE;
						end
						
			default:	begin
							next_state		<=	`IDLE;
						end
						
		endcase
	end

endmodule

⌨️ 快捷键说明

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