Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Блочная память и её работа
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Языки проектирования на ПЛИС (FPGA)
darkniisiis
Вот для проекта мне необходимо использовать блочную память. Под задание подходит готовый компонент ISE RAMB4_S16. Пробовал смоделировать её с помощью модельсима,но что то не пойму логику её работы, не могу получить вектор на выходе,всегда нули.Управляющие сигналы:
RST-сброс
ЕN-разрешение работы
CLK-сигналы синхронизации
WE-разрешение записи
ADDR-вход адреса
DI-вход данных
DO-выход
Подскажите пожалуста как она работает?
irum4
Читай файл документации lib.pdf (стр.~1301) об RAMB4_Sn. Там все понятно написано.
darkniisiis
нет,это всё понятно,тут без вопросов.
Проблема в том что при таком раскладе на выходе всё равно 0.
Вроде всё делаю правильно,сигналы подаю правильно,но толка нет. Можно ли в модельсиме посмотреть внутреннее состояние памяти?
denisys
Цитата(darkniisiis @ Mar 15 2007, 14:23) *
Можно ли в модельсиме посмотреть внутреннее состояние памяти?

Содержимое памяти в моделсиме можно посмотреть с помощью окна Workspace и его закладки Memories выбрав соответствующий инстанс.
darkniisiis
Может быть есть какие-нибудь нюансы при моделировании памяти? Подскажите пожалуйста.
Делаю м модельсиме post-translate симуляцию.Такое впечатление что память вообще не воспринимает подаваемые мной сигналы, смотрю по закладке Memories,её содержимое не меняется. Сигналы подаю правильно.В чём может быть проблема?
denisys
Цитата(darkniisiis @ Mar 16 2007, 15:09) *
Может быть есть какие-нибудь нюансы при моделировании памяти? Подскажите пожалуйста.
Делаю м модельсиме post-translate симуляцию.Такое впечатление что память вообще не воспринимает подаваемые мной сигналы, смотрю по закладке Memories,её содержимое не меняется. Сигналы подаю правильно.В чём может быть проблема?


Вы используете библиотечный компонент RAMB4_S16, который описывает память так как это необходимо для моделирования, и этот компонент замечательно работает. Поэтому, следует обратить внимание именно на управляющие сигналы, которые Вы направляете на этот компонент.

Кстати, как ведет себя Ваша схема при функциональном моделировании? Проблемы в
post-translate симуляции могут быть следствием неверного (с точки зрения синтеза) кода...
darkniisiis
пробую моделировать чисто библиотечный компонент без каких либо своих включений
приведу пример сигналов,может я действительно в чём-то ошибаюсь,проверьте пожалуйста(для примера возьмём 2-х разрядные адрес и данные)

0011001100110011001100 clk
1111111111000000000000 we
1111111111111111111111 en
0001001000100001000000 addr
0001001000000000000000 di
0000000000000000000000 do
BSV
Все правильно, Вы писали только по 0 адресу и только 0. Адрес и данные должны иметь нужное значение на момент прихода фронта, т.е. на предыдущем такте - так же как и с D-триггером.

Надо так:
00110011 clk
11111111 we
11111111 en
00001100 addr
11001100 di

По адресам 0 и 1 запишутся 1. Когда данные на выходе появятся - смотреть по документации (на память не помню).
darkniisiis
что то ничего не помогает.
Может быть кто-нибудь даст ссылочку на необходимую документацию?
andrew_b
Цитата(darkniisiis @ Mar 19 2007, 14:18) *
что то ничего не помогает.

Мне эти "временные диаграммы" (00110011) абсолютно непонятны. Вы можете сделать скриншот окна wave симулятора и опубликовать здесь?
darkniisiis
xlxn_1 - we
xlxn_2 - en
xlxn_3 - rst
xlxn_4 - clk
xlxn_5 - addr
xlxn_6 - DI
xlxn_7 - DO
andrew_b
Цитата(darkniisiis @ Mar 19 2007, 15:56) *
xlxn_4 - clk

Если это самое начало симуляции, т. е. левее того, что на рисунке, ничего нет, то мне все понятно.

У Xilinx есть забавный баг, которому уже не один год. Заключается он в том, что модель памяти (может, еще какой-то компонент тоже -- не знаю, но на грабли с памятью коллеги наступали несколько раз) не работает, если память использует восходящий фронт тактового сигнала, а в момент начала симуляции оный тактовый сигнал устанавливается в '1'.
Измените генератор тактового сигнала, чтобы он начинал генерацию с '0'.

Кстати, интересный момент. Попробуйте провести эксперимент: сигналы оставьте как есть, а у памяти измените активный фронт клока.
darkniisiis
Попробовал изменить ночало такта,не помогло
BSV
Идиотский вопрос - а библиотеки-то подключены (UNISIM)? Внимательно смотрите на Warning'и в Transcript'е. Может тестбенч выложите?
andrew_b
Цитата(darkniisiis @ Mar 20 2007, 10:49) *
Попробовал изменить ночало такта,не помогло

Почему имена сигналов съехали?
Если отвлечься от имен, сигналы на новой картинке расположены в том же порядке, что и на первой? Если да, то все правильно. Enable в нуле -- писаться ничего не будет, Reset в '1' -- на выходе нули.

Вы как будто нарочно делаете все для того, чтобы помочь вам с решением проблемы было как можно сложнее. Как известно, правильно заданный вопрос содержит половину ответа. Если бы вы предоставили максимум информации сразу, а не то, что в первом посте ("я делаю, а у меня не получается" -- поди догадайся, что вы там делаете), то, весьма вероятно, получили бы ответ сразу. Блочная память -- девайс простой, и если она не работает, то по какой-то очень простой причине.

Настойчиво вам советую прислушаться к просьбе коллеги BSV показать тестбенч.
darkniisiis
Цитата(andrew_b @ Mar 20 2007, 14:25) *
Почему имена сигналов съехали?
Настойчиво вам советую прислушаться к просьбе коллеги BSV показать тестбенч.

Да, извините,допустил оплошность,не дал расшифровку сигналов ко второй диаграмме.
Исправляюсь:
xlxn_2 - we
xlxn_3 - rst
xlxn_4 - clk
xlxn_5 - addr
xlxn_6 - DI
xlxn_7 - DO
xlxn_8 - en
По поводу тестбенча-я сигналы задавал вручную,но если это поможет разобраться в проблеме сейчас напишу тестбенч,прогоню память через него и выложу
Doka
учите матчасть, товарищ darkniisiis
всё работает:

вот поведенческая симуляция:
Нажмите для просмотра прикрепленного файла
вот после P&R:
Нажмите для просмотра прикрепленного файла

ISE 8.2.02
ModelSim SE 6.1c

вот сам проект: Нажмите для просмотра прикрепленного файла
darkniisiis
Doka, просмотрел Ваш проект и окончательно запутался в своём, возникло подозрение что с матчастью у меня совсем плохо.Что представляет у Вас сигнал GSR? Откуда он берётся?
Большая к Вам просьба,помогите мне разобраться с моим проектом,я его прикрепляю к сообщению. Уверен я там допустил ошибку,но разобраться не могу.
andrew_b
Цитата(darkniisiis @ Mar 21 2007, 14:41) *
Большая к Вам просьба,помогите мне разобраться с моим проектом,я его прикрепляю к сообщению. Уверен я там допустил ошибку,но разобраться не могу.

Код я посмотрел. Ничего криминального. Но тестбенч я за вас писать не буду, уж не обессудьте... Давайте тестбенч, я посмотрю в симуляторе.
darkniisiis
Сейсас тестбенч попробую сварганить,просто по работе приходиться и на другие дела отвлекаться,времени просто не хватает.
Doka
Цитата(darkniisiis @ Mar 21 2007, 15:18) *
Сейсас тестбенч попробую сварганить,просто по работе приходиться и на другие дела отвлекаться,времени просто не хватает.

используйте тестбенч от выложенного мной проекта - он априори рабочий..
(имена сигналов приведите в соответсвии со схемой/hdl-описпанием)
darkniisiis
Написал тестбенч,исходя из своей логики работы устройства(которую,надеюсь, вы поможете мне изменить на правильную). Проект с тестбенчем привожу ниже. Жду вашей помощи.
andrew_b
Цитата(darkniisiis @ Mar 23 2007, 13:46) *
Написал тестбенч,исходя из своей логики работы устройства(которую,надеюсь, вы поможете мне изменить на правильную).

Вы совершенно напрасно решили, что память будет работать на 20 ГГц. Уменьшите частоту тактового сигнала хотя бы на два порядка.
darkniisiis
намёк понял,сейчас проверим

да,вы были правы,загонял я её.А почему не происходит чтение и запись первого числа?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.