|
Две MAX II CPLD, нужна синхронная работа обоих мс |
|
|
|
Jun 25 2015, 14:42
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(Shivers @ Jun 25 2015, 10:39)  Правильно вам посоветовали. 20нс - очень медленное нарастание сигнала - может случиться так, что в одной ПЛИС сработает по порогу в этом такте, в а другой ПЛИС в следующем. Получите рассинхронизацию в один такт. Это я понял. Возражений не имею. Триггер нужен обязательно. Но мне кажется что достаточно всего одного триггера. Цитата(Shivers @ Jun 25 2015, 10:39)  Выход один - сброс пропустить через два триггера, и синхронизированный завести в обе ПЛИС. Не забудьте убедиться что синхронный сброс дошел менее чем за один период до обеих ПЛИС (ПЛИС или CPLD, не суть важно). Зачем два триггера? Второй триггер только для борьбы с возможной один раз в 473 млн. лет метастабильностью первого? Ну даже если триггер войдёт в состояние метастабильности он всёравно из этого состояния "вывалится" либо в ноль либо в единицу. Какая мне разница запустится альтера на один такт раньше или позже. Цитата(XVR @ Jun 25 2015, 12:36)  А вот с этого и стоило начинать. Если допускается сброс максов в процессе работы, то вариант с контролем их синхронности и последующим ресинхронизирующим сбросом вполне нормальное решение. Но триггер шмита на вход и синхронизирующие триггера на ресет очень желательны. И контроль за рассинхронизацией так же желательно сделать внутри одного из максов. К сожалению мк не может контролировать синхронность работы плисок. Мк работает на 32 Mhz. Он может лишь определить работают ли они в принципе. Я был неправ, повторный сброс ничего не даст. Цитата(XVR @ Jun 25 2015, 12:36)  Прошивка у максов может быть одинаковая - просто часть ее (синхронизация и контроль) будут использоваться только в одном их максов (а присутствовать могут в обоих, не помешает). А вот разводку придется менять, увы. А вот это не могу представить как сделать. Но в любом случае придётся прошивки менять, а я хочу сохранить текущую. Поэтому придётся добавлять внешний триггер. Хочу добавить всего один триггер что-то типа этого 74LVC1G79 и корпус SOT353-1 нравится.(найти бы еще сразу с инверсным входом клока). А мне говорят что нужно два добавлять. И я пытаюсь понять зачем два.
|
|
|
|
|
Jun 25 2015, 18:10
|
Знающий
   
Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737

|
Цитата(zombi @ Jun 25 2015, 17:42)  Но в любом случае придётся прошивки менять, а я хочу сохранить текущую. Поэтому придётся добавлять внешний триггер. Хочу добавить всего один триггер что-то типа этого 74LVC1G79 и корпус SOT353-1 нравится.(найти бы еще сразу с инверсным входом клока). А мне говорят что нужно два добавлять. И я пытаюсь понять зачем два. Если вы можете себе позволить менять плату, то добавляйте два триггера. Два нужны для подавления метастабильности. Поверьте, если вы меняете плату из-за одного триггера (и номенклатуру компонентов), то не экономьте на мелочах, ставьте два триггера. Что касается одинаковой прошивки для обеих ПЛИС, то это возможно, но разводка у них будет разная. Самый простой вариант - это та же пара синхронизирующих триггеров внутри первой ПЛИС, а та же пара внутри второй просто не будет задействована.
|
|
|
|
|
Jun 25 2015, 19:02
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(dvladim @ Jun 25 2015, 21:10)  Что касается одинаковой прошивки для обеих ПЛИС, то это возможно, но разводка у них будет разная. Самый простой вариант - это та же пара синхронизирующих триггеров внутри первой ПЛИС, а та же пара внутри второй просто не будет задействована. Уровнем на пине коммутировать сигнал сброса? Т.е. или сброс поступает на первый или сразу на третий триггер? Или ещё как?
Прикрепленные изображения
|
|
|
|
|
Jun 26 2015, 09:58
|

Знающий
   
Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402

|
Вход у счётчика инверсным не делал, учёл в И-Не.
Оба входа reset делаем с триггером Шмитта, обоим назначаем резистивную подтяжку к питанию. У "ведущей" плиски внешний сброс подводим на пин reset_master, вход reset_slave_in оставляем просто висеть в воздухе (или, по желанию, цепляем к питанию), выход reset_slave_out тащим к "ведомой" дорожкой. У "ведомой" вход reset_master оставляем висеть в воздухе (или подключаем к питанию), а на вход reset_slave_in подключаем выход от "ведущей", вывод reset_slave_out оставляем висеть в воздухе. Таким образом, мы, конечно, теряем в ножках, но выигрываем в идентичности прошивки. p.s. кстати, Вы знаете, что у Вас на выходах lpm_decoder в моменты переключения счётчика возникают "иголки"? Если их использовать далее без синхронизации, то может быть чёрти-что...
--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
|
|
|
|
|
Jun 26 2015, 14:25
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(EvgenyNik @ Jun 26 2015, 12:58)  p.s. кстати, Вы знаете, что у Вас на выходах lpm_decoder в моменты переключения счётчика возникают "иголки"? Если их использовать далее без синхронизации, то может быть чёрти-что... Конечно знаю, без синхронизации не использую. Выходы декодера и дальнейшие производные подключены только на разрешающие входы триггеров. А clk абсолютно всех триггеров подключены исключительно к одной глобальной входной частоте. Т.о. я думаю что получил синхронный проект. Вроде работает как задумывал. Чип "забит" на 96%. Но ноги свободные есть. Цитата(Shivers @ Jun 26 2015, 14:05)  Сброс с кнопки завести только на одну из ПЛИС, и выход второго триггера вывести наружу - это будет синхронная цепь сброса. И уже эту цепь завести на реальные входы сброса обеих ПЛИС. Прошивки будут одинаковые. Ага, получится как будто два внешних отдельно стоящих триггера. Только находиться они будут в максе. Прикольно.
|
|
|
|
|
Jun 29 2015, 08:47
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(zombi @ Jun 25 2015, 17:42)  Но в любом случае придётся прошивки менять, а я хочу сохранить текущую. Поэтому придётся добавлять внешний триггер. Т.е. вместо того, что бы добавить пару строк verilog кода в прошивку MAX'а вы хотите поставить 2 физических корпуса снаружи Почему нельзя изменить прошивку? Цитата К сожалению мк не может контролировать синхронность работы плисок. Мк работает на 32 Mhz. Он может лишь определить работают ли они в принципе. Я был неправ, повторный сброс ничего не даст. Это определять должен сам MAX, и сообщать МК, что нужно всех сбросить. Но прошивку в придется конечно дорабатывать Цитата А вот это не могу представить как сделать. У вас есть незадействованные ножки у MAX'ов? И сколько штук. И сколько ресурсов внутри MAX'ов свободно? Исходя из этого можно прикинуть как реализовать синхронизацию
|
|
|
|
|
Jun 29 2015, 09:46
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(XVR @ Jun 29 2015, 11:47)  Т.е. вместо того, что бы добавить пару строк verilog кода в прошивку MAX'а вы хотите поставить 2 физических корпуса снаружи Почему нельзя изменить прошивку? Большого опыта работы с альтерой не имею. Языков не знаю. Просто рисую блок-схему. Любое изменение в проекте приводит к его неработоспособности. Времени на разбирательство почему так происходит нету. После очередной компиляции заработало как надо и больше трогать ничего не хочу. Проблему решил без изменения прошивки и добавления триггеров. Всем спасибо. В изделии эти две альтеры грубо говоря осуществляют пересылку данных из общего источника каждая в свою внешнюю RAM. Есть еще и третья альтера которая получает сигнал окончания пересылки от каждой, работает на той же частоте и сообщает мк о завершении операции. Вот ее прошивку я и поменял. Добавил еще проверку на синхронное окончание операции с последующим информированием мк. А мк даёт одновременно одинаковую команду обоим альтерам и в случае не синхронного окончания формирует сброс. И так до тех пор пока несколько раз подряд не получит синхронного завершения. Вот так вот всё намутил
|
|
|
|
|
Jun 29 2015, 11:05
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(zombi @ Jun 29 2015, 12:46)  Любое изменение в проекте приводит к его неработоспособности. А вот это очень и очень не хорошо Цитата Времени на разбирательство почему так происходит нету. После очередной компиляции заработало как надо и больше трогать ничего не хочу.  Вы уверены, что оно 'работает как надо'? Вы тесты (в системе моделирования) делали? А констрейны при синтезе задавали? Если нет, то ваши MAX'ы сломаются в самый неподходящий момент. Цитата А мк даёт одновременно одинаковую команду обоим альтерам и в случае не синхронного окончания формирует сброс. И так до тех пор пока несколько раз подряд не получит синхронного завершения. Тоже вариант, вполне рабочий. Проверьте только, с какой попытки происходит успешная запись. В 99.999% случаев должно быть с первой же. Если это не так, то что то все же добавить придется
|
|
|
|
|
Jun 29 2015, 11:43
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(XVR @ Jun 29 2015, 14:05)  Тоже вариант, вполне рабочий. Проверьте только, с какой попытки происходит успешная запись. В 99.999% случаев должно быть с первой же. Если это не так, то что то все же добавить придется  Именно так и получается как правило с первой попытки всё ок. Для проверки работоспособности сделал наоборот. Добиваюсь именно не синхронного запуска. Для увеличения вероятности не синхронного старта подал еще и на вход разрешения внешнего генератора 120MHz тот же сброс. И считаю количество сбросов. В 100% случаях в результате наблюдаю не синхронную работу максов. Количество сбросов как правило 10-20 редко бывает и больше 60. Цитата(XVR @ Jun 29 2015, 14:05)  Вы уверены, что оно 'работает как надо'? Вы тесты (в системе моделирования) делали? А констрейны при синтезе задавали? Если нет, то ваши MAX'ы сломаются в самый неподходящий момент. Результат работы наблюдаю визуально на мониторе. Пока на двух изделиях всё гуд. Возможно в партии чего и вылезет. Никакие констрейны при синтезе не задавал. Не умею этого делать. Только некоторым группам регистров указал fast output и режим компиляции speed.
|
|
|
|
|
Jun 30 2015, 07:56
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(zombi @ Jun 29 2015, 14:43)  Никакие констрейны при синтезе не задавал. Не умею этого делать. Ой. Срочно научитесь - это не сложно. В вашем случае хватит пары строк (не знаю, где это прописывается у Alter'ы, сам работаю с Xiinx) Цитата Результат работы наблюдаю визуально на мониторе. Пока на двух изделиях всё гуд. Возможно в партии чего и вылезет. То, что онь работает 'на мониторе' на вашем столе совершенно не показатель. В партии обязательно что нибудь вылезет. Тем более, что вы работаете на довольно высоких (для MAX) частотах.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|