|
Как клок коммутируют?, Че-то затык с этим |
|
|
|
 |
Ответов
|
Feb 22 2011, 05:04
|
Знающий
   
Группа: Свой
Сообщений: 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. Но использовать его для данной задачи, ИМХО, неправильно.
|
|
|
|
|
Feb 24 2011, 08:48
|
Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792

|
Цитата(alexPec @ Feb 22 2011, 16:30)  ... М/с - цыклон3, потоки - 20 и 5,18... МГц. На таких частотах можно просто асинхронно мельтиплексировать частоты и всё. В любом случае вы получите битый поток в момент переключения. Если на это все согласны и констрейнты соблюдены - соединяйте напрямую. Если важна целостность данных - то через буферы либо через внешнюю память, как советовали выше.
--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
|
|
|
|
|
Feb 24 2011, 10:53
|
Профессионал
    
Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968

|
Цитата(warrior-2001 @ Feb 24 2011, 11:48)  На таких частотах можно просто асинхронно мельтиплексировать частоты и всё. В любом случае вы получите битый поток в момент переключения. Если на это все согласны и констрейнты соблюдены - соединяйте напрямую. Если важна целостность данных - то через буферы либо через внешнюю память, как советовали выше. Данные да, можно мультиплексировать, и это прокатывает, проверено. В момент переключения пара-тройка битых отсчетов - вообще не беда. А вот когда клок мультиплексируешь, а не напрямую на dma подаешь, тогда беда. Все времянки летят, потому как источники данных работают на оригинальных клоках с PLL, а приемник (SGDMA) на мультиплексированном, а значит задержанном клоке.
|
|
|
|
|
Mar 9 2011, 18:18
|
Местный
  
Группа: Свой
Сообщений: 368
Регистрация: 16-11-06
Из: Тверь
Пользователь №: 22 379

|
Цитата(bogaev_roman @ Mar 9 2011, 20:05)  Долго думали, чтоб формулу вывести? Однако не шибко долго  - Вы видите ее ошибочность? Цитата(bogaev_roman @ Mar 9 2011, 20:05)  Откройте описание на любую современную ПЛИС и посмотрите на архитектуру, там же обычно приводят основные задержки на линии. У меня на стратикс 4, глобальная тактовая от pll тянется на диагональ 4 нс. Интересно понять, как так получается. Не дадите конкретную ссылку по стратикс 4? Для Циклона 3 я такого сходу не нашел. Буду искренне благодарен если ткнете - возможно мое представление не соотвествует реальности.
|
|
|
|
|
Mar 10 2011, 11:52
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(Andr2I @ Mar 9 2011, 21:18)  Однако не шибко долго  - Вы видите ее ошибочность? Для того, чтобы подсчитать время распространения сигнала от точки А до точки Б в данном случае нельзя брать расстояние между ними и умножать на скорость света, ибо: А) - нет прямой диагональной связи от А до Б, сигнал будет переходить через ряды и строки клоковой сети Б) - скорость распространения - не скорость света Цитата Интересно понять, как так получается. Не дадите конкретную ссылку по стратикс 4? Для Циклона 3 я такого сходу не нашел. Честно говоря не нашел, но можете сами создать простейший проект - подать какую-нить тактовую на pll и получившуюся подстроенную частоту (пойдет по сетке тактовых частот) выдать через пин на диагональном конце. Для обычных сигналов ситуация гораздо хуже - там будут десятки нс.
|
|
|
|
|
Mar 10 2011, 12:22
|
Местный
  
Группа: Свой
Сообщений: 368
Регистрация: 16-11-06
Из: Тверь
Пользователь №: 22 379

|
Цитата(bogaev_roman @ Mar 10 2011, 14:52)  А) - нет прямой диагональной связи от А до Б, сигнал будет переходить через ряды и строки клоковой сети Если тупо, то это должно дать множитель корень из 2. Если допустить, что глобальный сигнал ходит по одному ряду несколько раз еще 10 (шибко сомневаюсь однако  ). Цитата(bogaev_roman @ Mar 10 2011, 14:52)  Б) - скорость распространения - не скорость света А что-там за среда? Типовой коэффициент укорочения 1,5. Возможно там 3!!! Но больше ... Цитата(bogaev_roman @ Mar 10 2011, 14:52)  Честно говоря не нашел, но можете сами создать простейший проект - подать какую-нить тактовую на pll и получившуюся подстроенную частоту (пойдет по сетке тактовых частот) выдать через пин на диагональном конце. Для обычных сигналов ситуация гораздо хуже - там будут десятки нс. Вы это в симмуляторе смотрели? Гляну обязательно!
|
|
|
|
|
Mar 10 2011, 12:56
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(Andr2I @ Mar 10 2011, 15:22)  Если тупо, то это должно дать множитель корень из 2. Если допустить, что глобальный сигнал ходит по одному ряду несколько раз еще 10 (шибко сомневаюсь однако  ). Я говорю о том, что чтобы рассчитать задержку от А до Б, требуется взять типовую задержку по столбцу, типовую задержку по строке, подсчитать общее кол-во строк и столбцов ну и перемножить и просумировать. Цитата А что-там за среда? Типовой коэффициент укорочения 1,5. Возможно там 3!!! Но больше ... Теоретики... Цитата Вы это в симмуляторе смотрели? Гляну обязательно! Можно в timequest посмотреть отчет для конкретного сигнала (для quartus), можно сгенерить gate и в sdo файле просмотреть все задержки, можно и на симуляторе посмотреть. Все значения одинаковыми будут (при одинаковых моделях).
|
|
|
|
Сообщений в этой теме
alexPec Как клок коммутируют? Feb 21 2011, 22:15 Shtirlits Какая микросхема?
Правильно использовать clock con... Feb 21 2011, 22:58  Victor® Цитата(alexPec @ Feb 22 2011, 16:30) Ну у... Feb 22 2011, 15:24    Sergey'F Цитата(alexPec @ Feb 24 2011, 13:53) а пр... Mar 6 2011, 20:45     alexPec Цитата(Sergey'F @ Mar 6 2011, 23:45) ... Mar 6 2011, 23:37      Sergey'F Цитата(alexPec @ Mar 7 2011, 02:37) DMA в... Mar 7 2011, 07:46       alexPec Цитата(Sergey'F @ Mar 7 2011, 10:46) ... Mar 7 2011, 09:49     alexadmin Цитата(des00 @ Mar 7 2011, 18:32) это кто... Mar 9 2011, 14:35      des00 Цитата(alexadmin @ Mar 9 2011, 08:35) С с... Mar 9 2011, 16:22       alexadmin Цитата(des00 @ Mar 9 2011, 19:22) я вас у... Mar 10 2011, 12:11        des00 Цитата(alexadmin @ Mar 10 2011, 06:11) Та... Mar 10 2011, 13:36         Andr2I Цитата(bogaev_roman @ Mar 10 2011, 14:52)... Mar 10 2011, 18:53          bogaev_roman Цитата(Andr2I @ Mar 10 2011, 21:53) Как и... Mar 11 2011, 11:12 slawikg ЦитатаПробовал ставить altclkctrl и указывать 2 вх... Feb 23 2011, 13:14 alexPec Цитата(slawikg @ Feb 23 2011, 16:14) Все ... Feb 23 2011, 22:06 slawikg ЦитатаА поподробней можно? С одной стороны это как... Feb 26 2011, 08:58 Anatol' Не знаю как у Альтеры, а у Xilinx есть такой элеме... Mar 4 2011, 06:40 Sergey'F alexadmin, des00, извините, а вы не о разных вещах... Mar 10 2011, 15:07
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|