Цитата
В настройках синтезатора не запрещено синтезировать BRAM?
Помню был экзамен по курсу приемников, паренька спросили про выравниватель спектра. Он затормозил, понял что ничего не помнит про принципы работы, начал на ходу придумывать узкополосные фильтры, на что преподаватель прервал его и спокойно так ручкой прочетрил линию по спектру "вот так он его выравнивает".
Если бы я нашел пункт меню "Не использовать ячейки RAM" я обратил на это внимание =)
Как то плавно тема скатилась в объявление оперативной памяти.
Никаких других рабочих способов, кроме использования CoreGEN не нашлось, так что выложу тут его полностью, авось кому пригодится. Итак
1) Объявляем наше Entity, к которому в дальнейшем будем обращаться.
Код
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity ram32_16 is
port (WAddress, RAddress:in std_logic_vector(4 downto 0);
Data : in std_logic_vector (15 downto 0);
WClock, RClock,WE,RE:in std_logic;
Q :out std_logic_vector (15 downto 0));
end ram32_16;
architecture rtl of ram32_16 is
component ram
port (Data : in std_logic_vector (15 downto 0);
WE : in std_logic;
RE : in std_logic;
WClock : in std_logic;
RClock : in std_logic;
WAddress : in std_logic_vector (4 downto 0);
RAddress : in std_logic_vector (4 downto 0);
Q: out std_logic_vector (15 downto 0)
);
end component;
begin
R_32_16: ram
port map (Data => Data,
WE => WE,
WAddress => WAddress,
RE => RE,
RAddress => RAddress,
WClock => WClock,
RClock => RClock,
Q => Q);
end rtl;
-- RAM.vhd
2) Генерируем Two-Port Memmory. В либеро IDE справа внизу закладка Cores.

3)Собсно все, синтезируем.

Но первый вопрос никуда не делся. Сейчас я храню 128 тестовых байт по 6 бит внутрях самой ПЛИС, ясно что этот метод подходит только на начальных этапах отладки.
Поэтому вовзаращаясь к первоначальной теме - как работать с flash-памятью?
Есть ли у кого примеры?