vitan 2 June 16, 2011 Posted June 16, 2011 · Report post Меня тут спросили, как на плисине сделать приемник\десериализатор, у которого единицы принимаются в виде перепадов на одной линии, а нули - на другой. Клоков нет, частота не известна и плавает. Ниасилил... :crying: Quote Share this post Link to post Share on other sites More sharing options...
nikolascha 0 June 16, 2011 Posted June 16, 2011 · Report post Меня тут спросили, как на плисине сделать приемник\десериализатор, у которого единицы принимаются в виде перепадов на одной линии, а нули - на другой. Клоков нет, частота не известна и плавает. Ниасилил... :crying: Популярный вопросик... Quote Share this post Link to post Share on other sites More sharing options...
vitan 2 June 16, 2011 Posted June 16, 2011 · Report post Популярный вопросик... Да? Давно не занимался вплотную плисами... А ответ же какой? Quote Share this post Link to post Share on other sites More sharing options...
nikolascha 0 June 16, 2011 Posted June 16, 2011 · Report post Да? Давно не занимался вплотную плисами... А ответ же какой?Ответов много, т.к. задача сформулирована не точно, поэтому правильный ответ не знает только автор вопроса... Quote Share this post Link to post Share on other sites More sharing options...
vitan 2 June 16, 2011 Posted June 16, 2011 · Report post Ответов много, т.к. задача сформулирована не точно, поэтому правильный ответ не знает только автор вопроса... Вот и у меня такое же впечатление сложилось. Я им сделал проектик, в котором был клок, но не со стороны приемной линии (где эти два сигнала), а со стороны десериализатора. Ну разве будет кто-то совсем без клока-то работать? Не понравилось... Аж зацепило, блин. Ночами не сплю теперь, перепады мерещатся... :) Или там суть, что перепады могут быть только одного направления, например, из 0 в 1? Я-то делал для двух сразу... Quote Share this post Link to post Share on other sites More sharing options...
Буратино 0 June 16, 2011 Posted June 16, 2011 · Report post Меня тут спросили, как на плисине сделать приемник\десериализатор, у которого единицы принимаются в виде перепадов на одной линии, а нули - на другой. Клоков нет, частота не известна и плавает. Ниасилил... :crying: Может быть выделить переходы (ну что-то типа прерывания по фронту спадающему/нарастающему должно же быть в этих плисах), в моменты переходов формировать короткие импульсы, которые подавать на входы R и S асинхронного RS триггера. Я слышал что в плисах есть такое дело. Допустим коротким импульсом на S входе перебрасываем триггер в единичное состояние, и храним. Коротким импульсом на R входе перебрасываем в нулевое состояние и храним. Храним - это когда на обоих входах лог. 0 например. На выходе будет сигнал у которого единицы принимаются в виде перепадов на одной линии, а нули - на другой. Сформированные перепады и тип логики триггера, должны быть так выбраны, чтоб не допускать неопределенного состояния триггера. Quote Share this post Link to post Share on other sites More sharing options...
vitan 2 June 16, 2011 Posted June 16, 2011 · Report post Сформированные перепады и тип логики триггера, должны быть так выбраны, чтоб не допускать неопределенного состояния триггера. Ага, в этом есть некоторые трудности. :) Точнее, трудности не в том, чтобы не подавать одновременно на входы S и R (это можно искусственно заблокировать дополнительной логикой), а в том, откуда брать эти самые "короткие" импульсы. Вот пришел перепад 0-1, вот подали его на S, а сбросить само S обратно как? Это же надо успеть сделать до прихода следующего перепада. Хотя... Если, допустим, его не сбрасывать, а держать до появления события во второй линии... И сбрасывать только после этого... И дополнительной логикой блокировать состояние, когда R и S оба равны 1... Но тогда получается, что можно пропустить первый бит в линии (если исходное состояние обеих линий равно 1, то логика будет блокировать работу триггера). В общем, ниасилить без клоков че-то... :crying: Да и надо ли? :) Quote Share this post Link to post Share on other sites More sharing options...
Буратино 0 June 16, 2011 Posted June 16, 2011 · Report post Ага, в этом есть некоторые трудности. :) Точнее, трудности не в том, чтобы не подавать одновременно на входы S и R (это можно искусственно заблокировать дополнительной логикой), а в том, откуда брать эти самые "короткие" импульсы. Вот пришел перепад 0-1, вот подали его на S, а сбросить само S обратно как? Это же надо успеть сделать до прихода следующего перепада. Хотя... Если, допустим, его не сбрасывать, а держать до появления события во второй линии... И сбрасывать только после этого... И дополнительной логикой блокировать состояние, когда R и S оба равны 1... Но тогда получается, что можно пропустить первый бит в линии (если исходное состояние обеих линий равно 1, то логика будет блокировать работу триггера). В общем, ниасилить без клоков че-то... :crying: Да и надо ли? :) Ну я с ПЛИС к сож. не имел дела, но просто на логике можно построить такое дело. Quote Share this post Link to post Share on other sites More sharing options...
vitan 2 June 16, 2011 Posted June 16, 2011 · Report post Ну я с ПЛИС к сож. не имел дела, но просто на логике можно построить такое дело. Дык ПЛИС это логика и есть. Как строить будете? Эти короткие импульсы формировать на задержках на десяти инверторах? Это не наш метод. Хотя, может быть в этом и был тайный смысл задачи? Типа посмотреть, а может ли человек путем всяко-разных техник мануального расположения ячеек в плисине и задания констрейнов создавать полностью асинхронные проекты. Это что, ныне считается верхом мастерства? Quote Share this post Link to post Share on other sites More sharing options...
Буратино 0 June 16, 2011 Posted June 16, 2011 · Report post Дык ПЛИС это логика и есть. Как строить будете? Эти короткие импульсы формировать на задержках на десяти инверторах? Это не наш метод. Если в целом вариант принять за основу, то можно и не на 10ти инверторах. Как вариант можно задействовать одновибратор с запуском по фронту. Но это усложняет решение, мне кажется можно и нужно проще. Quote Share this post Link to post Share on other sites More sharing options...
vitan 2 June 16, 2011 Posted June 16, 2011 · Report post Если в целом вариант принять за основу, то можно и не на 10ти инверторах. Как вариант можно задействовать одновибратор с запуском по фронту. Но это усложняет решение, мне кажется можно и нужно проще. Ха, так ведь этот одновибратор должен как-то мерять время, не так ли? Припоминаю, что, например, в 555 используются конденсаторы и компараторы. Но в ПЛИС конденсатор не вставишь, это правда. В общем, я хочу сказать, что предлагаемое Вами решение основано на измерении интервала времени, меньшего, чем интервал между двумя перепадами на одной линии. Я поступил точно так же, только вместо вибратора использовал внешний клок. По сути это то же самое, согласитесь. Получилось ровно 6 триггеров (это с учетов, что на двух реализован еще и передатчик). Quote Share this post Link to post Share on other sites More sharing options...
MikleKlinkovsky 5 June 16, 2011 Posted June 16, 2011 · Report post но есть ошибка в выходной части ;) Quote Share this post Link to post Share on other sites More sharing options...
vitan 2 June 16, 2011 Posted June 16, 2011 · Report post но есть ошибка в выходной части ;) А что это за элемент такой большой с четырьмя входами? XOR? И что за ошибка? Quote Share this post Link to post Share on other sites More sharing options...
MikleKlinkovsky 5 June 16, 2011 Posted June 16, 2011 · Report post А что это за элемент такой большой с четырьмя входами? XOR? Да XOR (элемент считает чётность). вариант без ошибки: :) Quote Share this post Link to post Share on other sites More sharing options...
vitan 2 June 16, 2011 Posted June 16, 2011 · Report post Да XOR (элемент считает чётность). Это, в смысле, три XOR-а? Четыре входа - как-то многовато... Вообще, идея понятна, и о подобном я тоже думал, но не стал пытаться реализовать, т.к. уверен, что будет глючить. Как бы телега впереди лошади. Я тоже использовал восстановление клока в линии по XOR (внизу), но мне не удалось обойтись без формирования этих пресловутых коротких импульсов. А для этого понадобился внешний сигнал, для простоты я его сделал периодическим, т.е. клок. А вариант без ошибки - это как? Зачем нам два выхода? Quote Share this post Link to post Share on other sites More sharing options...