|
Борьба с TDF, оптимизации задержек при передачи данных |
|
|
|
Sep 13 2014, 16:33
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 16-08-14
Пользователь №: 82 563

|
Добрый день, уважаемые. При проектировании довольно сложных схем для потоковой передачи данных, возникает большая задержка (TDF) между входом и выходом, особенно если используется несколько ПЛИС. С записью данных (в память) проблем нет, но возникают сложности при чтении: данные приходят не сразу, а через несколько тактов. На потоковое чтение это почти не влияет, а при единичном доступе к определенному адресу серьезно падает скорость. Как решается этот вопрос? Есть ли такие проблемы в современных системах?
Прошу простить за возможные неточности. Заранее спасибо.
|
|
|
|
|
 |
Ответов
|
Sep 15 2014, 09:37
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 16-08-14
Пользователь №: 82 563

|
Цитата 1) тактовая частота 125 МГц ? 2) В CPLD шины адреса, данных и т.п. просто скоммутированы с входа на выход, без защелкивания в тригерах? 1) Да, MCU работает на 125. Но, но чтение и запись происходят на 125/2. 2) Да, все летит напрямую. Цитата Задеожка в 2 такта не задаётся внутренним клоком ПЛИС? Да, почти напрямую коммутируется дальше. Цитата Вы вот SDC констрейны какие задали для SP&R проекта? Упс. Я их вообще не указывал. Цитата И на всякий случай уточню - какая задержка распространения сигнала от пина ПЛИС до внутреннего гейта и от гейта на пин. И как учтено время распространения сигнала от входного пина до выходного на ПЛИС в вашей системе? Мне вот 4-12нс на CPLD не кажется чем-то неожиданным.... Задержка pin_to_pin: 8ns, а про pin_to_gate, к сожалению, ничего сказать не могу. Кстати ПЛИС - EPM570. А сигнал проходит еще через мультиплексор внутри ПЛИС; я задумал еще через пару лог.элементов пропустить.
|
|
|
|
|
Sep 15 2014, 09:49
|

Местный
  
Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797

|
Цитата(void F() @ Sep 15 2014, 13:37)  Да, почти напрямую коммутируется дальше. Я бы защелкнул сигнал в ПЛИС, как минимум на входе и на выходе. Тогда задержка в ПЛИС будет составлять заранее известное(а не как у Вас, случайно получившееся) число тактов. А дальше строил бы алгоритм работы MCU с учетом этой известной задержки. Да и вообще не понятно, зачем у Вас на схеме CPLD. Пинов не хватает?
|
|
|
|
|
Sep 15 2014, 11:22
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Цитата(DuHast @ Sep 15 2014, 12:49)  Я бы защелкнул сигнал в ПЛИС, как минимум на входе и на выходе. Тогда задержка в ПЛИС будет составлять заранее известное(а не как у Вас, случайно получившееся) число тактов. Задержки в ПЛИС определяются исключительно констрейнами SDC, хоть явно заданными, хоть неявно (как у автора), а не случайно (неожиданно для автора, который использовал дефолтные значения) и тем более не от наличия\отсутствия тригеров. Цитата(void F() @ Sep 15 2014, 13:34)  К примеру, если задержка будет 16-32ns, это нормально для высокопроизводительной системы? Это некоректно спрашивать. Для той схемы и того шинного протокола что вы реализуете это нормально? Сколько вам надо? вообщето, при скорости чтения 125\2=16нс это выглядит многовато при отсутствии конвеерного доступа к памяти. Это просто понижение производительности в 2 раза. Тут мож имеет смысл понизить скорость до 125\4, зачем по плате гонять высокую частоту...
|
|
|
|
|
Sep 15 2014, 11:29
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 16-08-14
Пользователь №: 82 563

|
Цитата Для той схемы и того шинного протокола что вы реализуете это нормально? Сколько вам надо? вообщето, при скорости чтения 125\2=16нс это выглядит многовато при отсутствии конвеерного доступа к памяти. Это просто понижение производительности в 2 раза. Тут мож имеет смысл понизить скорость до 125\4, зачем по плате гонять высокую частоту... В конец я запутался. Необходимо подумать... а так: сделаю небольшой кэш внутри MCU и DMA, починю констрейны.
Сообщение отредактировал void F() - Sep 15 2014, 11:35
|
|
|
|
Сообщений в этой теме
void F() Борьба с TDF Sep 13 2014, 16:33 krux Цитата(void F() @ Sep 13 2014, 20... Sep 13 2014, 18:06 iosifk Цитата(void F() @ Sep 13 2014, 20... Sep 13 2014, 18:08 krux кэш и prefetch - были рождены как нишевое решение ... Sep 13 2014, 18:50 void F() Большое спасибо за ответы.
Цитатазависит от объемо... Sep 14 2014, 07:41 DuHast Цитата(void F() @ Sep 14 2014, 11... Sep 14 2014, 15:12 RobFPGA Приветствую!
Для начала - если хотите получит... Sep 14 2014, 09:33 void F() ЦитатаА так всем приходится фантазировать на тему ... Sep 14 2014, 17:34 DuHast Цитата(void F() @ Sep 14 2014, 21... Sep 15 2014, 07:06 Torpeda Цитата(void F() @ Sep 14 2014, 20... Sep 15 2014, 07:34  void F() Цитата(DuHast @ Sep 15 2014, 10:49) Я бы... Sep 15 2014, 10:34   DuHast Цитата(void F() @ Sep 15 2014, 14... Sep 15 2014, 10:59   DuHast Цитата(Torpeda @ Sep 15 2014, 15:22) Заде... Sep 15 2014, 12:25    Torpeda Цитата(DuHast @ Sep 15 2014, 15:25) Когда... Sep 15 2014, 12:27     DuHast Цитата(Torpeda @ Sep 15 2014, 16:27) Fmax... Sep 15 2014, 13:15      Torpeda Цитата(DuHast @ Sep 15 2014, 16:15) Перио... Sep 15 2014, 13:45       DuHast Цитата(Torpeda @ Sep 15 2014, 17:45) т.е.... Sep 15 2014, 14:15        Torpeda Цитата(DuHast @ Sep 15 2014, 17:15) 2) ес... Sep 16 2014, 06:22 void F() Обнаружились неполадки с тестовыми платами Очень... Sep 15 2014, 14:34
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|