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

 
 
> Работа с BRAM Памятью на Хилинх
Iskatel
сообщение Apr 3 2011, 16:16
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 27-02-11
Пользователь №: 63 276



Помогите пожаилуста с BRAM

не могу сообразить что и как нужно делать чтобы Xilinx синтезатор MemoryNext как Block RAM организовал. Я понимаю что RAM двухпортовыи Read and Write, но мне надо два раза считать и два раза переписать его. А вот сделать этого не могу. Я думал что Синтезатор имеет определённую интелигенцию и понимает, что я одновреммено только в одном месте, считываю либо записываю в память, но я как видно ошибаюсь, и вместо BRAM синтезатор использует кучу регистров. Помогите пожайлуста
Мой код выглядит следуюшим образом:

type MemoryTyp is array (0 to StateNumber-1) of signed(MWidth-1 downto 0);
signal Memory : MemoryTyp := (others => (others =>'0')) ;
signal MemoryNext : MemoryTyp := (others => "10000000") ;
begin
Symbol_Read: process(Clock)
begin

if rising_edge(Clock) then
if (Flanke = '1') then
Counter <= Counter+1;
CopyBckEnbl <= '0';
--....
end if;
--.....
if(counter = RecivedBit) then -- RecivedBit == 2 bits Read
if (CopyBckEnbl = '0') then MN_Tmp <= MemoryNext(NEWSTATE); end if;-- 1 raz schitat

if(TaktCnt > 6 and TaktCnt < 14)then--14
if( MN_Tmp < LargestValue ) then
MemoryNext(NEWSTATE_1) <= LargestValue; end if; -- 1 once write
--......
end if;

if(TaktCnt = 13)then ---13
Counter <= 0;
TaktCnt <=0;
CopyBckEnbl <= '1';
else TaktCnt <= TaktCnt+1;
end if;
end if;

if ( CopyBckEnbl = '1' ) then
Memory(CBCnt) <= MemoryNext(CBCnt);end if; --2 read is a Copy back
if (CBCnt= 64)then CBCnt <= 0;
CopyBckEnbl <= '0';
SetEnbl <= '1';
else CBCnt <= CBCnt+1;
end if;
end if;

if ( SetEnbl = '1' ) then
MemoryNext(SetEnblCnt) <= ( "10000000"); -- 2 Write set a smallest value
--.......
if (SetEnblCnt= 64)then SetEnblCnt <= 0;
SetEnbl <= '0';
-- ..........
else SetEnblCnt <= SetEnblCnt+1;
end if;
end if;
end if;
end process Symbol_Read;
end Behavioral;
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Kompot
сообщение Apr 4 2011, 09:36
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 10-06-08
Из: Хочу в пампасы...
Пользователь №: 38 192



Цитата(Iskatel @ Apr 3 2011, 19:16) *
Помогите пожаилуста с BRAM

не могу сообразить что и как нужно делать чтобы Xilinx синтезатор MemoryNext как Block RAM организовал. Я понимаю что RAM двухпортовыи Read and Write, но мне надо два раза считать и два раза переписать его. А вот сделать этого не могу. Я думал


Давненько не брал в руки шашек...

Что-то вы не с того конца зашли. Если вы точно знаете, что вам нужно, то идете прямо в Кореген и с визардом вместе генерируете себе блок памяти с нужными свойствами. Он гарантированно будет лучше чем любой синтезированный, ибо уже аппаратно оптимизирован.

На будущее - далеко не все железо, что есть на борту современных ФПГА можно вот так просто выразить на VHDL и ожидать, что оно синтезируется. Надо либо читать доку на синтезатор (там до запятой расписывается как из ЯВУ инстанцировать определенные железные компоненты, но возможно это не всегда), либо корегеном (для памяти особенно), либо просто свои обертки писать и напрямую вставлять например двунаправленный выходной буфер с третим состоянием и DDR регистром в пине.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:11
Рейтинг@Mail.ru


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