|
Синхронная работа двух ПЛИС, Как гарантировать работоспособность? |
|
|
|
Mar 31 2014, 13:18
|
Участник

Группа: Участник
Сообщений: 33
Регистрация: 10-10-12
Из: Санкт-Петербург
Пользователь №: 73 890

|
Приветствую всех!
Прошу помощи в следующем вопросе: Есть две ПЛИС. Тактируются от внешнего генератора на 40 МГц. В каждой есть автомат состояний. Задача получить синхронную работу этих автоматов на частоте 10 МГц. Запускает автоматы контроллер на этой же плате. Частота контроллера асинхронна для ПЛИС. Но данные от контроллера пропускаются через два триггера для исключения метастабильных состояний. Это, если кратко.
Сложность в задании временных ограничений или иного, что необходимо в данном случае. Смущает то, что передачи данных между ПЛИС нет. То есть ни под одно описание интерфейса случай вроде бы не подходит.
Если продолжить, то автоматы управляют внешней ОЗУ. Одна ПЛИС перебирает адреса и сидит на старшем байте шины данных, а также управляет ОЗУ. Вторая только на младшем байте шины данных ОЗУ. В соответствии с состоянием автомата, ПЛИСы либо пишут, либо читаю ОЗУ. Та которая "master" работает отлично, "slave" же периодически хандрит. Данные на чтение искажены. Запись еще не проверялась. Временных органичений на эти линии не задано.
|
|
|
|
|
 |
Ответов
|
Mar 31 2014, 14:56
|
Участник

Группа: Участник
Сообщений: 33
Регистрация: 10-10-12
Из: Санкт-Петербург
Пользователь №: 73 890

|
Цитата(o_khavin @ Mar 31 2014, 18:31)  Если есть ноги между чипами, то используйте одну из них для синхросигнала (синхронного сброса) - и всех дел. Единственное, что нужно позаботиться о корректном тайминге при передаче этого сигнала, чтобы он добегал за один такт общего клока. В том ПЛИСе, который будет выдавать этот сигнал, нужно сделать его задержку в один такт перед внутренним использованием. Интересное решение. Спасибо. То есть например сигнал запуска автомата от контроллера пропускаю через два триггера одной ПЛИС и сразу вывожу наружу на вторую ПЛИС. Делаю fast output registr. Он должен на такт добежать до второй ПЛИС. Задаю ограничения чтобы не попасть на метастабильное состояние во второй. И уже здесь по фронту запускается автомат синхронно с автоматом в первой, задержанной после выхода на один такт?
|
|
|
|
|
Mar 31 2014, 15:01
|
Местный
  
Группа: Участник
Сообщений: 230
Регистрация: 29-08-09
Пользователь №: 52 094

|
Цитата(DENth @ Mar 31 2014, 18:56)  Интересное решение. Спасибо. То есть например сигнал запуска автомата от контроллера пропускаю через два триггера одной ПЛИС и сразу вывожу наружу на вторую ПЛИС. Делаю fast output registr. Он должен на такт добежать до второй ПЛИС. Задаю ограничения чтобы не попасть на метастабильное состояние во второй. И уже здесь по фронту запускается автомат синхронно с автоматом в первой, задержанной после выхода на один такт? Да, именно так. Ключевым моментом является как раз правильный тайминг на передаче сигнала между чипами, с соблюдением и setup-а и hold-а. Ну и понятно, что нужно контролировать взаимное разбегание клоков внутри чипов, особенно если используется внутренняя PLL в FPGA.
|
|
|
|
|
Mar 31 2014, 15:11
|
Участник

Группа: Участник
Сообщений: 33
Регистрация: 10-10-12
Из: Санкт-Петербург
Пользователь №: 73 890

|
Цитата(o_khavin @ Mar 31 2014, 19:01)  Да, именно так. Ключевым моментом является как раз правильный тайминг на передаче сигнала между чипами, с соблюдением и setup-а и hold-а. Ну и понятно, что нужно контролировать взаимное разбегание клоков внутри чипов, особенно если используется внутренняя PLL в FPGA. Вот. Про контроль разбежки хотелось бы более подробно, если можно. Как просто пример, если в каждой ПЛИС есть PLL на одинаковую частоту, то эти частоты можно также считать синхронными в обеих ПЛИС? Или нет? А для моего случая все-таки как учесть взаимную разбежку клоков, если интерфейсные констрейны здесь не подходят? Передачи данных, кроме сигнала синхронизации ведь нет. Синхросигналу задаются констрейны только на приемной стороне, чтобы исключить на ней же метастабильное состояние.
|
|
|
|
|
Mar 31 2014, 15:25
|
Местный
  
Группа: Участник
Сообщений: 230
Регистрация: 29-08-09
Пользователь №: 52 094

|
Цитата(DENth @ Mar 31 2014, 19:11)  Вот. Про контроль разбежки хотелось бы более подробно, если можно. Как просто пример, если в каждой ПЛИС есть PLL на одинаковую частоту, то эти частоты можно также считать синхронными в обеих ПЛИС? Или нет? А для моего случая все-таки как учесть взаимную разбежку клоков, если интерфейсные констрейны здесь не подходят? Передачи данных, кроме сигнала синхронизации ведь нет. Синхросигналу задаются констрейны только на приемной стороне, чтобы исключить на ней же метастабильное состояние. Когда то давно, я сидел рядом с умными людьми, которые считали руками тайминг от входа клока до выхода сигналов на каждом FPGA и что-то там придумывали. Но я тогда был молодым падаваном и не помню подробностей.  Общий смысл в том, что надо суммировать все неопределённости от клокового входа до выхода данных на каждом чипе.
|
|
|
|
|
Mar 31 2014, 15:53
|
Участник

Группа: Участник
Сообщений: 33
Регистрация: 10-10-12
Из: Санкт-Петербург
Пользователь №: 73 890

|
Цитата(o_khavin @ Mar 31 2014, 19:25)  Когда то давно, я сидел рядом с умными людьми, которые считали руками тайминг от входа клока до выхода сигналов на каждом FPGA и что-то там придумывали. Но я тогда был молодым падаваном и не помню подробностей.  Общий смысл в том, что надо суммировать все неопределённости от клокового входа до выхода данных на каждом чипе. Почему-то мне кажется, что это нереально. К тому же от компиляции к компиляции задержки будут разниться, как их учесть? А вот кстати как быть при описании ограничений интерфейса с ПЛИСиной, если у всяких ЦАП, АЦП приведены значения tsu, th и tco, то где их брать в этом случае? Или есть какой-нибудь констрейн типа set_output_delay? Цитата(SM @ Mar 31 2014, 19:10)  Я бы сделал не только общий синхронный резет, а, на всякий случай, еще и сигнал перехода автомата в какое-то состояние, которое периодически случается, чтобы один автомат переходил в него не по собственному желанию, а синхронно с другим, как бы "более ведущим".
На 10 МГц, вообще, если хватит этих пинов междуПЛИСовых, так можно автомат в одной ПЛИС держать, и его состояние через эти пины использовать в другой ПЛИС. То есть не делать второй автомат, а просто передат по проводам состояние автомата. Кстати, о таком решении я еще не думал. Если синхронизацию пытался сотворить, правда пока не особо удачно, то это - второй вариант решения, думаю более подходящий. Спасибо за идею! Состояний у атомата немного, пинов хватит.
|
|
|
|
Сообщений в этой теме
DENth Синхронная работа двух ПЛИС Mar 31 2014, 13:18 des00 ИМХО режьте плату и пробрасывайте тактовую и сигна... Mar 31 2014, 13:33 DENth Цитата(des00 @ Mar 31 2014, 17:33) ИМХО р... Mar 31 2014, 13:44 SM Цитата(DENth @ Mar 31 2014, 17:18) . В ка... Mar 31 2014, 15:10 Dmitriyspb Товарищи! Только этот сигнал скорее всего буде... Apr 1 2014, 02:52 SM Цитата(Dmitriyspb @ Apr 1 2014, 06:52) То... Apr 1 2014, 02:55  DENth Цитата(SM @ Apr 1 2014, 06:55) Или, что, ... Apr 1 2014, 06:57   SM Цитата(DENth @ Apr 1 2014, 10:57) Так?
н... Apr 1 2014, 07:12 o_khavin Цитата(Dmitriyspb @ Apr 1 2014, 06:52) То... Apr 1 2014, 04:20  Dmitriyspb Цитата(o_khavin @ Apr 1 2014, 08:20) Где ... Apr 1 2014, 04:53  Serhiy_UA Еще иногда помогает: на одной из ПЛИС автомат по ф... Apr 1 2014, 05:28
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|