data.v 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. `timescale 1ns / 1ps
  2. //////////////////////////////////////////////////////////////////////////////////
  3. // Company:
  4. // Engineer:
  5. //
  6. // Create Date: 23:03:06 05/13/2009
  7. // Design Name:
  8. // Module Name: data
  9. // Project Name:
  10. // Target Devices:
  11. // Tool versions:
  12. // Description:
  13. //
  14. // Dependencies:
  15. //
  16. // Revision:
  17. // Revision 0.01 - File Created
  18. // Additional Comments:
  19. //
  20. //////////////////////////////////////////////////////////////////////////////////
  21. module data(
  22. input CLK,
  23. input SNES_READ,
  24. input SNES_WRITE,
  25. input AVR_READ,
  26. input AVR_WRITE,
  27. inout [7:0] SNES_DATA,
  28. inout [15:0] SRAM_DATA,
  29. input [7:0] AVR_IN_DATA,
  30. output [7:0] AVR_OUT_DATA,
  31. input MODE,
  32. input SNES_DATA_TO_MEM,
  33. input AVR_DATA_TO_MEM,
  34. input SRAM_DATA_TO_SNES_MEM,
  35. input SRAM_DATA_TO_AVR_MEM,
  36. input AVR_ENA,
  37. input SRAM_ADDR0
  38. );
  39. reg [7:0] SNES_IN_MEM;
  40. reg [7:0] SNES_OUT_MEM;
  41. reg [7:0] AVR_IN_MEM;
  42. reg [7:0] AVR_OUT_MEM;
  43. wire [7:0] FROM_SRAM_BYTE;
  44. wire [7:0] TO_SRAM_BYTE;
  45. assign SNES_DATA = SNES_READ ? 8'bZ : SNES_OUT_MEM;
  46. assign FROM_SRAM_BYTE = (SRAM_ADDR0 ? SRAM_DATA[7:0] : SRAM_DATA[15:8]);
  47. assign TO_SRAM_BYTE = !AVR_ENA ? (!AVR_WRITE ? AVR_IN_DATA : 8'bZ) // /**/ : 8'bZ;
  48. : MODE ? (!AVR_WRITE ? AVR_IN_MEM : 8'bZ)
  49. : (!SNES_WRITE ? SNES_IN_MEM : 8'bZ);
  50. assign AVR_OUT_DATA = !AVR_ENA ? (FROM_SRAM_BYTE)
  51. : (AVR_OUT_MEM);
  52. // XXX assign SRAM_DATA = (SRAM_BHE ? {8'bZ, TO_SRAM_BYTE} : {TO_SRAM_BYTE, 8'bZ});
  53. assign SRAM_DATA = !AVR_ENA ? ((SRAM_ADDR0 ? {8'bZ, TO_SRAM_BYTE} : {TO_SRAM_BYTE, 8'bZ})) : 16'bZ;
  54. always @(posedge CLK) begin
  55. if(SNES_DATA_TO_MEM)
  56. SNES_IN_MEM <= SNES_DATA;
  57. if(AVR_DATA_TO_MEM)
  58. AVR_IN_MEM <= AVR_IN_DATA;
  59. if(SRAM_DATA_TO_SNES_MEM)
  60. SNES_OUT_MEM <= FROM_SRAM_BYTE;
  61. if(SRAM_DATA_TO_AVR_MEM)
  62. AVR_OUT_MEM <= FROM_SRAM_BYTE;
  63. end
  64. /*
  65. always @(posedge SNES_DATA_TO_MEM) begin
  66. SNES_IN_MEM <= SNES_DATA;
  67. end
  68. always @(posedge AVR_DATA_TO_MEM) begin
  69. AVR_IN_MEM <= AVR_DATA;
  70. end
  71. always @(posedge SRAM_DATA_TO_SNES_MEM) begin
  72. SNES_OUT_MEM <= SRAM_DATA;
  73. end
  74. always @(posedge SRAM_DATA_TO_AVR_MEM) begin
  75. AVR_OUT_MEM <= SRAM_DATA;
  76. end
  77. */
  78. endmodule