dips11 0 27 января Опубликовано 27 января · Жалоба Доброго времени суток. В даташитах на микросхемы иногда встречается момент, где говорится примерно следующее: если сигнал 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 и его изменение не вызовет переключение выхода "И". Другие варианты являются производными от этих. Я был бы благодарен за советы, по тому как возможно правильно решить такую задачу. Возможно я вообще не там ищу. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 28 января Опубликовано 28 января · Жалоба 18 часов назад, dima6656 сказал: Доброго времени суток. В даташитах на микросхемы иногда встречается момент, где говорится примерно следующее: если сигнал ST придёт до 5 сигнала CLK, то микросхема перейдёт в такое-то состояние, а если после 5 и до 10 CLK то в такое-то. Причём не сказано за какое минимальное время до 5 CLK должен прийти сигнал ST. То есть сигнал полностью асинхронный. И мне интересно как может происходить обработка этого сигнала в микросхеме, ведь так как сигнал асинхронный нельзя просто использовать условие: В Вашей реализации не видно периодичности ( в периодичности нет понятия раньше, позже). И нет второго условия (ct == 10). В любом случае Вам придется внешний сигнал ST ( ограниченный по длительности от одного периода CLK до 4) привести к длительности в 1 период CLK. И тогда только сравнивать со счетчиком. Как то так. st_ct.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 223 28 января Опубликовано 28 января · Жалоба 18 часов назад, dima6656 сказал: говорится примерно следующее Если желаете адекватного ответа, цитируйте оригинал. Речь очевидно о типовой синхронизации сигнала ST сигналом CLK, т.е. парой триггеров, затем следуют какие-либо условия, затем перенос в другой домен, если требуется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dips11 0 28 января Опубликовано 28 января · Жалоба Вот например микросхема АЦП с 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. И предполагал, там есть другое схемотехническое решение кроме синхронизации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dips11 0 28 января Опубликовано 28 января · Жалоба 51 минуту назад, Plain сказал: Если желаете адекватного ответа, цитируйте оригинал. Речь очевидно о типовой синхронизации сигнала ST сигналом CLK, т.е. парой триггеров, затем следуют какие-либо условия, затем перенос в другой домен, если требуется. Забыл в сообщение сверху вас процитировать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 223 28 января Опубликовано 28 января · Жалоба Если Вы хотите написать то же самое, как на картинках в паспорте, из них следует, что фиксация режима отключения происходит от 3-го до 9-го такта, и ничего асинхронного нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dips11 0 28 января Опубликовано 28 января · Жалоба 13 минут назад, Plain сказал: Если Вы хотите написать то же самое, как на картинках в паспорте, из них следует, что фиксация режима отключения происходит от 3-го до 9-го такта, и ничего асинхронного нет. Извините, я вас не совсем понял. Вы хотите сказать, что по рисунку в паспорте там будет возможность синхронизовать асинхронный сигнал CS, который может прийти в любое время между 2 и 10 спадом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 223 28 января Опубликовано 28 января · Жалоба Из паспорта следует, что CS не асинхронный, его предустановка не менее 10 нс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 28 января Опубликовано 28 января · Жалоба 1 час назад, dima6656 сказал: Извините, я вас не совсем понял. Вы хотите сказать, что по рисунку в паспорте там будет возможность синхронизовать асинхронный сигнал CS, который может прийти в любое время между 2 и 10 спадом? Это ацп в интегральном исполнении. Там все работает синхронно за счет выверенных временных интервалов между сигналом CS_n и CLK. Его spi slave интерфейс грубо можно считать реализацией на микросхемах средней степени интеграции. Счетчик работает по фронту клока в интервале CS_n. Задним фроном CS_n значение счетчика, сдвигового регистра переписывается в регистры. Вы не можете себе позволить такое проектирование, реализуя SPI slave интерфейс на Плис. Потому что Плис если грубо, это море вентилей и триггерных ячеек. И чтобы заработал правильно простейший сдвиговый регистр на структуре Плис, требуется чтобы сигналы на С входы этих триггеров подавались одновременно, а на D входы с какой то задержкой. Поэтому есть глобальные клоковые цепи, есть региональные клоковые цепи. Обычно все сигналы низкоскоростных интерфейсов подают на пины I/O (Еще надо постараться посадить клок с пина I/O на глобальный или региональный). А clk с внешнего генератора подают на пин глобального клока. Поэтому никакой асинхронщины Плис не терпит (это надо смотреть на базовый примитив триггера семейства Плис, который Вы используете. Конечно у него может быть асинхронная установка в то или иное состояние, но как обрабатывать такой сигнал в Плис, написана куча литературы). Более того, чтобы воспользоваться всей мощъю языка описания аппаратуры, придется менять мышление проектирования (использовать навыки в поведенческом описании счетчиков, регистров и т.д.). Самое простое, это одноклоковая синхронизация, данные по клоку SPI интерфейса переходят в клоковый домен ПЛИС. Это позволяет параметризировать модули (написать один раз и использовать на любой глобальной частоте Плис в рамках разумности, меняя значение параметров только на уровне головного модуля). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dips11 0 28 января Опубликовано 28 января · Жалоба 17 минут назад, sazh сказал: Это ацп в интегральном исполнении. Там все работает синхронно за счет выверенных временных интервалов между сигналом CS_n и CLK. Его spi slave интерфейс грубо можно считать реализацией на микросхемах средней степени интеграции. Спасибо за ответ, из за ваш код в прошлом ответе Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 223 29 января Опубликовано 29 января · Жалоба 8 часов назад, sazh сказал: Вы не можете себе позволить такое проектирование, реализуя SPI slave интерфейс на Плис Как я понял, автора интересует, какая схема реализует такое её описание, а не физическая эмуляция интерфейса данного АЦП на ПЛИС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться