Ayuda con memoria flash a pines GPIO en la placa de desarrollo FPGA

0

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?

    
pregunta mikerakesh

1 respuesta

0

Lo solucioné.

No tenía los pines de datos configurados en 'Z' cuando no se estaba accediendo.

SNES_DATA <= FL_DQ when (SNES_ROMSEL = '0') else "ZZZZZZZZ";

Eso funciona correctamente.

    
respondido por el mikerakesh

Lea otras preguntas en las etiquetas