From a85b19a7c7e7fecb4e71c41b37fb30dabaf8bd14 Mon Sep 17 00:00:00 2001 From: Joshua Wise Date: Tue, 1 Apr 2008 01:26:45 -0400 Subject: [PATCH 1/1] JP --- FPGABoy.ise | Bin 218506 -> 225432 bytes GBZ80Core.v | 216 +++++++++++----------------------------------------- System.v | 167 ++++++++++++++++++++++++++++++++++++++++ Uart.v | 11 ++- rom.hex | 8 +- 5 files changed, 224 insertions(+), 178 deletions(-) create mode 100644 System.v diff --git a/FPGABoy.ise b/FPGABoy.ise index 5cb2ab77b4ffa9b6046d38c6afc61e1dde83dcd5..d10eca1d4dedb8121076c1f177ce01b5f76a58d1 100644 GIT binary patch delta 95154 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

% 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 delta 90143 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 16'hC000) && (address < 16'hFE00); - reg [7:0] odata; - wire idata = data; - assign data = (rd && decode) ? odata : 8'bzzzzzzzz; - - always @(negedge clk) - begin - if (decode && rd) - odata <= ram[address[12:0]]; - else if (decode && wr) - ram[address[12:0]] <= data; - end -endmodule - -module Switches( - input [15:0] address, - inout [7:0] data, - input clk, - input wr, rd, - input [7:0] switches, - output reg [7:0] ledout); - - wire decode = address == 16'hFF51; - reg [7:0] odata; - wire idata = data; - assign data = (rd && decode) ? odata : 8'bzzzzzzzz; - - always @(negedge clk) - begin - if (decode && rd) - odata <= switches; - else if (decode && wr) - ledout <= data; - end -endmodule - -module CoreTop( - input xtal, - input [1:0] switches, - output wire [7:0] leds, - output serio, - output wire [3:0] digits, - output wire [7:0] seven); - - wire clk; - //IBUFG ibuf (.O(clk), .I(iclk)); - - CPUDCM dcm (.CLKIN_IN(xtal), .CLKFX_OUT(clk)); - - wire [15:0] addr; - wire [7:0] data; - wire wr, rd; - - wire [7:0] ledout; - assign leds = switches[1] ? (switches[0]?{rd,wr,addr[5:0]}:data[7:0]) - : ledout; - - GBZ80Core core( - .clk(clk), - .busaddress(addr), - .busdata(data), - .buswr(wr), - .busrd(rd)); - - ROM rom( - .address(addr), - .data(data), - .clk(clk), - .wr(wr), - .rd(rd)); - - AddrMon amon( - .addr(addr), - .clk(clk), - .digit(digits), - .out(seven) - ); - - Switches sw( - .address(addr), - .data(data), - .clk(clk), - .wr(wr), - .rd(rd), - .ledout(ledout), - .switches(0) - ); - - UART nouart ( - .clk(clk), - .wr(wr), - .rd(rd), - .addr(addr), - .data(data), - .serial(serio) - ); -endmodule - -module TestBench(); - reg clk = 0; - wire [15:0] addr; - wire [7:0] data; - wire wr, rd; - -// wire [7:0] leds; -// wire [7:0] switches; - - always #10 clk <= ~clk; - GBZ80Core core( - .clk(clk), - .busaddress(addr), - .busdata(data), - .buswr(wr), - .busrd(rd)); - - ROM rom( - .clk(clk), - .address(addr), - .data(data), - .wr(wr), - .rd(rd)); - -// InternalRAM ram( -// .address(addr), -// .data(data), -// .clk(clk), -// .wr(wr), -// .rd(rd)); - -// wire serio; -// UART uart( -// .addr(addr), -// .data(data), -// .clk(clk), -// .wr(wr), -// .rd(rd), -// .serial(serio)); - -// Switches sw( -// .clk(clk), -// .address(addr), -// .data(data), -// .wr(wr), -// .rd(rd), -// .switches(switches), -// .leds(leds)); -endmodule diff --git a/System.v b/System.v new file mode 100644 index 0000000..53e6257 --- /dev/null +++ b/System.v @@ -0,0 +1,167 @@ + +`timescale 1ns / 1ps +module ROM( + input [15:0] address, + inout [7:0] data, + input clk, + input wr, rd); + + reg [7:0] rom [2047:0]; + initial $readmemh("rom.hex", rom); + + wire decode = address[15:13] == 0; + wire [7:0] odata = rom[address[11:0]]; + assign data = (rd && decode) ? odata : 8'bzzzzzzzz; + //assign data = rd ? odata : 8'bzzzzzzzz; +endmodule + +module InternalRAM( + input [15:0] address, + inout [7:0] data, + input clk, + input wr, rd); + + reg [7:0] ram [8191:0]; + + wire decode = (address >= 16'hC000) && (address < 16'hFE00); + reg [7:0] odata; + wire idata = data; + assign data = (rd && decode) ? odata : 8'bzzzzzzzz; + + always @(negedge clk) + begin + if (decode && rd) + odata <= ram[address[12:0]]; + else if (decode && wr) + ram[address[12:0]] <= data; + end +endmodule + +module Switches( + input [15:0] address, + inout [7:0] data, + input clk, + input wr, rd, + input [7:0] switches, + output reg [7:0] ledout); + + wire decode = address == 16'hFF51; + reg [7:0] odata; + assign data = (rd && decode) ? odata : 8'bzzzzzzzz; + + always @(negedge clk) + begin + if (decode && rd) + odata <= switches; + else if (decode && wr) + ledout <= data; + end +endmodule + +module CoreTop( + input xtal, + input [7:0] switches, + output wire [7:0] leds, + output serio, + output wire [3:0] digits, + output wire [7:0] seven); + + wire clk; + //IBUFG ibuf (.O(clk), .I(iclk)); + + CPUDCM dcm (.CLKIN_IN(xtal), .CLKFX_OUT(clk)); + + wire [15:0] addr; + wire [7:0] data; + wire wr, rd; + + GBZ80Core core( + .clk(clk), + .busaddress(addr), + .busdata(data), + .buswr(wr), + .busrd(rd)); + + ROM rom( + .address(addr), + .data(data), + .clk(clk), + .wr(wr), + .rd(rd)); + + AddrMon amon( + .addr(addr), + .clk(clk), + .digit(digits), + .out(seven) + ); + + Switches sw( + .address(addr), + .data(data), + .clk(clk), + .wr(wr), + .rd(rd), + .ledout(leds), + .switches(switches) + ); + + UART nouart ( + .clk(clk), + .wr(wr), + .rd(rd), + .addr(addr), + .data(data), + .serial(serio) + ); +endmodule + +module TestBench(); + reg clk = 0; + wire [15:0] addr; + wire [7:0] data; + wire wr, rd; + +// wire [7:0] leds; +// wire [7:0] switches; + + always #10 clk <= ~clk; + GBZ80Core core( + .clk(clk), + .busaddress(addr), + .busdata(data), + .buswr(wr), + .busrd(rd)); + + ROM rom( + .clk(clk), + .address(addr), + .data(data), + .wr(wr), + .rd(rd)); + +// InternalRAM ram( +// .address(addr), +// .data(data), +// .clk(clk), +// .wr(wr), +// .rd(rd)); + +// wire serio; +// UART uart( +// .addr(addr), +// .data(data), +// .clk(clk), +// .wr(wr), +// .rd(rd), +// .serial(serio)); + +// Switches sw( +// .clk(clk), +// .address(addr), +// .data(data), +// .wr(wr), +// .rd(rd), +// .switches(switches), +// .leds(leds)); +endmodule diff --git a/Uart.v b/Uart.v index f8ee27b..a036c64 100644 --- a/Uart.v +++ b/Uart.v @@ -8,8 +8,13 @@ module UART( input wr, input rd, input [15:0] addr, - input [7:0] data, + inout [7:0] data, output reg serial); + + wire decode = (addr == `MMAP_ADDR); + + wire [7:0] odata; + assign data = (rd && decode) ? odata : 8'bzzzzzzzz; reg [7:0] data_stor = 0; reg [15:0] clkdiv = 0; @@ -17,7 +22,9 @@ module UART( reg data_end = 0; reg [3:0] diqing = 4'b0000; - wire new = (wr) && (!have_data) && (addr == `MMAP_ADDR); + wire new = (wr) && (!have_data) && decode; + + assign odata = have_data ? 8'b1 : 8'b0; always @ (negedge clk) begin diff --git a/rom.hex b/rom.hex index 82a8f25..850cf0d 100644 --- a/rom.hex +++ b/rom.hex @@ -2,6 +2,10 @@ 05 DF 0E +51 +F2 +E2 +0E 50 3E 41 @@ -2042,7 +2046,3 @@ C7 00 00 00 -00 -00 -00 -00 -- 2.43.0