From 4ca3e92e5896b1b8fec43c73e14c9c7ec72a8324 Mon Sep 17 00:00:00 2001
From: the great greene arkleseizure <root@e6230.(none)>
Date: Thu, 10 Oct 2013 10:40:53 +0100
Subject: hardware

---
 hardware/.gitignore               |   2 +
 hardware/DM9000A/dm9000a_hw.tcl   | 141 +++++++++++++++++
 hardware/DM9000A/hdl/DM9000A_IF.v |  85 ++++++++++
 hardware/GPU/gpu_hw.tcl           | 138 ++++++++++++++++
 hardware/GPU/hdl/GPU_IF.v         | 219 +++++++++++++++++++++++++
 hardware/pll.v                    | 326 ++++++++++++++++++++++++++++++++++++++
 hardware/pong3.pin                | 274 ++++++++++++++++++++++++++++++++
 hardware/pong3.qpf                |  30 ++++
 hardware/pong3.qsf                | 151 ++++++++++++++++++
 hardware/pong3.v                  | 112 +++++++++++++
 10 files changed, 1478 insertions(+)
 create mode 100644 hardware/.gitignore
 create mode 100644 hardware/DM9000A/dm9000a_hw.tcl
 create mode 100644 hardware/DM9000A/hdl/DM9000A_IF.v
 create mode 100644 hardware/GPU/gpu_hw.tcl
 create mode 100644 hardware/GPU/hdl/GPU_IF.v
 create mode 100644 hardware/pll.v
 create mode 100644 hardware/pong3.pin
 create mode 100644 hardware/pong3.qpf
 create mode 100644 hardware/pong3.qsf
 create mode 100644 hardware/pong3.v

diff --git a/hardware/.gitignore b/hardware/.gitignore
new file mode 100644
index 0000000..7f7563f
--- /dev/null
+++ b/hardware/.gitignore
@@ -0,0 +1,2 @@
+db
+pong3.qws
diff --git a/hardware/DM9000A/dm9000a_hw.tcl b/hardware/DM9000A/dm9000a_hw.tcl
new file mode 100644
index 0000000..ea89ec5
--- /dev/null
+++ b/hardware/DM9000A/dm9000a_hw.tcl
@@ -0,0 +1,141 @@
+# TCL File Generated by Component Editor 12.0
+# Thu Sep 12 21:20:16 CST 2013
+# DO NOT MODIFY
+
+
+# 
+# dm9000a "dm9000a" v1.0
+# null 2013.09.12.21:20:16
+# 
+# 
+
+# 
+# request TCL package from ACDS 12.0
+# 
+package require -exact qsys 12.0
+
+
+# 
+# module dm9000a
+# 
+set_module_property NAME dm9000a
+set_module_property VERSION 1.0
+set_module_property INTERNAL false
+set_module_property OPAQUE_ADDRESS_MAP true
+set_module_property GROUP my_lib
+set_module_property DISPLAY_NAME dm9000a
+set_module_property INSTANTIATE_IN_SYSTEM_MODULE true
+set_module_property EDITABLE true
+set_module_property ANALYZE_HDL AUTO
+set_module_property REPORT_TO_TALKBACK false
+set_module_property ALLOW_GREYBOX_GENERATION false
+
+
+# 
+# file sets
+# 
+add_fileset QUARTUS_SYNTH QUARTUS_SYNTH "" ""
+set_fileset_property QUARTUS_SYNTH TOP_LEVEL DM9000A_IF
+set_fileset_property QUARTUS_SYNTH ENABLE_RELATIVE_INCLUDE_PATHS false
+add_fileset_file DM9000A_IF.v VERILOG PATH hdl/DM9000A_IF.v
+
+add_fileset SIM_VHDL SIM_VHDL "" ""
+set_fileset_property SIM_VHDL TOP_LEVEL DM9000A_IF
+set_fileset_property SIM_VHDL ENABLE_RELATIVE_INCLUDE_PATHS false
+add_fileset_file dm9000a_hw.tcl OTHER PATH dm9000a_hw.tcl
+
+
+# 
+# parameters
+# 
+
+
+# 
+# display items
+# 
+
+
+# 
+# connection point avalon_slave_0
+# 
+add_interface avalon_slave_0 avalon end
+set_interface_property avalon_slave_0 addressAlignment DYNAMIC
+set_interface_property avalon_slave_0 addressUnits WORDS
+set_interface_property avalon_slave_0 associatedClock clock_sink
+set_interface_property avalon_slave_0 associatedReset clock_sink_reset
+set_interface_property avalon_slave_0 burstOnBurstBoundariesOnly false
+set_interface_property avalon_slave_0 explicitAddressSpan 0
+set_interface_property avalon_slave_0 holdTime 1
+set_interface_property avalon_slave_0 isMemoryDevice false
+set_interface_property avalon_slave_0 isNonVolatileStorage false
+set_interface_property avalon_slave_0 linewrapBursts false
+set_interface_property avalon_slave_0 maximumPendingReadTransactions 0
+set_interface_property avalon_slave_0 printableDevice false
+set_interface_property avalon_slave_0 readLatency 0
+set_interface_property avalon_slave_0 readWaitStates 4
+set_interface_property avalon_slave_0 readWaitTime 4
+set_interface_property avalon_slave_0 setupTime 1
+set_interface_property avalon_slave_0 timingUnits Cycles
+set_interface_property avalon_slave_0 writeWaitStates 4
+set_interface_property avalon_slave_0 writeWaitTime 4
+set_interface_property avalon_slave_0 ENABLED true
+
+add_interface_port avalon_slave_0 iDATA writedata Input 32
+add_interface_port avalon_slave_0 iCMD address Input 1
+add_interface_port avalon_slave_0 iRD_N read_n Input 1
+add_interface_port avalon_slave_0 iWR_N write_n Input 1
+add_interface_port avalon_slave_0 iCS_N chipselect_n Input 1
+add_interface_port avalon_slave_0 oDATA readdata Output 32
+
+
+# 
+# connection point clock_sink
+# 
+add_interface clock_sink clock end
+set_interface_property clock_sink clockRate 0
+set_interface_property clock_sink ENABLED true
+
+add_interface_port clock_sink iCLK clk Input 1
+
+
+# 
+# connection point clock_sink_reset
+# 
+add_interface clock_sink_reset reset end
+set_interface_property clock_sink_reset associatedClock clock_sink
+set_interface_property clock_sink_reset synchronousEdges DEASSERT
+set_interface_property clock_sink_reset ENABLED true
+
+add_interface_port clock_sink_reset iRST_N reset_n Input 1
+
+
+# 
+# connection point conduit_end
+# 
+add_interface conduit_end conduit end
+set_interface_property conduit_end associatedClock ""
+set_interface_property conduit_end associatedReset ""
+set_interface_property conduit_end ENABLED true
+
+add_interface_port conduit_end iOSC_50 export Input 1
+add_interface_port conduit_end ENET_DATA export Bidir 16
+add_interface_port conduit_end ENET_CMD export Output 1
+add_interface_port conduit_end ENET_RD_N export Output 1
+add_interface_port conduit_end ENET_WR_N export Output 1
+add_interface_port conduit_end ENET_CS_N export Output 1
+add_interface_port conduit_end ENET_RST_N export Output 1
+add_interface_port conduit_end ENET_INT export Input 1
+add_interface_port conduit_end ENET_CLK export Output 1
+
+
+# 
+# connection point interrupt_sender
+# 
+add_interface interrupt_sender interrupt end
+set_interface_property interrupt_sender associatedAddressablePoint avalon_slave_0
+set_interface_property interrupt_sender associatedClock clock_sink
+set_interface_property interrupt_sender associatedReset clock_sink_reset
+set_interface_property interrupt_sender ENABLED true
+
+add_interface_port interrupt_sender oINT irq Output 1
+
diff --git a/hardware/DM9000A/hdl/DM9000A_IF.v b/hardware/DM9000A/hdl/DM9000A_IF.v
new file mode 100644
index 0000000..3fd22e0
--- /dev/null
+++ b/hardware/DM9000A/hdl/DM9000A_IF.v
@@ -0,0 +1,85 @@
+module DM9000A_IF(	//	HOST Side
+					iDATA,
+					oDATA,
+					iCMD,
+					iRD_N,
+					iWR_N,
+					iCS_N,
+					iRST_N,
+					iCLK,
+					iOSC_50,
+					oINT,
+					//	DM9000A Side
+					ENET_DATA,
+					ENET_CMD,
+					ENET_RD_N,
+					ENET_WR_N,
+					ENET_CS_N,
+					ENET_RST_N,
+					ENET_INT,
+					ENET_CLK	);
+//	HOST Side
+input	[31:0]	iDATA;
+input			iCMD;
+input			iRD_N;
+input			iWR_N;
+input			iCS_N;
+input			iRST_N;
+input			iCLK;
+input			iOSC_50;
+output	[31:0]	oDATA;
+output			oINT;
+//	DM9000A Side
+inout	[15:0]	ENET_DATA;
+output			ENET_CMD;
+output			ENET_RD_N;
+output			ENET_WR_N;
+output			ENET_CS_N;
+output			ENET_RST_N;
+output			ENET_CLK;
+input			ENET_INT;
+
+reg		[15:0]	TMP_DATA;
+reg				ENET_CMD;
+reg				ENET_RD_N;
+reg				ENET_WR_N;
+reg				ENET_CS_N;
+reg				ENET_CLK;
+reg		[31:0]	oDATA;
+reg				oINT;
+
+assign	ENET_DATA	=	ENET_WR_N	?	16'hzzzz	:	TMP_DATA;
+
+always@(posedge iCLK or negedge iRST_N)
+begin
+	if(!iRST_N)
+	begin
+		TMP_DATA 	<=	0;
+		ENET_CMD 	<=	0;
+		ENET_RD_N 	<=	1;
+		ENET_WR_N 	<=	1;
+		ENET_CS_N 	<=	1;
+		oDATA		<=	0;
+		oINT		<=	0;
+	end
+	else
+	begin
+		oDATA		<=	ENET_DATA;
+		oINT		<=	ENET_INT;
+		TMP_DATA 	<=	iDATA;
+		ENET_CMD 	<=	iCMD;
+		ENET_CS_N 	<=	iCS_N;
+		ENET_RD_N 	<=	iRD_N;
+		ENET_WR_N 	<=	iWR_N;
+	end
+end
+
+always@(posedge iOSC_50)
+ENET_CLK	<=	~ENET_CLK;
+
+assign	ENET_RST_N	=	iRST_N;
+
+endmodule
+
+
+
diff --git a/hardware/GPU/gpu_hw.tcl b/hardware/GPU/gpu_hw.tcl
new file mode 100644
index 0000000..5eae01e
--- /dev/null
+++ b/hardware/GPU/gpu_hw.tcl
@@ -0,0 +1,138 @@
+# TCL File Generated by Component Editor 13.0sp1
+# Wed Oct 09 17:56:27 BST 2013
+# DO NOT MODIFY
+
+
+# 
+# gpu "gpu" v1.0
+#  2013.10.09.17:56:27
+# 
+# 
+
+# 
+# request TCL package from ACDS 13.1
+# 
+package require -exact qsys 13.1
+
+
+# 
+# module gpu
+# 
+set_module_property DESCRIPTION ""
+set_module_property NAME gpu
+set_module_property VERSION 1.0
+set_module_property INTERNAL false
+set_module_property OPAQUE_ADDRESS_MAP true
+set_module_property GROUP my_lib
+set_module_property AUTHOR ""
+set_module_property DISPLAY_NAME gpu
+set_module_property INSTANTIATE_IN_SYSTEM_MODULE true
+set_module_property EDITABLE true
+set_module_property ANALYZE_HDL AUTO
+set_module_property REPORT_TO_TALKBACK false
+set_module_property ALLOW_GREYBOX_GENERATION false
+
+
+# 
+# file sets
+# 
+add_fileset QUARTUS_SYNTH QUARTUS_SYNTH "" ""
+set_fileset_property QUARTUS_SYNTH TOP_LEVEL gpuv2
+set_fileset_property QUARTUS_SYNTH ENABLE_RELATIVE_INCLUDE_PATHS false
+add_fileset_file GPU_IF.v VERILOG PATH hdl/GPU_IF.v
+
+add_fileset SIM_VHDL SIM_VHDL "" ""
+set_fileset_property SIM_VHDL TOP_LEVEL gpuv2
+set_fileset_property SIM_VHDL ENABLE_RELATIVE_INCLUDE_PATHS false
+add_fileset_file gpu_hw.tcl OTHER PATH gpu_hw.tcl
+
+
+# 
+# parameters
+# 
+
+
+# 
+# display items
+# 
+
+
+# 
+# connection point clock
+# 
+add_interface clock clock end
+set_interface_property clock clockRate 0
+set_interface_property clock ENABLED true
+set_interface_property clock EXPORT_OF ""
+set_interface_property clock PORT_NAME_MAP ""
+set_interface_property clock SVD_ADDRESS_GROUP ""
+
+add_interface_port clock clk clk Input 1
+
+
+# 
+# connection point reset
+# 
+add_interface reset reset end
+set_interface_property reset associatedClock clock
+set_interface_property reset synchronousEdges DEASSERT
+set_interface_property reset ENABLED true
+set_interface_property reset EXPORT_OF ""
+set_interface_property reset PORT_NAME_MAP ""
+set_interface_property reset SVD_ADDRESS_GROUP ""
+
+add_interface_port reset rst_n reset_n Input 1
+
+
+# 
+# connection point vga
+# 
+add_interface vga conduit end
+set_interface_property vga associatedClock ""
+set_interface_property vga associatedReset ""
+set_interface_property vga ENABLED true
+set_interface_property vga EXPORT_OF ""
+set_interface_property vga PORT_NAME_MAP ""
+set_interface_property vga SVD_ADDRESS_GROUP ""
+
+add_interface_port vga vga_red export Output 3
+add_interface_port vga vga_green export Output 3
+add_interface_port vga vga_blue export Output 3
+add_interface_port vga vga_hs export Output 1
+add_interface_port vga vga_vs export Output 1
+add_interface_port vga vga_clk export Input 1
+
+
+# 
+# connection point avalon_slave
+# 
+add_interface avalon_slave avalon end
+set_interface_property avalon_slave addressUnits WORDS
+set_interface_property avalon_slave associatedClock clock
+set_interface_property avalon_slave associatedReset reset
+set_interface_property avalon_slave bitsPerSymbol 8
+set_interface_property avalon_slave burstOnBurstBoundariesOnly false
+set_interface_property avalon_slave burstcountUnits WORDS
+set_interface_property avalon_slave explicitAddressSpan 0
+set_interface_property avalon_slave holdTime 0
+set_interface_property avalon_slave linewrapBursts false
+set_interface_property avalon_slave maximumPendingReadTransactions 0
+set_interface_property avalon_slave readLatency 0
+set_interface_property avalon_slave readWaitTime 1
+set_interface_property avalon_slave setupTime 0
+set_interface_property avalon_slave timingUnits Cycles
+set_interface_property avalon_slave writeWaitTime 0
+set_interface_property avalon_slave ENABLED true
+set_interface_property avalon_slave EXPORT_OF ""
+set_interface_property avalon_slave PORT_NAME_MAP ""
+set_interface_property avalon_slave SVD_ADDRESS_GROUP ""
+
+add_interface_port avalon_slave cs_n chipselect_n Input 1
+add_interface_port avalon_slave address address Input 7
+add_interface_port avalon_slave data writedata Input 32
+add_interface_port avalon_slave wr_n write_n Input 1
+set_interface_assignment avalon_slave embeddedsw.configuration.isFlash 0
+set_interface_assignment avalon_slave embeddedsw.configuration.isMemoryDevice 0
+set_interface_assignment avalon_slave embeddedsw.configuration.isNonVolatileStorage 0
+set_interface_assignment avalon_slave embeddedsw.configuration.isPrintableDevice 0
+
diff --git a/hardware/GPU/hdl/GPU_IF.v b/hardware/GPU/hdl/GPU_IF.v
new file mode 100644
index 0000000..f32de1e
--- /dev/null
+++ b/hardware/GPU/hdl/GPU_IF.v
@@ -0,0 +1,219 @@
+// gpuv2.v
+
+// This file was auto-generated as a prototype implementation of a module
+// created in component editor.  It ties off all outputs to ground and
+// ignores all inputs.  It needs to be edited to make it do something
+// useful.
+// 
+// This file will not be automatically regenerated.  You should check it in
+// to your version control system if you want to keep it.
+
+`timescale 1 ps / 1 ps
+module gpuv2 #(
+		parameter AUTO_CLOCK_CLOCK_RATE = "-1"
+	) (
+		input  wire       clk,       //        clock.clk
+		input  wire       rst_n,     //        reset.reset_n
+		input  wire       vga_clk,   //      vga_out.export
+		output reg [2:0] vga_red,    //             .export
+		output reg [2:0] vga_green,  //             .export
+		output reg [2:0] vga_blue,   //             .export
+		output reg        vga_hs,    //             .export
+		output reg        vga_vs,    //             .export
+		input  wire [31:0] data,     // avalon_slave.writedata
+		input  wire       wr_n,      //             .write_n
+		input  wire       cs_n,      //             .chipselect_n
+		input  wire [6:0] address    //             .address
+	);
+
+
+  reg [9:0] ball_x;
+  reg [8:0] ball_y;
+  reg [8:0] bat0_y;
+  reg [8:0] bat1_y;
+
+  reg [15:0] sprite[0:15];
+  
+  wire [4:0] reg_addr;
+ 
+  assign reg_addr = address[6:2];
+  
+  
+  reg [2:0] sprite_red;
+  reg [2:0] sprite_green;
+  reg [2:0] sprite_blue;
+  
+  always @(posedge clk or negedge rst_n)
+  begin
+	if (rst_n == 0) begin
+			ball_x <= 10'd127;
+			ball_y <= 10'd127;
+			bat0_y <= 10'd100;
+			bat1_y <= 10'd200;
+			
+			sprite[0]=16'b1111111111111111;
+			sprite[1]=16'b1000000000000001;
+			sprite[2]=16'b1000000000000001;
+			sprite[3]=16'b1000000000000001;
+			sprite[4]=16'b1000000000000001;
+			sprite[5]=16'b1000000000000001;
+			sprite[6]=16'b1000000000000001;
+			sprite[7]=16'b1000000000000001;
+			sprite[8]=16'b1000000000000001;
+			sprite[9]=16'b1000000000000001;
+			sprite[10]=16'b1000000000000001;
+			sprite[11]=16'b1000000000000001;
+			sprite[12]=16'b1000000000000001;
+			sprite[13]=16'b1000000000000001;
+			sprite[14]=16'b1000000000000001;
+			sprite[15]=16'b1111111111111111;
+			
+			sprite_red[2:0]=3'b111;
+			sprite_green[2:0]=3'b000;
+			sprite_blue[2:0]=3'b111;
+			
+	end else if (~cs_n && ~wr_n) begin
+		if (reg_addr[4]) begin
+			sprite[reg_addr[3:0]]<=data[15:0];
+		end else begin
+			case (reg_addr[2:0]) 
+				3'b000:
+					ball_x <= data[9:0];
+				3'b001:
+					ball_y <= data[8:0];
+				3'b010:
+					bat0_y <= data[8:0];
+				3'b011:
+					bat1_y <= data[8:0];
+				3'b100:
+					begin
+						sprite_red <= data[8:6];
+						sprite_green <= data[5:3];
+						sprite_blue <= data[2:0];
+					end
+			endcase
+		end
+	end
+  end
+
+
+  reg trig_25M;
+  always @ (posedge vga_clk)
+  begin
+    if(!rst_n)
+      trig_25M <= 1'b0;
+    else
+      trig_25M <= ~trig_25M;
+  end 
+  
+  reg [9:0] vector_x;
+  always @ (posedge vga_clk or negedge rst_n)
+  begin
+    if(!rst_n)
+      vector_x <= 10'd0;
+    else if(trig_25M)
+      begin
+        if(vector_x != 10'd799)
+          vector_x <= vector_x + 1'b1;
+        else
+          vector_x <= 10'd0;
+      end
+  end 
+  
+  reg [9:0] vector_y;
+  always @ (posedge vga_clk or negedge rst_n)
+  begin
+    if(!rst_n)
+      vector_y <= 10'd0;
+    else if(trig_25M)
+      begin
+        if(vector_x == 10'd799)
+          begin
+            if(vector_y != 10'd524)
+              vector_y <= vector_y + 1'b1;
+            else
+              vector_y <= 10'd0;
+          end
+      end
+  end
+  
+  always @ (posedge vga_clk or negedge rst_n)
+  begin
+    if(!rst_n)
+      vga_hs <= 1'b0;
+    else if(trig_25M)
+      begin
+        if(vector_x >= 10'd656 && vector_x < 10'd752)
+          vga_hs <= 1'b0;
+        else
+          vga_hs <= 1'b1;
+      end
+  end
+  
+  always @ (posedge vga_clk or negedge rst_n)
+  begin
+    if(!rst_n)
+      vga_vs <= 1'b0;
+    else if(trig_25M)
+      begin
+        if(vector_y >= 10'd490 && vector_y < 10'd492)
+          vga_vs <= 1'b0;
+        else
+          vga_vs <= 1'b1;
+      end
+  end
+  
+  
+  
+  reg [2:0] index;
+  always @ (posedge vga_clk or negedge rst_n)
+  begin
+    if(!rst_n)
+      index <= 3'b000;
+    else if(trig_25M)
+      begin
+        if(vector_x < 10'd640 && vector_y < 10'd480) 
+		  if(vector_x >= (ball_x - 8 )&& vector_x <=( ball_x + 7 )
+				&& vector_y >= (ball_y - 8) && vector_y <= (ball_y + 7)) begin 
+				if (sprite[(vector_y - (ball_y - 8)) & 15 ][(vector_x - (ball_x -8))& 15 ])
+					index <= 3'b001;
+				else
+					index <= 3'b000;
+		  end else if (vector_x  < 10'd4) 
+				if (vector_y >=( bat0_y - 20 ) && vector_y <= (bat0_y + 20) )
+					index <= 3'b111;
+				else
+					index <= 3'b000;
+		  else if (vector_x >= 10'd318 && vector_x < 10'd322)
+			  index <= {3{vector_y[3]}};
+		  else if (vector_x >= 10'd636 && vector_x < 10'd640)
+				if (vector_y >=( bat1_y - 20 ) && vector_y <= (bat1_y + 20) )
+					index <= 3'b111;
+				else
+					index <= 3'b000;
+		  else
+          		index <= 3'b000;
+	else
+          index <= 3'b000;
+     end
+  end
+  
+  always begin
+	if (index == 3'b000) begin
+		vga_red = 3'b000;
+		vga_green = 3'b000;
+		vga_blue = 3'b000;
+	end else if (index == 3'b001) begin
+		vga_red = sprite_red;
+		vga_green= sprite_green;
+		vga_blue = sprite_blue;
+	end else begin
+		vga_red= 3'b111;
+		vga_green=3'b111;
+		vga_blue=3'b111;
+	end
+		
+  
+  end
+  
+endmodule
diff --git a/hardware/pll.v b/hardware/pll.v
new file mode 100644
index 0000000..7dc9ba3
--- /dev/null
+++ b/hardware/pll.v
@@ -0,0 +1,326 @@
+// megafunction wizard: %ALTPLL%
+// GENERATION: STANDARD
+// VERSION: WM1.0
+// MODULE: altpll 
+
+// ============================================================
+// File Name: pll.v
+// Megafunction Name(s):
+// 			altpll
+//
+// Simulation Library Files(s):
+// 			altera_mf
+// ============================================================
+// ************************************************************
+// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
+//
+// 12.0 Build 178 05/31/2012 SJ Web Edition
+// ************************************************************
+
+
+//Copyright (C) 1991-2012 Altera Corporation
+//Your use of Altera Corporation's design tools, logic functions 
+//and other software and tools, and its AMPP partner logic 
+//functions, and any output files from any of the foregoing 
+//(including device programming or simulation files), and any 
+//associated documentation or information are expressly subject 
+//to the terms and conditions of the Altera Program License 
+//Subscription Agreement, Altera MegaCore Function License 
+//Agreement, or other applicable license agreement, including, 
+//without limitation, that your use is for the sole purpose of 
+//programming logic devices manufactured by Altera and sold by 
+//Altera or its authorized distributors.  Please refer to the 
+//applicable agreement for further details.
+
+
+// synopsys translate_off
+`timescale 1 ps / 1 ps
+// synopsys translate_on
+module pll (
+	inclk0,
+	c0,
+	c1);
+
+	input	  inclk0;
+	output	  c0;
+	output	  c1;
+
+	wire [5:0] sub_wire0;
+	wire [0:0] sub_wire5 = 1'h0;
+	wire [1:1] sub_wire2 = sub_wire0[1:1];
+	wire [0:0] sub_wire1 = sub_wire0[0:0];
+	wire  c0 = sub_wire1;
+	wire  c1 = sub_wire2;
+	wire  sub_wire3 = inclk0;
+	wire [1:0] sub_wire4 = {sub_wire5, sub_wire3};
+
+	altpll	altpll_component (
+				.inclk (sub_wire4),
+				.clk (sub_wire0),
+				.activeclock (),
+				.areset (1'b0),
+				.clkbad (),
+				.clkena ({6{1'b1}}),
+				.clkloss (),
+				.clkswitch (1'b0),
+				.configupdate (1'b0),
+				.enable0 (),
+				.enable1 (),
+				.extclk (),
+				.extclkena ({4{1'b1}}),
+				.fbin (1'b1),
+				.fbmimicbidir (),
+				.fbout (),
+				.fref (),
+				.icdrclk (),
+				.locked (),
+				.pfdena (1'b1),
+				.phasecounterselect ({4{1'b1}}),
+				.phasedone (),
+				.phasestep (1'b1),
+				.phaseupdown (1'b1),
+				.pllena (1'b1),
+				.scanaclr (1'b0),
+				.scanclk (1'b0),
+				.scanclkena (1'b1),
+				.scandata (1'b0),
+				.scandataout (),
+				.scandone (),
+				.scanread (1'b0),
+				.scanwrite (1'b0),
+				.sclkout0 (),
+				.sclkout1 (),
+				.vcooverrange (),
+				.vcounderrange ());
+	defparam
+		altpll_component.clk0_divide_by = 5,
+		altpll_component.clk0_duty_cycle = 50,
+		altpll_component.clk0_multiply_by = 8,
+		altpll_component.clk0_phase_shift = "0",
+		altpll_component.clk1_divide_by = 5,
+		altpll_component.clk1_duty_cycle = 50,
+		altpll_component.clk1_multiply_by = 8,
+		altpll_component.clk1_phase_shift = "-3000",
+		altpll_component.compensate_clock = "CLK0",
+		altpll_component.inclk0_input_frequency = 20000,
+		altpll_component.intended_device_family = "Cyclone II",
+		altpll_component.lpm_hint = "CBX_MODULE_PREFIX=pll",
+		altpll_component.lpm_type = "altpll",
+		altpll_component.operation_mode = "NORMAL",
+		altpll_component.port_activeclock = "PORT_UNUSED",
+		altpll_component.port_areset = "PORT_UNUSED",
+		altpll_component.port_clkbad0 = "PORT_UNUSED",
+		altpll_component.port_clkbad1 = "PORT_UNUSED",
+		altpll_component.port_clkloss = "PORT_UNUSED",
+		altpll_component.port_clkswitch = "PORT_UNUSED",
+		altpll_component.port_configupdate = "PORT_UNUSED",
+		altpll_component.port_fbin = "PORT_UNUSED",
+		altpll_component.port_inclk0 = "PORT_USED",
+		altpll_component.port_inclk1 = "PORT_UNUSED",
+		altpll_component.port_locked = "PORT_UNUSED",
+		altpll_component.port_pfdena = "PORT_UNUSED",
+		altpll_component.port_phasecounterselect = "PORT_UNUSED",
+		altpll_component.port_phasedone = "PORT_UNUSED",
+		altpll_component.port_phasestep = "PORT_UNUSED",
+		altpll_component.port_phaseupdown = "PORT_UNUSED",
+		altpll_component.port_pllena = "PORT_UNUSED",
+		altpll_component.port_scanaclr = "PORT_UNUSED",
+		altpll_component.port_scanclk = "PORT_UNUSED",
+		altpll_component.port_scanclkena = "PORT_UNUSED",
+		altpll_component.port_scandata = "PORT_UNUSED",
+		altpll_component.port_scandataout = "PORT_UNUSED",
+		altpll_component.port_scandone = "PORT_UNUSED",
+		altpll_component.port_scanread = "PORT_UNUSED",
+		altpll_component.port_scanwrite = "PORT_UNUSED",
+		altpll_component.port_clk0 = "PORT_USED",
+		altpll_component.port_clk1 = "PORT_USED",
+		altpll_component.port_clk2 = "PORT_UNUSED",
+		altpll_component.port_clk3 = "PORT_UNUSED",
+		altpll_component.port_clk4 = "PORT_UNUSED",
+		altpll_component.port_clk5 = "PORT_UNUSED",
+		altpll_component.port_clkena0 = "PORT_UNUSED",
+		altpll_component.port_clkena1 = "PORT_UNUSED",
+		altpll_component.port_clkena2 = "PORT_UNUSED",
+		altpll_component.port_clkena3 = "PORT_UNUSED",
+		altpll_component.port_clkena4 = "PORT_UNUSED",
+		altpll_component.port_clkena5 = "PORT_UNUSED",
+		altpll_component.port_extclk0 = "PORT_UNUSED",
+		altpll_component.port_extclk1 = "PORT_UNUSED",
+		altpll_component.port_extclk2 = "PORT_UNUSED",
+		altpll_component.port_extclk3 = "PORT_UNUSED";
+
+
+endmodule
+
+// ============================================================
+// CNX file retrieval info
+// ============================================================
+// Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0"
+// Retrieval info: PRIVATE: BANDWIDTH STRING "1.000"
+// Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "0"
+// Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz"
+// Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low"
+// Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1"
+// Retrieval info: PRIVATE: BANDWIDTH_USE_CUSTOM STRING "0"
+// Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0"
+// Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0"
+// Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0"
+// Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "1"
+// Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0"
+// Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0"
+// Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0"
+// Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0"
+// Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0"
+// Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8"
+// Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "1"
+// Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "1"
+// Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000"
+// Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000"
+// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "80.000000"
+// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "80.000000"
+// Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0"
+// Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0"
+// Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1"
+// Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "1"
+// Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0"
+// Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575"
+// Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1"
+// Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "50.000"
+// Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz"
+// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000"
+// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1"
+// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1"
+// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz"
+// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II"
+// Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1"
+// Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "0"
+// Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1"
+// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available"
+// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0"
+// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg"
+// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg"
+// Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any"
+// Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0"
+// Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0"
+// Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "1"
+// Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "1"
+// Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1"
+// Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "80.00000000"
+// Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "80.00000000"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "1"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz"
+// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz"
+// Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "0"
+// Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0"
+// Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000"
+// Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "-3.00000000"
+// Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0"
+// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg"
+// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "ns"
+// Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0"
+// Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0"
+// Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1"
+// Retrieval info: PRIVATE: PLL_ENA_CHECK STRING "0"
+// Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0"
+// Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0"
+// Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0"
+// Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0"
+// Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0"
+// Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0"
+// Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0"
+// Retrieval info: PRIVATE: RECONFIG_FILE STRING "pll.mif"
+// Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0"
+// Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "0"
+// Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0"
+// Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0"
+// Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0"
+// Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000"
+// Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz"
+// Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500"
+// Retrieval info: PRIVATE: SPREAD_USE STRING "0"
+// Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0"
+// Retrieval info: PRIVATE: STICKY_CLK0 STRING "1"
+// Retrieval info: PRIVATE: STICKY_CLK1 STRING "1"
+// Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1"
+// Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1"
+// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
+// Retrieval info: PRIVATE: USE_CLK0 STRING "1"
+// Retrieval info: PRIVATE: USE_CLK1 STRING "1"
+// Retrieval info: PRIVATE: USE_CLKENA0 STRING "0"
+// Retrieval info: PRIVATE: USE_CLKENA1 STRING "0"
+// Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0"
+// Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0"
+// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
+// Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "5"
+// Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50"
+// Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "8"
+// Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0"
+// Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "5"
+// Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50"
+// Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "8"
+// Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "-3000"
+// Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0"
+// Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "20000"
+// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II"
+// Retrieval info: CONSTANT: LPM_TYPE STRING "altpll"
+// Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL"
+// Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED"
+// Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED"
+// Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED"
+// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED"
+// Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED"
+// Retrieval info: USED_PORT: @clk 0 0 6 0 OUTPUT_CLK_EXT VCC "@clk[5..0]"
+// Retrieval info: USED_PORT: @extclk 0 0 4 0 OUTPUT_CLK_EXT VCC "@extclk[3..0]"
+// Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0"
+// Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1"
+// Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0"
+// Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0
+// Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0
+// Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0
+// Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll.v TRUE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll.ppf TRUE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll.inc FALSE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll.cmp FALSE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll.bsf FALSE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll_inst.v FALSE
+// Retrieval info: GEN_FILE: TYPE_NORMAL pll_bb.v FALSE
+// Retrieval info: LIB_FILE: altera_mf
+// Retrieval info: CBX_MODULE_PREFIX: ON
diff --git a/hardware/pong3.pin b/hardware/pong3.pin
new file mode 100644
index 0000000..163704a
--- /dev/null
+++ b/hardware/pong3.pin
@@ -0,0 +1,274 @@
+ -- Copyright (C) 1991-2013 Altera Corporation
+ -- Your use of Altera Corporation's design tools, logic functions 
+ -- and other software and tools, and its AMPP partner logic 
+ -- functions, and any output files from any of the foregoing 
+ -- (including device programming or simulation files), and any 
+ -- associated documentation or information are expressly subject 
+ -- to the terms and conditions of the Altera Program License 
+ -- Subscription Agreement, Altera MegaCore Function License 
+ -- Agreement, or other applicable license agreement, including, 
+ -- without limitation, that your use is for the sole purpose of 
+ -- programming logic devices manufactured by Altera and sold by 
+ -- Altera or its authorized distributors.  Please refer to the 
+ -- applicable agreement for further details.
+ -- 
+ -- This is a Quartus II output file. It is for reporting purposes only, and is
+ -- not intended for use as a Quartus II input file. This file cannot be used
+ -- to make Quartus II pin assignments - for instructions on how to make pin
+ -- assignments, please see Quartus II help.
+ ---------------------------------------------------------------------------------
+
+
+
+ ---------------------------------------------------------------------------------
+ -- NC            : No Connect. This pin has no internal connection to the device.
+ -- DNU           : Do Not Use. This pin MUST NOT be connected.
+ -- VCCINT        : Dedicated power pin, which MUST be connected to VCC  (1.2V).
+ -- VCCIO         : Dedicated power pin, which MUST be connected to VCC
+ --                 of its bank.
+ --					Bank 1:		3.3V
+ --					Bank 2:		3.3V
+ --					Bank 3:		3.3V
+ --					Bank 4:		3.3V
+ -- GND           : Dedicated ground pin. Dedicated GND pins MUST be connected to GND.
+ --					It can also be used to report unused dedicated pins. The connection
+ --					on the board for unused dedicated pins depends on whether this will
+ --					be used in a future design. One example is device migration. When
+ --					using device migration, refer to the device pin-tables. If it is a
+ --					GND pin in the pin table or if it will not be used in a future design
+ --					for another purpose the it MUST be connected to GND. If it is an unused
+ --					dedicated pin, then it can be connected to a valid signal on the board
+ --					(low, high, or toggling) if that signal is required for a different
+ --					revision of the design.
+ -- GND+          : Unused input pin. It can also be used to report unused dual-purpose pins.
+ --					This pin should be connected to GND. It may also be connected  to a
+ --					valid signal  on the board  (low, high, or toggling)  if that signal
+ --					is required for a different revision of the design.
+ -- GND*          : Unused  I/O  pin. Connect each pin marked GND* directly to GND
+ --           	    or leave it unconnected.
+ -- RESERVED      : Unused I/O pin, which MUST be left unconnected.
+ -- RESERVED_INPUT    : Pin is tri-stated and should be connected to the board.
+ -- RESERVED_INPUT_WITH_WEAK_PULLUP    : Pin is tri-stated with internal weak pull-up resistor.
+ -- RESERVED_INPUT_WITH_BUS_HOLD       : Pin is tri-stated with bus-hold circuitry.
+ -- RESERVED_OUTPUT_DRIVEN_HIGH        : Pin is output driven high.
+ ---------------------------------------------------------------------------------
+
+
+
+ ---------------------------------------------------------------------------------
+ -- Pin directions (input, output or bidir) are based on device operating in user mode.
+ ---------------------------------------------------------------------------------
+
+Quartus II 32-bit Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition
+CHIP  "dm9000a_nios"  ASSIGNED TO AN: EP2C8Q208C8
+
+Pin Name/Usage               : Location  : Dir.   : I/O Standard      : Voltage : I/O Bank  : User Assignment
+-------------------------------------------------------------------------------------------------------------
+~ASDO~ / RESERVED_INPUT      : 1         : input  : 3.3-V LVTTL       :         : 1         : N              
+~nCSO~ / RESERVED_INPUT      : 2         : input  : 3.3-V LVTTL       :         : 1         : N              
+GND*                         : 3         :        :                   :         : 1         :                
+GND*                         : 4         :        :                   :         : 1         :                
+GND*                         : 5         :        :                   :         : 1         :                
+GND*                         : 6         :        :                   :         : 1         :                
+VCCIO1                       : 7         : power  :                   : 3.3V    : 1         :                
+GND*                         : 8         :        :                   :         : 1         :                
+GND                          : 9         : gnd    :                   :         :           :                
+GND*                         : 10        :        :                   :         : 1         :                
+GND*                         : 11        :        :                   :         : 1         :                
+GND*                         : 12        :        :                   :         : 1         :                
+GND*                         : 13        :        :                   :         : 1         :                
+seven_seg[7]                 : 14        : output : 3.3-V LVTTL       :         : 1         : N              
+GND*                         : 15        :        :                   :         : 1         :                
+altera_reserved_tdo          : 16        : output : 3.3-V LVTTL       :         : 1         : N              
+altera_reserved_tms          : 17        : input  : 3.3-V LVTTL       :         : 1         : N              
+altera_reserved_tck          : 18        : input  : 3.3-V LVTTL       :         : 1         : N              
+altera_reserved_tdi          : 19        : input  : 3.3-V LVTTL       :         : 1         : N              
+DATA0                        : 20        : input  :                   :         : 1         :                
+DCLK                         : 21        :        :                   :         : 1         :                
+nCE                          : 22        :        :                   :         : 1         :                
+clk                          : 23        : input  : 3.3-V LVTTL       :         : 1         : Y              
+GND+                         : 24        :        :                   :         : 1         :                
+GND                          : 25        : gnd    :                   :         :           :                
+nCONFIG                      : 26        :        :                   :         : 1         :                
+rst_n                        : 27        : input  : 3.3-V LVTTL       :         : 1         : Y              
+GND+                         : 28        :        :                   :         : 1         :                
+VCCIO1                       : 29        : power  :                   : 3.3V    : 1         :                
+seven_seg[2]                 : 30        : output : 3.3-V LVTTL       :         : 1         : N              
+GND*                         : 31        :        :                   :         : 1         :                
+VCCINT                       : 32        : power  :                   : 1.2V    :           :                
+GND*                         : 33        :        :                   :         : 1         :                
+GND*                         : 34        :        :                   :         : 1         :                
+GND*                         : 35        :        :                   :         : 1         :                
+GND                          : 36        : gnd    :                   :         :           :                
+GND*                         : 37        :        :                   :         : 1         :                
+GND                          : 38        : gnd    :                   :         :           :                
+GND*                         : 39        :        :                   :         : 1         :                
+GND*                         : 40        :        :                   :         : 1         :                
+GND*                         : 41        :        :                   :         : 1         :                
+VCCIO1                       : 42        : power  :                   : 3.3V    : 1         :                
+seven_seg[0]                 : 43        : output : 3.3-V LVTTL       :         : 1         : N              
+GND*                         : 44        :        :                   :         : 1         :                
+sdram_cs_n                   : 45        : output : 3.3-V LVTTL       :         : 1         : Y              
+sdram_cke                    : 46        : output : 3.3-V LVTTL       :         : 1         : Y              
+sdram_clk                    : 47        : output : 3.3-V LVTTL       :         : 1         : Y              
+GND*                         : 48        :        :                   :         : 1         :                
+GND                          : 49        : gnd    :                   :         :           :                
+GND_PLL1                     : 50        : gnd    :                   :         :           :                
+VCCD_PLL1                    : 51        : power  :                   : 1.2V    :           :                
+GND_PLL1                     : 52        : gnd    :                   :         :           :                
+VCCA_PLL1                    : 53        : power  :                   : 1.2V    :           :                
+GNDA_PLL1                    : 54        : gnd    :                   :         :           :                
+GND                          : 55        : gnd    :                   :         :           :                
+sdram_dqm[0]                 : 56        : output : 3.3-V LVTTL       :         : 4         : Y              
+sdram_dq[7]                  : 57        : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+sdram_dq[6]                  : 58        : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+sdram_dq[5]                  : 59        : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+sdram_dq[4]                  : 60        : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+sdram_dq[3]                  : 61        : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+VCCIO4                       : 62        : power  :                   : 3.3V    : 4         :                
+sdram_dq[2]                  : 63        : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+sdram_dq[1]                  : 64        : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+GND                          : 65        : gnd    :                   :         :           :                
+VCCINT                       : 66        : power  :                   : 1.2V    :           :                
+sdram_dq[0]                  : 67        : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+sdram_we_n                   : 68        : output : 3.3-V LVTTL       :         : 4         : Y              
+sdram_cas_n                  : 69        : output : 3.3-V LVTTL       :         : 4         : Y              
+sdram_ras_n                  : 70        : output : 3.3-V LVTTL       :         : 4         : Y              
+VCCIO4                       : 71        : power  :                   : 3.3V    : 4         :                
+sdram_ba[0]                  : 72        : output : 3.3-V LVTTL       :         : 4         : Y              
+GND                          : 73        : gnd    :                   :         :           :                
+sdram_ba[1]                  : 74        : output : 3.3-V LVTTL       :         : 4         : Y              
+sdram_addr[10]               : 75        : output : 3.3-V LVTTL       :         : 4         : Y              
+sdram_addr[0]                : 76        : output : 3.3-V LVTTL       :         : 4         : Y              
+sdram_addr[1]                : 77        : output : 3.3-V LVTTL       :         : 4         : Y              
+GND                          : 78        : gnd    :                   :         :           :                
+VCCINT                       : 79        : power  :                   : 1.2V    :           :                
+sdram_addr[2]                : 80        : output : 3.3-V LVTTL       :         : 4         : Y              
+sdram_addr[3]                : 81        : output : 3.3-V LVTTL       :         : 4         : Y              
+sdram_addr[4]                : 82        : output : 3.3-V LVTTL       :         : 4         : Y              
+VCCIO4                       : 83        : power  :                   : 3.3V    : 4         :                
+sdram_addr[5]                : 84        : output : 3.3-V LVTTL       :         : 4         : Y              
+GND                          : 85        : gnd    :                   :         :           :                
+sdram_addr[6]                : 86        : output : 3.3-V LVTTL       :         : 4         : Y              
+sdram_addr[7]                : 87        : output : 3.3-V LVTTL       :         : 4         : Y              
+sdram_addr[8]                : 88        : output : 3.3-V LVTTL       :         : 4         : Y              
+sdram_addr[9]                : 89        : output : 3.3-V LVTTL       :         : 4         : Y              
+sdram_addr[11]               : 90        : output : 3.3-V LVTTL       :         : 4         : Y              
+VCCIO4                       : 91        : power  :                   : 3.3V    : 4         :                
+sdram_addr[12]               : 92        : output : 3.3-V LVTTL       :         : 4         : Y              
+GND                          : 93        : gnd    :                   :         :           :                
+sdram_dq[15]                 : 94        : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+sdram_dq[14]                 : 95        : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+sdram_dq[13]                 : 96        : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+sdram_dq[12]                 : 97        : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+VCCIO4                       : 98        : power  :                   : 3.3V    : 4         :                
+sdram_dq[11]                 : 99        : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+GND                          : 100       : gnd    :                   :         :           :                
+sdram_dq[10]                 : 101       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+sdram_dq[9]                  : 102       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+sdram_dq[8]                  : 103       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
+sdram_dqm[1]                 : 104       : output : 3.3-V LVTTL       :         : 4         : Y              
+GND*                         : 105       :        :                   :         : 3         :                
+GND*                         : 106       :        :                   :         : 3         :                
+GND*                         : 107       :        :                   :         : 3         :                
+vga_red[0]                   : 108       : output : 3.3-V LVTTL       :         : 3         : Y              
+VCCIO3                       : 109       : power  :                   : 3.3V    : 3         :                
+GND*                         : 110       :        :                   :         : 3         :                
+GND                          : 111       : gnd    :                   :         :           :                
+vga_red[2]                   : 112       : output : 3.3-V LVTTL       :         : 3         : Y              
+vga_red[1]                   : 113       : output : 3.3-V LVTTL       :         : 3         : Y              
+vga_green[1]                 : 114       : output : 3.3-V LVTTL       :         : 3         : Y              
+vga_green[0]                 : 115       : output : 3.3-V LVTTL       :         : 3         : Y              
+vga_blue[0]                  : 116       : output : 3.3-V LVTTL       :         : 3         : Y              
+vga_green[2]                 : 117       : output : 3.3-V LVTTL       :         : 3         : Y              
+vga_blue[2]                  : 118       : output : 3.3-V LVTTL       :         : 3         : Y              
+GND                          : 119       : gnd    :                   :         :           :                
+VCCINT                       : 120       : power  :                   : 1.2V    :           :                
+nSTATUS                      : 121       :        :                   :         : 3         :                
+VCCIO3                       : 122       : power  :                   : 3.3V    : 3         :                
+CONF_DONE                    : 123       :        :                   :         : 3         :                
+GND                          : 124       : gnd    :                   :         :           :                
+MSEL1                        : 125       :        :                   :         : 3         :                
+MSEL0                        : 126       :        :                   :         : 3         :                
+vga_blue[1]                  : 127       : output : 3.3-V LVTTL       :         : 3         : Y              
+vga_hs                       : 128       : output : 3.3-V LVTTL       :         : 3         : Y              
+GND+                         : 129       :        :                   :         : 3         :                
+GND+                         : 130       :        :                   :         : 3         :                
+GND+                         : 131       :        :                   :         : 3         :                
+GND+                         : 132       :        :                   :         : 3         :                
+vga_vs                       : 133       : output : 3.3-V LVTTL       :         : 3         : Y              
+dm9000_data[6]               : 134       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+dm9000_data[7]               : 135       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+VCCIO3                       : 136       : power  :                   : 3.3V    : 3         :                
+dm9000_data[4]               : 137       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+dm9000_data[5]               : 138       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+dm9000_data[2]               : 139       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+GND                          : 140       : gnd    :                   :         :           :                
+dm9000_data[3]               : 141       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+dm9000_data[0]               : 142       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+dm9000_data[1]               : 143       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+dm9000_data[15]              : 144       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+dm9000_data[14]              : 145       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+dm9000_data[13]              : 146       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+dm9000_data[12]              : 147       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+VCCIO3                       : 148       : power  :                   : 3.3V    : 3         :                
+dm9000_data[11]              : 149       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+dm9000_data[10]              : 150       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+dm9000_data[9]               : 151       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+dm9000_data[8]               : 152       : bidir  : 3.3-V LVTTL       :         : 3         : Y              
+GND                          : 153       : gnd    :                   :         :           :                
+GND_PLL2                     : 154       : gnd    :                   :         :           :                
+VCCD_PLL2                    : 155       : power  :                   : 1.2V    :           :                
+GND_PLL2                     : 156       : gnd    :                   :         :           :                
+VCCA_PLL2                    : 157       : power  :                   : 1.2V    :           :                
+GNDA_PLL2                    : 158       : gnd    :                   :         :           :                
+GND                          : 159       : gnd    :                   :         :           :                
+dm9000_cmd                   : 160       : output : 3.3-V LVTTL       :         : 2         : Y              
+dm9000_int                   : 161       : input  : 3.3-V LVTTL       :         : 2         : Y              
+dm9000_rd_n                  : 162       : output : 3.3-V LVTTL       :         : 2         : Y              
+dm9000_wr_n                  : 163       : output : 3.3-V LVTTL       :         : 2         : Y              
+dm9000_rst_n                 : 164       : output : 3.3-V LVTTL       :         : 2         : Y              
+dm9000_cs_n                  : 165       : output : 3.3-V LVTTL       :         : 2         : Y              
+VCCIO2                       : 166       : power  :                   : 3.3V    : 2         :                
+GND                          : 167       : gnd    :                   :         :           :                
+GND*                         : 168       :        :                   :         : 2         :                
+GND*                         : 169       :        :                   :         : 2         :                
+GND*                         : 170       :        :                   :         : 2         :                
+GND*                         : 171       :        :                   :         : 2         :                
+VCCIO2                       : 172       : power  :                   : 3.3V    : 2         :                
+GND*                         : 173       :        :                   :         : 2         :                
+GND                          : 174       : gnd    :                   :         :           :                
+GND*                         : 175       :        :                   :         : 2         :                
+GND*                         : 176       :        :                   :         : 2         :                
+GND                          : 177       : gnd    :                   :         :           :                
+VCCINT                       : 178       : power  :                   : 1.2V    :           :                
+GND*                         : 179       :        :                   :         : 2         :                
+GND*                         : 180       :        :                   :         : 2         :                
+GND*                         : 181       :        :                   :         : 2         :                
+GND*                         : 182       :        :                   :         : 2         :                
+VCCIO2                       : 183       : power  :                   : 3.3V    : 2         :                
+GND                          : 184       : gnd    :                   :         :           :                
+GND*                         : 185       :        :                   :         : 2         :                
+GND                          : 186       : gnd    :                   :         :           :                
+seven_seg[5]                 : 187       : output : 3.3-V LVTTL       :         : 2         : N              
+GND*                         : 188       :        :                   :         : 2         :                
+GND*                         : 189       :        :                   :         : 2         :                
+VCCINT                       : 190       : power  :                   : 1.2V    :           :                
+GND*                         : 191       :        :                   :         : 2         :                
+GND*                         : 192       :        :                   :         : 2         :                
+seven_seg[1]                 : 193       : output : 3.3-V LVTTL       :         : 2         : N              
+VCCIO2                       : 194       : power  :                   : 3.3V    : 2         :                
+seven_seg[4]                 : 195       : output : 3.3-V LVTTL       :         : 2         : N              
+GND                          : 196       : gnd    :                   :         :           :                
+GND*                         : 197       :        :                   :         : 2         :                
+GND*                         : 198       :        :                   :         : 2         :                
+seven_seg[6]                 : 199       : output : 3.3-V LVTTL       :         : 2         : N              
+GND*                         : 200       :        :                   :         : 2         :                
+GND*                         : 201       :        :                   :         : 2         :                
+VCCIO2                       : 202       : power  :                   : 3.3V    : 2         :                
+GND*                         : 203       :        :                   :         : 2         :                
+GND                          : 204       : gnd    :                   :         :           :                
+GND*                         : 205       :        :                   :         : 2         :                
+GND*                         : 206       :        :                   :         : 2         :                
+seven_seg[3]                 : 207       : output : 3.3-V LVTTL       :         : 2         : N              
+GND*                         : 208       :        :                   :         : 2         :                
diff --git a/hardware/pong3.qpf b/hardware/pong3.qpf
new file mode 100644
index 0000000..f9a4fa2
--- /dev/null
+++ b/hardware/pong3.qpf
@@ -0,0 +1,30 @@
+# -------------------------------------------------------------------------- #
+#
+# Copyright (C) 1991-2012 Altera Corporation
+# Your use of Altera Corporation's design tools, logic functions 
+# and other software and tools, and its AMPP partner logic 
+# functions, and any output files from any of the foregoing 
+# (including device programming or simulation files), and any 
+# associated documentation or information are expressly subject 
+# to the terms and conditions of the Altera Program License 
+# Subscription Agreement, Altera MegaCore Function License 
+# Agreement, or other applicable license agreement, including, 
+# without limitation, that your use is for the sole purpose of 
+# programming logic devices manufactured by Altera and sold by 
+# Altera or its authorized distributors.  Please refer to the 
+# applicable agreement for further details.
+#
+# -------------------------------------------------------------------------- #
+#
+# Quartus II 32-bit
+# Version 12.0 Build 178 05/31/2012 SJ Web Edition
+# Date created = 21:48:38  September 12, 2013
+#
+# -------------------------------------------------------------------------- #
+
+QUARTUS_VERSION = "12.0"
+DATE = "21:48:38  September 12, 2013"
+
+# Revisions
+
+PROJECT_REVISION = "pong3"
diff --git a/hardware/pong3.qsf b/hardware/pong3.qsf
new file mode 100644
index 0000000..0523c4d
--- /dev/null
+++ b/hardware/pong3.qsf
@@ -0,0 +1,151 @@
+# -------------------------------------------------------------------------- #
+#
+# Copyright (C) 1991-2012 Altera Corporation
+# Your use of Altera Corporation's design tools, logic functions 
+# and other software and tools, and its AMPP partner logic 
+# functions, and any output files from any of the foregoing 
+# (including device programming or simulation files), and any 
+# associated documentation or information are expressly subject 
+# to the terms and conditions of the Altera Program License 
+# Subscription Agreement, Altera MegaCore Function License 
+# Agreement, or other applicable license agreement, including, 
+# without limitation, that your use is for the sole purpose of 
+# programming logic devices manufactured by Altera and sold by 
+# Altera or its authorized distributors.  Please refer to the 
+# applicable agreement for further details.
+#
+# -------------------------------------------------------------------------- #
+#
+# Quartus II 32-bit
+# Version 12.0 Build 178 05/31/2012 SJ Web Edition
+# Date created = 21:48:38  September 12, 2013
+#
+# -------------------------------------------------------------------------- #
+#
+# Notes:
+#
+# 1) The default values for assignments are stored in the file:
+#		pong3.qdf
+#    If this file doesn't exist, see file:
+#		assignment_defaults.qdf
+#
+# 2) Altera recommends that you do not modify this file. This
+#    file is updated automatically by the Quartus II software
+#    and any changes you make may be lost or overwritten.
+#
+# -------------------------------------------------------------------------- #
+
+
+set_global_assignment -name FAMILY "Cyclone II"
+set_global_assignment -name DEVICE EP2C8Q208C8
+set_global_assignment -name TOP_LEVEL_ENTITY pong3
+set_global_assignment -name ORIGINAL_QUARTUS_VERSION 12.0
+set_global_assignment -name PROJECT_CREATION_TIME_DATE "21:48:38  SEPTEMBER 12, 2013"
+set_global_assignment -name LAST_QUARTUS_VERSION "13.0 SP1"
+set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
+set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
+set_global_assignment -name DEVICE_FILTER_PACKAGE "ANY QFP"
+set_global_assignment -name DEVICE_FILTER_PIN_COUNT 208
+set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8
+set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 1
+set_location_assignment PIN_40 -to seg[6]
+set_location_assignment PIN_37 -to seg[5]
+set_location_assignment PIN_43 -to seg[4]
+set_location_assignment PIN_44 -to seg[3]
+set_location_assignment PIN_39 -to seg[2]
+set_location_assignment PIN_35 -to seg[1]
+set_location_assignment PIN_34 -to seg[0]
+set_location_assignment PIN_23 -to clk
+set_location_assignment PIN_27 -to rst_n
+set_location_assignment PIN_92 -to sdram_addr[12]
+set_location_assignment PIN_90 -to sdram_addr[11]
+set_location_assignment PIN_75 -to sdram_addr[10]
+set_location_assignment PIN_89 -to sdram_addr[9]
+set_location_assignment PIN_88 -to sdram_addr[8]
+set_location_assignment PIN_87 -to sdram_addr[7]
+set_location_assignment PIN_86 -to sdram_addr[6]
+set_location_assignment PIN_84 -to sdram_addr[5]
+set_location_assignment PIN_82 -to sdram_addr[4]
+set_location_assignment PIN_81 -to sdram_addr[3]
+set_location_assignment PIN_80 -to sdram_addr[2]
+set_location_assignment PIN_77 -to sdram_addr[1]
+set_location_assignment PIN_76 -to sdram_addr[0]
+set_location_assignment PIN_74 -to sdram_ba[1]
+set_location_assignment PIN_72 -to sdram_ba[0]
+set_location_assignment PIN_69 -to sdram_cas_n
+set_location_assignment PIN_46 -to sdram_cke
+set_location_assignment PIN_47 -to sdram_clk
+set_location_assignment PIN_45 -to sdram_cs_n
+set_location_assignment PIN_94 -to sdram_dq[15]
+set_location_assignment PIN_95 -to sdram_dq[14]
+set_location_assignment PIN_96 -to sdram_dq[13]
+set_location_assignment PIN_97 -to sdram_dq[12]
+set_location_assignment PIN_99 -to sdram_dq[11]
+set_location_assignment PIN_101 -to sdram_dq[10]
+set_location_assignment PIN_102 -to sdram_dq[9]
+set_location_assignment PIN_103 -to sdram_dq[8]
+set_location_assignment PIN_57 -to sdram_dq[7]
+set_location_assignment PIN_58 -to sdram_dq[6]
+set_location_assignment PIN_59 -to sdram_dq[5]
+set_location_assignment PIN_60 -to sdram_dq[4]
+set_location_assignment PIN_61 -to sdram_dq[3]
+set_location_assignment PIN_63 -to sdram_dq[2]
+set_location_assignment PIN_64 -to sdram_dq[1]
+set_location_assignment PIN_67 -to sdram_dq[0]
+set_location_assignment PIN_104 -to sdram_dqm[1]
+set_location_assignment PIN_56 -to sdram_dqm[0]
+set_location_assignment PIN_70 -to sdram_ras_n
+set_location_assignment PIN_68 -to sdram_we_n
+set_location_assignment PIN_41 -to seg[7]
+set_location_assignment PIN_160 -to dm9000_cmd
+set_location_assignment PIN_165 -to dm9000_cs_n
+set_location_assignment PIN_144 -to dm9000_data[15]
+set_location_assignment PIN_145 -to dm9000_data[14]
+set_location_assignment PIN_146 -to dm9000_data[13]
+set_location_assignment PIN_147 -to dm9000_data[12]
+set_location_assignment PIN_149 -to dm9000_data[11]
+set_location_assignment PIN_150 -to dm9000_data[10]
+set_location_assignment PIN_151 -to dm9000_data[9]
+set_location_assignment PIN_152 -to dm9000_data[8]
+set_location_assignment PIN_135 -to dm9000_data[7]
+set_location_assignment PIN_134 -to dm9000_data[6]
+set_location_assignment PIN_138 -to dm9000_data[5]
+set_location_assignment PIN_137 -to dm9000_data[4]
+set_location_assignment PIN_141 -to dm9000_data[3]
+set_location_assignment PIN_139 -to dm9000_data[2]
+set_location_assignment PIN_143 -to dm9000_data[1]
+set_location_assignment PIN_142 -to dm9000_data[0]
+set_location_assignment PIN_162 -to dm9000_rd_n
+set_location_assignment PIN_163 -to dm9000_wr_n
+set_location_assignment PIN_164 -to dm9000_rst_n
+set_location_assignment PIN_161 -to dm9000_int
+set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top
+set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top
+set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top
+set_global_assignment -name SEARCH_PATH db/ip/my_sys/ -tag from_archive
+set_global_assignment -name SEARCH_PATH db/ip/my_sys/submodules/ -tag from_archive
+set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL"
+set_location_assignment PIN_108 -to vga_red[0]
+set_location_assignment PIN_113 -to vga_red[1]
+set_location_assignment PIN_112 -to vga_red[2]
+set_location_assignment PIN_128 -to vga_hs
+set_location_assignment PIN_115 -to vga_green[0]
+set_location_assignment PIN_114 -to vga_green[1]
+set_location_assignment PIN_117 -to vga_green[2]
+set_location_assignment PIN_116 -to vga_blue[0]
+set_location_assignment PIN_127 -to vga_blue[1]
+set_location_assignment PIN_118 -to vga_blue[2]
+set_location_assignment PIN_133 -to vga_vs
+
+set_global_assignment -name USE_CONFIGURATION_DEVICE ON
+set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO"
+set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "USE AS REGULAR IO"
+
+
+set_global_assignment -name VERILOG_FILE DM9000A/hdl/DM9000A_IF.v
+set_global_assignment -name VERILOG_FILE GPU/hdl/GPU_IF.v
+set_global_assignment -name PIN_FILE pong3.pin
+set_global_assignment -name VERILOG_FILE pong3.v
+set_global_assignment -name QSYS_FILE my_sys.qsys
+
+set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
\ No newline at end of file
diff --git a/hardware/pong3.v b/hardware/pong3.v
new file mode 100644
index 0000000..0328dcc
--- /dev/null
+++ b/hardware/pong3.v
@@ -0,0 +1,112 @@
+module pong3(
+		clk,
+		rst_n,
+		
+		sdram_clk      ,//connected to the CLK port of SDRAM  
+		sdram_cke      ,//connected to the CKE port of SDRAM  
+		sdram_cs_n     ,//connected to the CS_n port of SDRAM 
+		sdram_ras_n    ,//connected to the RAS_n port of SDRAM
+		sdram_cas_n    ,//connected to the CAS_n port of SDRAM
+		sdram_we_n     ,//connected to the WE_n port of SDRAM 
+		sdram_ba       ,//connected to the BA port of SDRAM 
+		sdram_addr     ,//connected to the ADDR port of SDRAM   
+		sdram_dqm      ,//connected to the DQM port of SDRAM 
+		sdram_dq       ,//connected to the DQ port of SDRAM
+		
+		dm9000_int  ,
+		dm9000_rst_n,
+		dm9000_cs_n ,
+    	dm9000_cmd  ,
+    	dm9000_rd_n ,
+    	dm9000_wr_n ,
+    	dm9000_data ,
+		
+      vga_hs,
+      vga_vs,
+      vga_red,
+      vga_green,
+      vga_blue,
+    	
+		seven_seg
+	);
+	
+	input clk;
+	input rst_n;
+	
+	output			sdram_clk  ;
+	output			sdram_cke  ;
+	output			sdram_cs_n ;
+	output			sdram_ras_n;
+	output			sdram_cas_n;
+	output			sdram_we_n ;
+	output [ 1 : 0]	sdram_ba   ;
+	output [12 : 0]	sdram_addr ;
+	output [ 1 : 0]	sdram_dqm  ;
+	inout  [15 : 0]	sdram_dq   ;
+	
+	input           dm9000_int  ;
+	output			dm9000_rst_n;
+   output 			dm9000_cs_n ;
+   output 			dm9000_cmd  ;
+   output 			dm9000_rd_n ;
+   output 			dm9000_wr_n ;
+   inout  [15:0]	dm9000_data ;
+	
+	output [ 7:0] seven_seg;
+
+
+   output vga_hs;
+   output vga_vs;
+   output [2:0] vga_red;
+   output [2:0] vga_green;
+   output [2:0] vga_blue;		
+
+	
+	wire sclk;
+	
+	
+	pll u_pll(
+		.inclk0(clk      ),
+		.c0    (sclk     ),
+		.c1    (sdram_clk)
+	);
+	
+	
+	
+	my_sys u_my_sys(
+		.reset_reset_n     (rst_n      ),
+		.clk_clk           (sclk       ),
+		.sdram_0_wire_addr (sdram_addr ),
+		.sdram_0_wire_ba   (sdram_ba   ),
+		.sdram_0_wire_cas_n(sdram_cas_n),
+		.sdram_0_wire_cke  (sdram_cke  ),
+		.sdram_0_wire_cs_n (sdram_cs_n ),
+		.sdram_0_wire_dq   (sdram_dq   ),
+		.sdram_0_wire_dqm  (sdram_dqm  ),
+		.sdram_0_wire_ras_n(sdram_ras_n),
+		.sdram_0_wire_we_n (sdram_we_n ),
+		.pio_0_d_export    (SEG        ),
+		
+		
+		.gpu_0_vga_red(vga_red),
+		.gpu_0_vga_green(vga_green),
+		.gpu_0_vga_blue(vga_blue),
+		.gpu_0_vga_hs(vga_hs),
+		.gpu_0_vga_vs(vga_vs),
+		.gpu_0_vga_clk(clk),
+		
+    	.dm9000a_0_conduit_end_iOSC_50   (            ),
+		.dm9000a_0_conduit_end_ENET_DATA (dm9000_data ),
+		.dm9000a_0_conduit_end_ENET_CMD  (dm9000_cmd  ),
+		.dm9000a_0_conduit_end_ENET_RD_N (dm9000_rd_n ),
+		.dm9000a_0_conduit_end_ENET_WR_N (dm9000_wr_n ),
+		.dm9000a_0_conduit_end_ENET_CS_N (dm9000_cs_n ),
+		.dm9000a_0_conduit_end_ENET_RST_N(dm9000_rst_n),
+		.dm9000a_0_conduit_end_ENET_INT  (dm9000_int  ),
+		.dm9000a_0_conduit_end_ENET_CLK  (            ) 
+	);
+
+	
+	
+	
+endmodule 
-- 
cgit v1.2.3