Jump to content

    

Recommended Posts

3 hours ago, des00 said:

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

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

Share this post


Link to post
Share on other sites
10 minutes ago, dsmv said:

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

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

Share this post


Link to post
Share on other sites
1 hour ago, Plain said:

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

Удачи! Rob.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

14 hours ago, Plain said:

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

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

1 hour ago, dxp said:

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

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

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

Удачи!  Rob.

Share this post


Link to post
Share on other sites
13 минут назад, RobFPGA сказал:

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

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

 

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

Share this post


Link to post
Share on other sites

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

3 hours ago, dxp said:

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

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

Удачи! Rob.

 

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

4 hours ago, dxp said:

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

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

Удачи! Rob. 

Share this post


Link to post
Share on other sites
В 15.04.2020 в 10:48, dxp сказал:

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this