dips11 0 January 27, 2024 Posted January 27, 2024 · Report post Доброго времени суток. В даташитах на микросхемы иногда встречается момент, где говорится примерно следующее: если сигнал ST придёт до 5 сигнала CLK, то микросхема перейдёт в такое-то состояние, а если после 5 и до 10 CLK то в такое-то. Причём не сказано за какое минимальное время до 5 CLK должен прийти сигнал ST. То есть сигнал полностью асинхронный. И мне интересно как может происходить обработка этого сигнала в микросхеме, ведь так как сигнал асинхронный нельзя просто использовать условие: always@(posedge CLK ) if(cnt==4 && !ST) reg0<=1; И возможности синхронизировать его нет. По сути задача может звучать как "надо определить какой сигнал приходит раньше ST или 5 CLK". Вот основные варианты, которые удалось найти. 1) Использовать сигнал ST как асинхронный сброс триггера. Если сигнал ST придет раньше то он сбросит триггер и не даст ему установиться, но как не достаток решения, если сначала придет 5 CLK то триггер установиться в 1, но потом все равно сброситься по сигналу ST и не сохранит свое состояние. always@(posedge CLK or posedge ST) if(ST) reg0<=0; else if(cnt==4) reg0<=1; 2) Использовать clock gating, то есть по сигналу ST отключить тактовую частоту. Если сигнал ST придет раньше 5 CLK то он заблокирует тактовую частоту для триггера, и он не установиться в 1, если позже пропустит. Где то встречал, что такое решение может вызвать метастабильное состояние. Это правда? Просто я вижу здесь либо наличие сигнала clk_gate для триггера либо его отсутствие. Элемент "И" ведь не должен выдавать шумов. assign clk_gate = CLK & !ST; always@(posedge clk_gate ) if(cnt==4) reg0<=1; Еще встречается реализация с защелкой. И говориться,что защелка добавляется для устранения glitch, так как такая схема будет пропускать сигнал ST только при низком значении CLK и его изменение не вызовет переключение выхода "И". Другие варианты являются производными от этих. Я был бы благодарен за советы, по тому как возможно правильно решить такую задачу. Возможно я вообще не там ищу. Спасибо. Quote Share this post Link to post Share on other sites More sharing options...
sazh 9 January 28, 2024 Posted January 28, 2024 · Report post 18 часов назад, dima6656 сказал: Доброго времени суток. В даташитах на микросхемы иногда встречается момент, где говорится примерно следующее: если сигнал ST придёт до 5 сигнала CLK, то микросхема перейдёт в такое-то состояние, а если после 5 и до 10 CLK то в такое-то. Причём не сказано за какое минимальное время до 5 CLK должен прийти сигнал ST. То есть сигнал полностью асинхронный. И мне интересно как может происходить обработка этого сигнала в микросхеме, ведь так как сигнал асинхронный нельзя просто использовать условие: В Вашей реализации не видно периодичности ( в периодичности нет понятия раньше, позже). И нет второго условия (ct == 10). В любом случае Вам придется внешний сигнал ST ( ограниченный по длительности от одного периода CLK до 4) привести к длительности в 1 период CLK. И тогда только сравнивать со счетчиком. Как то так. st_ct.zip Quote Share this post Link to post Share on other sites More sharing options...
Plain 313 January 28, 2024 Posted January 28, 2024 · Report post 18 часов назад, dima6656 сказал: говорится примерно следующее Если желаете адекватного ответа, цитируйте оригинал. Речь очевидно о типовой синхронизации сигнала ST сигналом CLK, т.е. парой триггеров, затем следуют какие-либо условия, затем перенос в другой домен, если требуется. Quote Share this post Link to post Share on other sites More sharing options...
dips11 0 January 28, 2024 Posted January 28, 2024 · Report post Вот например микросхема АЦП с SPI интерфейсом, где сигнал CS управляет режимами питания. И как раз цитата для режима отключения микросхемы Цитата To enter power-down, the conversion process must be interrupted by bringing CS high anywhere after the second falling edge of SCLK and before the 10th falling edge of SCLK, as shown in Figure 22. https://www.farnell.com/datasheets/1814854.pdf - здесь на 17 странице. То есть если сигнал CS поднимется после 2 и до 10 SCLK микросхема отключиться. По поводу синхронизации, у меня есть сомнения, что там будет минимум два такта для пары триггеров после того, как придет сигнал управления режимами CS. Ведь например для режима включения микросхемы на 18 странице говориться что не обязательно нужен полный цикл SPI из 16 тактов. Цитата Although at any SCLK frequency, one dummy cycle is sufficient to power up the device and acquire VIN, this does not necessarily mean that a full dummy cycle of 16 SCLKs must always elapse to power up. Поэтому предполагал, что для входа в режим отключения питания можно подать два SCLK и поднять CS. И предполагал, там есть другое схемотехническое решение кроме синхронизации. Quote Share this post Link to post Share on other sites More sharing options...
dips11 0 January 28, 2024 Posted January 28, 2024 · Report post 51 минуту назад, Plain сказал: Если желаете адекватного ответа, цитируйте оригинал. Речь очевидно о типовой синхронизации сигнала ST сигналом CLK, т.е. парой триггеров, затем следуют какие-либо условия, затем перенос в другой домен, если требуется. Забыл в сообщение сверху вас процитировать Quote Share this post Link to post Share on other sites More sharing options...
Plain 313 January 28, 2024 Posted January 28, 2024 · Report post Если Вы хотите написать то же самое, как на картинках в паспорте, из них следует, что фиксация режима отключения происходит от 3-го до 9-го такта, и ничего асинхронного нет. Quote Share this post Link to post Share on other sites More sharing options...
dips11 0 January 28, 2024 Posted January 28, 2024 · Report post 13 минут назад, Plain сказал: Если Вы хотите написать то же самое, как на картинках в паспорте, из них следует, что фиксация режима отключения происходит от 3-го до 9-го такта, и ничего асинхронного нет. Извините, я вас не совсем понял. Вы хотите сказать, что по рисунку в паспорте там будет возможность синхронизовать асинхронный сигнал CS, который может прийти в любое время между 2 и 10 спадом? Quote Share this post Link to post Share on other sites More sharing options...
Plain 313 January 28, 2024 Posted January 28, 2024 · Report post Из паспорта следует, что CS не асинхронный, его предустановка не менее 10 нс. Quote Share this post Link to post Share on other sites More sharing options...
sazh 9 January 28, 2024 Posted January 28, 2024 · Report post 1 час назад, dima6656 сказал: Извините, я вас не совсем понял. Вы хотите сказать, что по рисунку в паспорте там будет возможность синхронизовать асинхронный сигнал CS, который может прийти в любое время между 2 и 10 спадом? Это ацп в интегральном исполнении. Там все работает синхронно за счет выверенных временных интервалов между сигналом CS_n и CLK. Его spi slave интерфейс грубо можно считать реализацией на микросхемах средней степени интеграции. Счетчик работает по фронту клока в интервале CS_n. Задним фроном CS_n значение счетчика, сдвигового регистра переписывается в регистры. Вы не можете себе позволить такое проектирование, реализуя SPI slave интерфейс на Плис. Потому что Плис если грубо, это море вентилей и триггерных ячеек. И чтобы заработал правильно простейший сдвиговый регистр на структуре Плис, требуется чтобы сигналы на С входы этих триггеров подавались одновременно, а на D входы с какой то задержкой. Поэтому есть глобальные клоковые цепи, есть региональные клоковые цепи. Обычно все сигналы низкоскоростных интерфейсов подают на пины I/O (Еще надо постараться посадить клок с пина I/O на глобальный или региональный). А clk с внешнего генератора подают на пин глобального клока. Поэтому никакой асинхронщины Плис не терпит (это надо смотреть на базовый примитив триггера семейства Плис, который Вы используете. Конечно у него может быть асинхронная установка в то или иное состояние, но как обрабатывать такой сигнал в Плис, написана куча литературы). Более того, чтобы воспользоваться всей мощъю языка описания аппаратуры, придется менять мышление проектирования (использовать навыки в поведенческом описании счетчиков, регистров и т.д.). Самое простое, это одноклоковая синхронизация, данные по клоку SPI интерфейса переходят в клоковый домен ПЛИС. Это позволяет параметризировать модули (написать один раз и использовать на любой глобальной частоте Плис в рамках разумности, меняя значение параметров только на уровне головного модуля). Quote Share this post Link to post Share on other sites More sharing options...
dips11 0 January 28, 2024 Posted January 28, 2024 · Report post 17 минут назад, sazh сказал: Это ацп в интегральном исполнении. Там все работает синхронно за счет выверенных временных интервалов между сигналом CS_n и CLK. Его spi slave интерфейс грубо можно считать реализацией на микросхемах средней степени интеграции. Спасибо за ответ, из за ваш код в прошлом ответе Quote Share this post Link to post Share on other sites More sharing options...
Plain 313 January 29, 2024 Posted January 29, 2024 · Report post 8 часов назад, sazh сказал: Вы не можете себе позволить такое проектирование, реализуя SPI slave интерфейс на Плис Как я понял, автора интересует, какая схема реализует такое её описание, а не физическая эмуляция интерфейса данного АЦП на ПЛИС. Quote Share this post Link to post Share on other sites More sharing options...