Intenté acceder a la memoria FLASH en esta placa de desarrollo DE1, pero no tuve suerte. Estoy usando esto para interactuar con un sistema Super Nintendo, y estoy tratando de leer un pequeño archivo ROM de prueba almacenado en el FLASH. He comprobado que el contenido es bueno volviéndolos a un archivo y lo he probado.
He escrito algunos VHDL básicos para hacer esto, pero creo que me estoy perdiendo algo con el extremo del bus de datos. He hecho controles de línea de dirección básicos con chips CPLD antes de usar VHDL, pero nunca lo he intentado con un bus de datos.
Aquí está el código:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity mapper_test is
port(
FL_ADDR : out std_logic_vector(21 downto 0);
FL_DQ : in std_logic_vector(7 downto 0);
FL_CE_N : out std_logic;
FL_OE_N : out std_logic;
FL_RST_N : out std_logic;
FL_WE_N : out std_logic;
SNES_ADDR : in std_logic_vector(21 downto 0); -- SNES ADDRESS BUS
SNES_DATA : out std_logic_vector(7 downto 0); -- SNES DATA BUS
SNES_ROMSEL : in std_logic; -- /ROMSEL (CART PIN 49)
--SNES_RST : in std_logic; -- CART RESET
--SNES_VCC : in std_logic; -- CART VCC
SNES_RD : in std_logic -- SNES /RD
);
end mapper_test;
architecture arch of mapper_test is
begin
--FLASH CONTROL PINS
FL_CE_N <= SNES_ROMSEL; -- INPUT SNES /ROMSEL TO OUTPUT FLASH /CE
FL_OE_N <= SNES_RD; -- INPUT SNES /RD TO OUTPUT FLASH /OE
FL_RST_N <= '1'; -- KEEP FLASH /RST HIGH
FL_WE_N <= '1'; -- KEEP FLASH /WE HIGH
--FLASH DATA PINS
SNES_DATA(7 downto 0) <= FL_DQ(7 downto 0); -- INPUT FLASH DATA BUS (7:0) TO OUTPUT SNES DATA BUS (7:0) FOR READ MODE
--ADDRESS PINS
FL_ADDR(14 downto 0) <= SNES_ADDR(14 downto 0); -- INPUT SNES ADDRESS (14:0) TO OUTPUT FLASH ADDRESS (14:0)
FL_ADDR(20 downto 15) <= SNES_ADDR(21 downto 16); -- LOROM CONFIG ---> INPUT SNES ADDRESS (21:16) TO OUTPUT FLASH ADDRESS (20:15)
FL_ADDR(21) <= '0'; -- KEEP FLASH(21) LOW FOR 2MBYTE ONLY
end arch;
Cuando conecto los cables de GPIO (todos los entresijos de SNES en el código) a mi cartucho de prueba, no obtengo más que una pantalla negra. Incluso he intentado atar mis LED a los pines FL_DQ para ver si hay alguna actividad y no hay ninguna. Así que me parece que el bus de datos no está pasando correctamente. Solo quiero conectar el FLASH a los pines SNES, no es nada especial en este momento.
¿Puede alguien decirme qué estoy haciendo mal?