|
Проблемы SDRAM, Согласование переферии и SDRAM CTRL |
|
|
|
Jan 19 2005, 17:30
|
Местный
  
Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326

|
Serega DocКакая SDRAM (тип, латентность), какой контроллер (куски кода), к какой шине подключен (со обратной строрны FIFO)? Желательно увидеть код, или хотя бы мысли на этот счёт. Советую почитать книжку Суровой, Шейнина. (точно не помню - кто-то упёр, и не вернул  ). Там, по-моему, что-то подобное рассматривалось.  А вот если бы кто подкинул дельную ссылку на реализацию модельки с применением VHPI, был бы брагодарен.  . IMHO, не только я.
|
|
|
|
|
Jan 20 2005, 07:01
|

Местный
  
Группа: Свой
Сообщений: 267
Регистрация: 11-11-04
Из: Одесса
Пользователь №: 1 103

|
Ниже структура реализуемого устройства. Проблема в правильном формировании управляющих сигналов для FIFO буферов. Вернее не в формировании а в оптимальной структуре при неопределенной длительности пакета (вкючен full page) но пакет может изменятся от операции к о перации. Данные 8 бит. Если кто разбтрался с корками для SDRAM или DDR скажите оптимизируется ли работа по тактам для пакетов (в конце пакета данных формируется упр. сигн. для следующего пакета) или каждая новая команда с памятью выполняется последовательно одна после другой. А как называется книга Что такое VHPI? Спасибо!
Прикрепленные файлы
Вопрос.pdf ( 16.18 килобайт )
Кол-во скачиваний: 339
|
|
|
|
|
Jan 20 2005, 08:35
|
Местный
  
Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326

|
Serega DocКнижка: Она из Google - ссылокСледующая из Google - ссылокVHPI - интерфейс для подключения моделей на C++ к среде моделирования VHDL. У меня весь обмен осуществляется фиксированными посылками по AHB (в соответствии со спецификацией шины только как Slave.) После того начали поступать данные от SDRAM захватывается шина и осуществляется передача пакета.
|
|
|
|
|
Jan 20 2005, 18:57
|
Местный
  
Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326

|
Serega DocТочнее опишите задачу, пожалуйста. У меня есть подозрение, что мы говорим о разных вещах  . Схемотехника моего устройства предусматривает процессор, память, периферию и вычислитель специальных функций на FPGA. Таким образом, практически у каждого устройства есть своя локальная память и контроллер доступа к шине AHB. Хотя спецификация шины и предусматривает режим обмена данными неопределённой длины, реально пакеты ограничены объёмом обрабатываемых данных в устройствах. Контроллер SDRAM имеет раздельные сигналы адреса, данные чтения, данные записи и сигналы контроля шины. Из них наиболее интересны сигналы Ack и Rdy (хотя в AHB они именуются иначе и вообще физически представлены в виде кода из нескольких бит). Таким образом, когда контроллер SDRAM получает команду с шины (запись или чтение), он формирует сигнал Ack, сообщая, что он понял команду. В случае записи он захватывает данные с шины на каждом такте, а затем снимает сигнал готовности Rdy. Фактически, данные с шины поступают в локальное WR_FIFO_SDRAM, пока контроллер активизирует банк, строку и колонку. Затем они с максимальной скоростью переписываются в SDRAM. В случае чтения он снимает сигнал готовности Rdy сразу и выставляет его после того, как данные появиться на шине AHB. Была мысль возвращать сигнал «занят», и потребовать от Master ещё раз обратиться к контроллеру, освобождая шину от циклов ожидания, но руки не дошли. Со стороны SDRAM для линии данных контроллер выдаёт сигналы на переключение шины с вывода на ввод, принудительно вставляя один такт во избежание конфликтов. Таким образом, у меня и возник вопрос, как можно одновременно писать и читать SDRAM. Просто в моей модели её использования таким образом невозможно в принципе.
|
|
|
|
|
Jan 28 2005, 02:21
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220

|
А в чем проблема - задача-то вполне стандартная, когда я свой контроллер DDR делал, так одних Xapp-ов с Xilinx-овского сайта штук пять прочел. Нельзя ли один из них приспособить к делу (к ним код обычно прилагается)? Мне пришлоссь свой городить - задача-то была довольнго специфическая - 8 каналов конкурентного доступа. Доступы-то блочные, но сильно "перпендикулярные" по адресации, и требование использовать не менее 93% теоретитческой полосы (когда в каждом такте смитывается или пишется по два слова)?
|
|
|
|
|
Jan 28 2005, 17:39
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220

|
Цитата(Serega Doc @ Jan 28 2005, 02:59) Проблема в формировании следующей комманды (активация строки установка операции) во время выполнения текущей с пакетом неопределенной длинны (вкл FULL PAGE и в конце операции формируется BURST_STOP) Все равно проблемы не видно, хотя для конкретногно, максимально производительного решения указанных вами начальных условий недостаточно - нужно больше знать о внешних треброваниях к модулю. Как должны себя вести FIFO снаружи? Какие задержуи допустимы, т.е. как разбивать данные на пакеты чтения/записи - на переключения в любом случае теряются циклы (по кр мере в одну сторону - сейчас уже не помню команды SDR SDRAM). Нельзя ли обойтись вообще без burst terminate используя пакеты определенной длины? Как связаны (если связаны) входной и выходной потоки (чтобы эффективнее использовать перекрытие банков и, соответственно, операций. Когда все это определено можно сначала распределить все по циклам (назад по времени от памяти) считая, что контроллер "как бог" все знает заранее, потом - "высоту принятия решения" - за сколько циклов до выдачи какой команды контроллер должен инициировать блочную операцию определенного напраления. И то, что данные чтения памяти приходят с запразданием, а записи - нужно выдавать заранеее - это неизбежно. Более того, туда войдут еще такты в самой FPGA - слои регистров на входе и выходе. Может быть - даже не один - при достаточно высокой частоте и ... хотя в вашем случае, одного слоя наверняка должно хватить - каналов-то всего два и разводка может быть достаточно компактной.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|