diff --git a/Basic Verilog structures/Latches.md b/Basic Verilog structures/Latches.md index e7ce00d..dbac4ea 100644 --- a/Basic Verilog structures/Latches.md +++ b/Basic Verilog structures/Latches.md @@ -1,12 +1,12 @@ -# Защелка +# D-защёлка -Очень важно при описании мультиплексора с помощью блока `case` описывать оставшиеся комбинации управляющего сигнала с помощью `default` (а при использовании блока `if` — описывать блок `else`) — в противном случае в вашей схеме может появиться [защелка](https://www.build-electronic-circuits.com/d-latch/) — даже несмотря на то, что для описания защелок в SytemVerilog есть отдельный блок `always`: `always_latch`. +Очень важно при описании мультиплексора с помощью блока `case` описывать оставшиеся комбинации управляющего сигнала с помощью `default` (а при использовании блока `if` — описывать блок `else`) — в противном случае в вашей схеме может появиться [D-защёлка]([https://www.build-electronic-circuits.com/d-latch/](https://web.archive.org/web/20221214154654/https://www.build-electronic-circuits.com/d-latch/)) — даже несмотря на то, что для описания защелок в SytemVerilog есть отдельный блок `always`: `always_latch`. -Защелка представляет из себя элемент памяти, причем данные в нее записываются не по тактовому синхроимпульсу, а на протяжении относительно длинного промежутка времени, когда управляющий сигнал "открывает" защелку (в этом случае говорят, что защелка становится "прозрачной"). Из-за этого она не является ни комбинационной, ни синхронной схемой. +Защёлка представляет из себя элемент памяти, причем данные в нее записываются не по тактовому синхроимпульсу, а на протяжении относительно длинного промежутка времени, когда управляющий сигнал "открывает" защелку (в этом случае говорят, что защёлка становится "прозрачной"). Из-за этого она не является ни комбинационной, ни синхронной схемой. -Защелка — это всего лишь элемент цифровой схемы и будет неправильно говорить о нём в терминах "плохой" или "хороший". Защелка имеет свои плюсы для [ASIC](https://ru.wikipedia.org/wiki/Интегральная_схема_специального_назначения)-проектирования. Однако защелка совершенно не подходит при проектировании устройств под ПЛИС. +Защёлка — это всего лишь элемент цифровой схемы и будет неправильно говорить о нём в терминах "плохой" или "хороший". Защёлка имеет свои плюсы для [ASIC](https://ru.wikipedia.org/wiki/Интегральная_схема_специального_назначения)-проектирования. Однако защёлка совершенно не подходит при проектировании устройств под ПЛИС. -Обычно появление защелки в цифровой схеме говорит об ошибке разработки: в случае, если планировалась комбинационная логика, добавление защелки приведет к непредвиденному удержанию предыдущих значений (поскольку защелка сохраняет предыдущее значение до прихода очередной комбинации управляющего сигнала, описанной в блоке `case`). Это особенно плохо, если сигнал, перед которым появилась защелка, чем-то управляет. Представьте, что он управляет сейфом, который должен открываться если ввели правильный пароль: +Обычно появление защелки в цифровой схеме говорит об ошибке разработки: в случае, если планировалась комбинационная логика, добавление защелки приведет к непредвиденному удержанию предыдущих значений (поскольку защёлка сохраняет предыдущее значение до прихода очередной комбинации управляющего сигнала, описанной в блоке `case`). Это особенно плохо, если сигнал, перед которым появилась защёлка, чем-то управляет. Представьте, что он управляет сейфом, который должен открываться если ввели правильный пароль: ```Verilog always_comb begin @@ -29,7 +29,7 @@ always_comb begin end ``` -В случае синхронной логики, будет непредсказуемое поведение данных, т.к. информация в защелку будет записываться не синхронно, как это ожидается, а на протяжении длительного промежутка времени, пока защелка "открыта". +В случае синхронной логики, будет непредсказуемое поведение данных, т.к. информация в защелку будет записываться не синхронно, как это ожидается, а на протяжении длительного промежутка времени, пока защёлка "открыта". Ещё один пример: @@ -62,7 +62,7 @@ _Рисунок 1. Пример генерации защелки у непол На _рис. 1_ различные её части обозначены следующим образом: 1. Мультиплексор, который мы хотели описать -2. Защелка +2. Защёлка 3. Мультиплексор, который был добавлен чтобы генерировать сигнал, "открывающий" защелку 4. Константная единица (питание) 5. Константный ноль (земля). @@ -75,6 +75,6 @@ _Рисунок 1. Пример генерации защелки у непол _Рисунок 2. Пример удержания предыдущих значений защелкой._ -Кроме того, защелка усложняет временной анализ и может ухудшить временные характеристики, из-за чего схема может работать на меньших частотах, чем могла бы. +Кроме того, защёлка усложняет временной анализ и может ухудшить временные характеристики, из-за чего схема может работать на меньших частотах, чем могла бы. Таким образом, во избежание появления защелки, необходимо описывать все возможные комбинации в блоке `case` (при необходимости покрывая множество оставшихся комбинаций с помощью `default`) и для каждого блока `if` описывать блоки `else`. В случае, если подобная комбинация не планируется к использованию, можно присвоить сигналу значение ноль. Конечно, в этом случае будет создана избыточная логика для присваивания ненужного значения, которое никогда не должно произойти (и существуют способы описания аппаратуры, позволяющие этого избежать), но в данном случае это самый простой способ.