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

 
 
> Block RAM на VHDL в Spartan3, Could not implement Block RAM. Is the read address registered using th
Vadim_nsk
сообщение Jun 28 2006, 09:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-09-05
Из: г. Новосибирск
Пользователь №: 8 335



При описании памяти как массива производится чтение и запись по разным адресам, при этом чтение производится ассинхронно, а запись синхронно.
При объявлении массива указываю атрибут:
attribute syn_ramstyle : string;
attribute syn_ramstyle of data_array_1 : signal is "block_ram";--"no_rw_check";

При этом Synplify Pro 8.4 в отчете выдает следующее сообщение:
Could not implement Block RAM. Is the read address registered using the same clock as the RAM?

Код примерно следующий:

entity name is
clock : in std_logic;
din : in signed( 15 downto 0 );
write : in std_logic;
dout : out signed( 15 downto 0 );
...
end name;

architecture name_body of name is

subtype data_type is signed( 15 downto 0 );
type data_array_type is array( 0 to 7 ) of data_type;
signal data_array_1 : data_array_type := ( others => to_signed( 0, data_type'length ) );
signal data_array_2 : data_array_type := ...;
attribute syn_ramstyle : string;
attribute syn_ramstyle of data_array_1 : signal is "block_ram";--"no_rw_check";
attribute syn_ramstyle of data_array_2 : signal is "block_ram";--"no_rw_check";

signal rd1_addr, wr1_addr : unsigned( 2 downto 0 ) := to_unsigned( 0, 4 );
signal rd2_addr, wr2_addr : unsigned( 2 downto 0 ) := to_unsigned( 0, 4 );
signal A, C : data_type := to_signed( 0, data_type'length );

body

A <= data_array_1( to_integer( rd1_addr ) );
C <= data_array_2( to_integer( rd2_addr ) );

process( reset, clock )
begin
if reset = '1' then
A <= to_signed( 0, data_type'length );
C <= to_signed( 0, data_type'length );
rd1_addr <= ...;
wr1_addr <= ...;
rd2_addr <= ...;
wr2_addr <= ...;
...
elsif rising_edge( clock ) then
dout <= A * C;
if write = '1' then
data_array_1( to_integer( wr1_addr ) ) <= din;
end if;
rd1_addr <= rd1_addr + 1;
wr1_addr <= wr1_addr + 1;
rd2_addr <= rd2_addr + 1;
end if;
end process;

end name_body;

Как нужно описывать RAM в виде массива, чтобы Synplify сделал из него BlockRAM?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Vadim_nsk   Block RAM на VHDL в Spartan3   Jun 28 2006, 09:38
- - oval   Цитата(Vadim_nsk @ Jun 28 2006, 13:38) Пр...   Jun 28 2006, 09:43
|- - Vadim_nsk   Цитата(oval @ Jun 28 2006, 16:43) Канал ч...   Jun 28 2006, 11:47
|- - oval   Цитата(Vadim_nsk @ Jun 28 2006, 15:47) Ци...   Jun 28 2006, 12:16
- - avesat   Проще использовать готовые RAM блоки, рекомендован...   Jun 28 2006, 10:03
- - des00   откуда у блочной памяти асинхронные сбросы ? чита...   Jun 28 2006, 10:44
- - des00   какая разница ? вы позволили синтезатору доопредел...   Jun 28 2006, 12:07
- - vetal   Возможно, что дело еще в: Кодrd1_addr <= rd1_a...   Jun 28 2006, 12:09
- - Gorby   Извините, что врываюсь... Почему-то никто ни слов...   Jun 28 2006, 12:16
- - Mad Makc   ЦитатаПочему-то никто ни слова не произнес про COR...   Jun 28 2006, 13:11
- - Wild   Если адрес чтения успевает устанавливаться к серид...   Jun 29 2006, 11:54
- - maior   Hо ведь есть еще стандартные примитивы памяти (бло...   Jun 29 2006, 14:26
|- - Gorby   Цитата(maior @ Jun 29 2006, 18:26) Hо вед...   Jun 30 2006, 09:32
- - maior   Цитата(Gorby @ Jun 30 2006, 13:32) ... Фа...   Jun 30 2006, 12:58
- - des00   МОЕ ИМХО на весь этот счет, у памяти 2 конфигураци...   Jul 1 2006, 06:42
- - qwqw   У меня Spartan2 а не 3, но думаю это непринципиаль...   Aug 23 2006, 09:08
- - BSV   Пытался делать такую штуку в ISE 4.2. Были проблем...   Aug 23 2006, 19:42
- - qwqw   разрядность портов: A (запись) = 8 B(чтение) = 32 ...   Aug 24 2006, 08:44
- - BSV   А синтезатор-то что говорит? В Вашей реализации я ...   Aug 24 2006, 10:59
- - BSV   Попробовал - таки да, не хавает, говорит, что вмес...   Aug 24 2006, 11:40
- - qwqw   насчет ошибки я не согласен, если посмотрите в при...   Aug 24 2006, 14:05
- - BSV   Зачем Вам противофазный клок? Если нужен отрицател...   Aug 24 2006, 14:46


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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 05:47
Рейтинг@Mail.ru


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