Я купил плагин для разработки Spartan 3A от Micronova (http://micro-nova.com/mercury), и у меня есть некоторые проблемы, связанные с его SRAM.Вождение контактов GPIO, совместно используемых с SRAM в VHDL
Эта плата имеет 30 контактов GPIO, которые совместно используются Cypress SRAM и два контакта для переключения между ними.
Одинокий, соединяющий два модуля VHDL (один для управления SRAM, а другой для привода GPIO) на один и тот же вывод, приводит к «множественной ошибке драйвера» при синтезе.
Итак, чтобы решить проблему, я создал третий модуль в качестве среднего контроллера, который соединяет оба модуля с другой переменной для выбора того, какой из них будет работать.
Это хорошо работает для вывода, но когда дело доходит до ввода ввода, я всегда получаю 1, независимо от реального значения.
Я не знаю, какие контакты будут использоваться в качестве входных данных, а какие - для вывода, потому что я хотел бы иметь независимый модуль, который я могу использовать для других проектов.
Это то, что я до сих пор:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity DMA2 is
Port (
IOphys : inout STD_LOGIC_VECTOR (29 downto 0);
IOin1 : out STD_LOGIC_VECTOR (29 downto 0);
IOin2 : out STD_LOGIC_VECTOR (29 downto 0);
IOout1 : in STD_LOGIC_VECTOR (29 downto 0);
IOout2 : in STD_LOGIC_VECTOR (29 downto 0);
SwitchEn2 : in STD_LOGIC
);
end DMA2;
architecture Behavioral of DMA2 is
begin
IOin2 <= IOphys;
IOin1 <= IOphys;
IOphys <= IOout2 when SwitchEn2 = '1' else IOout1;
end Behavioral;
IOphys физические контакты на плате, SwitchEn2 для выбора приводного модуля и другие входы и выходы модулей.