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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Проблемы SDRAM, Согласование переферии и SDRAM CTRL
Serega Doc
сообщение Jan 19 2005, 14:59
Сообщение #1


Местный
***

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



У меня два FIFO буффера связанные с SDRAM контроллером
Один передает информацию на контроллер (в память соответсвнно), а другой принимает прочитанные данные из памяти. Проблема в организации управления двумя FIFO буфферами. Потому что при чтении латентность есть а при записи нет. Может у когото была такая проблема
sad.gif
Go to the top of the page
 
+Quote Post
ASN
сообщение Jan 19 2005, 17:30
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



Serega Doc
Какая SDRAM (тип, латентность), какой контроллер (куски кода), к какой шине подключен (со обратной строрны FIFO)?
Желательно увидеть код, или хотя бы мысли на этот счёт.
Советую почитать книжку Суровой, Шейнина. (точно не помню - кто-то упёр, и не вернул angry.gif ). Там, по-моему, что-то подобное рассматривалось.
bb-offtopic.gif А вот если бы кто подкинул дельную ссылку на реализацию модельки с применением VHPI, был бы брагодарен. blush.gif. IMHO, не только я.
Go to the top of the page
 
+Quote Post
Serega Doc
сообщение Jan 20 2005, 07:01
Сообщение #3


Местный
***

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



Ниже структура реализуемого устройства. Проблема в правильном формировании управляющих сигналов для FIFO буферов. Вернее не в формировании а в оптимальной структуре при неопределенной длительности пакета (вкючен full page) но пакет может изменятся от операции к о перации.

Данные 8 бит.

Если кто разбтрался с корками для SDRAM или DDR скажите оптимизируется ли работа по тактам для пакетов (в конце пакета данных формируется упр. сигн. для следующего пакета) или каждая новая команда с памятью выполняется последовательно одна после другой.

А как называется книга

Что такое VHPI?

Спасибо!
Прикрепленные файлы
Прикрепленный файл  Вопрос.pdf ( 16.18 килобайт ) Кол-во скачиваний: 339
 
Go to the top of the page
 
+Quote Post
ASN
сообщение Jan 20 2005, 08:35
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



Serega Doc
Книжка:
Она из Google - ссылок
Следующая из Google - ссылок

VHPI - интерфейс для подключения моделей на C++ к среде моделирования VHDL.

У меня весь обмен осуществляется фиксированными посылками по AHB (в соответствии со спецификацией шины только как Slave.) После того начали поступать данные от SDRAM захватывается шина и осуществляется передача пакета.
Go to the top of the page
 
+Quote Post
Serega Doc
сообщение Jan 20 2005, 09:29
Сообщение #5


Местный
***

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



Тоесть настройка SDRAM на следующий пакет только по окончании работы с текущим
Go to the top of the page
 
+Quote Post
ASN
сообщение Jan 20 2005, 13:43
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



Serega Doc
А как же иначе? Может быть я чего-то не понимаю?
Посмотрел рисунок - не понял как одновременно можно читать и писать в SDRAM.
Go to the top of the page
 
+Quote Post
Serega Doc
сообщение Jan 20 2005, 15:33
Сообщение #7


Местный
***

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



Ну если работать в одной строке то в сдрам памяти можно настраивать различные банки на различные операции и тем самым формировать непрерывный поток.

посмотрите стр 28 - 29 или я чевото не понял
Прикрепленные файлы
Прикрепленный файл  operation_timing.pdf ( 686.25 килобайт ) Кол-во скачиваний: 105
 
Go to the top of the page
 
+Quote Post
ASN
сообщение Jan 20 2005, 18:57
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



Serega Doc
Точнее опишите задачу, пожалуйста. У меня есть подозрение, что мы говорим о разных вещах smile.gif.
Схемотехника моего устройства предусматривает процессор, память, периферию и вычислитель специальных функций на FPGA. Таким образом, практически у каждого устройства есть своя локальная память и контроллер доступа к шине AHB. Хотя спецификация шины и предусматривает режим обмена данными неопределённой длины, реально пакеты ограничены объёмом обрабатываемых данных в устройствах. Контроллер SDRAM имеет раздельные сигналы адреса, данные чтения, данные записи и сигналы контроля шины. Из них наиболее интересны сигналы Ack и Rdy (хотя в AHB они именуются иначе и вообще физически представлены в виде кода из нескольких бит). Таким образом, когда контроллер SDRAM получает команду с шины (запись или чтение), он формирует сигнал Ack, сообщая, что он понял команду.
В случае записи он захватывает данные с шины на каждом такте, а затем снимает сигнал готовности Rdy. Фактически, данные с шины поступают в локальное WR_FIFO_SDRAM, пока контроллер активизирует банк, строку и колонку. Затем они с максимальной скоростью переписываются в SDRAM. В случае чтения он снимает сигнал готовности Rdy сразу и выставляет его после того, как данные появиться на шине AHB. Была мысль возвращать сигнал «занят», и потребовать от Master ещё раз обратиться к контроллеру, освобождая шину от циклов ожидания, но руки не дошли.
Со стороны SDRAM для линии данных контроллер выдаёт сигналы на переключение шины с вывода на ввод, принудительно вставляя один такт во избежание конфликтов. Таким образом, у меня и возник вопрос, как можно одновременно писать и читать SDRAM. Просто в моей модели её использования таким образом невозможно в принципе.
Go to the top of the page
 
+Quote Post
aal
сообщение Jan 21 2005, 03:03
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 20-10-04
Из: Новосибирская обл, п.Краснообск.
Пользователь №: 916



В аналогичной задаче я собираюсь использовать по 2 буфера на чтение и 2 буфера н запись. Пока приемник/передатчик работает с 1 буфером второй читается/пишется. Главное чтоб время записи буфера было меньше времени опустошения буфера чтения + операции чтения следующего буфера.


--------------------
_____________________________________
Пароли неприемлемы, легко взламываются терморектальным криптоанализатором.
Go to the top of the page
 
+Quote Post
ASN
сообщение Jan 21 2005, 05:59
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



aal
Дык, это, IMHO, ежели узкое место SDRAM smile.gif. У меня пока узким местом является быстродействие других узлов...
Хотя, это то самое, что я тоже добавить позже. Но руки всё не доходят и недоходят... blush.gif
Go to the top of the page
 
+Quote Post
Serega Doc
сообщение Jan 21 2005, 06:48
Сообщение #11


Местный
***

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



Простой пример
Необходимо принять в FIFO_IN 1Mbyte информации (FIFO_IN = 256 byte) и записать его в SDRAM. А затем переписать принятую информацию в частями по 512 byte в FIFO_OUT (512 byte).
Когда вы приняли первый пакет из 256 byte происходит простой шины данных порядка 8-9 тактов для закрытия текущего банка и перехода на следующий. В полностраничном режиме AUTO_PRECHARGE не работает.
Если сделать 1000 операций чтения записи то мы простоим 8000 тактов что на частоте в 130 MHZ = 60 mks я думаю это не мало. Вот и возникает вопрос почему не настраивать память для работы со следующим пакетом во время работы с текущим. Но все ничего проблема в правильном управлении буфферами FIFO
wink.gif
Go to the top of the page
 
+Quote Post
Andrey Filippov
сообщение Jan 28 2005, 02:21
Сообщение #12


Участник
*

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



А в чем проблема - задача-то вполне стандартная, когда я свой контроллер DDR делал, так одних Xapp-ов с Xilinx-овского сайта штук пять прочел. Нельзя ли один из них приспособить к делу (к ним код обычно прилагается)?
Мне пришлоссь свой городить - задача-то была довольнго специфическая - 8 каналов конкурентного доступа. Доступы-то блочные, но сильно "перпендикулярные" по адресации, и требование использовать не менее 93% теоретитческой полосы (когда в каждом такте смитывается или пишется по два слова)?
Go to the top of the page
 
+Quote Post
Serega Doc
сообщение Jan 28 2005, 08:59
Сообщение #13


Местный
***

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



Проблема в формировании следующей комманды (активация строки установка операции) во время выполнения текущей с пакетом неопределенной длинны (вкл FULL PAGE и в конце операции формируется BURST_STOP)
Go to the top of the page
 
+Quote Post
Andrey Filippov
сообщение Jan 28 2005, 17:39
Сообщение #14


Участник
*

Группа: Свой
Сообщений: 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 - слои регистров на входе и выходе. Может быть - даже не один - при достаточно высокой частоте и ... хотя в вашем случае, одного слоя наверняка должно хватить - каналов-то всего два и разводка может быть достаточно компактной.
Go to the top of the page
 
+Quote Post
Serega Doc
сообщение Jan 29 2005, 06:06
Сообщение #15


Местный
***

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



Пасибо! Объясните только что значит слои?
Go to the top of the page
 
+Quote Post

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

 


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


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