File "led_blink.v"

Full Path: /home/analogde/www/GRAND/source/led_blink.v
File size: 3.12 KB
MIME-type: text/plain
Charset: utf-8

/*********************************************************************************************************************************************************
 LED BLINK using APU/SPD
 December 2006
*********************************************************************************************************************************************************/

// Top Module
module led_blink (pwr_dwn, pwr_dwn_inv, power_on_led);
    
/* Pwr_dwn & pwr_dwn_inv signals required for external circuitry to power down
   voltage regulators powering the CPLD
 * Power_on_led displays glowing LED while CPLD is powered ON */
 
output pwr_dwn, pwr_dwn_inv, power_on_led; 
wire oscena_w, osc_w, power_on_led;

assign oscena_w =1;                //enables internal UFM oscillator
assign power_on_led = 1;           //LED(active low) glows when CPLD in ON

altufm_osc0_altufm_osc_1p3 		int_clk		(.osc(osc_w), .oscena(oscena_w));
divider							        div		(.clk(osc_w), .divided(pwr_dwn), .divided_inv(pwr_dwn_inv));

endmodule

/********************************************************************************************************************
* UFM oscillator generated by Quartus megafunction wizard
* Megafunction wizard: %IO/MAX II oscillator%CBX%
********************************************************************************************************************/
`timescale 1 ps / 1 ps
//synopsys translate_on

module altufm_osc0_altufm_osc_1p3
	(osc, oscena) /* synthesis synthesis_clearbox=1 */;
	output   osc;
	input   oscena;

	wire  wire_maxii_ufm_block1_osc;

	maxii_ufm   maxii_ufm_block1
	( 
	.arclk(1'b0),
	.ardin(1'b0),
	.arshft(1'b0),
	.bgpbusy(),
	.busy(),
	.drclk(1'b0),
	.drdout(),
	.drshft(1'b0),
	.osc(wire_maxii_ufm_block1_osc),
	.oscena(oscena)
	`ifdef FORMAL_VERIFICATION
	`else
	// synopsys translate_off
	`endif
	,
	.drdin(1'b0),
	.erase(1'b0),
	.program(1'b0)
	`ifdef FORMAL_VERIFICATION
	`else
	// synopsys translate_on
	`endif
	// synopsys translate_off
	,
	.ctrl_bgpbusy(),
	.devclrn(),
	.devpor(),
	.sbdin(),
	.sbdout()
	// synopsys translate_on
	);
	defparam
		maxii_ufm_block1.address_width = 9,
		maxii_ufm_block1.osc_sim_setting = 300000,
		maxii_ufm_block1.lpm_type = "maxii_ufm";
	assign
		osc = wire_maxii_ufm_block1_osc;
endmodule //altufm_osc0_altufm_osc_1p3
//VALID FILE

/****************************************************************************************************************************
* Divider to divide internal UFM ~3.3MHz clock (osc) by 2^19 and 
  generate 'divided' (for power down & its complement) signals
****************************************************************************************************************************/

module divider(clk, divided, divided_inv);

input clk;
output divided, divided_inv;

reg [18:0] count;
reg divided;

wire divided_inv;
assign divided_inv = ~divided;

initial
    begin
        count = 0;
    end

always @ (posedge clk)
	begin
	count = count + 1;
	divided <= count[18];
	end
	
endmodule

/*************************************** END ***********************************************************/