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

3 hours ago, des00 said:

ЗЫ. я бы не сказал более корректно, не усложняет, а роняет тактовую. 

Ага, и зачем нужна более сложная схема, которая при этом работает на меньшей тактовой частоте ?

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


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

10 minutes ago, dsmv said:

Ага, и зачем нужна более сложная схема, которая при этом работает на меньшей тактовой частоте ?

я понимаю что вам не нравится грей, но "сложность" там, одно преобразование, причем gray2bin это простой ксор, 1-2 слоя логики, на типовых разрядностях FIFO. Тактовая упадет где то 10МГц, при этом, от вычитания вы все равно никуда не уходите) а роняет тактовую именно он, причем на разных архитектурах, для фифо с греем по разному. 

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


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

1 hour ago, Plain said:

Вообще-то, среди счётчиков ещё и Джонсона есть.

Есть ещё унарный сдвиговый регистр, но от этого лучше не станет.

А насчёт городить Грея, если можно на обычном CSA переносе сделать сумматор без особых проблем не вижу. Дальше только дело техники: или сравнивать на "больше-меньше" или сравнивать равно до регистра счётчика или после, для получения корректного empty/full в защёлке. Другое дело как это в мультиклоковом проекте ляжет. Но тут нужно поковырять чистый RTL.

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


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

Приветствую!  

Классическая схема  bin -> bin2gray -> cdc -> gray2bin ->  bin_comparator   работает на ура  при этом обеспечивая  и  скорость и функционал  типа afull, aempty,  r|w_count, ...  

Возится с чистыми gray указателями  памяти есть смысл если вы пытаетесь сэкономить последний LUT  в  UltraScale vu9p  :biggrin:

Удачи! Rob.

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


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

А какие есть эффективные способы передать многобитный сигнал в другой тактовый домен при условии, что нужно "сэмплирующая" сторона работает на тактовой, близкой к задающей. Т.е не так, что раз в эн тактов забираем значение, когда заведомо известно, что значение установившееся, а когда оно меняется постоянно - вот как в случае с FIFO. Про Грея понятно. Ещё какие способы есть?

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


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

Приветствую!

14 hours ago, Plain said:

Наверное имелась ввиду не просто скорость, а максимальная.

Я как раз максимальную скорость и имел ввиду.   В классической схеме 

1 hour ago, dxp said:

... Про Грея понятно. Ещё какие способы есть?

Грей кстати работает в качестве CDC  только для линейного (инкремент/декремент) сигнала - то есть рандомные данные  напрямую через gray CDC синхронизатор не  передашь  без глюков  :(

А FIFO как раз и решает эту проблему -  рандомные данные кладутся в память,  а линейный указатель на нее передается через gray CDC. 

Удачи!  Rob.

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


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

13 минут назад, RobFPGA сказал:

Грей кстати работает в качестве CDC  только для линейного (инкремент/декремент) сигнала - то есть рандомные данные  напрямую через gray CDC синхронизатор не  передашь  без глюков  :(

А FIFO как раз и решает эту проблему -  рандомные данные кладутся в память,  а линейный указатель на нее передается через gray CDC. 

 

Ну да, я и имел в виду для монотонного сигнала, как счётчик. Есть ли альтернативы Грею в блоках CDC асинхронных FIFO?

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


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

Приветствую!

3 hours ago, dxp said:

Ну да, я и имел в виду для монотонного сигнала, как счётчик. Есть ли альтернативы Грею в блоках CDC асинхронных FIFO?

Например тот же код Джонсона. Тоже меняется только в одном бите.  Но емкость такого кода меньше чем у   Грея (при равном  количестве бит).  

Удачи! Rob.

 

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


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

Т.е. Джонсон эффективнее Грея? Если так, то почему на практике в CDC FIFO (и не только) применяют Грея?

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


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

Очевидно, "последний LUT экономят" — затратно же, ещё по два бита на ячейку.

Изменено пользователем Plain

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


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

А, понял, наоборот же.

 

Насчёт "экономят" - так тут не в экономии дело, а в целесообразности. Зачем избыточность вводить, когда она не нужна (помехозащищённость не требуется)?

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


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

Приветствую!

4 hours ago, dxp said:

Т.е. Джонсон эффективнее Грея? Если так, то почему на практике в CDC FIFO (и не только) применяют Грея?

Наоборот, Джонсон хуже - при равной ширине шины можно передать меньшее число состояний. Да и конвертировать из/в bin сложнее. Хотя могу предположить что для простых и малых по размеру FIFO может и можно применять - если напрямую работать к кодом без конверсии в bin.  Может будет чуть быстрее по частоте чем с Грей. 

Удачи! Rob. 

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


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

В 15.04.2020 в 10:48, dxp сказал:

Ну да, я и имел в виду для монотонного сигнала, как счётчик. Есть ли альтернативы Грею в блоках CDC асинхронных FIFO?

А как передача значения счетчика в коде Грея защищает от метастабильности при переходе между клоковыми доменами?

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


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

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

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

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

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

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

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

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

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

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