Перейти к содержанию
    

Меня тут спросили, как на плисине сделать приемник\десериализатор, у которого единицы принимаются в виде перепадов на одной линии, а нули - на другой. Клоков нет, частота не известна и плавает.

Ниасилил... :crying:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Меня тут спросили, как на плисине сделать приемник\десериализатор, у которого единицы принимаются в виде перепадов на одной линии, а нули - на другой. Клоков нет, частота не известна и плавает.

Ниасилил... :crying:

Популярный вопросик...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Популярный вопросик...

Да? Давно не занимался вплотную плисами... А ответ же какой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да? Давно не занимался вплотную плисами... А ответ же какой?
Ответов много, т.к. задача сформулирована не точно, поэтому правильный ответ не знает только автор вопроса...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ответов много, т.к. задача сформулирована не точно, поэтому правильный ответ не знает только автор вопроса...

Вот и у меня такое же впечатление сложилось. Я им сделал проектик, в котором был клок, но не со стороны приемной линии (где эти два сигнала), а со стороны десериализатора. Ну разве будет кто-то совсем без клока-то работать? Не понравилось... Аж зацепило, блин. Ночами не сплю теперь, перепады мерещатся... :)

Или там суть, что перепады могут быть только одного направления, например, из 0 в 1? Я-то делал для двух сразу...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Меня тут спросили, как на плисине сделать приемник\десериализатор, у которого единицы принимаются в виде перепадов на одной линии, а нули - на другой. Клоков нет, частота не известна и плавает.

Ниасилил... :crying:

 

Может быть выделить переходы (ну что-то типа прерывания по фронту спадающему/нарастающему должно же быть в этих плисах), в моменты переходов формировать короткие импульсы, которые подавать на входы R и S асинхронного RS триггера. Я слышал что в плисах есть такое дело.

Допустим коротким импульсом на S входе перебрасываем триггер в единичное состояние, и храним. Коротким импульсом на R входе перебрасываем в нулевое состояние и храним. Храним - это когда на обоих входах лог. 0 например.

На выходе будет сигнал у которого единицы принимаются в виде перепадов на одной линии, а нули - на другой.

Сформированные перепады и тип логики триггера, должны быть так выбраны, чтоб не допускать неопределенного состояния триггера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сформированные перепады и тип логики триггера, должны быть так выбраны, чтоб не допускать неопределенного состояния триггера.

Ага, в этом есть некоторые трудности. :)

Точнее, трудности не в том, чтобы не подавать одновременно на входы S и R (это можно искусственно заблокировать дополнительной логикой), а в том, откуда брать эти самые "короткие" импульсы. Вот пришел перепад 0-1, вот подали его на S, а сбросить само S обратно как? Это же надо успеть сделать до прихода следующего перепада.

Хотя... Если, допустим, его не сбрасывать, а держать до появления события во второй линии... И сбрасывать только после этого... И дополнительной логикой блокировать состояние, когда R и S оба равны 1... Но тогда получается, что можно пропустить первый бит в линии (если исходное состояние обеих линий равно 1, то логика будет блокировать работу триггера). В общем, ниасилить без клоков че-то... :crying: Да и надо ли? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага, в этом есть некоторые трудности. :)

Точнее, трудности не в том, чтобы не подавать одновременно на входы S и R (это можно искусственно заблокировать дополнительной логикой), а в том, откуда брать эти самые "короткие" импульсы. Вот пришел перепад 0-1, вот подали его на S, а сбросить само S обратно как? Это же надо успеть сделать до прихода следующего перепада.

Хотя... Если, допустим, его не сбрасывать, а держать до появления события во второй линии... И сбрасывать только после этого... И дополнительной логикой блокировать состояние, когда R и S оба равны 1... Но тогда получается, что можно пропустить первый бит в линии (если исходное состояние обеих линий равно 1, то логика будет блокировать работу триггера). В общем, ниасилить без клоков че-то... :crying: Да и надо ли? :)

 

Ну я с ПЛИС к сож. не имел дела, но просто на логике можно построить такое дело.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну я с ПЛИС к сож. не имел дела, но просто на логике можно построить такое дело.

Дык ПЛИС это логика и есть. Как строить будете? Эти короткие импульсы формировать на задержках на десяти инверторах? Это не наш метод. Хотя, может быть в этом и был тайный смысл задачи? Типа посмотреть, а может ли человек путем всяко-разных техник мануального расположения ячеек в плисине и задания констрейнов создавать полностью асинхронные проекты. Это что, ныне считается верхом мастерства?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дык ПЛИС это логика и есть. Как строить будете? Эти короткие импульсы формировать на задержках на десяти инверторах? Это не наш метод.

 

Если в целом вариант принять за основу, то можно и не на 10ти инверторах. Как вариант можно задействовать одновибратор с запуском по фронту.

Но это усложняет решение, мне кажется можно и нужно проще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если в целом вариант принять за основу, то можно и не на 10ти инверторах. Как вариант можно задействовать одновибратор с запуском по фронту.

Но это усложняет решение, мне кажется можно и нужно проще.

Ха, так ведь этот одновибратор должен как-то мерять время, не так ли? Припоминаю, что, например, в 555 используются конденсаторы и компараторы. Но в ПЛИС конденсатор не вставишь, это правда.

В общем, я хочу сказать, что предлагаемое Вами решение основано на измерении интервала времени, меньшего, чем интервал между двумя перепадами на одной линии. Я поступил точно так же, только вместо вибратора использовал внешний клок. По сути это то же самое, согласитесь. Получилось ровно 6 триггеров (это с учетов, что на двух реализован еще и передатчик).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но есть ошибка в выходной части ;)

А что это за элемент такой большой с четырьмя входами? XOR? И что за ошибка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что это за элемент такой большой с четырьмя входами? XOR?

Да XOR (элемент считает чётность).

 

вариант без ошибки:

post-9445-1308233601_thumb.jpg

:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да XOR (элемент считает чётность).

Это, в смысле, три XOR-а? Четыре входа - как-то многовато...

Вообще, идея понятна, и о подобном я тоже думал, но не стал пытаться реализовать, т.к. уверен, что будет глючить. Как бы телега впереди лошади. Я тоже использовал восстановление клока в линии по XOR (внизу), но мне не удалось обойтись без формирования этих пресловутых коротких импульсов. А для этого понадобился внешний сигнал, для простоты я его сделал периодическим, т.е. клок.

 

А вариант без ошибки - это как? Зачем нам два выхода?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...