pad.v 11.8 KB
 /************************************************************************\
 *                                                                        *
 *               Copyright(C) 1994, Silicon Graphics, Inc.               *
 *                                                                        *
 *  These coded instructions, statements, and computer programs  contain  *
 *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *
 *  are protected by Federal copyright  law.  They  may not be disclosed  *
 *  to  third  parties  or copied or duplicated in any form, in whole or  *
 *  in part, without the prior written consent of Silicon Graphics, Inc.  *
 *                                                                        *
 \************************************************************************/

// $Id: pad.v,v 1.1.1.1 2002/05/17 06:07:48 blythe Exp $

module pad(
	synclk_in, mclk_pad,
	reset_out, reset_pad,
	test_out, test_pad,
	start_gclk, clk, gclk, 

	pvalid_out, pvalid_pad,
	evalid_in, evalid_pad,
	eok_in, eok_pad,
	int_in, int_pad,

	sysad_out, sysad_in, sysad_pad,
	syscmd_out, syscmd_in, syscmd_pad, 
	sysad_en_l,

	cartaleh_in, cartaleh_pad,
	cartalel_in, cartalel_pad,
	cartrd_in, cartrd_pad,
	cartwr_in, cartwr_pad,
	cartad_out, cartad_in, cartad_pad, cartad_en_l,

	pifrsp_out, pifrsp_pad,
	pifcmd_in, pifcmd_pad,
	pifclk_in, pifclk_pad,

	auddata_in, auddata_pad,
	audclk_in, audclk_pad,
	audlrclk_in, audlrclk_pad,

	srgba_in, srgba_pad,
	vsync_in, vsync_pad,
	vclk_out, vclk_in, vclk_pad, vclk_en_l);

// System interface
input synclk_in;
output mclk_pad;

input start_gclk;
output clk;
output gclk;

output reset_out;
input reset_pad;
output test_out;
input test_pad;

// SysAD interface
input pvalid_pad;
output pvalid_out;

input evalid_in;
output evalid_pad;

input eok_in;
output eok_pad;

input int_in;
output int_pad;

input  [4:0] sysad_en_l;
input  [31:0] sysad_in;
output [31:0] sysad_out;
inout  [31:0] sysad_pad;

input  [4:0] syscmd_in;
output [4:0] syscmd_out;
inout  [4:0] syscmd_pad;

// AD16 interface
input cartaleh_in;
output cartaleh_pad;
input cartalel_in;
output cartalel_pad;
input cartrd_in;
output cartrd_pad;
input cartwr_in;
output cartwr_pad;

input  [15:0] cartad_in;
output [15:0] cartad_out;
inout  [15:0] cartad_pad;
input  [1:0] cartad_en_l;

// PIF interface
input pifrsp_pad;
output pifrsp_out;
input pifcmd_in;
output pifcmd_pad;
input pifclk_in;
output pifclk_pad;

// Audio interface
input auddata_in;
output auddata_pad;
input audclk_in;
output audclk_pad;
input audlrclk_in;
output audlrclk_pad;

// Video interface
input  [6:0] srgba_in;
output [6:0] srgba_pad;
input vsync_in;
output vsync_pad;
output vclk_out;
input vclk_in;
input vclk_en_l;
inout vclk_pad;


// syn_clk buffers
wire syn_clkbot, syn_clktop, synclk_out;
wire syn_clk0, syn_clk1;
syn_clk_buf syn_clk_bufbot0( .in0(synclk_in), .out0(syn_clkbot),
			     .in1(synclk_in), .out1(syn_clkbot),
			     .in2(synclk_in), .out2(syn_clkbot));
syn_clk_buf syn_clk_bufbot1( .in0(syn_clkbot), .out0(syn_clk0),
			     .in1(syn_clkbot), .out1(syn_clk0),
			     .in2(syn_clkbot), .out2());
syn_clk_buf syn_clk_buftop0( .in0(synclk_in), .out0(syn_clktop),
			     .in1(synclk_in), .out1(syn_clktop),
			     .in2(synclk_in), .out2(syn_clktop));
syn_clk_buf syn_clk_buftop1( .in0(syn_clktop), .out0(syn_clk1),
			     .in1(syn_clktop), .out1(syn_clk1),
			     .in2(syn_clktop), .out2(synclk_out));

// clock drivers
pc3cl3 IOpad014(.cp(clk), .cclk(syn_clk0), .e(1'b1), .clkpwr(VDD014), .clkgnd(VSS015));
pc3cl3 IOpad109(.cp(clk), .cclk(syn_clk1), .e(1'b1), .clkpwr(VDD109), .clkgnd(VSS110));
pc3cl3 IOpad031(.cp(gclk), .cclk(syn_clk0), .e(start_gclk), .clkpwr(VDD031), .clkgnd(VSS032));
pc3cl3 IOpad092(.cp(gclk), .cclk(syn_clk1), .e(start_gclk), .clkpwr(VDD092), .clkgnd(VSS093));


// general input pins
pc3d01 IOpad030 (.cin(reset_out), .pad(reset_pad));
pc3d01 IOpad002 (.cin(test_out), .pad(test_pad));

// general output pins
pc3o05 IOpad101 (.i(synclk_out), .pad(mclk_pad));

// SYSTEM CPU Interface pins

pc3d01 IOpad066 (.cin(pvalid_out), .pad(pvalid_pad));
pc3o04 IOpad116 (.i(evalid_in), .pad(evalid_pad));
pc3o04 IOpad062 (.i(eok_in), .pad(eok_pad));
pc3o04 IOpad082 (.i(int_in), .pad(int_pad));


pc3b05r IOpad068 (.pad(sysad_pad[0]), .cin(sysad_out[0]), .i(sysad_in[0]), .oen(sysad_en_l[0]));
pc3b05r IOpad069 (.pad(sysad_pad[1]), .cin(sysad_out[1]), .i(sysad_in[1]), .oen(sysad_en_l[0]));
pc3b05r IOpad070 (.pad(sysad_pad[2]), .cin(sysad_out[2]), .i(sysad_in[2]), .oen(sysad_en_l[0]));
pc3b05r IOpad073 (.pad(sysad_pad[3]), .cin(sysad_out[3]), .i(sysad_in[3]), .oen(sysad_en_l[0]));
pc3b05r IOpad074 (.pad(sysad_pad[4]), .cin(sysad_out[4]), .i(sysad_in[4]), .oen(sysad_en_l[0]));
pc3b05r IOpad075 (.pad(sysad_pad[5]), .cin(sysad_out[5]), .i(sysad_in[5]), .oen(sysad_en_l[0]));
pc3b05r IOpad076 (.pad(sysad_pad[6]), .cin(sysad_out[6]), .i(sysad_in[6]), .oen(sysad_en_l[0]));
pc3b05r IOpad077 (.pad(sysad_pad[7]), .cin(sysad_out[7]), .i(sysad_in[7]), .oen(sysad_en_l[0]));
pc3b05r IOpad078 (.pad(sysad_pad[8]), .cin(sysad_out[8]), .i(sysad_in[8]), .oen(sysad_en_l[1]));
pc3b05r IOpad081 (.pad(sysad_pad[9]), .cin(sysad_out[9]), .i(sysad_in[9]), .oen(sysad_en_l[1]));
pc3b05r IOpad085 (.pad(sysad_pad[10]), .cin(sysad_out[10]), .i(sysad_in[10]), .oen(sysad_en_l[1]));
pc3b05r IOpad086 (.pad(sysad_pad[11]), .cin(sysad_out[11]), .i(sysad_in[11]), .oen(sysad_en_l[1]));
pc3b05r IOpad089 (.pad(sysad_pad[12]), .cin(sysad_out[12]), .i(sysad_in[12]), .oen(sysad_en_l[1]));
pc3b05r IOpad090 (.pad(sysad_pad[13]), .cin(sysad_out[13]), .i(sysad_in[13]), .oen(sysad_en_l[1]));
pc3b05r IOpad091 (.pad(sysad_pad[14]), .cin(sysad_out[14]), .i(sysad_in[14]), .oen(sysad_en_l[1]));
pc3b05r IOpad094 (.pad(sysad_pad[15]), .cin(sysad_out[15]), .i(sysad_in[15]), .oen(sysad_en_l[1]));
pc3b05r IOpad095 (.pad(sysad_pad[16]), .cin(sysad_out[16]), .i(sysad_in[16]), .oen(sysad_en_l[2]));
pc3b05r IOpad096 (.pad(sysad_pad[17]), .cin(sysad_out[17]), .i(sysad_in[17]), .oen(sysad_en_l[2]));
pc3b05r IOpad097 (.pad(sysad_pad[18]), .cin(sysad_out[18]), .i(sysad_in[18]), .oen(sysad_en_l[2]));
pc3b05r IOpad098 (.pad(sysad_pad[19]), .cin(sysad_out[19]), .i(sysad_in[19]), .oen(sysad_en_l[2]));
pc3b05r IOpad104 (.pad(sysad_pad[20]), .cin(sysad_out[20]), .i(sysad_in[20]), .oen(sysad_en_l[2]));
pc3b05r IOpad105 (.pad(sysad_pad[21]), .cin(sysad_out[21]), .i(sysad_in[21]), .oen(sysad_en_l[2]));
pc3b05r IOpad106 (.pad(sysad_pad[22]), .cin(sysad_out[22]), .i(sysad_in[22]), .oen(sysad_en_l[2]));
pc3b05r IOpad107 (.pad(sysad_pad[23]), .cin(sysad_out[23]), .i(sysad_in[23]), .oen(sysad_en_l[2]));
pc3b05r IOpad108 (.pad(sysad_pad[24]), .cin(sysad_out[24]), .i(sysad_in[24]), .oen(sysad_en_l[3]));
pc3b05r IOpad121 (.pad(sysad_pad[25]), .cin(sysad_out[25]), .i(sysad_in[25]), .oen(sysad_en_l[3]));
pc3b05r IOpad122 (.pad(sysad_pad[26]), .cin(sysad_out[26]), .i(sysad_in[26]), .oen(sysad_en_l[3]));
pc3b05r IOpad123 (.pad(sysad_pad[27]), .cin(sysad_out[27]), .i(sysad_in[27]), .oen(sysad_en_l[3]));
pc3b05r IOpad124 (.pad(sysad_pad[28]), .cin(sysad_out[28]), .i(sysad_in[28]), .oen(sysad_en_l[3]));
pc3b05r IOpad061 (.pad(sysad_pad[29]), .cin(sysad_out[29]), .i(sysad_in[29]), .oen(sysad_en_l[3]));
pc3b05r IOpad065 (.pad(sysad_pad[30]), .cin(sysad_out[30]), .i(sysad_in[30]), .oen(sysad_en_l[3]));
pc3b05r IOpad067 (.pad(sysad_pad[31]), .cin(sysad_out[31]), .i(sysad_in[31]), .oen(sysad_en_l[3]));


pc3b05r IOpad120 (.pad(syscmd_pad[0]), .cin(syscmd_out[0]), .i(syscmd_in[0]), .oen(sysad_en_l[4]));
pc3b05r IOpad119 (.pad(syscmd_pad[1]), .cin(syscmd_out[1]), .i(syscmd_in[1]), .oen(sysad_en_l[4]));
pc3b05r IOpad115 (.pad(syscmd_pad[2]), .cin(syscmd_out[2]), .i(syscmd_in[2]), .oen(sysad_en_l[4]));
pc3b05r IOpad112 (.pad(syscmd_pad[3]), .cin(syscmd_out[3]), .i(syscmd_in[3]), .oen(sysad_en_l[4]));
pc3b05r IOpad111 (.pad(syscmd_pad[4]), .cin(syscmd_out[4]), .i(syscmd_in[4]), .oen(sysad_en_l[4]));


// ROM CARTRIDGE - MASS STORAGE Interface
pc3o04 IOpad045 (.pad(cartaleh_pad), .i(cartaleh_in));
pc3o04 IOpad049 (.pad(cartalel_pad), .i(cartalel_in));
pc3o04 IOpad046 (.pad(cartrd_pad), .i(cartrd_in));
pc3o04 IOpad050 (.pad(cartwr_pad), .i(cartwr_in));

pc3b05r IOpad059 (.pad(cartad_pad[0]), .cin(cartad_out[0]), .i(cartad_in[0]), .oen(cartad_en_l[0]));
pc3b05r IOpad057 (.pad(cartad_pad[1]), .cin(cartad_out[1]), .i(cartad_in[1]), .oen(cartad_en_l[0]));
pc3b05r IOpad053 (.pad(cartad_pad[2]), .cin(cartad_out[2]), .i(cartad_in[2]), .oen(cartad_en_l[0]));
pc3b05r IOpad051 (.pad(cartad_pad[3]), .cin(cartad_out[3]), .i(cartad_in[3]), .oen(cartad_en_l[0]));
pc3b05r IOpad043 (.pad(cartad_pad[4]), .cin(cartad_out[4]), .i(cartad_in[4]), .oen(cartad_en_l[0]));
pc3b05r IOpad039 (.pad(cartad_pad[5]), .cin(cartad_out[5]), .i(cartad_in[5]), .oen(cartad_en_l[0]));
pc3b05r IOpad037 (.pad(cartad_pad[6]), .cin(cartad_out[6]), .i(cartad_in[6]), .oen(cartad_en_l[0]));
pc3b05r IOpad033 (.pad(cartad_pad[7]), .cin(cartad_out[7]), .i(cartad_in[7]), .oen(cartad_en_l[0]));
pc3b05r IOpad034 (.pad(cartad_pad[8]), .cin(cartad_out[8]), .i(cartad_in[8]), .oen(cartad_en_l[1]));
pc3b05r IOpad038 (.pad(cartad_pad[9]), .cin(cartad_out[9]), .i(cartad_in[9]), .oen(cartad_en_l[1]));
pc3b05r IOpad042 (.pad(cartad_pad[10]), .cin(cartad_out[10]), .i(cartad_in[10]), .oen(cartad_en_l[1]));
pc3b05r IOpad044 (.pad(cartad_pad[11]), .cin(cartad_out[11]), .i(cartad_in[11]), .oen(cartad_en_l[1]));
pc3b05r IOpad052 (.pad(cartad_pad[12]), .cin(cartad_out[12]), .i(cartad_in[12]), .oen(cartad_en_l[1]));
pc3b05r IOpad056 (.pad(cartad_pad[13]), .cin(cartad_out[13]), .i(cartad_in[13]), .oen(cartad_en_l[1]));
pc3b05r IOpad058 (.pad(cartad_pad[14]), .cin(cartad_out[14]), .i(cartad_in[14]), .oen(cartad_en_l[1]));
pc3b05r IOpad060 (.pad(cartad_pad[15]), .cin(cartad_out[15]), .i(cartad_in[15]), .oen(cartad_en_l[1]));


// SERIAL INTERFACE CONTROLER Interface pins

pc3d01 IOpad003 (.cin(pifrsp_out), .pad(pifrsp_pad));
pc3o04 IOpad004 (.pad(pifcmd_pad), .i(pifcmd_in));
pc3o04 IOpad005 (.pad(pifclk_pad), .i(pifclk_in));


// AUDIO Interface pins

pc3o04 IOpad009 (.pad(auddata_pad), .i(auddata_in));
pc3o04 IOpad008 (.pad(audclk_pad), .i(audclk_in));
pc3o04 IOpad012 (.pad(audlrclk_pad), .i(audlrclk_in));


// VIDEO Interface pins

pc3o04 IOpad017 (.pad(srgba_pad[6]), .i(srgba_in[6]));
pc3o04 IOpad020 (.pad(srgba_pad[5]), .i(srgba_in[5]));
pc3o04 IOpad021 (.pad(srgba_pad[4]), .i(srgba_in[4]));
pc3o04 IOpad022 (.pad(srgba_pad[3]), .i(srgba_in[3]));
pc3o04 IOpad025 (.pad(srgba_pad[2]), .i(srgba_in[2]));
pc3o04 IOpad026 (.pad(srgba_pad[1]), .i(srgba_in[1]));
pc3o04 IOpad027 (.pad(srgba_pad[0]), .i(srgba_in[0]));
pc3o04 IOpad016 (.pad(vsync_pad), .i(vsync_in));
pc3b04r IOpad013 (.pad(vclk_pad), .cin(vclk_out), .i(vclk_in), .oen(vclk_en_l));


// VDD, VSS pads

pv0a  IOpad007 (.vss(VSS007));
pv0a  IOpad024 (.vss(VSS024));
pv0a  IOpad041 (.vss(VSS041));
pv0a  IOpad055 (.vss(VSS055));
pv0a  IOpad071 (.vss(VSS071));
pv0a  IOpad083 (.vss(VSS083));
pv0a  IOpad102 (.vss(VSS102));
pv0a  IOpad117 (.vss(VSS117));

pv0b  IOpad010 (.vss(VSS010));
pv0b  IOpad018 (.vss(VSS018));
pv0b  IOpad028 (.vss(VSS028));
pv0b  IOpad035 (.vss(VSS035));
pv0b  IOpad048 (.vss(VSS048));
pv0b  IOpad063 (.vss(VSS063));
pv0b  IOpad079 (.vss(VSS079));
pv0b  IOpad088 (.vss(VSS088));
pv0b  IOpad103 (.vss(VSS103));
pv0b  IOpad113 (.vss(VSS113));
pv0b  IOpad126 (.vss(VSS126));
pv0b  IOpad160 (.vss(VSS160));

pvda  IOpad006 (.vdd(VDD006));
pvda  IOpad023 (.vdd(VDD023));
pvda  IOpad040 (.vdd(VDD040));
pvda  IOpad054 (.vdd(VDD054));
pvda  IOpad072 (.vdd(VDD072));
pvda  IOpad084 (.vdd(VDD084));
pvda  IOpad100 (.vdd(VDD100));
pvda  IOpad118 (.vdd(VDD118));

pvdb  IOpad001 (.vdd(VDD001));
pvdb  IOpad011 (.vdd(VDD011));
pvdb  IOpad019 (.vdd(VDD019));
pvdb  IOpad029 (.vdd(VDD029));
pvdb  IOpad036 (.vdd(VDD036));
pvdb  IOpad047 (.vdd(VDD047));
pvdb  IOpad064 (.vdd(VDD064));
pvdb  IOpad080 (.vdd(VDD080));
pvdb  IOpad087 (.vdd(VDD087));
pvdb  IOpad099 (.vdd(VDD099));
pvdb  IOpad114 (.vdd(VDD114));
pvdb  IOpad125 (.vdd(VDD125));

endmodule