реклама на сайте
подробности

 
 
> Quartus and Ram, EAB?
Vain
сообщение Jun 21 2006, 14:56
Сообщение #1





Группа: Участник
Сообщений: 9
Регистрация: 24-02-06
Пользователь №: 14 644



Джентельмены! Кто подскажет?
Есть своя память, написаная на VHDL без использования параметризированных модулей. Как заставить Quartus разместить эту память в ячейках EAB? Использование параметризированных модулей не предлагать.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Rundll
сообщение Jun 23 2006, 11:36
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 24-05-06
Из: Россия, Таганрог
Пользователь №: 17 409



Я ищу ответ на этот вопрос около 4 дней и никто мне так внятно и не ответил на него!
Ув. знатоки, вылажите побольше инфы на эту тему, уж больно распространённой она становится. Как правильно и грамматно создать VHDL-описание SRAM, так чтобы, ну не все конечно, а хотя бы самые распрастранённые САПР видели её как встроенную в ПЛИС память,а не как LUT. У меня получалось делать такое описание, и действительно такие САПР как Xilinx, MAX, FPGAadv. видели её как EAB пример такого описания я могу дать:

Код
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;

ENTITY mem_test IS
        generic (DATA_WIDTH: natural:=16;  
                     ADRESS_WIDTH: natural:=8);
        port(DATA:     in std_logic_vector(DATA_WIDTH-1 downto 0);
        WRADRESS:        in std_logic_vector(ADRESS_WIDTH-1 downto 0);
        RDADRESS:        in std_logic_vector(ADRESS_WIDTH-1 downto 0);
        WRITE_EN:        in std_logic;
        CLK:            in std_logic;
        QUIT:            out std_logic_vector(DATA_WIDTH-1 downto 0));

END mem_test;
ARCHITECTURE memory_ram OF mem_test IS
type MEMORY_BLOCK_1 is array ((2**ADRESS_WIDTH)-1 downto 0) of std_logic_vector(DATA_WIDTH-1 downto 0); --MEMORY TYPE

SIGNAL    SIG_DATA:     std_logic_vector(DATA_WIDTH-1 downto 0);
SIGNAL    SIG_WRADR:    std_logic_vector(ADRESS_WIDTH-1 downto 0);    
SIGNAL    SIG_RDADR:    std_logic_vector(ADRESS_WIDTH-1 downto 0);
SIGNAL    SIG_WE:        std_logic;
BEGIN

process (CLK) begin
    if CLK'event and CLK='1' then
        SIG_DATA<=DATA;
        SIG_WRADR<=WRADRESS;
        SIG_RDADR<=RDADRESS;
        SIG_WE<=WRITE_EN;
    end if;
end process;


process (SIG_DATA,SIG_WRADR,SIG_RDADR,SIG_WE)
variable SRAM: MEMORY_BLOCK_1;
begin    
    if    SIG_WE='1' then
        SRAM(conv_integer(SIG_WRADR)):=SIG_DATA;
    end if;
    QUIT<=SRAM(conv_integer(SIG_RDADR));
end process;
END memory_ram;
[/quote]


Память синхронная, дуал порт, как я понимаю. Но результаты моделирования, увы, огорчают! Хотя ИМХО с точки зрения логики всё верно. Если во 2-ом процессе пихнуть клок, память тут-же пихается на триггерах sad.gif При временном моделировании возникают проблемы, над решением которых собственно и встает вопрос. Если есть желание помочь мне и многим другим, я могу выложить результаты моделирования (кому интересно). Многие могут меня закритиковать за такое описание, но покрайней мере это видится как EAB!

Буду очень благодарен за всю полученную информацию! Очень нуждаюсь в помощи профессионалов!

С уважением Никита


--------------------
Не сломаешь - не поймешь!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 12:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01355 секунд с 7
ELECTRONIX ©2004-2016