module clk_gen (
	/********** Ê±ÖÓÓë¸´Î» **********/
	input wire	clk_ref,   // »ù±¾Ê±ÖÓ
	input wire	reset_sw,  // È«¾Ö¸´Î»
	/********** Éú³ÉÊ±ÖÓ **********/
	output wire clk,	   // Ê±ÖÓ
	output wire clk_,	   // ·´ÏàÊ±ÖÓ
	/********** Ð¾Æ¬¸´Î» **********/
	output wire chip_reset // Ð¾Æ¬¸´Î»
);

	/********** ÄÚ²¿ÐÅºÅ **********/
	wire		locked;	   // Ëø¶¨ÐÅºÅ
	wire		dcm_reset; // dcm ¸´Î»

	/********** ²úÉú¸´Î» **********/
	// DCM¸´Î»
	assign dcm_reset  = (reset_sw == `RESET_ENABLE) ? `ENABLE : `DISABLE;
	// Ð¾Æ¬¸´Î»
	assign chip_reset = ((reset_sw == `RESET_ENABLE) || (locked == `DISABLE)) ?
							`RESET_ENABLE : `RESET_DISABLE;

	/********** Xilinx DCM (Digitl Clock Manager) -> altera pll**********/
	/* x_s3e_dcm x_s3e_dcm (
		.CLKIN_IN		 (clk_ref),	  // »ù±¾Ê±ÖÓ
		.RST_IN			 (dcm_reset), // DCM¸´Î»
		.CLK0_OUT		 (clk),		  // Ê±ÖÓ
		.CLK180_OUT		 (clk_),	  // ·´ÏàÊ±ÖÓ
		.LOCKED_OUT		 (locked)	  // Ëø¶¨
   );
	*/
	
	altera_dcm x_s3e_dcm (
		.inclk0		 (clk_ref),	  // »ù±¾Ê±ÖÓ
		.areset			 (dcm_reset), // DCM¸´Î»
		.c0		 (clk),		  // Ê±ÖÓ
		.c1		 (clk_),	  // ·´ÏàÊ±ÖÓ
		.locked		 (locked)	  // Ëø¶¨
   );
	

endmodule