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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Подключение синхронной SRAM, помогите разобраться с задержками и избежать состязаний на шине
Intekus
сообщение Oct 18 2010, 12:16
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



Подключаем к ПЛИС внешнее синхронное ОЗУ. Частота довольно высокая (хотим довести до номинальных для микросхемы 200 МГц). Выводы двунаправленные.
Как я поинмаю, принципиально различных с точки зрения времени сигналов на ОЗУ приходит 3: адрес+данные на ОЗУ, тактовый и разрешение Z-состояния.
Без разрешения Z-состояния, ещё можно было бы применить способ "на коленке": подвигать фазу тактового с ПЛИС относительно данных и оставить среднее между 2 точками "срыва" (где память перестаёт правильно читаться / писаться). Но с управлением Z-состоянием приходится вначале прикинуть параметры на диаграммах.
Пока у меня получаятся следующие соотношения:
(Пример для стыка запись-чтение)

Рабочий фронт тактового внутри ПЛИС
--Время защёлкивания данных в регистрах и появления их на ножках ПЛИС, параллельно отсчитываемое от переключения регистра управления выводами время на выход выводов данных ПЛИС из Z-состояния
На выводах данных ПЛИС - записываемые данные
--Задержка на дорожках платы
Setup-время данных на выводах ОЗУ
--Приход тактового на вход ОЗУ
Hold-время данных на выводах ОЗУ
--Приход на ОЗУ сигнала управления Z-состояниями (так как минимальное время от его прихода до переключения направления выводов - 0)
Задержка на перевод выводов данных ОЗУ из Z-состояния на выход либо отсчитываемое от прихода тактового на ОЗУ время появления годных данных на выходе - что раньше закончится
--Считанные данные на выходах ОЗУ
Задержка на дорожках платы
--Время предустановки для регистров ПЛИС
(Здесь параллельной веткой - время от ножек до регистра и после него - следующий фронт тактового внутри ПЛИС)
--Время выдержки для регистров ПЛИС
Перевод выводов ПЛИС в Z-состояние при необходимости.

Это частично, в управлении двунаправленностью упомянуты не все события.
Соответственно, фаза выходного тактового ПЛИС будет определяться временем прихода тактового на ОЗУ минус задержка на дорожках, минус время выхода тактового из ПЛИС. Кстати, там ещё и ножки не выделенные, а обычные I/O, так развели, так что в достижимости 200 МГц уже есть некоторые сомнения.
Фаза сигналов управления двунаправленностью (для ПЛИС и внешнего - отдельно) - из времён переключения направления.
Разделы по заданию констрейнов прочитал, но сейчас интересует именно расчёт их значений.
В общем, судя по сложности выкладок, похоже, я подхожу к задаче как-то не так sad.gif - посоветуйте пожалуйста, как правильно сделать / что почитать.


--------------------
...а Сила, Брат - она - в несиловых решениях.
Go to the top of the page
 
+Quote Post
gutzzz
сообщение Oct 18 2010, 14:15
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 7-02-09
Из: Ростов-на-Дону
Пользователь №: 44 537



а что за озу, если не секрет
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 18 2010, 14:27
Сообщение #3


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Какая используется ПЛИС?


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Intekus
сообщение Oct 18 2010, 14:56
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



ПЛИС Virtex5
ОЗУ ISSI Pipelined 'No wait' state bus SRAM серия IS61NLP512
ИМХО, эти сведения не обязательны, интересно общее решение для таких случаев.
Видел демо проект от Xilinx - именно контроллер ZBT / 'No wait' state bus SRAM; в нём просто прописана пара OFFSET, но при этом наружу выведена двойная (указано, что именно в случае pipeline) частота, зачем - скажу честно, не разобрался. Ещё там есть петли тактового сигнала для автоматической компенсации задержки DLL'ью - но у нас в разводке подобных вещей предусмотрено не было.


--------------------
...а Сила, Брат - она - в несиловых решениях.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 18 2010, 16:20
Сообщение #5


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



для альтеры все классически, интерфейс с памятью рассматриваем как System Synchronus Input/Output и соотвественно расчитываем констрейны. Для хилых будет немного по другому, но общие концепции сохраняются.


--------------------
Go to the top of the page
 
+Quote Post
Intekus
сообщение Oct 18 2010, 17:44
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



Цитата(des00 @ Oct 18 2010, 20:20) *
для альтеры все классически, интерфейс с памятью рассматриваем как System Synchronus Input/Output и соотвественно расчитываем констрейны. Для хилых будет немного по другому, но общие концепции сохраняются.

(Из моего первого сообщения)
Цитата(Intekus @ Oct 18 2010, 16:16) *
Соответственно, фаза выходного тактового ПЛИС будет определяться временем прихода тактового на ОЗУ минус задержка на дорожках, минус время выхода тактового из ПЛИС. Кстати, там ещё и ножки не выделенные, а обычные I/O, так развели, так что в достижимости 200 МГц уже есть некоторые сомнения.

Тактовый для ОЗУ создаётся на ПЛИС, так что у меня как раз случай source-synchronous, разве нет?
Повторюсь: с тактовым более-менее понятно, интересует OE для ПЛИС и для RAM - кто сталкивался, поделитесь: распространено ли решение тактировать их отдельным сигналом со сдвигом фазы?
P. S. Из интуитивных соображений кажется, для максимальной скорости работы фазы изменения OE должны ещё зависеть от того, чтение или запись производится - но такое, в отличие от упомянутого в предыдущем предложении, труднореализуемо и вряд ли даст большой выигрыщ.


--------------------
...а Сила, Брат - она - в несиловых решениях.
Go to the top of the page
 
+Quote Post
gutzzz
сообщение Oct 18 2010, 18:26
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 7-02-09
Из: Ростов-на-Дону
Пользователь №: 44 537



А интересно кто-нибудь вообще делает подобные рассчеты?
Насколько они реалистичны?
Go to the top of the page
 
+Quote Post
Intekus
сообщение Oct 18 2010, 18:42
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



То, что сказал des00 (констрейнты на source synchronous / system synchronous - интерфейсы)- рассчитывают, видел на сайте Альтеры документы, в которых даже усредняли какие-то задержки, вычисленные временным анализатором и потом где-то прописывали полученную фазу.
Вот тот документ http://www.fpga.com.cn/freeip/zbt_xilinx.pdf на стр. 5 и 6 рассчитали даже нагрев корпусов от токов при состязаниях на шине; а вот расчётов фазы сигналов управления направлением - пока не нашёл.


--------------------
...а Сила, Брат - она - в несиловых решениях.
Go to the top of the page
 
+Quote Post
VladimirB
сообщение Oct 18 2010, 20:30
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219



Цитата(Intekus @ Oct 18 2010, 18:56) *
ПЛИС Virtex5
ОЗУ ISSI Pipelined 'No wait' state bus SRAM серия IS61NLP512
ИМХО, эти сведения не обязательны, интересно общее решение для таких случаев.
Видел демо проект от Xilinx - именно контроллер ZBT / 'No wait' state bus SRAM; в нём просто прописана пара OFFSET, но при этом наружу выведена двойная (указано, что именно в случае pipeline) частота, зачем - скажу честно, не разобрался. Ещё там есть петли тактового сигнала для автоматической компенсации задержки DLL'ью - но у нас в разводке подобных вещей предусмотрено не было.


У нас используется CY7C1460AV33 ZBT SRAM, подключённая к Spartan3A, контроллер самописный, констреинты только на частоту клока заданы, клок подаётся с ПЛИС и всё нормально работает на частоте 133МГц. DLL не используется.
Разводка тоже не больно хорошо сделана - разве что дорожки до памяти короткие не более 60-70мм.

А у вас пятый виртекс (сравните ради интереса задержки в IOB-ах спартана и виртекса). ИМХО проблемы, если и возникнут, то только если память далеко от ПЛИС и волновые сопротивления не согласованы - тогда отражения могут всё испортить. Задержки в дорожках составляют 67 пс/см и будут существенны если память значительно удалена от ПЛИС.
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение Oct 18 2010, 20:45
Сообщение #10


тоже уже Гуру
******

Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973



Цитата(VladimirB @ Oct 18 2010, 23:30) *
У нас используется CY7C1460AV33 ZBT SRAM, подключённая к Spartan3A, контроллер самописный, констреинты только на частоту клока заданы, клок подаётся с ПЛИС и всё нормально работает на частоте 133МГц. DLL не используется.
Разводка тоже не больно хорошо сделана - разве что дорожки до памяти короткие не более 60-70мм.

я то же самое делал с точностью до модели ZBT(кажись), но на Virtex-2Pro(и дорожки чуть покороче). тоже считаю, что всё норм. д.б. без особых фокусов. правда, на счёт 200МГц не могу быть уверен(зуб не дам) - надо расчёты поднять, где-то валялись.


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 19 2010, 02:43
Сообщение #11


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Intekus @ Oct 18 2010, 13:42) *
То, что сказал des00 (констрейнты на source synchronous / system synchronous - интерфейсы)- рассчитывают, видел на сайте Альтеры документы, в которых даже усредняли какие-то задержки, вычисленные временным анализатором и потом где-то прописывали полученную фазу.

это пока таймквеста не было, как он появился все просто. Задаем задержки, параметры памяти, и времянку по tsu/th для памяти и плис соответственно.

ЗЫ. Пример подключения асинхронной памяти есть у меня в статье, но она будет напечатана только в декабре. На примере альтеры, если вам уж сильно горит, можно списаться.


--------------------
Go to the top of the page
 
+Quote Post
Intekus
сообщение Oct 20 2010, 17:46
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



Всем большое спасибо за ответы; расстояние между ПЛИС и памятью небольшое, сантиметров 5-7.
Скоро вернусь к этой задаче, пока всё равно не понял, чем же тактировать OE для ПЛИС и RAM, так что, наверное, буду делать аккуратную по времянкам модель памяти и отлаживать подключение на ней.


--------------------
...а Сила, Брат - она - в несиловых решениях.
Go to the top of the page
 
+Quote Post
Intekus
сообщение Oct 29 2010, 09:12
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



Что-то я закопался. Расписал акууратную по времянкам (причём выходные задержки ПЛИС пока поставлены меньше 1 нс с потолка) модель в Modelsim - пока получается, что на 200 МГц с такими задержками память работать не будет в принципе. Если у кого есть примеры рассчётов (и, особенно, констрейнтов под Xilinx) - прошу поделиться.


--------------------
...а Сила, Брат - она - в несиловых решениях.
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение Oct 29 2010, 09:48
Сообщение #14


тоже уже Гуру
******

Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973



Цитата(Intekus @ Oct 29 2010, 12:12) *
получается, что на 200 МГц с такими задержками память работать не будет в принципе.

почему?


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Oct 29 2010, 10:38
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Вообще мне кажется, что при наличии пятого виртекса, у которого есть линии задержки в лапах, следует поступить так:
1. Сделать дизайн, где OE выдается синхронно с остальными сигналами.
2. Сделать временную модель, запустить симуляцию и посмотреть ширину участка, на котором происходит состязание шины.
3. Задержать в буферах все сигналы, кроме OE на эту величину.
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение Oct 29 2010, 10:41
Сообщение #16


тоже уже Гуру
******

Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973



Цитата(Intekus @ Oct 18 2010, 20:44) *
интересует OE для ПЛИС и для RAM - кто сталкивался, поделитесь: распространено ли решение тактировать их отдельным сигналом со сдвигом фазы?

кстати, а зачем вам ОЕ? там реальная течь получается? есть состязание на линиях?


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post
Intekus
сообщение Oct 29 2010, 11:55
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



Цитата(CaPpuCcino @ Oct 29 2010, 14:41) *
кстати, а зачем вам ОЕ? там реальная течь получается? есть состязание на линиях?

Промоделирую с реальным контроллером - скажу точнее; интуитивно казалось, что да. Сразу не стал с ним моделировать, потому что, получалось, каждая подстройка фазы тактового на память - это пересборка, но, видимо, придётся так (пока писал, пришла идея, как вообще всё сделать за 1 прогон).
Цитата(CaPpuCcino @ Oct 29 2010, 13:48) *
получается, что на 200 МГц с такими задержками память работать не будет в принципе.
почему?

Так выходило по задержкам; когда сдвигаешь фазу в одну сторону - шли ошибки при переходе R->W, в другую - при W->R, а при среднем значении цикл удавалось сократить только до где-то 6 нс (166 МГц), дальше начинались x-ы.
В общем, спасибо всем за некий приданный импульс smile.gif - до того моделировал в чисто абстрактных условиях, теперь попробую подключить post-PAR-вариант контроллера.
Косвенно связанный с темой вопрос: как в PlanAhead посмотреть, куда физически по топологии разместился триггер? Вывожу его в PlanAhead'овском schematic. В меню по правой кнопке есть разные "выделить" и "подсветить", и он подсвечивается на общем виде кристалла. Но это буквально пара точек на экране, которую тяжеловато искать каждый раз. А аналога знакомого по Altera 'найти на физической топологии (locate in ChipEditor, вроде бы называлось)', по которой его не только выделит, но и приблизит до какого-то удобного увеличения, я пока не нашёл.


--------------------
...а Сила, Брат - она - в несиловых решениях.
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение Oct 29 2010, 12:15
Сообщение #18


тоже уже Гуру
******

Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973



Цитата(Intekus @ Oct 29 2010, 14:55) *
Промоделирую с реальным контроллером - скажу точнее; интуитивно казалось, что да.

просто мне казалось, что ОЕ вообще в современных SRAM - вещь факультативная, там вроде бы внутренние схемы выходы отключают самостоятельно при цикле записи. даже если и есть короткое наложение на шине, ну в крайнем случае будет кушать ваша схема чуть побольше smile.gif.
смысл пользовать есть, когда действительно по каким-то причинам на шине данные с одного выхода залезают на данные с другого выхода. поэтому я и спросил, а вы уверены, что ОЕ вам так и необходим.


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Oct 29 2010, 12:25
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(Intekus @ Oct 29 2010, 15:55) *
Так выходило по задержкам; когда сдвигаешь фазу в одну сторону - шли ошибки при переходе R->W, в другую - при W->R, а при среднем значении цикл удавалось сократить только до где-то 6 нс (166 МГц), дальше начинались x-ы.
И это неудивительно - у памяти bus turnaround (время реакции на OE) 3 наны, с учетом буферов ПЛИС за такт не успеть на 200. Надо между чтением и записью просто пропускать такт, и все будет хорошо.

Цитата(CaPpuCcino @ Oct 29 2010, 16:15) *
просто мне казалось, что ОЕ вообще в современных SRAM - вещь факультативная, там вроде бы внутренние схемы выходы отключают самостоятельно при цикле записи.
Нет разницы, каким сигналом будет переключаться шина - проблема очевидно (с учетом времянок памяти) в том, что turnaround не успевает произойти за такт вообще, поэтому получается не короткое наложение, а полное.
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение Oct 29 2010, 12:49
Сообщение #20


тоже уже Гуру
******

Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973



Цитата(DmitryR @ Oct 29 2010, 15:25) *
Нет разницы, каким сигналом будет переключаться шина - проблема очевидно (с учетом времянок памяти) в том, что turnaround не успевает произойти за такт вообще, поэтому получается не короткое наложение, а полное.

ага, понятно, просто не посмотрел на абсолютные значения.

Цитата(DmitryR @ Oct 29 2010, 15:25) *
Надо между чтением и записью просто пропускать такт, и все будет хорошо.

а вот это вы кажется что-то мудрите... но, будем подумать


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post
Intekus
сообщение Oct 29 2010, 13:08
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



Цитата(DmitryR @ Oct 29 2010, 16:25) *
И это неудивительно - у памяти bus turnaround (время реакции на OE) 3 наны, с учетом буферов ПЛИС за такт не успеть на 200. Надо между чтением и записью просто пропускать такт, и все будет хорошо.

Нет разницы, каким сигналом будет переключаться шина - проблема очевидно (с учетом времянок памяти) в том, что turnaround не успевает произойти за такт вообще, поэтому получается не короткое наложение, а полное.

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


--------------------
...а Сила, Брат - она - в несиловых решениях.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Oct 29 2010, 13:29
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



А тут вы его хоть как сдвигайте. Вам надо, чтобы за такт:
1. Сигнал OE вышел из ПЛИС.
(провода не учитываем)
2. Память переключилась
3. Данные дошли обратно до ПЛИС прежде, чем вы выключите OE, потому что в этот момент (выключения OE) состояние шины становится непредсказуемым, hold у этой памяти не специфицирован.

Так вот, в сумме эти три цифры дают (для LVCMOS33 24ma и самого быстрого грейда в ПЛИС) 1.55+3.1+0.62=5.27ns. Еще есть ненулевая ширина фронта - и вы получаете 6 нан, то есть 166 МГц.
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение Oct 29 2010, 13:40
Сообщение #23


тоже уже Гуру
******

Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973



Цитата(DmitryR @ Oct 29 2010, 15:25) *
И это неудивительно - у памяти bus turnaround (время реакции на OE) 3 наны, с учетом буферов ПЛИС за такт не успеть на 200. Надо между чтением и записью просто пропускать такт, и все будет хорошо.

так и не понял зачем нужно пропускать. главное подтянуть выходной буфер в HZ. делать это можно на том же клоке(фронте), что и фронт захлопывающий данные в ПЛИС, если следующий такт записи в ОЗУ. выходы поднимутся через время примерно равное полупериоду. клок на ОЗУ приходит с задержкой(данные для записи тоже). всё будет зависеть от вр. установки сигнала на регистре OE_fpga + буфер выхода с ПЛИС + страйп. нужно смотреть что получается со временем и уже от этого плясать.

Цитата(DmitryR @ Oct 29 2010, 16:29) *
Так вот, в сумме эти три цифры дают (для LVCMOS33 24ma и самого быстрого грейда в ПЛИС) 1.55+3.1+0.62=5.27ns.

UPD сорри я запоздал с постом. теперь понятно.


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post

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

 


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


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