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

Обработка асинхронного сигнала

Доброго времени суток.

В даташитах на микросхемы иногда встречается момент, где говорится примерно следующее: если сигнал 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 и его изменение не вызовет переключение выхода "И". 

image.png.59eec3e542757b08648e2e8dbf833574.png

Другие варианты являются производными от этих. Я был бы благодарен за советы, по тому как возможно правильно решить такую задачу. Возможно я вообще не там ищу. Спасибо.

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


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

18 часов назад, dima6656 сказал:

Доброго времени суток.

В даташитах на микросхемы иногда встречается момент, где говорится примерно следующее: если сигнал ST придёт до 5 сигнала CLK, то микросхема перейдёт в такое-то состояние, а если после 5 и до 10 CLK то в такое-то. Причём не сказано за какое минимальное время до 5 CLK должен прийти сигнал ST. То есть сигнал полностью асинхронный. И мне интересно как может происходить обработка этого сигнала в микросхеме, ведь так как сигнал асинхронный нельзя просто использовать условие:

В Вашей реализации не видно периодичности ( в периодичности нет понятия раньше, позже). И нет второго условия (ct == 10). В любом случае Вам придется внешний сигнал  ST

( ограниченный по длительности от одного периода CLK до 4) привести к длительности в 1 период CLK. И тогда только сравнивать со счетчиком. Как то так.

st_ct.zip

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


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

18 часов назад, dima6656 сказал:

говорится примерно следующее

Если желаете адекватного ответа, цитируйте оригинал.

Речь очевидно о типовой синхронизации сигнала ST сигналом CLK, т.е. парой триггеров, затем следуют какие-либо условия, затем перенос в другой домен, если требуется.

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


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

Вот например микросхема АЦП с 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. И предполагал, там есть другое схемотехническое решение кроме синхронизации.

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


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

51 минуту назад, Plain сказал:

Если желаете адекватного ответа, цитируйте оригинал.

Речь очевидно о типовой синхронизации сигнала ST сигналом CLK, т.е. парой триггеров, затем следуют какие-либо условия, затем перенос в другой домен, если требуется.

Забыл в сообщение сверху вас процитировать 

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


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

Если Вы хотите написать то же самое, как на картинках в паспорте, из них следует, что фиксация режима отключения происходит от 3-го до 9-го такта, и ничего асинхронного нет.

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


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

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

Если Вы хотите написать то же самое, как на картинках в паспорте, из них следует, что фиксация режима отключения происходит от 3-го до 9-го такта, и ничего асинхронного нет.

Извините, я вас не совсем понял. Вы хотите сказать, что по рисунку в паспорте там будет возможность синхронизовать асинхронный сигнал CS, который может прийти в любое время между 2 и 10 спадом?

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


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

Из паспорта следует, что CS не асинхронный, его предустановка не менее 10 нс.

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


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

1 час назад, dima6656 сказал:

Извините, я вас не совсем понял. Вы хотите сказать, что по рисунку в паспорте там будет возможность синхронизовать асинхронный сигнал CS, который может прийти в любое время между 2 и 10 спадом?

Это ацп в интегральном исполнении. Там все работает синхронно за счет выверенных временных интервалов между сигналом CS_n и CLK. Его spi slave интерфейс грубо можно считать реализацией на микросхемах средней степени интеграции.

Счетчик работает по фронту клока в интервале CS_n. Задним фроном CS_n значение счетчика, сдвигового регистра переписывается в регистры.

Вы не можете себе позволить такое проектирование, реализуя SPI slave интерфейс на Плис. Потому что Плис если грубо, это море вентилей и триггерных ячеек. И чтобы заработал правильно простейший сдвиговый регистр на структуре Плис, требуется чтобы сигналы на С входы этих триггеров подавались одновременно, а на D входы с какой то задержкой. Поэтому есть глобальные клоковые цепи, есть региональные клоковые цепи. Обычно все сигналы низкоскоростных  интерфейсов подают на пины I/O (Еще надо постараться посадить клок с пина I/O на глобальный или региональный). А clk с внешнего генератора подают на пин глобального клока. Поэтому никакой асинхронщины Плис не терпит (это надо смотреть на базовый примитив триггера семейства Плис, который Вы используете. Конечно у него может быть асинхронная установка в то или иное состояние, но как обрабатывать такой сигнал в Плис, написана куча литературы).  Более того, чтобы воспользоваться всей мощъю языка описания аппаратуры, придется менять мышление проектирования (использовать навыки в поведенческом описании счетчиков, регистров и т.д.). Самое простое, это одноклоковая синхронизация, данные по клоку SPI интерфейса переходят в клоковый домен ПЛИС. Это позволяет параметризировать модули (написать один раз и использовать на любой глобальной частоте Плис в рамках разумности, меняя значение параметров только на уровне головного модуля).

 

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


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

17 минут назад, sazh сказал:

Это ацп в интегральном исполнении. Там все работает синхронно за счет выверенных временных интервалов между сигналом CS_n и CLK. Его spi slave интерфейс грубо можно считать реализацией на микросхемах средней степени интеграции.

Спасибо за ответ, из за ваш код в прошлом ответе 

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


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

8 часов назад, sazh сказал:

Вы не можете себе позволить такое проектирование, реализуя SPI slave интерфейс на Плис

Как я понял, автора интересует, какая схема реализует такое её описание, а не физическая эмуляция интерфейса данного АЦП на ПЛИС.

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


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

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

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

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

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

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

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

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

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

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