dsmv 0 Posted April 14, 2020 · Report post 3 hours ago, des00 said: ЗЫ. я бы не сказал более корректно, не усложняет, а роняет тактовую. Ага, и зачем нужна более сложная схема, которая при этом работает на меньшей тактовой частоте ? Quote Ответить с цитированием Share this post Link to post Share on other sites
des00 0 Posted April 14, 2020 · Report post 10 minutes ago, dsmv said: Ага, и зачем нужна более сложная схема, которая при этом работает на меньшей тактовой частоте ? я понимаю что вам не нравится грей, но "сложность" там, одно преобразование, причем gray2bin это простой ксор, 1-2 слоя логики, на типовых разрядностях FIFO. Тактовая упадет где то 10МГц, при этом, от вычитания вы все равно никуда не уходите) а роняет тактовую именно он, причем на разных архитектурах, для фифо с греем по разному. Quote Ответить с цитированием Share this post Link to post Share on other sites
Plain 0 Posted April 14, 2020 · Report post Вообще-то, среди счётчиков ещё и Джонсона есть. Quote Ответить с цитированием Share this post Link to post Share on other sites
Nick_K 0 Posted April 14, 2020 · Report post 1 hour ago, Plain said: Вообще-то, среди счётчиков ещё и Джонсона есть. Есть ещё унарный сдвиговый регистр, но от этого лучше не станет. А насчёт городить Грея, если можно на обычном CSA переносе сделать сумматор без особых проблем не вижу. Дальше только дело техники: или сравнивать на "больше-меньше" или сравнивать равно до регистра счётчика или после, для получения корректного empty/full в защёлке. Другое дело как это в мультиклоковом проекте ляжет. Но тут нужно поковырять чистый RTL. Quote Ответить с цитированием Share this post Link to post Share on other sites
RobFPGA 0 Posted April 14, 2020 · Report post Приветствую! Классическая схема bin -> bin2gray -> cdc -> gray2bin -> bin_comparator работает на ура при этом обеспечивая и скорость и функционал типа afull, aempty, r|w_count, ... Возится с чистыми gray указателями памяти есть смысл если вы пытаетесь сэкономить последний LUT в UltraScale vu9p Удачи! Rob. Quote Ответить с цитированием Share this post Link to post Share on other sites
Plain 0 Posted April 14, 2020 · Report post Наверное имелась ввиду не просто скорость, а максимальная. Quote Ответить с цитированием Share this post Link to post Share on other sites
dxp 0 Posted April 15, 2020 · Report post А какие есть эффективные способы передать многобитный сигнал в другой тактовый домен при условии, что нужно "сэмплирующая" сторона работает на тактовой, близкой к задающей. Т.е не так, что раз в эн тактов забираем значение, когда заведомо известно, что значение установившееся, а когда оно меняется постоянно - вот как в случае с FIFO. Про Грея понятно. Ещё какие способы есть? Quote Ответить с цитированием Share this post Link to post Share on other sites
RobFPGA 0 Posted April 15, 2020 · Report post Приветствую! 14 hours ago, Plain said: Наверное имелась ввиду не просто скорость, а максимальная. Я как раз максимальную скорость и имел ввиду. В классической схеме 1 hour ago, dxp said: ... Про Грея понятно. Ещё какие способы есть? Грей кстати работает в качестве CDC только для линейного (инкремент/декремент) сигнала - то есть рандомные данные напрямую через gray CDC синхронизатор не передашь без глюков :(. А FIFO как раз и решает эту проблему - рандомные данные кладутся в память, а линейный указатель на нее передается через gray CDC. Удачи! Rob. Quote Ответить с цитированием Share this post Link to post Share on other sites
dxp 0 Posted April 15, 2020 · Report post 13 минут назад, RobFPGA сказал: Грей кстати работает в качестве CDC только для линейного (инкремент/декремент) сигнала - то есть рандомные данные напрямую через gray CDC синхронизатор не передашь без глюков :(. А FIFO как раз и решает эту проблему - рандомные данные кладутся в память, а линейный указатель на нее передается через gray CDC. Ну да, я и имел в виду для монотонного сигнала, как счётчик. Есть ли альтернативы Грею в блоках CDC асинхронных FIFO? Quote Ответить с цитированием Share this post Link to post Share on other sites
RobFPGA 0 Posted April 15, 2020 · Report post Приветствую! 3 hours ago, dxp said: Ну да, я и имел в виду для монотонного сигнала, как счётчик. Есть ли альтернативы Грею в блоках CDC асинхронных FIFO? Например тот же код Джонсона. Тоже меняется только в одном бите. Но емкость такого кода меньше чем у Грея (при равном количестве бит). Удачи! Rob. Quote Ответить с цитированием Share this post Link to post Share on other sites
dxp 0 Posted April 15, 2020 · Report post Т.е. Джонсон эффективнее Грея? Если так, то почему на практике в CDC FIFO (и не только) применяют Грея? Quote Ответить с цитированием Share this post Link to post Share on other sites
Plain 0 Posted April 15, 2020 (edited) · Report post Очевидно, "последний LUT экономят" — затратно же, ещё по два бита на ячейку. Edited April 15, 2020 by Plain Quote Ответить с цитированием Share this post Link to post Share on other sites
dxp 0 Posted April 15, 2020 · Report post А, понял, наоборот же. Насчёт "экономят" - так тут не в экономии дело, а в целесообразности. Зачем избыточность вводить, когда она не нужна (помехозащищённость не требуется)? Quote Ответить с цитированием Share this post Link to post Share on other sites
RobFPGA 0 Posted April 15, 2020 · Report post Приветствую! 4 hours ago, dxp said: Т.е. Джонсон эффективнее Грея? Если так, то почему на практике в CDC FIFO (и не только) применяют Грея? Наоборот, Джонсон хуже - при равной ширине шины можно передать меньшее число состояний. Да и конвертировать из/в bin сложнее. Хотя могу предположить что для простых и малых по размеру FIFO может и можно применять - если напрямую работать к кодом без конверсии в bin. Может будет чуть быстрее по частоте чем с Грей. Удачи! Rob. Quote Ответить с цитированием Share this post Link to post Share on other sites
gin 0 Posted April 16, 2020 · Report post В 15.04.2020 в 10:48, dxp сказал: Ну да, я и имел в виду для монотонного сигнала, как счётчик. Есть ли альтернативы Грею в блоках CDC асинхронных FIFO? А как передача значения счетчика в коде Грея защищает от метастабильности при переходе между клоковыми доменами? Quote Ответить с цитированием Share this post Link to post Share on other sites