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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Как клок коммутируют?, Че-то затык с этим
alexPec
сообщение Feb 21 2011, 22:15
Сообщение #1


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Добрый день всем. Подскажите, а как клок коммутировать? Хочу на sgdma подавать данные с разных источников. данные скоммутировать проблем нет-мультиплексором, а каждый источник данных свой клок имеет, и его надо на sgdma подавать. Переходные процессы при коммутировании значения не имеют. Если через логику - типа "И" - так ведь задержка на этом И будет, и на выходе совсем другой клок, сдвинутый уже, а оба источника - синхронные схемы. Вобщем неправильным такой способ мне кажется. Пробовал ставить altclkctrl и указывать 2 входа - ругается, говорит что на входы с клоковых ног подавать надо. А у меня оба клока с плл-ов идут. Как быть?

Сообщение отредактировал alexPec - Feb 21 2011, 22:16
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Feb 21 2011, 22:58
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Какая микросхема?
Правильно использовать clock control block.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Feb 22 2011, 05:04
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(alexPec @ Feb 22 2011, 04:15) *
Добрый день всем. Подскажите, а как клок коммутировать? Хочу на sgdma подавать данные с разных источников. данные скоммутировать проблем нет-мультиплексором, а каждый источник данных свой клок имеет, и его надо на sgdma подавать. Переходные процессы при коммутировании значения не имеют. Если через логику - типа "И" - так ведь задержка на этом И будет, и на выходе совсем другой клок, сдвинутый уже, а оба источника - синхронные схемы. Вобщем неправильным такой способ мне кажется. Пробовал ставить altclkctrl и указывать 2 входа - ругается, говорит что на входы с клоковых ног подавать надо. А у меня оба клока с плл-ов идут. Как быть?

Всё зависит от того, насколько быстрые потоки идут с каждого из ваших источников данных. Если потоки не слишком быстрые (по сравнению со скоростью DMA) то можно использовать "простой" способ, а именно : между источником и доменом клоков DMA ставятся фифошки с асинхронными клоками(по входу - клоки источников, по выходу - клоки DMA) для приведения к одному клоковому домену (DMA). Далее делается арбитр, который будет разруливать входящие потоки с фифошек и по очереди отправлять их на DMA машину. Тут необходимо ещё озадачиться проблемой как такую "колбасу" из данных потом в хосте разгребать, т.е. понимать где чьи данные в мультиплексированном потоке.Если потоки достаточно серьёзные (маденьких фифошек, построенных на RAM блочках уже не хвататет - они переполняются), то есть более сложная схема : тут нужен контроллер памяти (как правило DDR). Источники данных через промежуточные фифошки пишут данные в память (каждый - в свой буфер, буфер моежт быть круговым) и выдают наружу флажки заполненности для каждого конкретного буфера. Хост также имеет доступ к DDR через отдельный порт контроллера. Хост при необходимости (по флажкам, прерываниям и т д) заряжает DMA на область данных в DDR, где лежат данные источников. Буфера обслуживаются последовательно. DMA машинка работает только в памятью DDR. Схема посложнее будет, кроме того необходимо построить всё так, чтобы связка DDR controller - DMA engine работала с максимальной производительностью. Там есть хитрые моменты, связанные с латентностью DDR, особенно актуально при чтении из внешней памяти.
Для тупого мультиплексирования клоков у Xilinx есть макрос BUFGMUX. Но использовать его для данной задачи, ИМХО, неправильно.
Go to the top of the page
 
+Quote Post
alexPec
сообщение Feb 22 2011, 13:30
Сообщение #4


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Ну у меня все проще - надо коммутировать поток данных на ДМА либо до фильтра с интерполятором, либо после, т.е. коммутируется поток. Причем скоммутировали один раз (выбрали источник) и забыли до тех пор пока пункт в меню не поменяется (переключение режима). Поэтому переходные процессы при коммутировании не важны - переключение режимов относительно редко происходит. М/с - цыклон3, потоки - 20 и 5,18... МГц.

Сообщение отредактировал alexPec - Feb 22 2011, 13:31
Go to the top of the page
 
+Quote Post
Victor®
сообщение Feb 22 2011, 15:24
Сообщение #5


Lazy
******

Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76



Цитата(alexPec @ Feb 22 2011, 16:30) *
Ну у меня все проще - надо коммутировать поток данных на ДМА либо до фильтра с интерполятором, либо после, т.е. коммутируется поток. Причем скоммутировали один раз (выбрали источник) и забыли до тех пор пока пункт в меню не поменяется (переключение режима). Поэтому переходные процессы при коммутировании не важны - переключение режимов относительно редко происходит. М/с - цыклон3, потоки - 20 и 5,18... МГц.


Посмотрите либу примитивов - там наверняка есть какой-то "клок мукс"


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
slawikg
сообщение Feb 23 2011, 13:14
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 31-07-06
Пользователь №: 19 224




Цитата
Пробовал ставить altclkctrl и указывать 2 входа - ругается, говорит что на входы с клоковых ног подавать надо. А у меня оба клока с плл-ов идут. Как быть?


Все коммутируемые плл должны быить от глобальных клоковых входов одной стороны.
Go to the top of the page
 
+Quote Post
alexPec
сообщение Feb 23 2011, 22:06
Сообщение #7


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(slawikg @ Feb 23 2011, 16:14) *
Все коммутируемые плл должны быить от глобальных клоковых входов одной стороны.

А поподробней можно? С одной стороны это как? У меня надо коммутировать клоки с двух разных внутренних PLL. А он то ругается что вообще на эту altclkctrl клоки только снаружи можно подавать.
Go to the top of the page
 
+Quote Post
warrior-2001
сообщение Feb 24 2011, 08:48
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792



Цитата(alexPec @ Feb 22 2011, 16:30) *
... М/с - цыклон3, потоки - 20 и 5,18... МГц.

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


--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
Go to the top of the page
 
+Quote Post
alexPec
сообщение Feb 24 2011, 10:53
Сообщение #9


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(warrior-2001 @ Feb 24 2011, 11:48) *
На таких частотах можно просто асинхронно мельтиплексировать частоты и всё. В любом случае вы получите битый поток в момент переключения. Если на это все согласны и констрейнты соблюдены - соединяйте напрямую. Если важна целостность данных - то через буферы либо через внешнюю память, как советовали выше.

Данные да, можно мультиплексировать, и это прокатывает, проверено. В момент переключения пара-тройка битых отсчетов - вообще не беда. А вот когда клок мультиплексируешь, а не напрямую на dma подаешь, тогда беда. Все времянки летят, потому как источники данных работают на оригинальных клоках с PLL, а приемник (SGDMA) на мультиплексированном, а значит задержанном клоке.
Go to the top of the page
 
+Quote Post
slawikg
сообщение Feb 26 2011, 08:58
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 31-07-06
Пользователь №: 19 224



Цитата
А поподробней можно? С одной стороны это как? У меня надо коммутировать клоки с двух разных внутренних PLL. А он то ругается что вообще на эту altclkctrl клоки только снаружи можно подавать.

Наверно неполучиться.
Цитата
А вот когда клок мультиплексируешь, а не напрямую на dma подаешь, тогда беда. Все времянки летят, потому как источники данных работают на оригинальных клоках с PLL, а приемник (SGDMA) на мультиплексированном, а значит задержанном клоке.

ЛЮТ это ПЗУ совсеми вытекающими последствиями.
Go to the top of the page
 
+Quote Post
Anatol'
сообщение Mar 4 2011, 06:40
Сообщение #11


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 28-01-10
Из: Новосибирск
Пользователь №: 55 106



Не знаю как у Альтеры, а у Xilinx есть такой элемент - BUFGMUX - мультиплексор на глобальных клоковых линиях.
Go to the top of the page
 
+Quote Post
Sergey'F
сообщение Mar 6 2011, 20:45
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660



Цитата(alexPec @ Feb 24 2011, 13:53) *
а приемник (SGDMA) на мультиплексированном, а значит задержанном клоке.

А этот DMA в составе системы на кристалле? Не знаю, как Вы пересинхронизируете дальше, т.е. в каком домене находится приемник. Но не лучше ли поставить DMA в домене приемника? Тогда на входе DMA ставится мультиплексор, а перед ним по каждому входу ставится логика перехода между тактовыми импульсами - один блок с 20МГц, другой с 5.18МГц в домен тактового импульса DMA и приемника.
Go to the top of the page
 
+Quote Post
alexPec
сообщение Mar 6 2011, 23:37
Сообщение #13


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(Sergey'F @ Mar 6 2011, 23:45) *
А этот DMA в составе системы на кристалле? Не знаю, как Вы пересинхронизируете дальше, т.е. в каком домене находится приемник. Но не лучше ли поставить DMA в домене приемника? Тогда на входе DMA ставится мультиплексор, а перед ним по каждому входу ставится логика перехода между тактовыми импульсами - один блок с 20МГц, другой с 5.18МГц в домен тактового импульса DMA и приемника.

DMA в домене приемника, на клоке 80 МГц, между дма и источниками стоит фифо двухклоковое входной - источник, выходной - дма (80мгц). Так вот я пробовал коммутировать клок логическим И от источников на клок входного потока фифо - не катит.
Go to the top of the page
 
+Quote Post
Sergey'F
сообщение Mar 7 2011, 07:46
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660



Цитата(alexPec @ Mar 7 2011, 02:37) *
DMA в домене приемника, на клоке 80 МГц, между дма и источниками стоит фифо двухклоковое входной - источник, выходной - дма (80мгц). Так вот я пробовал коммутировать клок логическим И от источников на клок входного потока фифо - не катит.

Если хватит памяти, то идеологически правильнее поставить два двухклоковых FIFO с разными входными частотами, а мультиплексировать их выход, который у обоих будет читаться на частоте 80МГц.


Как вариант, так как переключение осуществляется редко, можно попробовать поиграть с переконфигурацией PLL. Т.е. сделать выход, у которого частота и фаза (через множители, выбор входного ТИ и т.д.) будут определяться загруженной конфигурацией.
Go to the top of the page
 
+Quote Post
alexPec
сообщение Mar 7 2011, 09:49
Сообщение #15


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(Sergey'F @ Mar 7 2011, 10:46) *
Как вариант, так как переключение осуществляется редко, можно попробовать поиграть с переконфигурацией PLL. Т.е. сделать выход, у которого частота и фаза (через множители, выбор входного ТИ и т.д.) будут определяться загруженной конфигурацией.


Спасибо, про реконфигурацию ПЛЛ не подумал как-то, тоже вариант.
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 - 08:25
Рейтинг@Mail.ru


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