Чтение из памяти SRAM

Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн окт 01, 2018 09:19:51

Сообщение imsushka »

Screenshot_2.png
(60.58 КБ) 187 скачиваний
в даташите написанно что к памяти можно обращяться каждый клок

но у меня не получается
Screenshot_1.png
(24.05 КБ) 192 скачивания

Код: Выделить всё

  IF (RISING_EDGE(CLK)) THEN

    CASE H(2 DOWNTO 0) IS
-------------------------------------------------------------------------------
    WHEN "000" =>
        vADDR :=        V( 9 DOWNTO 0) & H( 9 DOWNTO 4);
  
      VA <= '0' & vADDR;
-------------------------------------------------------------------------------
    WHEN "001" =>
--      VA <= (OTHERS => '0');   !!!!!!! - если поставить то 
-------------------------------------------------------------------------------
    WHEN "010" =>
      FONT_ROW0 <= VDi;                   - тут получу чушь

      vFONT      := VDi( 7 DOWNTO 0);
      vATTRIBUTE := VDi(15 DOWNTO 8);

      VA <= '1' & vFONT & vATTRIBUTE;
-------------------------------------------------------------------------------
    WHEN "011" =>
--      VA <= (OTHERS => '0');
-------------------------------------------------------------------------------
    WHEN "100" =>
      FONT_ROW1 <= VDi;

      VA <= '0' & "111111111111" & & vATTRIBUTE(3 DOWNTO 0);
-------------------------------------------------------------------------------
    WHEN "101" =>
--      VA <= (OTHERS => '0');
-------------------------------------------------------------------------------
    WHEN "110" =>
      FONT_ROW2 <= VDi;

-------------------------------------------------------------------------------
    WHEN "111" =>
    END CASE;

  END IF;
если убрать коммент на 1, 3 и 5 кейсе, то ничего не работает

хотелось бы выставлять адрес каждый цикл и забирать данные через цикл

что я делаю не так ?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 20140
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Очень интересно, но ничего не понятно)
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Родился
Аватара пользователя
Сообщения: 13
Зарегистрирован: Ср авг 26, 2026 21:17:46

Сообщение Черный_Кот »

Давай так.
1. У Altera Quartus2 Открываешь меню Tools IP Mega wizard Plug in manager выбираешь RAM 1 PORT
IP Подключаешь в главный модуль эту библиотеку копированием шапки и подправкой входов выходов
по логике, например тут вход только 1 чтение с порта q, соответсвенно это wire, так и обьявляешь.
Если ты должен менять, указывать данные например address, data и wren то это будет reg.
А если же к выходным выходным еще и нога подсоединена то добавляешь input output reg если выход
или wire если вход с другого листа / библиотеки
2.
//---------------
ram_1p ram_1p
(
.address(address_1),// ****_1 - твои переменные для работы с библиотекой RAM
.clock(CLK), //в скобках твой общий клок
.data(data_1),
.wren(wren_1),
.q(q_1)
);
reg [12:0] address_1; // Тут переменные для работы с RAM нужно обьявить, как описано выше,
// значения в квадратных скобках может меняться в зав от настройки RAM (мышкой)
reg [7:0] data_1;
reg wren_1;
wire [7:0] q_1;
//----------------------------------------------------
3.Ложишь в память так:
//----------------------------
begin

wren_1 = 1; // Включение режима записи
address_1 = 0; // твой адресс 00000000
data_1 = 123; //ложишь свои данные

end
//----------------------------------------------------
4.А читаешь так :
//----------------------------
begin

wren_1 = 0; // Включение режима чтения
address_1 = 0; // твой адресс
data_1 = 123; //читаешь свои данные с указ адреса 00000000

end
//-----------------------------------------------------
5.Еще нужен счетчик, тк хотя бы 1CLK памяти переключиться с записи на чтение нужно
//----------------------------
RAM_counter = RAM_counter + 1;
if (RAM_counter >= 3) // минимальное значение
begin
RAM_counter = 0;
//Чтение или запись тут
end
//-------------------------
Как на языке АХДЛ не знаю и зачем он тебе нужен, а это Verilog
Ответить

Вернуться в «ПЛИС»