OpenCores
URL https://opencores.org/ocsvn/t6507lp/t6507lp/trunk

Subversion Repositories t6507lp

[/] [t6507lp/] [trunk/] [rtl/] [verilog/] [t6507lp_io.v] - Rev 259

Go to most recent revision | Compare with Previous | Blame | View Log

////////////////////////////////////////////////////////////////////////////
////									////
//// t6507 IP Core	 						////
////									////
//// This file is part of the t6507 project				////
//// http://www.opencores.org/cores/t2600/				////
////									////
//// Description							////
//// I/O wrapper for the 6507 processor			 		////
////									////
//// Author(s):								////
//// - Gabriel Oshiro Zardo, gabrieloshiro@gmail.com			////
//// - Samuel Nascimento Pagliarini (creep), snpagliarini@gmail.com	////
////									////
////////////////////////////////////////////////////////////////////////////
////									////
//// Copyright (C) 2001 Authors and OPENCORES.ORG			////
////									////
//// This source file may be used and distributed without		////
//// restriction provided that this copyright statement is not		////
//// removed from the file and that any derivative work contains	////
//// the original copyright notice and the associated disclaimer.	////
////									////
//// This source file is free software; you can redistribute it		////
//// and/or modify it under the terms of the GNU Lesser General		////
//// Public License as published by the Free Software Foundation;	////
//// either version 2.1 of the License, or (at your option) any		////
//// later version.							////
////									////
//// This source is distributed in the hope that it will be		////
//// useful, but WITHOUT ANY WARRANTY; without even the implied		////
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR		////
//// PURPOSE. See the GNU Lesser General Public License for more	////
//// details.								////
////									////
//// You should have received a copy of the GNU Lesser General		////
//// Public License along with this source; if not, download it		////
//// from http://www.opencores.org/lgpl.shtml				////
////									////
////////////////////////////////////////////////////////////////////////////
 
`include "timescale.v"
`include "stubs.v"
module t6507lp_io(clk, reset_n, scan_enable, data_in, rw_mem, data_out, address);
	parameter [3:0] DATA_SIZE = 4'd8;
	parameter [3:0] ADDR_SIZE = 4'd13;
 
	localparam [3:0] DATA_SIZE_ = DATA_SIZE - 4'b0001;
	localparam [3:0] ADDR_SIZE_ = ADDR_SIZE - 4'b0001;
 
	input clk;
	wire clkIO;
 
	input reset_n;
	wire reset_nIO;
 
	input scan_enable;
	wire scan_enableIO;
 
	input [DATA_SIZE_:0] data_in;
	reg [DATA_SIZE_:0] data_inIO;
 
	output rw_mem;
	wire rw_memIO;
 
	output [DATA_SIZE_:0] data_out;
	reg [DATA_SIZE_:0] data_outIO;
 
	output [ADDR_SIZE_:0] address;
	reg [ADDR_SIZE_:0] addressIO;
 
	wire pipo0, pipo1, pipo2, pipo3, pipo4, pipo5, pipo6, pipo7, pipo8, pipo9, pipo10, chainfinal;
 
	wire muxed;
 
	t6507lp t6507lp(  //core
		.clk		(clkIO),
		.reset_n	(reset_nIO),
		.data_in	(data_inIO),
		.rw_mem		(rw_memIO),
		.data_out	(data_outIO),
		.address	(addressIO)
	);
 
	wire vdd, gnd, dummy_clampc;
 
	ICP scan_pad(
		.PAD	(scan_enable), 
		.PI	(pipo10),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PO	(chain_final),
		.Y	(scan_enableIO)
	);
 
/*	ICP test_pad(
		.PAD	(pintest), 
		.PI	(1'b1),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PO	(pipo0),
		.Y	(pintestIO)
	);
*/
	ICP clk_pad(
		.PAD	(clk), 
		.PI	(pipo9),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PO	(pipo10),
		.Y	(clkIO)
	);
 
	ICP reset_n_pad(
		.PAD	(reset_n), 
		.PI	(pipo8),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PO	(pipo9),
		.Y	(reset_nIO)
	);
 
	ICP data_in_pad0(
		.PAD	(data_in[0]), 
		.PI	(pipo7),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PO	(pipo8),
		.Y	(data_inIO[0])
	);
 
	ICP data_in_pad1(
		.PAD	(data_in[1]), 
		.PI	(pipo6),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PO	(pipo7),
		.Y	(data_inIO[1])
	);
 
	ICP data_in_pad2(
		.PAD	(data_in[2]), 
		.PI	(pipo5),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PO	(pipo6),
		.Y	(data_inIO[2])
	);
 
	ICP data_in_pad3(
		.PAD	(data_in[3]), 
		.PI	(pipo4),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PO	(pipo5),
		.Y	(data_inIO[3])
	);
 
	ICP data_in_pad4(
		.PAD	(data_in[4]), 
		.PI	(pipo3),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PO	(pipo4),
		.Y	(data_inIO[4])
	);
 
	ICP data_in_pad5(
		.PAD	(data_in[5]), 
		.PI	(pipo2),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PO	(pipo3),
		.Y	(data_inIO[5])
	);
 
	ICP data_in_pad6(
		.PAD	(data_in[6]), 
		.PI	(pipo1),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PO	(pipo2),
		.Y	(data_inIO[6])
	);
 
	ICP data_in_pad7(
		.PAD	(data_in[7]), 
		.PI	(pipo0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PO	(pipo1),
		.Y	(data_inIO[7])
	);
 
	BT4P rw_mem_pad(
		.A	(muxed),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(rw_mem)
	);
 
	BT4P data_out_pad0(
		.A	(data_outIO[0]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(data_out[0])
	);
 
	BT4P data_out_pad1(
		.A	(data_outIO[1]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(data_out[1])
	);
 
	BT4P data_out_pad2(
		.A	(data_outIO[2]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(data_out[2])
	);
 
	BT4P data_out_pad3(
		.A	(data_outIO[3]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(data_out[3])
	);
 
	BT4P data_out_pad4(
		.A	(data_outIO[4]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(data_out[4])
	);
 
	BT4P data_out_pad5(
		.A	(data_outIO[5]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(data_out[5])
	);
 
	BT4P data_out_pad6(
		.A	(data_outIO[6]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(data_out[6])
	);
 
	BT4P data_out_pad7(
		.A	(data_outIO[7]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(data_out[7])
	);
 
	BT4P address_pad0(
		.A	(addressIO[0]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(address[0])
	);
 
	BT4P address_pad1(
		.A	(addressIO[1]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(address[1])
	);
	BT4P address_pad2(
		.A	(addressIO[2]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(address[2])
	);
	BT4P address_pad3(
		.A	(addressIO[3]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(address[3])
	);
	BT4P address_pad4(
		.A	(addressIO[4]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(address[4])
	);
	BT4P address_pad5(
		.A	(addressIO[5]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(address[5])
	);
	BT4P address_pad6(
		.A	(addressIO[6]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(address[6])
	);
	BT4P address_pad7(
		.A	(addressIO[7]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(address[7])
	);
	BT4P address_pad8(
		.A	(addressIO[8]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(address[8])
	);
	BT4P address_pad9(
		.A	(addressIO[9]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(address[9])
	);
	BT4P address_pad10(
		.A	(addressIO[10]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(address[10])
	);
	BT4P address_pad11(
		.A	(addressIO[11]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(address[11])
	);
 
	BT4P address_pad12(
		.A	(addressIO[12]),
		.EN	(1'b0),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.CLAMPC	(dummy_clampc),
		.PAD	(address[12])
	);
 
	CORNERCLMP left_up_pad (
		.CLAMPC	(dummy_clampc),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.GND5O	(gnd),
		.GND5R	(gnd)
	);
 
	CORNERCLMP left_down_pad (
		.CLAMPC	(dummy_clampc),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.GND5O	(gnd),
		.GND5R	(gnd)
	);
 
	CORNERCLMP right_up_pad (
		.CLAMPC	(dummy_clampc),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.GND5O	(gnd),
		.GND5R	(gnd)
	);
 
	CORNERCLMP right_down_pad (
		.CLAMPC	(dummy_clampc),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.GND5O	(gnd),
		.GND5R	(gnd)
	);
 
 	GND5ALLPADP gnd_pad_left (
		.CLAMPC	(dummy_clampc),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.GND	(gnd)
	);
 
	GND5ALLPADP gnd_pad_right (
		.CLAMPC	(dummy_clampc),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.GND	(gnd)
	);
 
	GND5ALLPADP gnd_pad_up (
		.CLAMPC	(dummy_clampc),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.GND	(gnd)
	);
 
	GND5ALLPADP gnd_pad_down (
		.CLAMPC	(dummy_clampc),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.GND	(gnd)
	);
 
	VDD5ALLPADP vdd_pad_left (
		.CLAMPC	(dummy_clampc),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD	(vdd)
	);
 
	VDD5ALLPADP vdd_pad_right (
		.CLAMPC	(dummy_clampc),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD	(vdd)
	);
 
	VDD5ALLPADP vdd_pad_up (
		.CLAMPC	(dummy_clampc),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD	(vdd)
	);
 
	VDD5ALLPADP vdd_pad_down (
		.CLAMPC	(dummy_clampc),
		.GND5O	(gnd),
		.GND5R	(gnd),
		.VDD	(vdd)
	);
 
	assign muxed = (reset_nIO == 1'b1) ? chainfinal : rw_memIO;
 
 
/*	FILLERP_110 filler0 (
		.CLAMPC	(dummy_clampc),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.GND5O	(gnd),
		.GND5R	(gnd)
	);
 
	FILLERP_110 filler1 (
		.CLAMPC	(dummy_clampc),
		.VDD5O	(vdd),
		.VDD5R	(vdd),
		.GND5O	(gnd),
		.GND5R	(gnd)
	);
*/
endmodule
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.