Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Multi Clock design
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
_Vladimir_
Весьма упрощенная схема системы в прицепе.

Это мой первый проект на FPGA.
Но , к сожалению, без такой "кучерявости" по клокам никак...
Отдельные блоки написаны, симулированы.
PCI target уже проверен в железе.
В девайсе два независимых канала DDR266,
т. е. предусматривается вариант - один пишется, второй читается на PCI.

Вопрос такой.
Как правильней поступить с клоками?
Что будет лучше:
- Запитать PLL 2 от выхода PLL3 (установлено у меня сейчас так).
- Запитать PLL 2 от выхода PLL1.
- Запитать PLL 2 тоже от осциллятора (внешний кварц) .
- Какой-то другой вариант...
- Или все едино будет плохо, трудно будет добиться чтобы все это вместе работало :-).
- "я дую на воду" :-)
Входной поток - 660 мегабайт/сек

Нужный функционал девайса на этом этапе:
режим 1 (фоновый) - запись в память и чтение на PCI, rating определяется от PCI.
допустимы пропуски во входном потоке данных.
режим 2. запись до заполнения в оба канала DDR последовательно, стоп и
затем чтение через PCI.
Работа устройства начинается с инициализации регистров по PCI,
затем и управляется (в основном) посредством записи команд в регистры через PCI.
т. е. без PCI - "нет устройства".
Может взять исходный для PLL 2-3 клок от PLL 1?
Наверное это не есть хорошо, не знаю когда поднимается PCI clock (от Linux машины)- нет осцилографа под рукой.

FPGA - Lattice EC33, 672 pin
DmitryR
Что-то не понял, зачем PLL3, если 66MHz уже есть на PLL1? Почему прямо его нельзя подать на Data Flow Control? Соответственно его же подать на PLL2.
oval
Цитата(_Vladimir_ @ Jan 10 2008, 16:26) *
Весьма упрощенная схема системы в прицепе.

Это мой первый проект на FPGA.
Но , к сожалению, без такой "кучерявости" по клокам никак...
Отдельные блоки написаны, симулированы.
PCI target уже проверен в железе.
В девайсе два независимых канала DDR266,
т. е. предусматривается вариант - один пишется, второй читается на PCI.

Вопрос такой.
Как правильней поступить с клоками?
Что будет лучше:
- Запитать PLL 2 от выхода PLL3 (установлено у меня сейчас так).
- Запитать PLL 2 от выхода PLL1.
- Запитать PLL 2 тоже от осциллятора (внешний кварц) .
- Какой-то другой вариант...
- Или все едино будет плохо, трудно будет добиться чтобы все это вместе работало :-).
- "я дую на воду" :-)
Входной поток - 660 мегабайт/сек

Нужный функционал девайса на этом этапе:
режим 1 (фоновый) - запись в память и чтение на PCI, rating определяется от PCI.
допустимы пропуски во входном потоке данных.
режим 2. запись до заполнения в оба канала DDR последовательно, стоп и
затем чтение через PCI.
Работа устройства начинается с инициализации регистров по PCI,
затем и управляется (в основном) посредством записи команд в регистры через PCI.
т. е. без PCI - "нет устройства".
Может взять исходный для PLL 2-3 клок от PLL 1?
Наверное это не есть хорошо, не знаю когда поднимается PCI clock (от Linux машины)- нет осцилографа под рукой.

FPGA - Lattice EC33, 672 pin


PLL1 вообще исключить, ибо далеко не всегда тактовый сигнал шины PCI является достаточно "качественным" для стабильной работы блока PLL. Не хочу сказать, что это обязательно будет так, но были случаи нестабильной работы.

PLL2 и PLL3 тактировать внешним генератором, можно одним и тем же.

Ну и не забыть разумеется про правильный сброс устройства с учетом сигналов захвата фазы от всех PLL.
_Vladimir_
Цитата(DmitryR @ Jan 10 2008, 18:30) *
Что-то не понял, зачем PLL3, если 66MHz уже есть на PLL1? Почему прямо его нельзя подать на Data Flow Control? Соответственно его же подать на PLL2.

Все равно надо PLL3.
Нагрузка на него большая, и feedback подается так что нельзя уже снять сдвинутый клок.
Пэтому на PLL3 реализуется 66 + 66 со сдвигом на 90.


Цитата(oval @ Jan 10 2008, 18:37) *
PLL1 вообще исключить, ибо далеко не всегда тактовый сигнал шины PCI является достаточно "качественным" для стабильной работы блока PLL. Не хочу сказать, что это обязательно будет так, но были случаи нестабильной работы.

А если исходный нестабильный (скорее всего это или разводка была такая или мастер-чип такой)
то напрямую разве будет лучше?
По моему разумению (это взято по примерам корок) PLL работает как развязка + повышение нагрузочгной способности + оптимальное использование специальных клоковых линий.

Цитата(oval @ Jan 10 2008, 18:37) *
PLL2 и PLL3 тактировать внешним генератором, можно одним и тем же.

ОК.
Цитата(oval @ Jan 10 2008, 18:37) *
Ну и не забыть разумеется про правильный сброс устройства с учетом сигналов захвата фазы от всех PLL.

Не совсем понял.
С PLL есть сигнал LOCK - имеете ввиду, что надо его отслеживать и обрабатывать ?
Согласен.
Но это уже во втором приближение, пока все это хочу просто поднять.
DmitryR
Цитата(_Vladimir_ @ Jan 10 2008, 18:14) *
Все равно надо PLL3.
Нагрузка на него большая, и feedback подается так что нельзя уже снять сдвинутый клок.
Пэтому на PLL3 реализуется 66 + 66 со сдвигом на 90.

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

Цитата(_Vladimir_ @ Jan 10 2008, 18:14) *
А если исходный нестабильный (скорее всего это или разводка была такая или мастер-чип такой)
то напрямую разве будет лучше?
По моему разумению (это взято по примерам корок) PLL работает как развязка + повышение нагрузочгной способности + оптимальное использование специальных клоковых линий.

Напрямую будет лучше, если у входной частоты большое дрожание - PLL будет слетать, а без нее будет работать. А повышение нагрузочной способности и использования клоковых линий дает буфер, а не PLL. Поэтому если с частотой не надо манипулировать - то пропускать ее черел PLL один к одному в большинстве случаев бессмысленно: у нее дрожание как минимум 300ps p-p, хороший внешний генератор может дать на порядок-другой меньше. Хоть это и важно только при очень высоких частотах.
_Vladimir_
Цитата(DmitryR @ Jan 10 2008, 19:42) *
Ничего непонятно, можно поподробнее? Нагрузка без разницы, можно от одной PLL питать весь дизайн.
Напрямую будет лучше, если у входной частоты большое дрожание - PLL будет слетать, а без нее будет работать.

Спасибо, учту.
Пока оставлю PCI c PLL, но в случае проблем - есть вариант где копать.
По неопытности упущение - подвел PCI клок не на пин, который может быть подключен прямо к дереву клоков, а на простой пин.
PAR это пропускает, но "осуждает".
Исходя из этого, в конечном итоге так может быть все-таки лучше.
Потом сделаю вариант.


Цитата(DmitryR @ Jan 10 2008, 19:42) *
А повышение нагрузочной способности и использования клоковых линий дает буфер, а не PLL. Поэтому если с частотой не надо манипулировать - то пропускать ее черел PLL один к одному в большинстве случаев бессмысленно: у нее дрожание как минимум 300ps p-p, хороший внешний генератор может дать на порядок-другой меньше. Хоть это и важно только при очень высоких частотах.

Понял. Изложено четко.
oval
Цитата(_Vladimir_ @ Jan 10 2008, 18:14) *
А если исходный нестабильный (скорее всего это или разводка была такая или мастер-чип такой)
то напрямую разве будет лучше?


Обычно со стороны PCI PLL не используется, сама спецификация PCI допускает, если я не ошибаюсь, достаточно "плохой" клок. Разводка и т.п. не причем.

Цитата
По моему разумению (это взято по примерам корок) PLL работает как развязка + повышение нагрузочгной способности + оптимальное использование специальных клоковых линий.


Здесь важны только специальные буфера, PLL лишь может скомпенсировать фазу тактирования, то есть увеличить в некоторой степени запас по временам, но для частот PCI это не существенно.

Цитата
Не совсем понял.
С PLL есть сигнал LOCK - имеете ввиду, что надо его отслеживать и обрабатывать ?
Согласен.
Но это уже во втором приближение, пока все это хочу просто поднять.


Лучше продумать этот вопрос сразу же, ибо в худшем случае устройство просто не запустится правильно. Да, кроме сброса отдельных доменов устройства, нужно еще и сброс самих PLL продумать.

Цитата(_Vladimir_ @ Jan 10 2008, 19:09) *
Спасибо, учту.
Пока оставлю PCI c PLL, но в случае проблем - есть вариант где копать.
По неопытности упущение - подвел PCI клок не на пин, который может быть подключен прямо к дереву клоков, а на простой пин.


Вот этот момент, конечно, не удачный... Можно долго провозиться. Причем PLL тут не особо поможет, можно конечно "играть" с фазой, но это не есть правильное решение. Если есть возможность, лучше сразу завести PCI клок на глобальный вход.

Цитата
PAR это пропускает, но "осуждает".
Исходя из этого, в конечном итоге так может быть все-таки лучше.


См. выше. PLL в данном случае проблему не решает.

Вообще, лучше сразу делать продуманно и правильно, ибо если не повезет, то больше времени потратите на выявление причин. Но может и повести smile.gif
_Vladimir_
Цитата(oval @ Jan 10 2008, 21:31) *
Обычно со стороны PCI PLL не используется, сама спецификация PCI допускает, если я не ошибаюсь, достаточно "плохой" клок. Разводка и т.п. не причем.
Здесь важны только специальные буфера, PLL лишь может скомпенсировать фазу тактирования, то есть увеличить в некоторой степени запас по временам, но для частот PCI это не существенно.
Лучше продумать этот вопрос сразу же, ибо в худшем случае устройство просто не запустится правильно. Да, кроме сброса отдельных доменов устройства, нужно еще и сброс самих PLL продумать.
Вот этот момент, конечно, не удачный... Можно долго провозиться. Причем PLL тут не особо поможет, можно конечно "играть" с фазой, но это не есть правильное решение. Если есть возможность, лучше сразу завести PCI клок на глобальный вход.
См. выше. PLL в данном случае проблему не решает.

С PCI понятно.
Тем более, на уровне тестов, в железе работает.
Logic Analyzer в прошивке показывает правильную запись.
Да и на другой строне вижу в терминале результат циклического запись-чтение.

Цитата(oval @ Jan 10 2008, 21:31) *
Вообще, лучше сразу делать продуманно и правильно, ибо если не повезет, то больше времени потратите на выявление причин. Но может и повести smile.gif

Интересно, есть ли другие мнения на этот счет? :-)
Kopart
Цитата(_Vladimir_ @ Jan 10 2008, 16:26) *
Входной поток - 660 мегабайт/сек

А скорость PCI не слабовата для такого потока?
Хотя PCI может быть чисто ради удобства.
_Vladimir_
Цитата(NiOS @ Jan 11 2008, 15:48) *
А скорость PCI не слабовата для такого потока?
Хотя PCI может быть чисто ради удобства.

Конечно, более чем слабовата.
Но ведь и нет попытки на ходу его перекачивать.
К FPGA привинчено DDR накопитель (сейчас 4 GB).
Работает "старт-стоп" + перекачка на встроенный компьютер с Линуксом.
А на нем подходящий интерфейс - PCI 32x66.
На ходу передача только отдельных "оценочных" фрагментов данных, в темпе, который позволит PCI.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.