Что означает запуск по фронту и запуск по уровню?

Я изучаю микропроцессорную архитектуру 8085 и термины edge triggeredи level triggeredменя это очень сильно смущает. Может ли кто-нибудь объяснить мне это в словах непрофессионала?

Изучая прерывания 8085 с именами RST 7.5, RST 6.5, RST 5.5 и TRAP, я наткнулся на эти термины, и они меня смутили. Здесь я прикрепил ссылку на один документ, который я читал, и я упомянул свои диаграммы путаницы.

в документе

RST 7.5 -> Edge triggered
RST 5.5 -> Level triggered.
TRAP    -> Edge triggered and Level triggered.
           (why does it make any difference?).

ссылка на документ

Это не пдф.
да, это ссылка на документ в формате pdf. я сделал правильные изменения.

Ответы (4)

Я действительно не читал ваш документ, но я могу понять, почему вы сбиты с толку. Но на самом деле это очень простая концепция. Позволь мне объяснить.

Запуск: это означает активацию цепи. Сделать схему активной означает позволить схеме принимать входные данные и выдавать выходные данные. Например, предположим, что у нас есть триггер. Когда схема не запущена, даже если вы вводите некоторые входные данные, она не изменит данные, хранящиеся внутри триггера, и не изменит выход Q или Q'. В настоящее время существует два основных типа запуска. Запуск осуществляется в виде тактового импульса или стробирующего сигнала. В зависимости от типа используемого пускового механизма схема становится активной при определенных состояниях тактового импульса.

  1. Запуск по уровню: при запуске по уровню схема становится активной, когда стробирующий или тактовый импульс находится на определенном уровне. Этот уровень определяется дизайнером. У нас может быть запуск по отрицательному уровню, при котором схема активна, когда тактовый сигнал низкий, или запуск по положительному уровню, при котором схема активна, когда тактовый сигнал высокий.

  2. Запуск по фронту: при запуске по фронту схема становится активной при отрицательном или положительном фронте тактового сигнала. Например, если схема запускается положительным фронтом, она будет принимать входные данные точно в то время, когда тактовый сигнал переходит от низкого уровня к высокому. Точно так же ввод осуществляется точно в то время, когда тактовый сигнал переходит от высокого уровня к низкому при запуске по отрицательному фронту. Но имейте в виду, что после ввода он может обрабатываться все время, пока не будет принят следующий ввод.

Это общее описание механизмов запуска, которое также применимо к прерываниям 8085.

ну .. что касается запуска по фронту, обычно вы должны иметь стабильные данные в течение короткого времени, по крайней мере, в течение определенного периода времени до фронта (обратитесь к таблицам данных) и поддерживать их стабильность в течение определенного периода времени (обратитесь к таблицам данных). но это время обычно довольно короткое.
я понимаю, что вы хотели объяснить, но еще один вопрос, который я упомянул, заключается в том, что в 8085 TRAP запускается как фронт, так и уровень (см. документ). Итак, какова функциональность в таком случае, когда схема одновременно чувствительна к уровню и срабатывает по фронту.
В этом случае он хочет, чтобы преимущество также прошло определенный уровень. Итак, нам нужно что-то вроде нарастающего фронта и уровня> 3 В.
Что делать, если внешнее событие произошло, но край часов еще не наступил. Будет ли это событие пропущено?

В 8085 TRAP — это немаскируемое прерывание, обычно используемое для обработки таких ошибок, как сбой питания.

Если бы он был запущен по уровню, его код никогда не смог бы выполниться, потому что это немаскируемое прерывание. Обработчик начнет выполняться, когда станет активным, но он все еще будет активен, поэтому обработчик начнет выполнение, но все еще будет активен, поэтому обработчик начнет выполнение и т. д. и т. д. Поэтому он должен запускаться по краю .

Однако запуск по фронту представляет собой проблему, когда на линии могут возникать сбои. Сбои могут привести к тому, что обработчик будет вызываться несколько раз по мере сбоев линии. Это очень большая проблема с TRAP, поскольку он не маскируется и приводит к RST.

В качестве компромисса TRAP работает так, как если бы он запускался по уровню, за исключением того, что он распознается только тогда, когда он был низким с момента последнего распознавания. Это гарантирует, что обработчик TRAP вызывается только один раз.

Это то, что они подразумевают под «срабатыванием по фронту и по уровню».

* Запуск * означает активацию цепи. При уровне запуска схема становится активной, когда стробирующий или тактовый импульс находится на определенном уровне. При запуске по фронту схема становится активной при отрицательном или положительном фронте тактового сигнала.

Это примерно то, что было сказано выше.

Голаж и Всз хорошо об этом говорят:

Это именно то, что говорит.

Если установлено прерывание по фронту, ISR будет срабатывать только по заднему/нарастающему фронту импульса. В то время как, если прерывание, чувствительное к уровню (как вы говорите), установлено, ISR будет срабатывать каждый раз, когда на соответствующем выводе есть сигнал низкого/высокого уровня.

Короче говоря, прерывание по фронту запускается только при изменении фронта, в то время как прерывание по уровню запускается, пока импульс низкий или высокий.

Поэтому, если у вас установлено низкоуровневое прерывание, MCU будет продолжать выполнять ISR до тех пор, пока на выводе низкий уровень.

То есть он будет выходить из ISR снова и снова, пока на выводе низкий уровень.

У меня сложилось впечатление, что никто на самом деле не ответил, что значит быть срабатывающим как по уровню, так и по фронту. И я тоже.

Ответ D Крюгера правильно объясняет, что значит быть срабатывающим как по уровню, так и по фронту. (По крайней мере, его ответ кажется мне правильным, хотя я не знаком с 8085.) Ответ Голаза и vsz предполагает, что прерывание замаскировано. Я до сих пор не уверен, как «за исключением того, что он распознается только тогда, когда он был низким с момента последнего распознавания». однако отличается от срабатывания по фронту.