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

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

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

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

|
Цитата(des00 @ Mar 31 2014, 17:33)  ИМХО режьте плату и пробрасывайте тактовую и сигналы на другую плис. А еще лучше убрать одну из ПЛИС Убрать ПЛИС не получается. Используем Cyclone II на 208 ног. Но пинов одной не хватает. До BGA пока не доросли. Не совсем понял про тактовую частоту и сигналы. Частота одна на обе ПЛИС. Значит они синхронны. И работать синхронно должны в данном случае, нет? Между ПЛИС заложены порядка 8 незадействованных пинов. Только что в моем случае с ними делать? А, если речь шла про тактовую для ОЗУ... ОЗУ в нашем случае статическая SRAM с доступом 10 нс.
Сообщение отредактировал DENth - Mar 31 2014, 13:46
|
|
|
|
|
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:10
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(DENth @ Mar 31 2014, 17:18)  . В каждой есть автомат состояний. Задача получить синхронную работу этих автоматов на частоте 10 МГц. Запускает автоматы контроллер на этой же плате. Я бы сделал не только общий синхронный резет, а, на всякий случай, еще и сигнал перехода автомата в какое-то состояние, которое периодически случается, чтобы один автомат переходил в него не по собственному желанию, а синхронно с другим, как бы "более ведущим". На 10 МГц, вообще, если хватит этих пинов междуПЛИСовых, так можно автомат в одной ПЛИС держать, и его состояние через эти пины использовать в другой ПЛИС. То есть не делать второй автомат, а просто передат по проводам состояние автомата.
|
|
|
|
|
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 МГц, вообще, если хватит этих пинов междуПЛИСовых, так можно автомат в одной ПЛИС держать, и его состояние через эти пины использовать в другой ПЛИС. То есть не делать второй автомат, а просто передат по проводам состояние автомата. Кстати, о таком решении я еще не думал. Если синхронизацию пытался сотворить, правда пока не особо удачно, то это - второй вариант решения, думаю более подходящий. Спасибо за идею! Состояний у атомата немного, пинов хватит.
|
|
|
|
|
Apr 1 2014, 02:55
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(Dmitriyspb @ Apr 1 2014, 06:52)  Товарищи! Только этот сигнал скорее всего будет прерыванием, а не сбросом. Если сбрасывать ПЛИС, тогда она, как вы прекрасно знаете, переконфигуририруется. Поэтому мне кажется вы пишете сброс, а имеете ввиду прерывание синхронизируещее работу двух устройств?! Не знаю конечно, кто что имел, но лично я имел в виду именно сброс. ПЛИС при этом вовсе не переконфигурируется (и далеко не во всех ПЛИС можно вообще снаружи инициировать реконфигурацию), а сбрасываются только те триггеры в ПЛИС, сигнал сброса которых подключен к этой цепи сброса. Для автора, дополнение к предыдущему высказыванию по теме единого автомата на обе ПЛИС... Или, что, вероятно эффективнее, передавайте не выходные сигналы автомата, а входные, защелкивая их триггерами в I/O ячейках во второй ПЛИС. При этом надо будет описать жестко и output delay, и input delay, чтобы четко соблюсти все временные ограничения. При таком решении запас по времени во второй ПЛИС будет выше, если, конечно, хватит запаса по output delay в первой ПЛИС. То есть, опишите автомат двумя блоками, комбинаторным и регистровым, и выходы комбинаторного блока заведите наружу, а во второй ПЛИС сделайте аналогичный регистровый блок, как в первой.
|
|
|
|
|
Apr 1 2014, 04:20
|
Местный
  
Группа: Участник
Сообщений: 230
Регистрация: 29-08-09
Пользователь №: 52 094

|
Цитата(Dmitriyspb @ Apr 1 2014, 06:52)  Товарищи! Только этот сигнал скорее всего будет прерыванием, а не сбросом. Если сбрасывать ПЛИС, тогда она, как вы прекрасно знаете, переконфигуририруется. Поэтому мне кажется вы пишете сброс, а имеете ввиду прерывание синхронизируещее работу двух устройств?! Цитата используйте одну из них для синхросигнала (синхронного сброса) Где тут про переконфигурирование говорится? В культурных системах отдельный логический сброс присутствует. Синхронный. И про это тёрли уже неоднократно и многостранично. Кроме того, никто не запрещает использовать этот сигнал удобным образом, потому слово "сброс" и было в скобочках, т.к. это только один из вариантов. P.S. Вот ТС меня почему то понял с первого раза, про что и написал в своём ответе.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|