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

Subversion Repositories natalius_8bit_risc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /natalius_8bit_risc/trunk
    from Rev 9 to Rev 10
    Reverse comparison

Rev 9 → Rev 10

/pong_top_level.v
0,0 → 1,114
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: Universidad Pontificia Bolivariana
// Engineer: Fabio Andres Guzman Figueroa
//
// Create Date: 11:31:15 05/17/2012
// Design Name:
// Module Name: pong_top_level
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module pong_top_level(
input clk,
input rst,
input up1, down1, up2, down2,
output hs,vs,
output r,g,b
);
 
 
wire [7:0] data_in;
wire [7:0] port_addr;
wire [7:0] data_out;
wire write_e;
 
reg [3:0] sw;
reg rst_ext;
reg [6:0] col;
reg [5:0] row;
reg [2:0] color;
reg we;
 
wire [12:0] addr_write, addr_read;
wire [3:0] doutb;
wire [2:0] color_out;
wire [7:0] mem_out;
 
 
always@(posedge clk)
if (rst_ext==1 || rst==1)
sw<=0;
else
begin
if (up1) sw[0]<=1'b1;
if (down1) sw[1]<=1'b1;
if (up2) sw[2]<=1'b1;
if (down2) sw[3]<=1'b1;
end
//col register (addr=32)
always@(posedge clk or posedge rst)
if (rst)
col<=0;
else
if (port_addr[7:5]==3'b001 && write_e==1)
col<=data_out[6:0];
//row register (addr=64)
always@(posedge clk or posedge rst)
if (rst)
row<=0;
else
if (port_addr[7:5]==3'b010 && write_e==1)
row<=data_out[5:0];
 
//color register (addr=96)
always@(posedge clk or posedge rst)
if (rst)
color<=0;
else
if (port_addr[7:5]==3'b011 && write_e==1)
color<=data_out[2:0];
//we register (addr=160)
always@(posedge clk or posedge rst)
if (rst)
we<=0;
else
if (port_addr[7:5]==3'b101 && write_e==1)
we<=data_out[0];
//rst_ext register (addr=128)
always@(posedge clk or posedge rst)
if (rst)
rst_ext<=0;
else
if (port_addr[7:5]==3'b100 && write_e==1)
rst_ext<=data_out[0];
 
assign data_in=(port_addr[7:5]==000) ? mem_out : {4'b0000,sw};
 
assign addr_write={row, col};
 
natalius_processor processor(clk,rst,port_addr,read_e,write_e,data_in,data_out);
memram ram_memory(clk,data_out,port_addr[4:0],mem_out,write_e);
mem_video video_mem(clk,we,addr_write,addr_read,{1'b0,color},doutb);
vga_control video_cntrl(clk,rst,doutb[2:0],hs,vs,color_out,addr_read);
 
assign r=color_out[2];
assign g=color_out[1];
assign b=color_out[0];
 
endmodule

powered by: WebSVN 2.1.0

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